From 100e1b5c7138230b4eacf5c8de67fd15ef98759a Mon Sep 17 00:00:00 2001 From: Christopher Thorn Date: Thu, 18 Apr 2024 09:53:56 -0700 Subject: [PATCH] (maint) Use packaged libxml to build nokogiri on MacOS This PR changes the gem install command for the Nokogiri gem. Currently when building nokogiri it uses the system libxml2 and libxslt. We now will pass in an option in the `gem install` command to use the expected libraries. --- configs/components/_base-rubygem.rb | 8 +++++--- configs/components/rubygem-nokogiri.rb | 15 +++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/configs/components/_base-rubygem.rb b/configs/components/_base-rubygem.rb index 145bd68b1..bacdeffeb 100644 --- a/configs/components/_base-rubygem.rb +++ b/configs/components/_base-rubygem.rb @@ -37,6 +37,8 @@ pkg.url("https://rubygems.org/downloads/#{name}-#{version}.gem") pkg.mirror("#{settings[:buildsources_url]}/#{name}-#{version}.gem") -pkg.install do - "#{settings[:gem_install]} #{name}-#{version}.gem" -end +unless name =~ /nokogiri/ + pkg.install do + "#{settings[:gem_install]} #{name}-#{version}.gem" + end +end \ No newline at end of file diff --git a/configs/components/rubygem-nokogiri.rb b/configs/components/rubygem-nokogiri.rb index 455df870d..6404c5911 100644 --- a/configs/components/rubygem-nokogiri.rb +++ b/configs/components/rubygem-nokogiri.rb @@ -7,12 +7,15 @@ gem_home = settings[:gem_home] pkg.environment "GEM_HOME", gem_home - - # When cross compiling nokogiri native extensions on macOS 11/12 ARM, there is a 94M tmp - # directory that's not needed - if platform.is_macos? && platform.architecture == 'arm64' - install do - "rm -r #{gem_home}/gems/nokogiri-#{pkg.get_version}/ext/nokogiri/tmp" + if platform.is_macos? + pkg.environment "PKG_CONFIG_PATH", "#{settings[:libdir]}/pkgconfig" + pkg.install do + "#{settings[:gem_install]} nokogiri --platform=ruby -- --use-system-libraries --with-opt-dir=/opt/puppetlabs/puppet" + end + if platform.is_cross_compiled? + pkg.install do + "rm -r #{gem_home}/gems/nokogiri-#{pkg.get_version}/ext/nokogiri/tmp" + end end end end