{"author":"Viktor Szakats","author_email":"commit@vsz.me","author_time":1757492717,"commit_time":1757552839,"committer":"Viktor Szakats","committer_email":"commit@vsz.me","hash":"0455d8772a1af20ce63c46c5738582aa9b1b8441","message":"GHA: minimize installed packages in http3-linux and Windows cross-builds\n\nIn the last couple of months some jobs started taking a lot of time and\noften timing out due to slow `apt install` from the Azure Ubuntu mirror.\n\nThe jobs affected were those that installed large packages:\nGHA/http3-linux and the 3 cross-build jobs in GHA/windows.\n\nThis patch reduces the installed packaged to the minimum required\nto complete the jobs. Saving a minute+ for each http3-linux job (a total\nof 20+ minutes for the workflow.) Also saving bandwidth and reducing\nthe chance for long downloads or timeouts with slow Azure repos.\n\nDetails:\n- http3: delete redundant packages from the `build-cache` job.\n- http3: install gnutls dependencies for gnutls jobs only.\n- http3: do not install test dependencies in jobs not running tests.\n- http3: drop redundant packages from the curl jobs.\n- Windows-cross: replace `mingw-w64` with `gcc-mingw-w64-x86-64-win32`\n  for the 3 Windows cross-build job. Dropping C++, 32-bit, and 64-bit\n  POSIX-threaded parts. Saving time and significant bandwidth for each\n  of the 3 jobs:\n  Download size: 277 MB -> 65 MB (installed: 1300 MB -> 400 MB)\n- Windows-cross: restore previous job time limit of 15m (from 45m)\n  Follow-up to ff5140a25f42fef80325c6e28c4802fdb7e06386 #18163\n\nBefore:\nhttps://github.com/curl/curl/actions/runs/17611514207 (http3)\nhttps://github.com/curl/curl/actions/runs/17611514185/job/50034354923 (Windows cross)\n\nAfter:\nhttps://github.com/curl/curl/actions/runs/17628406362?pr=18509 (http3)\nhttps://github.com/curl/curl/actions/runs/17627562551/job/50088055529?pr=18509 (Windows cross)\n\nhttp3 job           |    Bef. |    Aft. |\n:------------------ | ------: | ------: |\nBuild caches (hot)  |     10s |     12s |\nAM awslc            |  3m  0s |  1m 54s |\nCM awslc            |  4m 32s |  3m  4s |\nAM boringssl        |  3m  9s |  1m 48s |\nCM boringssl        |  3m 43s |  3m  2s |\nAM gnutls           |  3m  9s |  2m 18s |\nCM gnutls           |  4m 19s |  2m 55s |\nAM libressl         |  2m 14s |  1m 24s |\nCM libressl         |  5m 30s |  2m 57s |\nAM openssl          |  5m 16s |  4m 17s |\nCM openssl          |  1m 50s |  1m 47s |\nAM openssl-quic     |  2m 58s |  1m  7s |\nCM openssl-quic     |  4m 16s |  2m 43s |\nAM quiche           |  2m 54s |  1m 34s |\nCM quiche           |  5m  0s |  3m 15s |\nAM quictls          |  2m 34s |  1m 13s |\nCM quictls          |  4m 20s |  3m 17s |\nAM wolfssl          |  2m 48s |  1m 30s |\nCM wolfssl          |  4m 49s |  3m 22s |\nTotal:              | 66m 21s | 43m 27s |\nGain:               |         | 22m 54s |\n\nOut of curiousity, build times as seen in the http3 build-cache job:\n- TLS backends:\n  - openssl: 2m25s\n  - libressl: 27s\n  - aws-lc: 41s\n  - boringssl: 1m8s\n  - quictls: 1m46s\n  - gnutls: 6m30s\n  - wolfssl: 51s\n  - quiche + boringssl: 1m9s\n- ng* libs (not yet optimized for build speed):\n  - nghttp3: 13s\n  - ngtcp2: 52s (with 6 backends, 3 runs)\n  - ngtcp2: 19s (boringssl)\n  - nghttp2: 21s\nRef: https://github.com/curl/curl/actions/runs/17626120054/job/50083344805\n\nA similar effort in curl-for-win, affecting 2 GHA/curl-for-win Windows\njobs (though they use the default Debian repo, with no issues):\n- with llvm/clang:\n  Download size: 648 MB -> 430 MB (installed: 3344 MB -> 2333 MB)\n- with gcc:\n  Download size: 550 MB -> 328 MB (installed: 2815 MB -> 1804 MB)\nRef: https://github.com/curl/curl-for-win/commit/e19665d9486bdca60f996ed2e198a66128cfba38\nRef: https://github.com/curl/curl-for-win/commit/6b14c3946a8c89dc1d3847afc9501fc71f3ac628\n\nBug: https://github.com/curl/curl/pull/18502#issuecomment-3270259744\n\nCloses #18509\n","parents":["3ba74c43953087f441104f65918ed82f2078b4c3"],"tree_hash":"c6fbb14e279c71914f32568b0218402acfed7be7"}