Shpoike / Quakespasm

Extra bloaty junk to modernise stuff a bit.
http://triptohell.info/moodles/qss/
GNU General Public License v2.0
184 stars 41 forks source link

Continuous integration for Windows and Linux #135

Closed alexey-lysiuk closed 6 months ago

alexey-lysiuk commented 7 months ago

Links to builds: Linux, macOS, MinGW.

Windows builds are slower than the rest because they require Visual Studio to update projects and solution. MSBuild cannot handle pre-VS2010 format without conversion, and it took up to 5 minutes to configure VS during the first launch.

@Shpoike let me know if you want use CMake instead of Make on Linux.

Shpoike commented 7 months ago

my build scripts have been using qs's build_cross_win64-sdl2.sh script to cross compile the windows builds from linux. along with the following, too: export QSS_CFLAGS="-DQSS_VERSION=git describe --always -DQSS_REVISION=git rev-parse HEAD -DQSS_DATE=git log -1 --date=short --format=%cd"

no cmake, no need to worry about msvc projects, and of course no windows needed. cross-compiling from linux avoids all of msvc's annoying/awkward dependencies etc too, which also makes cross compiling preferred over using gcc in windows weirdly enough. cmake sucks for cross compiling though.

native linux just uses the Makefile, not needing any cross stuff on linux.

either way no build artefacts getting uploaded so no idea so its not really about releases but what you feel like testing... not sure if intentional.

alexey-lysiuk commented 7 months ago

either way no build artefacts getting uploaded so no idea so its not really about releases but what you feel like testing... not sure if intentional.

Continuous integration is about verification of committed changes. It's not about releasing anything. Build artifacts can be added if you really want. Their purpose is issue investigation, and they have nothing to do with making releases.

no need to worry about msvc projects, and of course no windows needed. cross-compiling from linux avoids all of msvc's annoying/awkward dependencies etc too, which also makes cross compiling preferred over using gcc in windows weirdly enough.

Have no idea what "annoying/awkward dependencies" are as Visual Studio solution works just fine (after addition of missing files from my previous PR).

native linux just uses the Makefile, not needing any cross stuff on linux.

What's "cross stuff"? The proposed workflow checks native build with GCC and Clang.

Shpoike commented 6 months ago

using builds from a trusted third party ensures gpl compliance, more than the gpl really requires but eliminates all doubt when the malware scanners start trying to shut down your entire website due to their buggy false positives.

MSVC dependancies: The whole .net runtime bloat for C# stuff in a C program. not everyone has every single specific version of it already installed resulting in weird 'this program failed to start' messages when not installed. Whereas the older msvc6 libs are included as part of the OS itself - which is all the linux builds of mingw need thereby avoiding any external dependencies... beyond the dlls quakespasm normally uses. Just to clarify, the windows builds of mingw like including all sorts of dll dependancies, while the linux builds just statically link anything extra they need. So yeah, crosscompiling the windows builds from linux just imho gives the best results for actual releases (assuming there's no compiler bugs anyway).

alexey-lysiuk commented 6 months ago

Replaced MSVC with MinGW workflow.