winlibs / winlib-builder

MIT License
6 stars 5 forks source link

fetch-deps fails for vs17 series #23

Open cmb69 opened 3 hours ago

cmb69 commented 3 hours ago

The vs17 series files contain many entries for vs16 dependency builds. However, fetch-deps.ps1 can't handle this, since it always tries to fetch a vs17 dependency. For instance, a library should be build against PHP 8.4, x64, staging, and requires zlib. fetch-deps.ps1 would read the respective series file, finds that it needs to fetch zlib-1.3.1, but would then try to download zlib-1.3.1-vs17-x64.zip, which doesn't exist. For a couple of builds, I've worked around with a hack. Note that phpsdk_deps doesn't have this problem, since it just downloads what is specified; however, phpsdk_deps doesn't handle PECL dependency libs at all, while there is some basic support in fetch-deps.ps1.

Background: until a few years ago, we rebuilt all dependencies for every new major VS version. We even needed to rebuild a couple of extensions for some minor VS versions, because especially PGO builds have been very picky about static libraries. Then somebody came up with the (undocumented) /d2:-AllowCompatibleILVersions option to cl.exe, and that works great (at least I haven't noticed any issues).

Now the question is whether fetch-deps.ps1 should be fixed to fetch the proper dependency builds, or whether we want to roll out new builds of the core dependencies for PHP 8.4 (and up). I'm on the fence here: while I would prefer rolling out new builds (seems "cleaner", and might be better optimized), I understand that this requires quite some time (which is rare).

@shivammathur, what do you think? If you prefer to (mostly) stick with the vs16 builds, I can provide a PR to fix fetch-deps.ps1 (I think I can; although I would prefer to have a fetch-deps.php).

shivammathur commented 2 hours ago

@cmb69 Lets do vs17 builds, Since you already updated the workflows it should be easy.