-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add github CI #125
add github CI #125
Conversation
actions needs enabling looks like |
actions are visible in your repo until it's merged: |
Thank you for putting this all together! Looks like there may be some items that need fixing to be able to pass on all platforms.
I am very interested in ironing things out to get this committed, though will not have some solid, uninterrupted time to spend on this for another week or two. |
FYI, lighttpd
and the above is apparently what leads to I had experimented with a few things (back in 2020ish(?))
I do not know what the "right" answer is, but the above is context around what is currently in the code. |
__USE_MINGW_ANSI_STDIO should only be defined for non UCRT. |
Is |
Should we exclude 'x86' and 'MINGW32' and 'CLANG32' ?
Some untested patches to address some 32-bit warnings on Windows.
|
What’s wrong with 32 bit? |
My question more is "what is useful about 32-bit software on Windows?" (edit: ... in 2023) |
That's not the issue. The issue is that CI offers no good way to test 32-bit platforms besides windows. Could try cross compiling but that's more work than just testing a 32-bit platform. Anyway, I'll update this PR with fixes and whatnot when I get some time. I'm out of the country right now. |
You will likely run into loads of _WIN32-$@#%@#^ Windows-specific "compatibility" issues if you attempt building lighttpd 32-bit on Windows. I will not prioritize fixing any Windows-specific 32-bit build issues. (64-bit lighttpd on Windows is separate and is desirable to be part of CI.)
This seems like a much better issue to spend time addressing.
In one of the Ubuntu containers, can you add packages for gcc 32-bit compiler toolchain and/or clang 32-bit compiler toolchain? Prebuilt packages should be available for the compiler toolchains. Once the toolchain is installed, a slight modification of the build setup invocation (to specify the target arch) should be all that is needed to build a minimal lighttpd executable, though admittedly without any dependencies unless packages for 32-bit libs are also available to be installed. |
AFAIK a cross file is required to do so. It’s much less work to just test 32-bit Windows. That being said, 64-bit Windows doesn’t build currently either. |
lighttpd on Windows builds for me (manually) under cygwin mingw using autoconf, and under MSVC using cmake. FYI, I pushed some fixes to lighttpd master branch to clean up some warnings I saw in the CI logs for 32-bit Windows builds. I hope that helps. I won't be able to accept this PR with platforms on which CI does not pass, so we might consider putting the CI in place for the platforms that currently work, and add additional platforms in new PRs. |
Hmm I thought I made this a draft. It's nowhere near ready. I mostly copied it from exiv2's CI. I'll rebased on master. |
bff423d
to
39dbee2
Compare
Nice. Ok. I had overlooked that. No rush. I generally try to encourage contributors by making some forward progress and setting expectations when I'll have time to review, troubleshoot, and improve. |
(thx neheb) initial take by neheb reduced and updated to a mostly-working set of OS in this commit x-ref: "add github CI" #125
@neheb thank you for the effort in getting this started. I made some minor changes for portability and updated the macOS meson build to use .so instead of .dylib, and now the unix-like platforms build and most platforms run and pass all the tests. (TODO: For some reason, NetBSD and OpenBSD lighttpd test run fails to find the test lighttpd.conf, even though FreeBSD and DragonflyBSD run the exact same commands in the .yaml and succeed in running the tests.) Those changes have been pushed to lighttpd git master. If you're interested in working further on this PR, it will need to be rebased and merge conflicts resolved, due to some of the updates that I made. When I find more time and am feeling masochistic, I may continue trying to get the github CI to work for native Windows and MSYS builds, though I will probably do so using autoconf or CMake instead of meson, since I know that autoconf works under cygwin to cross-compile for native Windows, and CMake works under Visual Studio GUI. To get that working with meson would probably require looking at lighttpd |
@neheb: curious: why did you name the matrix 'deps' when it is used for meson |
Forgot about this PR. Features are typically paired with extra dependencies. I’ll rebase when I get time. |
Signed-off-by: Rosen Penev <[email protected]>
Signed-off-by: Rosen Penev <[email protected]>
Signed-off-by: Rosen Penev <[email protected]>
deda7e7
to
7e43fde
Compare
d6190f5
to
1d50e3c
Compare
latest compilers are a lot more strict. Simplifies workflow file. Signed-off-by: Rosen Penev <[email protected]>
Remove pointless and redundant Name entries. Remove auto features. They require a value setting to be absent in meson_options.txt. Signed-off-by: Rosen Penev <[email protected]>
@gstrauss last two commits can go in. |
Thank you. I cherry-picked those two changes. I made some additional changes, added some more platforms to the build, and renamed meson.yml to pr.yml. The CI is now passing on all platforms, including 32-bit and 64-bit platforms. On some platforms, and for different reasons, I had to use cmake instead of meson, which is why I renamed meson.yml to pr.yml. While I do not have further time at the moment to work on this, future work to expand build coverage might install additional packages and enable additional lighttpd modules which rely on additional underlying libraries, e.g. TLS libs, database access libs, and more. |
@neheb: turns out (as I expected) that there are good options to run 32-bit VMs for CI. I have added the Alpine VMs to lighttpd github CI to test lighttpd on various 32-bit architectures, and I have removed the MSYS2 32-bit builds. https://github.com/lighttpd/lighttpd1.4/blob/master/.github/workflows/pr.yml |
Well, for 32-bit you could also cross compile. |
Closing this as the CI is building 32-bit and 64-bit on Linux, and is building 64-bit on Cygwin, MSYS, and other platforms. Thanks for the initial inspiration! |
barebones CI.
The MSYS2 failures are the ones to look at.
the printf issue needs a fix like https://github.com/Exiv2/exiv2/blob/main/src/image_int.hpp#L15