Skip to content

Conversation

nmburgan
Copy link
Member

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.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants