Brett Smith [Sat, 20 Apr 2024 13:43:01 +0000 (09:43 -0400)]
21700: Work around incomplete `bundle cache` bug
It seems like the problem I was working around for zlib 3.1.0 on Ubuntu
20.04 earlier can affect basically any gem at any step, if you happen to
already have the exact same version installed on the system. This commit
adds workarounds for all gems at all steps of the bundle setup.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 19 Apr 2024 19:13:22 +0000 (15:13 -0400)]
21700: Select more desired modules in rocky8 test Dockerfile
This prevents needless thrashing when the Dockerfile installs one set of
packages and then packages we test enable and reinstall a different
module stream.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 19 Apr 2024 16:11:36 +0000 (12:11 -0400)]
21700: Remove `bundle install` from package build Dockerfiles
This work is better done in the package build script. I suspect the
problem that it's trying to solve is better solved by isolating the
RailsAPI `vendor` directory as done in 0333f33a7413aadb7159563e0a7aa2a0a50acaec.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
As long as we have something at least as recent as 2.4.0, that should be
enough for function. This recipe meets our functional needs while
striking a balance between being easy to implement and avoiding
redundant installs.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 19 Apr 2024 15:24:36 +0000 (11:24 -0400)]
21700: Remove RVM support
We haven't reliably tested this in a long time, and it's a lot of code
for no benefit. In general we want to support the versions of Ruby that
come with the distributions we support. Anybody in a very weird case can
install a supported version of Ruby from source.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 19 Apr 2024 14:05:45 +0000 (10:05 -0400)]
21700: Better isolate Bundler from the build source
This helps ensure that when we build the RailsAPI package with Bundler,
we don't accidentally pick up settings or files from the developer's
machine. This shouldn't matter when we build packages on Jenkins but
this makes it easier for developers to test package builds on their own
systems.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Tue, 5 Mar 2024 19:17:15 +0000 (14:17 -0500)]
21383: Remove docker-ce version pin
Now that we've removed support for older distros, all the distros we
currently support have the minimum version of docker-ce
available. Meanwhile, that older version is not available for some newer
distros we want to support. Remove the pin accordingly.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Tue, 5 Mar 2024 19:16:06 +0000 (14:16 -0500)]
21383: Standardize on os-release variables
This script was getting this information three different ways: by
reading /etc/os-release, calling lsb_release, and using its own internal
lookup tables. This is silly. Just read /etc/os-release and use those
variables throughout.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Tue, 16 Jan 2024 14:17:04 +0000 (09:17 -0500)]
21383: Update Salt installer formulas
I'm not aware of any specific reason we need this, but it's good
maintenance since I'm in here anyway.
letsencrypt 3.0.0 does introduce a backwards incompatible change because
it no longer installs the Apache plugin by default. Since we never
wanted that plugin and always specify the pkgs we want anyway, this
shouldn't affect us.
https://github.com/saltstack-formulas/letsencrypt-formula/blob/master/CHANGELOG.md#300-2021-07-02
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Mon, 15 Jan 2024 18:39:34 +0000 (13:39 -0500)]
21383: Upgrade Salt installer to Salt 3006
Salt 3006 is the first version to support Python 3.11, included with
Debian 12.
Because 3006 is the current stable, we have to update the bootstrap
invocation to match. I guess we'll have to make another change after it
becomes old-stable.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 5 Apr 2024 19:06:12 +0000 (15:06 -0400)]
21583: Configure Passenger with passenger_preload_bundler
This helps avoid situations where Passenger loads gems that create
a conflict with our bundle. We're currently seeing this with the base64
gem, where Passenger on Ruby 3.[0-3] can load the version shipped with
that Ruby before our RailsAPI bundle gets loaded. This causes an error:
[ E 2024-03-12 15:12:44.8347 907382/Tf age/Cor/App/Implementation.cpp:221 ]:
Could not spawn process for application /var/www/arvados-api/current:
The application encountered the following error: You have already
activated base64 0.1.1, but your Gemfile requires base64 0.2.0. Since
base64 is a default gem, you can either remove your dependency on it or
try updating to a newer version of bundler that supports base64 as a
default gem. (Gem::LoadError)
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Lucas Di Pentima [Thu, 11 Apr 2024 14:42:28 +0000 (11:42 -0300)]
21654: Reverts net-imap to a previous version to keep ruby compatibility.
Bundler upgraded this gem when upgrading rails to 7.0.8.1, making it
incompatible with ruby 2.7.2, but rails doesn't explicitly asks a new
net-imap version.
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>
Tom Clegg [Thu, 11 Apr 2024 14:35:17 +0000 (10:35 -0400)]
21657: Update docker archive ID introspection code for OCIv2.
Also, when not using the built-in image, we already rely on having
docker tools available, so use `docker inspect` instead of trying to
read the tarball.
This way the introspection code now only needs to work on the built-in
image. And now there's a test for that.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Peter Amstutz [Fri, 5 Apr 2024 22:53:37 +0000 (18:53 -0400)]
21639: Reenable prefetch, but not on every read()
Only do prefetch every 128 invocations of read().
This should dramatically reduce the overhead of computing prefetch
while still getting some or moste of the benefits of prefetching.
Indeed, benchmarking suggests that this prefetching strategy, by
advising the kernel to map blocks into RAM, may actually improve
throughput on the high end.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>