From: Patrick Steinhardt <ps@pks.im>
To: Justin Tobler <jltobler@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] gitlab-ci: migrate Windows builds away from Chocolatey
Date: Thu, 18 Jun 2026 07:40:41 +0200 [thread overview]
Message-ID: <ajOE2XMBzgrXxbH8@pks.im> (raw)
In-Reply-To: <ajL1677NQShTO6tD@denethor>
On Wed, Jun 17, 2026 at 03:03:39PM -0500, Justin Tobler wrote:
> On 26/06/15 02:21PM, Patrick Steinhardt wrote:
> > Introduce a new script that downloads and installs dependencies
> > directly. This has a couple of benefits:
> >
> > - We can drop our dependency on Chocolatey completely, thus improving
> > reliability.
> >
> > - We can easily cache the installers.
> >
> > - We get direct control over the exact versions we install.
>
> Naive question: Do we expect to have to update the pinned versions
> often?
Not really, no, as we're quite conservative when it comes to updating
minimum required versions of dependencies.
> > - Installing dependencies is sped up from roundabout 3 minutes to 1
> > minute.
>
> Is fetching the dependencides directly just plain faster? Or is this due
> to the caching?
Downloading the dependencies doesn't seem to be the cause -- fetching
them without a cache takes only ~3-4 seconds in total, and it didn't
take much longer with Chocolatey. I think it's rather that Chocolatey
does a bunch of extra steps and installs extra components that we don't
need, and that saves us some time:
- Installing Git is reduced from 70 seconds to 40 seconds.
- Installing Meson and Ninja is reduced from 20 seconds to 4 seconds.
- Installing Rust is reduced from 70 seconds to 23 seconds.
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index e0b9a0d82b..87a5343a94 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -161,11 +161,16 @@ test:mingw64:
> > TEST_OUTPUT_DIRECTORY: "C:/Git-Test"
> > tags:
> > - saas-windows-medium-amd64
> > + cache:
> > + key:
> > + files:
> > + - ci/install-dependencies.ps1
> > + paths:
> > + - .dependencies
>
> Nice that we can cache the installers now.
Yeah. The intent behind this is less that we save download time (which
as mentioned above is miniscule), but more that it should give us more
reliability because we have less interactions with the internet.
> > before_script:
> > - *windows_before_script
> > - - choco install -y git meson ninja rust-ms
> > - - Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
> > - - refreshenv
> > + - ./ci/install-dependencies.ps1
> > + - $env:Path = "C:\Meson;C:\Rust\bin;$env:Path"
>
> I assume Git is already discoverable on the path?
Good question -- in fact it's not, but in Meson we know to use the
well-known path of "C:\Program Files\Git" automatically and that's why
we don't have to add it here. That certainly is a bit hacky, but I'm not
sure whether we need to change it.
Just let me know if you think so.
Thanks!
Patrick
prev parent reply other threads:[~2026-06-18 5:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 12:21 [PATCH] gitlab-ci: migrate Windows builds away from Chocolatey Patrick Steinhardt
2026-06-17 20:03 ` Justin Tobler
2026-06-18 5:40 ` Patrick Steinhardt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ajOE2XMBzgrXxbH8@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=jltobler@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.