Feature #23307
closedinstall-dev-tools installs Bundler to a dedicated GEM_HOME
Description
The API server package needs to run Bundler from a dedicated GEM_HOME to prevent it from mis-building packages based on what gems are already installed on the system. Today this happens in the package build function in source:build/run-library.sh. It would be better if install-dev-tools set this up to avoid duplicate work.
- Update the gem install task to install Bundler to
/opt/arvados-bundler. - Install wrapper scripts
/usr/local/bin/bundleandbundlerthat setGEM_HOMEandGEM_PATHand then call the corresponding script from/opt/arvados-bundler.
Updated by Brett Smith 4 months ago
- Target version set to Development 2025-12-10
- Assigned To set to Brett Smith
- Status changed from New to In Progress
The Ansible part of this got done during #23310 in 83bc8e852f1a4657dac128d1c7738f80b77ef9e6. We still need to update the package build script to actually take advantage of it.
Updated by Brett Smith 4 months ago
· Edited
23307-no-build-bundler @ fd5af8debe24d412ee2d625c9e7d4f4b4492681d - build-packages: #9 and build-packages: #10
- ubuntu2404 failed temporarily, then Jenkins called the second build good after that passed.
- All agreed upon points are implemented / addressed. Describe changes from pre-implementation design.
- Yes
- Anything not implemented (discovered or discussed during work) has a follow-up story.
- N/A
- Code is tested and passing, both automated and manual, what manual testing was done is described.
- See above
- Tested code incorporates recent main branch changes.
- Yes
- New or changed UI/UX and has gotten feedback from stakeholders.
- N/A
- Documentation has been updated.
- Not really/A but I did spell out comments is both halves of the code to try to clarify the rationale and relationship between them.
- Behaves appropriately at the intended scale (describe intended scale).
- No real change here, this makes it easier for us to improve scale later by pre-building package build Docker images.
- Considered backwards and forwards compatibility issues between client and server.
- N/A
- Follows our coding standards and GUI style guidelines.
- N/A, no style guide for shell or Ansible
Updated by Tom Clegg 4 months ago
LGTM, except one note,
Brett Smith wrote in #note-2:
23307-no-build-bundler @ fd5af8debe24d412ee2d625c9e7d4f4b4492681d - build-packages: #9
and build-packages: #10
- ubuntu2404 failed temporarily, then Jenkins called the second build good after that passed.
Build 10 seems to be e51568c463 (main), not this branch.
The failure was
* net-imap-0.4.22.gem Missing gem file 'net-pop-0.1.2.gem'. ERROR: arvados-api-server package prep failed ERROR: build packages on arvados/build:ubuntu2404 failed with exit status 1 ======= build packages -- FAILED
It does look like a transient error, and this change seems unlikely to actually cause a problem on ubuntu2404 that doesn't show up on any other platform, so it would be reasonable to merge anyway.
Updated by Brett Smith 4 months ago
Tom Clegg wrote in #note-4:
Build 10 seems to be e51568c463 (main), not this branch.
Yeah, I was wrong. That was not an automatic retry, it was a completely unrelated build that happened to run right after. My bad.
The failure was […] It does look like a transient error
It is not, that failure mode is exactly the bug we're trying to work around and prevent.
Rebased on main to get recent changes. Now at 87bbb0110d81a7be5bf6a917dcb217d74dcd7620. The functional change from last time is we set GEM_HOME and GEM_PATH to /opt/arvados-bundler (the one installed by Ansible) rather than trying to set them blank. This is closer to what happens in main.
Updated by Brett Smith 4 months ago
- Status changed from In Progress to Resolved
Applied in changeset arvados|ac6c6515772968dfa10c873bc49ca8cfbc7bf5c5.