Open
Conversation
Using Rosetta to build the x86_64 agent on arm64 didn't quite work out. Instead, this does real cross-compilation on an arm64 host.
The amount of branching logic here was getting out of control, so this cleans it up to make it much easier to follow (hopefully).
Originally submitted by @binford2k Nokogiri was used to bump performance on MacOS clients when parsing plist files. Without it, CFPropertyList will fall back to rexml. However, performance testing indicates that the boost is negligible. This just removes it and reduces our security exposure. This also remove the libxslt library from the agent runtime, but doesn't actually delete the component yet because Bolt uses it.
We should do this with all of the gems to ensure the 'gem install' during build time does things in the correct order, but this covers the agent gems.
This should be fairly obvious, but this puts the explicit require before installing any gems, just in case Vanagon decides to switch up the order.
This was referenced Sep 24, 2025
bastelfreak
approved these changes
Sep 24, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The experiment using Rosetta, while it actually probably worked okay, was very slow and could potentially cause problems if Rosetta translates something incorrectly during the build process. Instead, this implements the changes needed to do a true cross-compilation using and arm64 host.
Additionally, this removes the nokogiri gem and mini_portile2 gem dependency. While nokogiri makes XML parsing very slightly faster, it isn't nearly enough to be worth the headache of compiling it and maintaining it, especially since rexml is pretty fast these days.
This also cleans up the rubygem-ffi file, as its logic was getting pretty hard to follow, and adds explicit build dependencies for gems with runtime dependencies.