vogonsorg / prboom-plus

This is a cleaned up copy of the PrBoom+ SVN repository as a courtesy for those interested in forking that port
0 stars 0 forks source link

v2.5.1.7um is the last version for Windows XP #2

Open vogonsorg opened 2 years ago

vogonsorg commented 2 years ago

Prboom-plus itself works fine on XP as long as you change Major and Minor in the header to 4.0 for the artifact, the official release build already has 4.0 set.

I've created a v141 target for Prboom-plus which generated a working artifact that works fine on XP without any modification just in case something breaks with the official builds as far as the exe goes.

Once you launch the release executable you'll receive a GetTickCount64 error which can be traced to libzstd.dll, libwebp-7.dll and libwinpthread-1.dll See: https://github.com/msys2/MINGW-packages/issues/6137

"I have traced back the issue until I found its cause which is libtiff-5.dll which in turns starting from version 4.0.10 will link and depend on libzstd.dll which in turns calls InitializeConditionVariable() which is only available starting from Windows Vista. So I had to downgrade libtiff to version 4.0.9 to be able to launch my application under Windows XP."

"if you have clients who are still using Windows XP and are insisting for supporting it, I believe you will have no choice but to downgrade these three libraries: libtiff, winpthreads and libwinpthread to keep the lead of your software in the market."

From what I can tell prboom-plus has a seperate Windows Dependencies workflow which pulls down posix compiled dlls via vcpkg but the continuous integration workflow actually has the below specified which isn't actually used for the releases: https://github.com/coelckers/prboom-plus/releases/download/windows_dependencies/windows_dependencies_v4.zip

Windows_Depencies_v4.zip works fine with the executable since that's what the artifacts are compiled against.....

So: vcpkg needs to provide win32 thread compiled packages, if not then pr-boom plus needs to compile thosepackage via mingw-w64 win32 thread or my fork needs to do so. Pr-boom plus needs to remove "Windows_dependencies_v4.zip" from continuous integration and have it use the latest dependencies as part of the workflow. Artifacts produced via workflow currently do not match releases. Release must have been compiled against a one-off.

I've attached the the latest commit as of 11-10-2021 in the releases section for Windows XP.

vogonsorg commented 2 years ago

Well this is ridiculous https://github.com/msys2/MSYS2-packages/issues/2696

So yeah for the dependencies used by pr-boom look into using mingw-w64 win32 thread which should already be on the vms provided by github. Stay far far away from MSYS2 as usual.

vogonsorg commented 2 years ago

If I'm reading the wiki and the window_dependencies.yml correctly: https://github.com/coelckers/prboom-plus/wiki/Building-PrBoom-Plus-on-Windows https://github.com/vogonsorg/prboom-plus/blob/master/.github/workflows/windows_dependencies.yml

It looks like they previously compiled their Windows builds with MSYS2 instead of Visual Studio. Instead of vcpkg they used pacman. So somewhere along the way likely when they switched to pacman then mingw-w64 posix threads were used.

Likely best to follow this guide: https://github.com/coelckers/prboom-plus/wiki/Building-PrBoom-Plus-on-Windows and create workflow to compile the windows version with mingw-w64 straight from Linux instead of MSYS2. Mingw-w64 with linux is win32 thread. Libriaries from repos that Linux uses usually are win32 thread, pacman packages are posix.

vogonsorg commented 2 years ago

Created this issue: https://github.com/coelckers/prboom-plus/issues/424 Not critical to this fork if ignored.