Skip to content

Commit

Permalink
Merge pull request puppetlabs#832 from cthorn42/maint/main/nokogiri_g…
Browse files Browse the repository at this point in the history
…em_install_patch

(maint) Use packaged libxml to build nokogiri on MacOS
  • Loading branch information
mhashizume authored May 1, 2024
2 parents 76548a0 + 5f202ab commit f9068e6
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 10 deletions.
13 changes: 11 additions & 2 deletions configs/components/_base-rubygem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,15 @@
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"
# If a gem needs more command line options to install set the :gem_install_options
# in its component file rubygem-<compoment>, before the instance_eval of this file.
if settings[:gem_install_options].nil?
pkg.install do
"#{settings[:gem_install]} #{name}-#{version}.gem"
end
else
pkg.install do
"#{settings[:gem_install]} #{name}-#{version}.gem #{settings[:gem_install_options]}"
end
end

22 changes: 14 additions & 8 deletions configs/components/rubygem-nokogiri.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
component 'rubygem-nokogiri' do |pkg, _settings, _platform|
pkg.version '1.14.2'
pkg.sha256sum 'c765a74aac6cf430a710bb0b6038b8ee11f177393cd6ae8dadc7a44a6e2658b6'
# On macOS when we are not cross compiling we need to use runtime's libxml2 and libxslt
if platform.is_macos? && !platform.is_cross_compiled?
settings[:gem_install_options] = "-- --use-system-libraries \
--with-xml2-lib=#{settings[:libdir]} \
--with-xml2-include=#{settings[:includedir]}/libxml2 \
--with-xslt-lib=#{settings[:libdir]} \
--with-xslt-include=#{settings[:includedir]}"
end
instance_eval File.read('configs/components/_base-rubygem.rb')

pkg.build_requires 'rubygem-mini_portile2'

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"
if platform.is_cross_compiled?
pkg.install do
"rm -r #{gem_home}/gems/nokogiri-#{pkg.get_version}/ext/nokogiri/tmp"
end
end
end
end

0 comments on commit f9068e6

Please sign in to comment.