Fable v3 windows#1207
Conversation
…lang >= 20 Go passes the MinGW-only -mthreads flag to the C compiler for cgo builds (golang/go#16932); Clang >= 20 rejects it for the MSVC target, so the final frankenphp go build fails on current windows-latest (VS 18 / LLVM 20+). Wrap Clang with a generated .bat that drops the -mthreads token and forwards the rest, used only when the detected Clang refuses the flag.
…n be removed later
|
StaticPHP Test Bot Detected: Extensions: |
|
postgresql build depends on meson that we haven't installed in our procedure. Either install in msys2, or add a separate |
|
Fixes for the three failing Windows tests are in #1208 (four separate bugs, details over there). Hope it helps getting this branch merged 🙂 |
- the meson build assumed meson/ninja/win_flex/win_bison/perl on PATH, which only held on machines that had them installed - add meson, ninja and winflexbison tool packages and declare them via tools@windows on postgresql, together with the existing strawberry-perl - meson no longer ships a Windows MSI, so the wheel is installed offline into a venv: postgres re-invokes meson through find_program, which needs the real meson.exe launcher pip generates
- php.exe already links with /FORCE:MULTIPLE for extension-bundled duplicate symbols, cgi and micro did not - imagick's MagickCore defines gettimeofday, also defined in php's time.obj, and both links failed with LNK2005
- libpq authenticates through SSPI and the static libcrypto behind it reads the system cert store; php.exe failed to link with unresolved Cert* and SSPI symbols when the openssl extension is not in the build
- static-libs@windows listed both libiconv.lib (the dll import lib) and libiconv_a.lib; the import lib came first, so php.exe ended up importing libiconv.dll and the cli smoke test died with STATUS_DLL_NOT_FOUND on machines without it
- add a python-win tool package that unzips the official python.org nuget package into the pkgroot (venv and ensurepip included) - meson uses it to build its venv and only falls back to a system python, so no manual environment setup is needed
…dle hash storage for both file and directory targets
|
Even in |
|
DigitalOcean spaces exceeds 1024GB/month bandwidth and RackNerd VPS looks not stable though. Perhaps it's worth considering switching to Cloudflare R2 and enabling CDN. |
|
Digital Ocean is limited to just 1TB? I exceed that on just my package delivery. If Cloudflare R2 isn't too expensive, perhaps. Though we don't really need CDN, just stable connection for the GH runners. |
|
Maybe using a response file like in php-src’s Makefile would work for the command length limit on Windows ?clang and lld both accept @libs.rsp, php-src's Windows Makefile already does that for its lists (the *_RESP variables). |
- with big extension stacks (imagick) the link command lines exceed what cmd.exe allows and fail with 'The command line is too long' - pass the collected LIBS_CLI/LIBS_CGI/LIBS_MICRO lib lists to link.exe through @response files, like php-src already does for its object lists - compile the frankenphp -mthreads shim instead of generating a .bat: batch files run through cmd.exe and cap cgo link lines at 8191 chars, a real executable gets the full 32K and past that go writes a response file by itself; still probe-gated, still a stopgap for golang/go#80290
|
Opened #1209 for the cmd command line limit that killed the imagick [frankenphp] job. |
- C:\im was outside the project so bin/spc reset could not clean it - with the command line limit fixed a short base path is no longer needed; keep SPC_IMAGEMAGICK_BUILD_DIR as an override
What does this PR do?
Checklist before merging
*.phpor*.yml, run them locally to ensure your changes are valid:composer cs-fixcomposer analysecomposer testbin/spc dev:lint-config