-
Notifications
You must be signed in to change notification settings - Fork 101
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
ci: add Windows builds + tests #249
Conversation
First successful build: |
Second run (3m11s), with downloadable artifacts: |
Nice! There is of course a lot of stuff in that downloadable, but we can potentially polish on that later. |
More details about these builds:
|
@bagder: Yes, the artifact was tailored for curl. For trurl this can be re-done locally by picking out |
Improved artifacts with nothing else than necessary for trurl:
|
8a21a68
to
05af44a
Compare
4d8eb72
to
278ee48
Compare
21c027f
to
2f80800
Compare
Now with a 'flat' package artifact:
|
Use a solution that doesn't need `find -execdir`, because that is not supported by busybox (alpine): ``` find: unrecognized: -execdir BusyBox v1.36.1 (2023-07-27 17:12:24 UTC) multi-call binary. ``` https://github.com/curl/curl-for-win/actions/runs/6827484086/job/18569701123#step:3:5661 Also useful for trurl CI job: curl/trurl#249
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Disable UNITY builds in curl to make `trurl` binaries about 120KB smaller each. Regain some of the lost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint. Ref: curl#109 Closes curl#249
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Disable UNITY builds in curl to make `trurl` binaries about 120KB smaller each. Regain some of the lost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint. Ref: curl#109 Closes curl#249
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Disable UNITY builds in curl to make `trurl` binaries about 120KB smaller each. Regain some of the lost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint. Ref: curl#109 Closes curl#249
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Boost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint and build time. Non-UNITY libcurl builds can make turl binaries about 120KB smaller, but they require 2x build times (4m vs. 2m), so opted not to use those here. Ref: curl#109 Closes curl#249
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Boost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint and build time. Non-UNITY libcurl builds can make turl binaries about 120KB smaller, but they require 2x build times (4m vs. 2m), so opted not to use those here. Ref: curl#109 Closes curl#249
f82c5fc
to
38c249a
Compare
When trying to run tests (after fixing a bunch of roadblocks), there are 10 tests still failing: These are test tests failing in the Windows libcurl + wine configuration:
E.g.:
Does anybody have an idea where the problem might be? UPDATE-1: This replicates with a local macOS build, using curl 8.5.0-DEV. |
Add automated Windows builds. Use curl-for-win with llvm + mingw64, and a minimal curl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Boost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint and build time. Non-UNITY libcurl builds can make turl binaries about 120KB smaller, but they require 2x build times (4m vs. 2m), so opted not to use those here. Ref: curl#109 Closes curl#249
Right, the solution is that I reduced the libcurl build to the absolute minimum, meaning no TLS, but, this also makes curl not recognize the HTTPS scheme anymore, thus not regarding 443 a default port for HTTPS. And since by default trurl hides default ports, it hides it with a libcurl built with a TLS backend and shows it with a libcurl without a TLS backend. This extends to all schemes a curl build might recognize, e.g. FTP in above failures (which FWIW are also disabled in the libcurl here). If anything, tests should not rely on such property of libcurl, so one good fix is to add |
afe21ca
to
51954d1
Compare
Down to:
UPDATE: Fixed by enabling IMAP in libcurl and moving imaps to imap to work without TLS. |
Add automated Windows builds and tests. Use curl-for-win with llvm + mingw64, and a minimal libcurl build with no external dependencies to build x64, ARM64 and x86 `trurl.exe`. Boost build performance by not building the curl tool [EXPERIMENTAL]. Use a customized curl-for-win build with disabled TLS to further reduce footprint and build time. Non-UNITY libcurl builds can make turl binaries about 120KB smaller, but they require 2x build times (4m vs. 2m), so opted not to use those here. Also enable tests and fix issues along the way: - libcurl with IDN support cannot be used because trurl itself lacks UNICODE support and thus fails to accept non-ASCII strings via the command-line. ``` expected: 'https://xn--rksmrgs-5wao1o.se/\n' got: '' 104: failed 'https://räksmörgås.se' -g '{puny:host}' ``` Ref: https://github.com/curl/trurl/actions/runs/6863796328/job/18664263891#step:3:4406 - add `test.py` support for a runner like `wine`. Via `--runner=<bin>` option. This disables `valgrind` tests. - add `test.py` to override the default `trurl` binary to test. Via `--trurl=<bin>` option. - skip `stderr` tests when using a runner. (`wine` does trash `stderr` output) - fix to enable `punycode2idn` only when libcurl has IDN support. - delete line-ending spaces from `test.json`. - add `--keep-port` to 6 tests to avoid relying on libcurl builds with specific protocols enabled, such as HTTPS or FTP. - add a new test with default-port using http/80. - update 4 tests to use http/imap instead of https/imaps to make them work with no-TLS libcurl. - build libcurl with IMAP to make 'options' URL field extraction work in tests. Fixes curl#109 Closes curl#249
Add automated Windows builds and tests.
Use curl-for-win with llvm + mingw64, and a minimal libcurl build with
no external dependencies to build x64, ARM64 and x86
trurl.exe
.Boost build performance by not building the curl tool [EXPERIMENTAL].
Use a customized curl-for-win build with disabled TLS to further reduce
footprint and build time.
Non-UNITY libcurl builds can make turl binaries about 120KB smaller, but
they require 2x build times (4m vs. 2m), so opted not to use those here.
Also enable tests and fix issues along the way:
UNICODE support and thus fails to accept non-ASCII strings via the
command-line.
test.py
support for a runner likewine
.Via
--runner=<bin>
option. This disables
valgrind
tests.test.py
to override the defaulttrurl
binary to test.Via
--trurl=<bin>
option.stderr
tests when using a runner.(
wine
does trashstderr
output)punycode2idn
only when libcurl has IDN support.test.json
.--keep-port
to 6 tests to avoid relying on libcurl builds withspecific protocols enabled, such as HTTPS or FTP.
work with no-TLS libcurl.
tests.
Fixes #109
Closes #249