diff --git a/.github/workflows/component_diff_check.yml b/.github/workflows/component_diff_check.yml deleted file mode 100644 index d6d8b6df..00000000 --- a/.github/workflows/component_diff_check.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -name: Vanagon Component Diff - -on: - pull_request: - branches: - - main - -permissions: - contents: read # minimal required permissions to clone repo - -jobs: - vanagon_component_diff_check: - runs-on: ubuntu-24.04 - env: - BUNDLE_WITH: development - name: Check - steps: - - name: Checkout current PR - uses: actions/checkout@v6 - with: - fetch-depth: 0 # we need the full history because the rake tasks reads git tags - - - name: Install ruby version ${{ matrix.cfg.ruby }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3 - bundler-cache: true - - - name: Save artifacts data - run: | - mkdir -p ./output - echo '${{ github.event.number }}' > ./output/nr - bundle exec rake vanagon:component_diff -- '-mpall' > ./output/text - cat ./output/text - - - name: Upload artifacts - uses: actions/upload-artifact@v5 - with: - name: artifacts - path: output/ diff --git a/.github/workflows/runtime_tests.yml b/.github/workflows/runtime_tests.yml index c5855f36..dec977f6 100644 --- a/.github/workflows/runtime_tests.yml +++ b/.github/workflows/runtime_tests.yml @@ -51,3 +51,6 @@ jobs: if [ $stat -eq 1 ]; then false fi + + - name: Run rubocop + run: bundle exec rubocop diff --git a/.gitignore b/.gitignore index ce6dc36e..48914ecb 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ ext/packaging ext/build_metadata*.json pkg *.swp +.ruby-version diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 00000000..64753e6d --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,55 @@ +--- +plugins: + - rubocop-rake + +AllCops: + TargetRubyVersion: 3.2 + NewCops: disable + +Layout/LineLength: + Enabled: false + +Metrics/AbcSize: + Enabled: false + +Metrics/BlockLength: + Enabled: false + +Metrics/CyclomaticComplexity: + Enabled: false + +Metrics/MethodLength: + Enabled: false + +Metrics/PerceivedComplexity: + Enabled: false + +Naming/FileName: + Enabled: false + +Style/Documentation: + Enabled: false + +Style/DoubleNegation: + Enabled: false + +Style/FrozenStringLiteralComment: + Enabled: false + +Style/HashSyntax: + Enabled: false + +Style/PerlBackrefs: + Enabled: false + +Style/RegexpLiteral: + Enabled: false + +Style/SymbolArray: + Enabled: false + +Style/SymbolProc: + Enabled: false + +Style/WordArray: + Enabled: false diff --git a/Gemfile b/Gemfile index 1eb3eed2..63fa6435 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ -source ENV['GEM_SOURCE'] || "https://rubygems.org" +source ENV['GEM_SOURCE'] || 'https://rubygems.org' def location_for(place) if place =~ /^((?:git[:@]|https:)[^#]*)#(.*)/ @@ -11,15 +11,21 @@ def location_for(place) end gem 'artifactory' -gem 'vanagon', *location_for(ENV['VANAGON_LOCATION'] || 'https://github.com/openvoxproject/vanagon#main') gem 'packaging', *location_for(ENV['PACKAGING_LOCATION'] || '~> 0.105') gem 'rake', '~> 13.0' +gem 'rubocop' +gem 'rubocop-rake' +gem 'vanagon', *location_for(ENV['VANAGON_LOCATION'] || 'https://github.com/openvoxproject/vanagon#main') +# Need to update the openssl gem on MacOS to avoid SSL errors. Doesn't hurt to have the newest +# for all platforms. +# https://www.rubyonmac.dev/certificate-verify-failed-unable-to-get-certificate-crl-openssl-ssl-sslerror +gem 'openssl' unless `uname -o`.chomp == 'Cygwin' group(:development, optional: true) do - gem 'highline', require: false - gem 'parallel', require: false gem 'colorize', require: false gem 'hashdiff', require: false + gem 'highline', require: false + gem 'parallel', require: false gem 'tty-table', require: false end diff --git a/Rakefile b/Rakefile index 6133f3e4..f475e882 100644 --- a/Rakefile +++ b/Rakefile @@ -1,8 +1,8 @@ require 'open3' -RED = "\033[31m" -GREEN = "\033[32m" -RESET = "\033[0m" +RED = "\033[31m".freeze +GREEN = "\033[32m".freeze +RESET = "\033[0m".freeze def run_command(cmd, silent: true, print_command: false, report_status: false) puts "#{GREEN}Running #{cmd}#{RESET}" if print_command diff --git a/configs/components/_base-ruby-augeas.rb b/configs/components/_base-ruby-augeas.rb deleted file mode 100644 index f3a1a352..00000000 --- a/configs/components/_base-ruby-augeas.rb +++ /dev/null @@ -1,121 +0,0 @@ -##### -# Component release information: -# https://github.com/hercules-team/ruby-augeas/releases -# Notes: -# This file is a basis for multiple versions/targets of ruby-augeas. -# It should not be included as a component; Instead other components should -# load it with instance_eval. See ruby-x.y-augeas.rb configs. -##### - -pkg.add_source("file://resources/patches/augeas/ruby-augeas-0.5.0-patch_c_extension.patch") - -# We can remove the below patch after https://github.com/hercules-team/ruby-augeas/pull/17 is merged. -pkg.add_source("file://resources/patches/augeas/ruby-augeas-0.5.0-patch_remove_unused_parameter.patch") - -# These can be overridden by the including component. -ruby_version ||= settings[:ruby_version] -host_ruby ||= settings[:host_ruby] -ruby_dir ||= settings[:ruby_dir] -ruby_bindir ||= settings[:ruby_bindir] - -pkg.version "0.5.0" -pkg.md5sum "a132eace43ce13ccd059e22c0b1188ac" -pkg.url "http://download.augeas.net/ruby/ruby-augeas-#{pkg.get_version}.tgz" -pkg.mirror "#{settings[:buildsources_url]}/ruby-augeas-#{pkg.get_version}.tgz" - -pkg.build_requires "ruby-#{ruby_version}" -pkg.build_requires "augeas" - -if platform.name == 'sles-11-x86_64' - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" -else - pkg.environment "PATH", "$(PATH):/opt/pl-build-tools/bin:/usr/local/bin:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin" -end - -if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" - # pl-build-tools was added to PATH above - else - pkg.environment "CC", "/opt/freeware/bin/gcc" - pkg.environment "PATH", "$(PATH):/opt/freeware/bin" - end - pkg.environment "RUBY", host_ruby - pkg.environment "LDFLAGS", " -brtl #{settings[:ldflags]}" -end - -pkg.environment "CONFIGURE_ARGS", '--vendor' -pkg.environment "PKG_CONFIG_PATH", "#{File.join(settings[:libdir], 'pkgconfig')}:/usr/lib/pkgconfig" - -if platform.is_solaris? - if platform.is_cross_compiled? - pkg.environment "RUBY", host_ruby - end - - if !platform.is_cross_compiled? && platform.architecture == 'sparc' - ruby = File.join(ruby_bindir, 'ruby') - else - # This should really only be done when cross compiling but - # to avoid breaking solaris x86_64 in 7.x continue preloading - # our hook. - ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb" - end -elsif platform.is_cross_compiled? - if platform.is_linux? || platform.is_macos? - pkg.environment "RUBY", host_ruby - pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/ - pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/ - ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb" - pkg.environment "LDFLAGS", settings[:ldflags] - end -elsif platform.is_macos? - if platform.architecture == 'arm64' - pkg.environment "PATH", "$(PATH):/opt/homebrew/bin" - end - pkg.environment 'CC', settings[:cc] - pkg.environment 'CFLAGS', settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] - ruby = File.join(ruby_bindir, 'ruby') -else - ruby = File.join(ruby_bindir, 'ruby') -end - -pkg.build do - build_commands = [] - if ruby_version =~ /^3/ - build_commands << "#{platform.patch} --strip=2 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../ruby-augeas-0.5.0-patch_c_extension.patch" - end - build_commands << "#{platform.patch} --strip=2 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../ruby-augeas-0.5.0-patch_remove_unused_parameter.patch" - build_commands << "#{ruby} ext/augeas/extconf.rb" - build_commands << "#{platform[:make]} -e -j$(shell expr $(shell #{platform[:num_cores]}) + 1)" - - build_commands -end - -if settings[:ruby_vendordir] - augeas_rb_target = File.join(settings[:ruby_vendordir], 'augeas.rb') -else - # If no alternate vendordir has been set, install into default - # vendordir for this ruby version. - augeas_rb_target = File.join(ruby_dir, 'lib', 'ruby', 'vendor_ruby', 'augeas.rb') -end - -pkg.install_file 'lib/augeas.rb', augeas_rb_target - -pkg.install do - [ - "#{platform[:make]} -e -j$(shell expr $(shell #{platform[:num_cores]}) + 1) DESTDIR=/ install", - ] -end - -if platform.is_solaris? || platform.is_cross_compiled_linux? - pkg.install do - "chown root:root #{augeas_rb_target}" - end -end - -# Clean after install in case we are building for multiple rubies. -pkg.install do - "#{platform[:make]} -e clean" -end diff --git a/configs/components/_base-ruby-selinux.rb b/configs/components/_base-ruby-selinux.rb deleted file mode 100644 index e900c5c2..00000000 --- a/configs/components/_base-ruby-selinux.rb +++ /dev/null @@ -1,145 +0,0 @@ -##### -# Component release information: -# https://github.com/SELinuxProject/selinux/releases -# Notes: -# This file is a basis for multiple versions/targets of ruby-selinux. -# It should not be included as a component; Instead other components should -# load it with instance_eval. See ruby-x.y-selinux.rb configs. -##### - -pkg.add_source("file://resources/patches/ruby-selinux/selinuxswig_ruby_wrap.patch") -pkg.add_source("file://resources/patches/ruby-selinux/selinuxswig_ruby_undefining_allocator.patch") -pkg.add_source("file://resources/patches/ruby-selinux/undefining_allocator_el_7.patch") - -# These can be overridden by the including component. -ruby_version ||= settings[:ruby_version] -host_ruby ||= settings[:host_ruby] -ruby_bindir ||= settings[:ruby_bindir] - -# We download tarballs because system development packages (e.g. -# libselinux-devel) don't necessarily include Swig interface files (*.i files) -if platform.name =~ /el-(6|7)|ubuntu-(16|18.04-amd64)/ - pkg.version "2.0.94" - pkg.md5sum "544f75aab11c2af352facc51af12029f" - pkg.url "https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20100525/devel/libselinux-#{pkg.get_version}.tar.gz" -elsif platform.name.start_with?('el-9') - # SELinux 3.3 is the minimum version available in RHEL 9 repos - pkg.version '3.3' - pkg.sha256sum 'acfdee27633d2496508c28727c3d41d3748076f66d42fccde2e6b9f3463a7057' - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" -elsif platform.name.start_with?('debian-12') - # SELinux 3.4 is the minimum version available in Debian 12 repos - pkg.version '3.4' - pkg.sha256sum '77c294a927e6795c2e98f74b5c3adde9c8839690e9255b767c5fca6acff9b779' - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" - pkg.build_requires 'python3-distutils' -elsif platform.name.start_with?('debian-13') - # SELinux 3.8.1 is the minimum version available in Debian 13 repos - # Double check when Trixie is released - pkg.version '3.8.1' - pkg.sha256sum 'ec2d2789f931152d21c1db1eb4bc202ce4eccede34d9be9e360e3b45243cee2c' - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" - pkg.build_requires 'python3-setuptools' -elsif platform.name.start_with?('ubuntu-24') - # SELinux 3.5 is the minimum version available in Ubuntu 24 repos - pkg.version '3.5' - pkg.sha256sum '9a3a3705ac13a2ccca2de6d652b6356fead10f36fb33115c185c5ccdf29eec19' - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" - pkg.build_requires 'python3-setuptools' -elsif platform.name =~ /el-10|ubuntu-25.04/ - # SELinux 3.7 is the minimum version available in RHEL 10 repos - pkg.version '3.7' - pkg.sha256sum 'ea03f42d13a4f95757997dba8cf0b26321fac5d2f164418b4cc856a92d2b17bd' - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" - pkg.build_requires 'python3-setuptools' -else - pkg.version "2.9" - pkg.md5sum "bb449431b6ed55a0a0496dbc366d6e31" - pkg.apply_patch "resources/patches/ruby-selinux/selinux-29-function.patch" - pkg.url "https://github.com/SELinuxProject/selinux/releases/download/20190315/libselinux-#{pkg.get_version}.tar.gz" -end -pkg.mirror "#{settings[:buildsources_url]}/libselinux-#{pkg.get_version}.tar.gz" - -pkg.build_requires "ruby-#{ruby_version}" -cc = "/opt/pl-build-tools/bin/gcc" -system_include = '-I/usr/include' -ruby = "#{ruby_bindir}/ruby -rrbconfig" - -# The RHEL 9 libselinux-devel package provides headers, but we don't want to -# use the package becuase of a compatibility issue with the shared library. -# Instead, we use the headers provided in the tarball. -system_include.prepend('-I./include ') if platform.name =~ /el-(9|10)/ - -if platform.is_cross_compiled_linux? - cc = "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - system_include = "-I/opt/pl-build-tools/#{settings[:platform_triple]}/sysroot/usr/include" - pkg.environment "RUBY", host_ruby - ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb" -end - -cflags = "" - -# The platforms below use pl-build-tools -unless platform.name =~ /el-6|ubuntu-(16-amd64)/ - cc = '/usr/bin/gcc' - cflags += "#{settings[:cppflags]} #{settings[:cflags]}" -end - -pkg.build do - steps = [ - "export RUBYHDRDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"rubyhdrdir\"]')", - "export VENDORARCHDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"vendorarchdir\"]')", - "export ARCHDIR=$${RUBYHDRDIR}/$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"arch\"]')", - "export INCLUDESTR=\"-I#{settings[:includedir]} -I$${RUBYHDRDIR} -I$${ARCHDIR}\"", - "cp -pr src/{selinuxswig_ruby.i,selinuxswig.i} .", - "swig -Wall -ruby #{system_include} -o selinuxswig_ruby_wrap.c -outdir ./ selinuxswig_ruby.i" - ] - - if ruby_version =~ /^3/ - # swig 4.1 generated interface does not need patching, so skip - # when running debian >= 12, fedora >= 40, etc - unless (platform.is_debian? && platform.os_version.to_i >= 12) || - (platform.is_fedora? && platform.os_version.to_i >= 40) || - (platform.is_ubuntu? && platform.os_version.to_i >= 24) || - (platform.is_el? && platform.os_version.to_i >= 10) - steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_wrap.patch" - end - # EL 7 uses an older version of swig (2.0) so a different patch is needed to - # fix warning:undefining the allocator of T_DATA class - if platform.name =~ /el-7|redhatfips-7/ - steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../undefining_allocator_el_7.patch" - else - # Ubuntu 24, Fedora 40, EL 10, and Debian 13 use a newer swig that already has the fix that's - # being patched - unless (platform.is_fedora? && platform.os_version.to_i >= 40) || - (platform.is_ubuntu? && platform.os_version.to_i >= 24) || - (platform.is_el? && platform.os_version.to_i >= 10) || - (platform.is_debian? && platform.os_version.to_i >= 13) - steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_undefining_allocator.patch" - end - end - end - - # libselinux 3.3 is the minimum version we want to build on RHEL 9, but the - # libeselinux-devel-3.3 package confusingly installs a shared library that - # uses 3.4. The hacky workaround for this is to symlink an existing library. - # PDK builds two Rubies so check if symlink exists first. Similar issue - # exists for RHEL 10. - if platform.name =~ /el-(9|10)/ - steps << 'if [ ! -L /usr/lib64/libselinux.so ]; then ln -s /usr/lib64/libselinux.so.1 /usr/lib64/libselinux.so; fi' - end - - steps.concat([ - "#{cc} $${INCLUDESTR} #{system_include} #{cflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -DSHARED -c -o selinuxswig_ruby_wrap.lo selinuxswig_ruby_wrap.c", - "#{cc} $${INCLUDESTR} #{system_include} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -shared -o _rubyselinux.so selinuxswig_ruby_wrap.lo -lselinux -Wl,-z,relro,-z,now,-soname,_rubyselinux.so", - ]) -end - -pkg.install do - [ - "export VENDORARCHDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"vendorarchdir\"]')", - "install -d $${VENDORARCHDIR}", - "install -p -m755 _rubyselinux.so $${VENDORARCHDIR}/selinux.so", - "#{platform[:make]} -e clean", - ] -end diff --git a/configs/components/_base-ruby.rb b/configs/components/_base-ruby.rb index b23db021..a72cb19f 100644 --- a/configs/components/_base-ruby.rb +++ b/configs/components/_base-ruby.rb @@ -2,47 +2,33 @@ # It should not be included as a component; Instead other components should # load it with instance_eval. See ruby-x.y.z.rb configs. -# Condensed version, e.g. '2.4.3' -> '243' -ruby_version_condensed = pkg.get_version.tr('.', '') # Y version, e.g. '2.4.3' -> '2.4' ruby_version_y = pkg.get_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') pkg.mirror "#{settings[:buildsources_url]}/ruby-#{pkg.get_version}.tar.gz" pkg.url "https://cache.ruby-lang.org/pub/ruby/#{ruby_version_y}/ruby-#{pkg.get_version}.tar.gz" - # These may have been overridden in the including file, # if not then default them back to original values. -ruby_dir ||= settings[:ruby_dir] ruby_bindir ||= settings[:ruby_bindir] - ############# # ENVIRONMENT ############# if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" - else - pkg.environment "CC", "/opt/freeware/bin/gcc" - end + pkg.environment 'CC', '/opt/freeware/bin/gcc' pkg.environment 'LDFLAGS', "#{settings[:ldflags]} -Wl,-bmaxdata:0x80000000" elsif platform.is_solaris? - # See PA-5639, if we decide to go without OpenCSW GCC then we can simplify this logic - if ruby_version_y >= '3.0' - if !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment 'PATH', "#{settings[:bindir]}:/opt/pl-build-tools/bin:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin:$(PATH)" - pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - else - pkg.environment 'PATH', "#{settings[:bindir]}:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin:$(PATH)" - pkg.environment 'CC', '/opt/csw/bin/gcc' - pkg.environment 'LD', '/opt/csw/bin/gld' - pkg.environment 'AR', '/opt/csw/bin/gar' - end - else - pkg.environment 'PATH', "#{settings[:bindir]}:/usr/ccs/bin:/usr/sfw/bin:$(PATH):/opt/csw/bin" + if !platform.is_cross_compiled? && platform.architecture == 'sparc' + pkg.environment 'PATH', + "#{settings[:bindir]}:/opt/pl-build-tools/bin:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin:$(PATH)" pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" + else + pkg.environment 'PATH', "#{settings[:bindir]}:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin:$(PATH)" + pkg.environment 'CC', '/opt/csw/bin/gcc' + pkg.environment 'LD', '/opt/csw/bin/gld' + pkg.environment 'AR', '/opt/csw/bin/gar' end pkg.environment 'CXX', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-g++" pkg.environment 'LDFLAGS', "-Wl,-rpath=#{settings[:libdir]}" @@ -57,10 +43,11 @@ pkg.environment 'CXX', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-g++" pkg.environment 'LDFLAGS', "-Wl,-rpath=#{settings[:libdir]}" elsif platform.is_windows? - pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(shell cygpath -u #{settings[:tools_root]}/bin):$(shell cygpath -u #{settings[:tools_root]}/include):$(shell cygpath -u #{settings[:bindir]}):$(shell cygpath -u #{ruby_bindir}):$(shell cygpath -u #{settings[:includedir]}):$(PATH)" + pkg.environment 'PATH', + "$(shell cygpath -u #{settings[:gcc_bindir]}):$(shell cygpath -u #{settings[:tools_root]}/bin):$(shell cygpath -u #{settings[:tools_root]}/include):$(shell cygpath -u #{settings[:bindir]}):$(shell cygpath -u #{ruby_bindir}):$(shell cygpath -u #{settings[:includedir]}):$(PATH)" pkg.environment 'CYGWIN', settings[:cygwin] pkg.environment 'LDFLAGS', settings[:ldflags] - optflags = settings[:cflags] + ' -O3' + optflags = "#{settings[:cflags]} -O3" pkg.environment 'optflags', optflags pkg.environment 'CFLAGS', optflags elsif platform.is_macos? @@ -81,14 +68,10 @@ if platform.is_aix? pkg.build_requires "runtime-#{settings[:runtime_project]}" - if platform.name == 'aix-7.1-ppc' - pkg.build_requires "libedit" - else - pkg.build_requires "readline" - end + pkg.build_requires 'readline' elsif platform.is_solaris? pkg.build_requires "runtime-#{settings[:runtime_project]}" - pkg.build_requires "libedit" if platform.name =~ /^solaris-10-sparc/ + pkg.build_requires 'libedit' if platform.name =~ /^solaris-10-sparc/ elsif platform.is_cross_compiled_linux? pkg.build_requires "runtime-#{settings[:runtime_project]}" end @@ -106,5 +89,5 @@ ######### pkg.install do - [ "#{platform[:make]} -j$(shell expr $(shell #{platform[:num_cores]}) + 1) install" ] + ["#{platform[:make]} -j$(shell expr $(shell #{platform[:num_cores]}) + 1) install"] end diff --git a/configs/components/_base-rubygem.rb b/configs/components/_base-rubygem.rb index bf1c3133..30494d79 100644 --- a/configs/components/_base-rubygem.rb +++ b/configs/components/_base-rubygem.rb @@ -5,34 +5,29 @@ # shared configuration may be overridden afterward. name = pkg.get_name.gsub('rubygem-', '') -unless name && !name.empty? - raise "Rubygem component files that instance_eval _base-rubygem must be named rubygem-.rb" -end +raise 'Rubygem component files that instance_eval _base-rubygem must be named rubygem-.rb' unless name && !name.empty? version = pkg.get_version -unless version && !version.empty? - raise "You must set the `pkg.version` in your rubygem component before instance_eval'ing _base_rubygem.rb" -end +raise "You must set the `pkg.version` in your rubygem component before instance_eval'ing _base_rubygem.rb" unless version && !version.empty? pkg.build_requires "runtime-#{settings[:runtime_project]}" -pkg.build_requires "pl-ruby-patch" if platform.is_cross_compiled? +pkg.build_requires 'pl-ruby-patch' if platform.is_cross_compiled? if platform.is_windows? - pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(shell cygpath -u #{settings[:ruby_bindir]}):$(shell cygpath -u #{settings[:bindir]}):/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:$(PATH)" + pkg.environment 'PATH', + "$(shell cygpath -u #{settings[:gcc_bindir]}):$(shell cygpath -u #{settings[:ruby_bindir]}):$(shell cygpath -u #{settings[:bindir]}):/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:$(PATH)" end # When cross-compiling, we can't use the rubygems we just built. # Instead we use the host gem installation and override GEM_HOME. Yay? -pkg.environment "GEM_HOME", settings[:gem_home] -pkg.environment "GEM_PATH", settings[:gem_home] +pkg.environment 'GEM_HOME', settings[:gem_home] +pkg.environment 'GEM_PATH', settings[:gem_home] # PA-25 in order to install gems in a cross-compiled environment we need to # set RUBYLIB to include puppet and hiera, so that their gemspecs can resolve # hiera/version and puppet/version requires. Without this the gem install # will fail by blowing out the stack. -if settings[:ruby_vendordir] - pkg.environment "RUBYLIB", "#{settings[:ruby_vendordir]}:$(RUBYLIB)" -end +pkg.environment 'RUBYLIB', "#{settings[:ruby_vendordir]}:$(RUBYLIB)" if settings[:ruby_vendordir] pkg.url("https://rubygems.org/downloads/#{name}-#{version}.gem") pkg.mirror("#{settings[:buildsources_url]}/#{name}-#{version}.gem") diff --git a/configs/components/augeas.rb b/configs/components/augeas.rb index 9300f7ba..c89a1fbe 100644 --- a/configs/components/augeas.rb +++ b/configs/components/augeas.rb @@ -50,71 +50,64 @@ pkg.build_requires 'libtool' end - extra_config_flags = platform.name =~ /solaris-11|aix/ ? " --disable-dependency-tracking" : "" + extra_config_flags = platform.name =~ /solaris-11|aix/ ? ' --disable-dependency-tracking' : '' end pkg.mirror "#{settings[:buildsources_url]}/augeas-#{pkg.get_version}.tar.gz" - pkg.build_requires "libxml2" + pkg.build_requires 'libxml2' # Ensure we're building against our own libraries when present - pkg.environment "PKG_CONFIG_PATH", "#{settings[:libdir]}/pkgconfig" + pkg.environment 'PKG_CONFIG_PATH', "#{settings[:libdir]}/pkgconfig" if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" - else - pkg.environment "CC", "/opt/freeware/bin/gcc" - pkg.environment "PATH", "/opt/freeware/bin:$(PATH):#{settings[:bindir]}" - end + pkg.environment 'CC', '/opt/freeware/bin/gcc' + pkg.environment 'PATH', "/opt/freeware/bin:$(PATH):#{settings[:bindir]}" pkg.build_requires "runtime-#{settings[:runtime_project]}" - if platform.name == 'aix-7.1-ppc' - pkg.build_requires 'libedit' - else - pkg.build_requires 'readline' - end + pkg.build_requires 'readline' - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", "-I#{settings[:includedir]}" + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', "-I#{settings[:includedir]}" end if platform.is_rpm? && !platform.is_aix? if platform.architecture =~ /aarch64|ppc64|ppc64le/ pkg.build_requires "runtime-#{settings[:runtime_project]}" - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] end elsif platform.is_deb? pkg.requires 'libreadline6' if platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] end elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', + "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] pkg.build_requires 'libedit' pkg.build_requires "runtime-#{settings[:runtime_project]}" - if platform.os_version == "10" - pkg.environment "PKG_CONFIG_PATH", "/opt/csw/lib/pkgconfig" - pkg.environment "PKG_CONFIG", "/opt/csw/bin/pkg-config" + if platform.os_version == '10' + pkg.environment 'PKG_CONFIG_PATH', '/opt/csw/lib/pkgconfig' + pkg.environment 'PKG_CONFIG', '/opt/csw/bin/pkg-config' elsif !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment "PKG_CONFIG_PATH", "#{settings[:libdir]}/pkgconfig" - pkg.environment "PKG_CONFIG", "/usr/bin/pkg-config" + pkg.environment 'PKG_CONFIG_PATH', "#{settings[:libdir]}/pkgconfig" + pkg.environment 'PKG_CONFIG', '/usr/bin/pkg-config' else - pkg.environment "PKG_CONFIG_PATH", "/usr/lib/pkgconfig" - pkg.environment "PKG_CONFIG", "/opt/pl-build-tools/bin/pkg-config" + pkg.environment 'PKG_CONFIG_PATH', '/usr/lib/pkgconfig' + pkg.environment 'PKG_CONFIG', '/opt/pl-build-tools/bin/pkg-config' end elsif platform.is_macos? pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin' pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CPPFLAGS', settings[:cppflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'LDFLAGS', settings[:ldflags] pkg.environment 'CC', settings[:cc] pkg.environment 'CXX', settings[:cxx] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] @@ -123,19 +116,18 @@ if settings[:supports_pie] pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CPPFLAGS', settings[:cppflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'LDFLAGS', settings[:ldflags] end # fix libtool linking on big sur if platform.is_macos? if platform.architecture == 'arm64' - pkg.configure { ["/opt/homebrew/bin/autoreconf --force --install"] } + pkg.configure { ['/opt/homebrew/bin/autoreconf --force --install'] } else - pkg.configure { ["/usr/local/bin/autoreconf --force --install"] } + pkg.configure { ['/usr/local/bin/autoreconf --force --install'] } end end - pkg.configure do ["./configure #{extra_config_flags} --prefix=#{settings[:prefix]} #{settings[:host]}"] end diff --git a/configs/components/curl.rb b/configs/components/curl.rb index 4741255f..da181882 100644 --- a/configs/components/curl.rb +++ b/configs/components/curl.rb @@ -2,57 +2,33 @@ # Component release information: https://github.com/curl/curl/releases ##### component 'curl' do |pkg, settings, platform| - # Projects may define a :curl_version setting - version = settings[:curl_version] || '8.15.0' - pkg.version version - - case version - when '7.88.1' - pkg.sha256sum 'cdb38b72e36bc5d33d5b8810f8018ece1baa29a8f215b4495e495ded82bbf3c7' - when '8.15.0' - pkg.sha256sum 'd85cfc79dc505ff800cb1d321a320183035011fa08cb301356425d86be8fc53c' - else - raise "curl version #{version} has not been configured; Cannot continue." - end + pkg.version '8.17.0' + pkg.sha256sum 'e8e74cdeefe5fb78b3ae6e90cd542babf788fa9480029cfcee6fd9ced42b7910' pkg.url "https://curl.se/download/curl-#{pkg.get_version}.tar.gz" pkg.mirror "#{settings[:buildsources_url]}/curl-#{pkg.get_version}.tar.gz" pkg.build_requires "openssl-#{settings[:openssl_version]}" - pkg.build_requires "puppet-ca-bundle" + pkg.build_requires 'puppet-ca-bundle' ldflags = settings[:ldflags] if platform.is_cross_compiled_linux? pkg.build_requires "runtime-#{settings[:runtime_project]}" - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "PKG_CONFIG_PATH", "/opt/puppetlabs/puppet/lib/pkgconfig" - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'PKG_CONFIG_PATH', '/opt/puppetlabs/puppet/lib/pkgconfig' + pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH)' elsif platform.is_windows? pkg.build_requires "runtime-#{settings[:runtime_project]}" - pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment "NM" , "/usr/bin/nm" if platform.name =~ /windowsfips-2016/ - pkg.environment "CYGWIN", settings[:cygwin] - elsif platform.is_aix? && platform.name != 'aix-7.1-ppc' - pkg.environment "PKG_CONFIG_PATH", "/opt/puppetlabs/puppet/lib/pkgconfig" + pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" + pkg.environment 'NM', '/usr/bin/nm' if platform.name =~ /windowsfips-2016/ + pkg.environment 'CYGWIN', settings[:cygwin] + elsif platform.is_aix? + pkg.environment 'PKG_CONFIG_PATH', '/opt/puppetlabs/puppet/lib/pkgconfig' pkg.environment 'PATH', "/opt/freeware/bin:$(PATH):#{settings[:bindir]}" # exclude -Wl,-brtl ldflags = "-L#{settings[:libdir]}" else - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - end - - # Following lines should we removed once we drop curl 7 - if version.start_with?('7') - pkg.apply_patch 'resources/patches/curl/CVE-2023-27535.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2023-28319.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2023-32001.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2023-38545.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2023-38546.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2023-46218.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2024-2004.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2024-2398.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2024-7264.patch' - pkg.apply_patch 'resources/patches/curl/CVE-2024-8096.patch' + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" end configure_options = [] @@ -60,13 +36,11 @@ # OpenSSL version 3.0 & up no longer ships by default the insecure algorithms # that curl's ntlm module depends on (md4 & des). - if !settings[:use_legacy_openssl_algos] && settings[:openssl_version] =~ /^3\./ - configure_options << "--disable-ntlm" - end + configure_options << '--disable-ntlm' if !settings[:use_legacy_openssl_algos] && settings[:openssl_version] =~ /^3\./ if (platform.is_solaris? && platform.os_version == '11') || platform.is_aix? # Makefile generation with automatic dependency tracking fails on these platforms - configure_options << "--disable-dependency-tracking" + configure_options << '--disable-dependency-tracking' end if platform.is_macos? @@ -81,7 +55,7 @@ ["CPPFLAGS='#{settings[:cppflags]}' \ LDFLAGS='#{ldflags}' \ ./configure --prefix=#{settings[:prefix]} \ - #{configure_options.join(" ")} \ + #{configure_options.join(' ')} \ --enable-threaded-resolver \ --disable-ldap \ --disable-ldaps \ @@ -97,7 +71,7 @@ end install_steps = [ - "#{platform[:make]} -j$(shell expr $(shell #{platform[:num_cores]}) + 1) install", + "#{platform[:make]} -j$(shell expr $(shell #{platform[:num_cores]}) + 1) install" ] unless ['agent', 'pdk'].include?(settings[:runtime_project]) diff --git a/configs/components/dmidecode.rb b/configs/components/dmidecode.rb index 92d97547..c55c1c23 100644 --- a/configs/components/dmidecode.rb +++ b/configs/components/dmidecode.rb @@ -9,8 +9,8 @@ pkg.url "http://download-mirror.savannah.gnu.org/releases/dmidecode/dmidecode-#{pkg.get_version}.tar.xz" pkg.mirror "#{settings[:buildsources_url]}/dmidecode-#{pkg.get_version}.tar.xz" - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] if platform.is_cross_compiled? # The Makefile doesn't honor environment overrides, so we need to diff --git a/configs/components/libedit.rb b/configs/components/libedit.rb index bb626305..1a0d8bcc 100644 --- a/configs/components/libedit.rb +++ b/configs/components/libedit.rb @@ -11,18 +11,16 @@ pkg.url "http://thrysoee.dk/editline/libedit-#{pkg.get_version}.tar.gz" pkg.mirror "#{settings[:buildsources_url]}/libedit-#{pkg.get_version}.tar.gz" - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" + pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH)' if platform.is_solaris? - pkg.environment "CC", "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" + pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" elsif platform.is_aix? - pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'CC', '/opt/pl-build-tools/bin/gcc' + pkg.environment 'LDFLAGS', settings[:ldflags] end - if platform.is_macos? - pkg.environment "CFLAGS", settings[:cflags] - end + pkg.environment 'CFLAGS', settings[:cflags] if platform.is_macos? pkg.configure do "bash configure --enable-shared --prefix=#{settings[:prefix]} #{settings[:host]}" @@ -37,6 +35,8 @@ end pkg.link File.join(settings[:libdir], 'libedit.so'), File.join(settings[:libdir], 'libreadline.so') - pkg.link File.join(settings[:includedir], 'editline', 'readline.h'), File.join(settings[:includedir], 'readline', 'readline.h') - pkg.link File.join(settings[:includedir], 'editline', 'readline.h'), File.join(settings[:includedir], 'readline', 'history.h') + pkg.link File.join(settings[:includedir], 'editline', 'readline.h'), + File.join(settings[:includedir], 'readline', 'readline.h') + pkg.link File.join(settings[:includedir], 'editline', 'readline.h'), + File.join(settings[:includedir], 'readline', 'history.h') end diff --git a/configs/components/libffi.rb b/configs/components/libffi.rb index 8b65e979..c7f8323f 100644 --- a/configs/components/libffi.rb +++ b/configs/components/libffi.rb @@ -8,42 +8,37 @@ pkg.mirror "#{settings[:buildsources_url]}/#{pkg.get_name}-#{pkg.get_version}.tar.gz" if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" - else - pkg.environment "PATH", "/opt/freeware/bin:$(PATH)" - end + pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' elsif platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" + pkg.environment 'PATH', + "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" if !platform.is_cross_compiled? && platform.architecture == 'sparc' # must use gnu99 due to `asm` keyword # https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Extended-Asm.html - pkg.environment "CFLAGS", "#{settings[:cflags]} -std=gnu99" + pkg.environment 'CFLAGS', "#{settings[:cflags]} -std=gnu99" else - pkg.environment "CFLAGS", "#{settings[:cflags]} -std=c99" + pkg.environment 'CFLAGS', "#{settings[:cflags]} -std=c99" end - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'LDFLAGS', settings[:ldflags] pkg.environment 'MAKE', 'gmake' elsif platform.is_macos? - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CC', settings[:cc] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] elsif platform.is_windows? - pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] - if platform.architecture == "x86" - pkg.apply_patch "resources/patches/libffi/revert_clang_32bit.patch" - end + pkg.apply_patch 'resources/patches/libffi/revert_clang_32bit.patch' if platform.architecture == 'x86' else - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] end pkg.build_requires "runtime-#{settings[:runtime_project]}" diff --git a/configs/components/libxml2.rb b/configs/components/libxml2.rb index 6e604a05..8f8d41f7 100644 --- a/configs/components/libxml2.rb +++ b/configs/components/libxml2.rb @@ -3,36 +3,33 @@ # https://gitlab.gnome.org/GNOME/libxml2/-/releases # https://github.com/GNOME/libxml2/tags ##### -component "libxml2" do |pkg, settings, platform| - pkg.version '2.14.5' - pkg.sha256sum '03d006f3537616833c16c53addcdc32a0eb20e55443cba4038307e3fa7d8d44b' +component 'libxml2' do |pkg, settings, platform| + pkg.version '2.15.1' + pkg.sha256sum 'c008bac08fd5c7b4a87f7b8a71f283fa581d80d80ff8d2efd3b26224c39bc54c' libxml2_version_y = pkg.get_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') pkg.url "https://download.gnome.org/sources/libxml2/#{libxml2_version_y}/libxml2-#{pkg.get_version}.tar.xz" pkg.mirror "#{settings[:buildsources_url]}/libxml2-#{pkg.get_version}.tar.xz" if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "PATH", "/opt/pl-build-tools/bin:/opt/freeware/bin:$(PATH)" - else - pkg.environment "PATH", "/opt/freeware/bin:$(PATH)" - end + pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' elsif platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:#{settings[:bindir]}" - pkg.environment "CFLAGS", "#{settings[:cflags]} -std=c99" - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', + "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:#{settings[:bindir]}" + pkg.environment 'CFLAGS', "#{settings[:cflags]} -std=c99" + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_macos? - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CC', settings[:cc] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] else - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] end pkg.build_requires "runtime-#{settings[:runtime_project]}" @@ -52,5 +49,4 @@ "rm -rf #{settings[:datadir]}/doc/#{pkg.get_name}*" ] end - end diff --git a/configs/components/libxslt.rb b/configs/components/libxslt.rb deleted file mode 100644 index 3bbe8400..00000000 --- a/configs/components/libxslt.rb +++ /dev/null @@ -1,61 +0,0 @@ -##### -# Component release information: -# https://gitlab.gnome.org/GNOME/libxslt/-/releases -# https://github.com/GNOME/libxslt/tags -##### -component "libxslt" do |pkg, settings, platform| - pkg.version '1.1.43' - pkg.sha256sum '5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a' - - libxslt_version_y = pkg.get_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') - pkg.url "https://download.gnome.org/sources/libxslt/#{libxslt_version_y}/libxslt-#{pkg.get_version}.tar.xz" - pkg.mirror "#{settings[:buildsources_url]}/libxslt-#{pkg.get_version}.tar.xz" - - pkg.build_requires "libxml2" - - if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "PATH", "/opt/pl-build-tools/bin:/opt/freeware/bin:$(PATH)" - else - pkg.environment "PATH", "/opt/freeware/bin:$(PATH)" - end - elsif platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] - - # libxslt is picky about manually specifying the build host - build = "--build x86_64-linux-gnu" - # don't depend on libgcrypto - disable_crypto = "--without-crypto" - elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] - elsif platform.is_macos? - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment 'CC', settings[:cc] - pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] - else - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] - end - - pkg.configure do - ["./configure --without-python --prefix=#{settings[:prefix]} --docdir=/tmp --with-libxml-prefix=#{settings[:prefix]} #{settings[:host]} #{disable_crypto} #{build}"] - end - - pkg.build do - ["#{platform[:make]} VERBOSE=1 -j$(shell expr $(shell #{platform[:num_cores]}) + 1)"] - end - - pkg.install do - [ - "#{platform[:make]} VERBOSE=1 -j$(shell expr $(shell #{platform[:num_cores]}) + 1) install", - "rm -rf #{settings[:datadir]}/gtk-doc", - "rm -rf #{settings[:datadir]}/doc/#{pkg.get_name}*" - ] - end - -end diff --git a/configs/components/libyaml.rb b/configs/components/libyaml.rb index dcb57bb7..3012c5a4 100644 --- a/configs/components/libyaml.rb +++ b/configs/components/libyaml.rb @@ -8,31 +8,28 @@ pkg.mirror "#{settings[:buildsources_url]}/yaml-#{pkg.get_version}.tar.gz" if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" - else - pkg.environment "PATH", "/opt/freeware/bin:$(PATH)" - end + pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' elsif platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" - pkg.environment "CFLAGS", "#{settings[:cflags]} -std=c99" - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', + "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" + pkg.environment 'CFLAGS', "#{settings[:cflags]} -std=c99" + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_macos? - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CC', settings[:cc] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] elsif platform.is_windows? - pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] else - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] end pkg.build_requires "runtime-#{settings[:runtime_project]}" diff --git a/configs/components/openssl-1.0.2.rb b/configs/components/openssl-1.0.2.rb deleted file mode 100644 index b627f0aa..00000000 --- a/configs/components/openssl-1.0.2.rb +++ /dev/null @@ -1,182 +0,0 @@ -##### -# Component release information: -# https://github.com/openssl/openssl/releases -# Notes: -# This is very, very old and only used for windowsfips. If OpenVox -# does a Windows FIPS build, we should replace this. -##### -component 'openssl' do |pkg, settings, platform| - pkg.version '1.0.2u' - pkg.md5sum 'cdc2638f789ecc2db2c91488265686c1' - pkg.url "https://openssl.org/source/openssl-#{pkg.get_version}.tar.gz" - pkg.mirror "#{settings[:buildsources_url]}/openssl-#{pkg.get_version}.tar.gz" - - ############################# - # ENVIRONMENT, FLAGS, TARGETS - ############################# - - target = cflags = ldflags = sslflags = '' - - if platform.is_windows? - pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment 'CYGWIN', settings[:cygwin] - pkg.environment 'CC', settings[:cc] - pkg.environment 'CXX', settings[:cxx] - pkg.environment 'MAKE', platform[:make] - - target = platform.architecture == 'x64' ? 'mingw64' : 'mingw' - cflags = settings[:cflags] - ldflags = settings[:ldflags] - elsif platform.is_cross_compiled_linux? - pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH)" - pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - - cflags = "#{settings[:cflags]} -fPIC" - ldflags = "-Wl,-rpath=/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib" - target = if platform.architecture == 'aarch64' - 'linux-aarch64' - elsif platform.architecture =~ /ppc64le|ppc64el/ # Litte-endian - 'linux-ppc64le' - elsif platform.architecture =~ /ppc64/ # Big-endian - 'linux-ppc64' - end - elsif platform.is_aix? - pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" - cflags = '$${CFLAGS} -static-libgcc' - target = 'aix-gcc' - elsif platform.is_solaris? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin' - pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - - cflags = "#{settings[:cflags]} -fPIC" - ldflags = "-R/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib" - target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc' - elsif platform.is_macos? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' - - cflags = settings[:cflags] - target = 'darwin64-x86_64-cc' - elsif platform.is_linux? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' - - cflags = settings[:cflags] - ldflags = "#{settings[:ldflags]} -Wl,-z,relro" - if platform.architecture =~ /86$/ - target = 'linux-elf' - sslflags = '386' - elsif platform.architecture =~ /aarch64$/ - target = 'linux-aarch64' - elsif platform.architecture =~ /ppc64le|ppc64el/ # Little-endian - target = 'linux-ppc64le' - elsif platform.architecture =~ /64$/ - target = 'linux-x86_64' - end - end - - #################### - # BUILD REQUIREMENTS - #################### - - pkg.build_requires "runtime-#{settings[:runtime_project]}" - - ######### - # PATCHES - ######### - - if platform.is_windows? - pkg.apply_patch 'resources/patches/openssl/openssl-1.0.0l-use-gcc-instead-of-makedepend.patch' - # This patch removes the option `-DOPENSSL_USE_APPLINK` from the mingw openssl congifure target - # This brings mingw more in line with what is happening with mingw64. All applink does it makes - # it possible to use the .dll compiled with one compiler with an application compiled with a - # different compiler. Given our openssl should only be interacting with things that we build, - # we can ensure everything is build with the same compiler. - pkg.apply_patch 'resources/patches/openssl/openssl-mingw-do-not-build-applink.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-enforce-fips-on-fips-mode.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-low-level-access.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-expose-drbg-init.patch' - elsif platform.is_aix? - pkg.apply_patch 'resources/patches/openssl/add-shell-to-engines_makefile.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-1.0.0l-use-gcc-instead-of-makedepend.patch' - elsif platform.is_solaris? - pkg.apply_patch 'resources/patches/openssl/add-shell-to-engines_makefile.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-1.0.0l-use-gcc-instead-of-makedepend.patch' - end - pkg.apply_patch 'resources/patches/openssl/CVE-2020-1968.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2020-1971.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2021-23839.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2021-23840.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2021-23841.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2021-3712.patch' - - ########### - # CONFIGURE - ########### - - # OpenSSL Configure doesn't honor CFLAGS or LDFLAGS as environment variables. - # Instead, those should be passed to Configure at the end of its options, as - # any unrecognized options are passed straight through to ${CC}. Defining - # --libdir ensures that we avoid the multilib (lib/ vs. lib64/) problem, - # since configure uses the existence of a lib64 directory to determine - # if it should install its own libs into a multilib dir. Yay OpenSSL! - configure_flags = [ - "--prefix=#{settings[:prefix]}", - '--libdir=lib', - "--openssldir=#{settings[:prefix]}/ssl", - 'shared', - 'no-asm', - target, - sslflags, - 'enable-rfc3779', - 'enable-tlsext', - 'no-camellia', - 'no-ec2m', - 'no-md2', - 'no-mdc2', - 'no-ssl2', - 'no-ssl3', - ] - - configure_flags += ['fips', "--with-fipsdir=#{settings[:prefix]}/usr/local/ssl/fips-2.0"] if platform.name =~ /windowsfips-/ - - # Individual projects may provide their own openssl configure flags: - project_flags = settings[:openssl_extra_configure_flags] || [] - configure_flags << project_flags << cflags << ldflags - - pkg.configure do - ["./Configure #{configure_flags.join(' ')}"] - end - - ####### - # BUILD - ####### - - pkg.build do - [ - "#{platform[:make]} depend", - "#{platform[:make]}" - ] - end - - ######### - # INSTALL - ######### - - install_prefix = platform.is_windows? ? '' : 'INSTALL_PREFIX=/' - install_commands = [] - - if platform.is_aix? - install_commands << "slibclean" - end - - install_commands << "#{platform[:make]} #{install_prefix} install" - - if settings[:runtime_project] == 'pdk' - install_commands << "rm -f #{settings[:prefix]}/bin/{openssl,c_rehash}" - end - - pkg.install do - install_commands - end - - pkg.install_file 'LICENSE', "#{settings[:prefix]}/share/doc/openssl-#{pkg.get_version}/LICENSE" -end diff --git a/configs/components/openssl-1.1.1-fips.rb b/configs/components/openssl-1.1.1-fips.rb deleted file mode 100644 index e95bacb4..00000000 --- a/configs/components/openssl-1.1.1-fips.rb +++ /dev/null @@ -1,94 +0,0 @@ -##### -# Component release information: -# https://github.com/openssl/openssl/releases -# Notes: -# This is very, very old and only used for fips. If OpenVox -# does a FIPS build, we should replace this. -##### -component 'openssl-1.1.1-fips' do |pkg, settings, platform| - pkg.version '1.1.1k-6' - pkg.sha256sum 'da536944410a0cbf5c0b6ee0b8f3ec62a9121be3b72bf2819bb4395a761662aa' - pkg.url "https://vault.centos.org/centos/8-stream/BaseOS/Source/SPackages/openssl-#{pkg.get_version}.el8.src.rpm" - pkg.mirror "#{settings[:buildsources_url]}/openssl-#{pkg.get_version}.el8.src.rpm" - - pkg.build_requires 'rpm-build' - pkg.build_requires 'krb5-devel' - pkg.build_requires 'zlib-devel' - pkg.build_requires 'lksctp-tools-devel' - pkg.build_requires 'perl-Test-Harness' - pkg.build_requires 'perl-Module-Load-Conditional' - - patch_version = pkg.get_version.match(/\d\.\d\.\d(\w)/).captures.first - ############################# - # ENVIRONMENT, FLAGS, TARGETS - ############################# - - # FIXME: pkg.apply_patch is not useful here as vanagon component does - # not know how to extract rpm and patch happend before configure step - # proper fix would be extension in vanagon for source rpm handling - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-patch-openssl-cnf.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-force-fips-mode.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-spec-file.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-remove-env-check.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1l-sm2-plaintext.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1k-CVE-2023-3446-fips.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1k-CVE-2023-5678-fips.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1k-CVE-2024-0727-fips.patch' - - if platform.name =~ /-7-/ - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-post-rand.patch' - pkg.add_source 'file://resources/patches/openssl/openssl-1.1.1-fips-edk2-build.patch' - end - - topdir = "--define \"_topdir `pwd`/openssl-#{pkg.get_version}\"" - libdir = "--define '%_libdir %{_prefix}/lib'" - prefix = "--define '%_prefix #{settings[:prefix]}'" - - pkg.configure do - [ - "rpm -i #{topdir} openssl-#{pkg.get_version}.el8.src.rpm" - ] - end - - if platform.name =~ /-7-/ - pkg.configure do - [ - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-edk2-build.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-post-rand.patch && cd -", - ] - end - end - - pkg.configure do - [ - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-patch-openssl-cnf.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-force-fips-mode.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-spec-file.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1-fips-remove-env-check.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1l-sm2-plaintext.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1k-CVE-2023-3446-fips.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1k-CVE-2023-5678-fips.patch && cd -", - "cd openssl-#{pkg.get_version} && /usr/bin/patch --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../openssl-1.1.1k-CVE-2024-0727-fips.patch && cd -" - ] - end - - pkg.build do - [ - 'if [ -f /etc/system-fips ]; then mv /etc/system-fips /etc/system-fips.off; fi', - "rpmbuild -bc --nocheck #{libdir} #{prefix} #{topdir} openssl-#{pkg.get_version}/SPECS/openssl.spec", - 'if [ -f /etc/system-fips.off ]; then mv /etc/system-fips.off /etc/system-fips; fi' - ] - end - - pkg.install do - [ - "cd openssl-#{pkg.get_version}/BUILD/openssl-1.1.1#{patch_version} && make install", - # This chmod command is a work around, once we're off 1.1.1k-6 for openssl the below should be patched and we can remove the below line (PA-4621) - "chmod -x #{settings[:prefix]}/bin/c_rehash", - 'if [ -f /etc/system-fips ]; then mv /etc/system-fips /etc/system-fips.off; fi', - "/usr/bin/strip #{settings[:prefix]}/lib/libcrypto.so.1.1 && LD_LIBRARY_PATH=. crypto/fips/fips_standalone_hmac #{settings[:prefix]}/lib/libcrypto.so.1.1 > #{settings[:prefix]}/lib/.libcrypto.so.1.1.hmac", - "/usr/bin/strip #{settings[:prefix]}/lib/libssl.so.1.1 && LD_LIBRARY_PATH=. crypto/fips/fips_standalone_hmac #{settings[:prefix]}/lib/libssl.so.1.1 > #{settings[:prefix]}/lib/.libssl.so.1.1.hmac", - 'if [ -f /etc/system-fips.off ]; then mv /etc/system-fips.off /etc/system-fips; fi' - ] - end -end diff --git a/configs/components/openssl-1.1.1.rb b/configs/components/openssl-1.1.1.rb deleted file mode 100644 index 0b791a71..00000000 --- a/configs/components/openssl-1.1.1.rb +++ /dev/null @@ -1,200 +0,0 @@ -##### -# Component release information: -# https://github.com/openssl/openssl/releases -# Notes: -# This is a default version used when an OpenSSL version is not specified. -# Should no longer be used and probably should be removed. -##### -component 'openssl' do |pkg, settings, platform| - pkg.version '1.1.1w' - pkg.sha256sum 'cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8' - pkg.url "https://openssl.org/source/openssl-#{pkg.get_version}.tar.gz" - pkg.mirror "#{settings[:buildsources_url]}/openssl-#{pkg.get_version}.tar.gz" - - ############################# - # ENVIRONMENT, FLAGS, TARGETS - ############################# - - target = cflags = ldflags = sslflags = '' - - if platform.is_windows? - pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment 'CYGWIN', settings[:cygwin] - pkg.environment 'CC', settings[:cc] - pkg.environment 'CXX', settings[:cxx] - pkg.environment 'MAKE', platform[:make] - - target = platform.architecture == 'x64' ? 'mingw64' : 'mingw' - cflags = settings[:cflags] - ldflags = settings[:ldflags] - elsif platform.is_cross_compiled_linux? - pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH)" - pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - - cflags = "#{settings[:cflags]} -fPIC" - if platform.architecture =~ /aarch/ - # OpenSSL fails to work on aarch unless we turn down the compiler optimization. - # See PA-2135 for details - cflags += " -O2" - end - - ldflags = "-Wl,-rpath=/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib" - target = if platform.architecture == 'aarch64' - 'linux-aarch64' - elsif platform.name =~ /debian-8-arm/ - 'linux-armv4' - elsif platform.architecture =~ /ppc64le|ppc64el/ # Little-endian - 'linux-ppc64le' - elsif platform.architecture =~ /ppc64/ # Big-endian - 'linux-ppc64' - end - elsif platform.is_aix? - pkg.environment 'CC', '/opt/pl-build-tools/bin/gcc' - - cflags = '$${CFLAGS} -static-libgcc' - ldflags = "#{settings[:ldflags]} -Wl,-R#{settings[:libdir]}" - target = 'aix-gcc' - elsif platform.is_solaris? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin' - pkg.environment 'CC', "/opt/pl-build-tools/bin/#{settings[:platform_triple]}-gcc" - - cflags = "#{settings[:cflags]} -fPIC" - ldflags = "-R/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib" - target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc' - elsif platform.is_macos? - if platform.architecture == 'arm64' - pkg.environment 'PATH', '/opt/homebrew/bin:$(PATH):/usr/local/bin' - else - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' - end - - cflags = settings[:cflags] - - target = if platform.architecture == 'arm64' - 'darwin64-arm64-cc' - else - 'darwin64-x86_64-cc' - end - elsif platform.is_linux? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' - - cflags = settings[:cflags] - ldflags = "#{settings[:ldflags]} -Wl,-z,relro" - if platform.architecture =~ /86$/ - target = 'linux-elf' - sslflags = '386' - elsif platform.architecture =~ /aarch64$/ - target = 'linux-aarch64' - elsif platform.architecture =~ /ppc64le|ppc64el/ # Little-endian - target = 'linux-ppc64le' - elsif platform.architecture =~ /64$/ - target = 'linux-x86_64' - elsif platform.architecture == 'armhf' - target = 'linux-armv4' - end - end - - pkg.apply_patch 'resources/patches/openssl/CVE-2023-5678.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2024-0727.patch' - pkg.apply_patch 'resources/patches/openssl/CVE-2024-5535.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-1.1.1-CVE-2024-2511.patch' - pkg.apply_patch 'resources/patches/openssl/openssl-1.1.1-CVE-2024-4741.patch' - - #################### - # BUILD REQUIREMENTS - #################### - - pkg.build_requires "runtime-#{settings[:runtime_project]}" - - ########### - # CONFIGURE - ########### - - if platform.is_solaris? && platform.name =~ /10/ - # We need to link the rt library on Solaris 10 in order to access the clock_gettime - # function. - cflags += " -lrt" - - # Additionally when we're building on SPARC, we need to revert - # https://github.com/openssl/openssl/commit/7a061312 because for - # some reason, the linker fails to generate the .map files (like - # e.g. libcrypto.map). Strangely, this is not an issue for Solaris - # 11 SPARC despite it using an older version of ld (2.25 vs. 2.27). - if platform.is_cross_compiled? - pkg.apply_patch 'resources/patches/openssl/openssl-1.1.1a-revert-7a061312.patch' - else - # Work around gcc not conforming to Solaris 32-bit ABI by expecting 16-byte stack alignment - # https://github.com/openssl/openssl/issues/13666 - cflags += " -mincoming-stack-boundary=2" - end - end - - # OpenSSL Configure doesn't honor CFLAGS or LDFLAGS as environment variables. - # Instead, those should be passed to Configure at the end of its options, as - # any unrecognized options are passed straight through to ${CC}. Defining - # --libdir ensures that we avoid the multilib (lib/ vs. lib64/) problem, - # since configure uses the existence of a lib64 directory to determine - # if it should install its own libs into a multilib dir. Yay OpenSSL! - configure_flags = [ - "--prefix=#{settings[:prefix]}", - '--libdir=lib', - "--openssldir=#{settings[:prefix]}/ssl", - 'shared', - 'no-asm', - target, - sslflags, - 'no-camellia', - 'no-ec2m', - 'no-md2', - 'no-ssl3' - ] - - # Individual projects may provide their own openssl configure flags: - project_flags = settings[:openssl_extra_configure_flags] || [] - perl_exec = '' - if platform.is_aix? - perl_exec = '/opt/freeware/bin/perl' - elsif platform.is_solaris? && platform.os_version == '10' - perl_exec = '/opt/csw/bin/perl' - end - configure_flags << project_flags << cflags << ldflags - - pkg.configure do - ["#{perl_exec} ./Configure #{configure_flags.join(' ')}"] - end - - ####### - # BUILD - ####### - - pkg.build do - [ - "#{platform[:make]} depend", - "#{platform[:make]}" - ] - end - - ######### - # INSTALL - ######### - - install_prefix = platform.is_windows? ? '' : 'INSTALL_PREFIX=/' - install_commands = [] - - if platform.is_aix? - install_commands << "slibclean" - end - - # Skip man and html docs - install_commands << "#{platform[:make]} #{install_prefix} install_sw install_ssldirs" - - if settings[:runtime_project] == 'pdk' - install_commands << "rm -f #{settings[:prefix]}/bin/{openssl,c_rehash}" - end - - pkg.install do - install_commands - end - - pkg.install_file 'LICENSE', "#{settings[:prefix]}/share/doc/openssl-#{pkg.get_version}/LICENSE" -end diff --git a/configs/components/openssl-3.0.rb b/configs/components/openssl-3.0.rb index 2bde2256..56111e39 100644 --- a/configs/components/openssl-3.0.rb +++ b/configs/components/openssl-3.0.rb @@ -6,8 +6,8 @@ # need to move to the 3.5.x LTS stream in the next year. ##### component 'openssl' do |pkg, settings, platform| - pkg.version '3.0.17' - pkg.sha256sum 'dfdd77e4ea1b57ff3a6dbde6b0bdc3f31db5ac99e7fdd4eaf9e1fbb6ec2db8ce' + pkg.version '3.0.18' + pkg.sha256sum 'd80c34f5cf902dccf1f1b5df5ebb86d0392e37049e5d73df1b3abae72e4ffe8b' pkg.url "https://github.com/openssl/openssl/releases/download/openssl-#{pkg.get_version}/openssl-#{pkg.get_version}.tar.gz" pkg.mirror "#{settings[:buildsources_url]}/openssl-#{pkg.get_version}.tar.gz" @@ -15,7 +15,7 @@ # ENVIRONMENT, FLAGS, TARGETS ############################# - if platform.name =~ /^(el-|redhat-|redhatfips-|fedora-)/ + if platform.name =~ /^(amazon-|el-|redhat-|redhatfips-|fedora-)/ pkg.build_requires 'perl-core' elsif platform.is_solaris? # perl is installed in platform definition @@ -34,8 +34,6 @@ target = platform.architecture == 'x64' ? 'mingw64' : 'mingw' elsif platform.is_aix? - raise "openssl-3.0 is not supported on older AIX" if platform.name == 'aix-7.1-ppc' - # REMIND: why not PATH? pkg.environment 'CC', '/opt/freeware/bin/gcc' @@ -47,10 +45,10 @@ elsif platform.is_solaris? pkg.environment 'PATH', '/opt/csw/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin' if !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment 'CC', "/opt/pl-build-tools/bin/gcc" + pkg.environment 'CC', '/opt/pl-build-tools/bin/gcc' gcc_lib = "/opt/pl-build-tools/#{settings[:platform_triple]}/lib" else - pkg.environment 'CC', "/opt/csw/bin/gcc" + pkg.environment 'CC', '/opt/csw/bin/gcc' gcc_lib = "/opt/csw/#{settings[:platform_triple]}/lib" end cflags = "#{settings[:cflags]} -fPIC" @@ -58,11 +56,11 @@ target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc' elsif platform.is_macos? pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin' - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CC', settings[:cc] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] - target = if platform.architecture == "arm64" + target = if platform.architecture == 'arm64' 'darwin64-arm64' else 'darwin64-x86_64' @@ -71,16 +69,17 @@ pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' ldflags = "#{settings[:ldflags]} -Wl,-z,relro" - if platform.architecture =~ /86$/ + case platform.architecture + when /86$/ target = 'linux-elf' sslflags = '386' - elsif platform.architecture =~ /aarch64$/ + when /aarch64$/ target = 'linux-aarch64' - elsif platform.architecture =~ /ppc64le|ppc64el/ # Little-endian + when /ppc64le|ppc64el/ # Little-endian target = 'linux-ppc64le' - elsif platform.architecture =~ /64$/ + when /64$/ target = 'linux-x86_64' - elsif platform.architecture == 'armhf' + when 'armhf' target = 'linux-armv4' end end @@ -133,9 +132,7 @@ # Individual projects may provide their own openssl configure flags: project_flags = settings[:openssl_extra_configure_flags] || [] perl_exec = '' - if platform.is_aix? - perl_exec = '/opt/freeware/bin/perl' - end + perl_exec = '/opt/freeware/bin/perl' if platform.is_aix? configure_flags << project_flags pkg.environment 'CFLAGS', cflags @@ -150,19 +147,19 @@ build_commands = [] - if platform.is_windows? && platform.architecture == "x86" + if platform.is_windows? && platform.architecture == 'x86' # mingw-w32 5.2.0 has a bug in include/winnt.h that declares GetCurrentFiber # with __CRT_INLINE, which results in the function not being inlined and # generates a linker error: undefined reference to `GetCurrentFiber'. # This only affects 32-bit builds # See https://github.com/openssl/openssl/issues/513 # See https://github.com/mingw-w64/mingw-w64/commit/8da1aae7a7ff5bf996878dc8fe30a0e01e210e5a - pkg.add_source("file://resources/patches/windows/FORCEINLINE-i686-w64-mingw32-winnt.h") + pkg.add_source('file://resources/patches/windows/FORCEINLINE-i686-w64-mingw32-winnt.h') build_commands << "#{platform.patch} --dir #{settings[:gcc_root]}/#{settings[:platform_triple]} --strip=2 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../FORCEINLINE-i686-w64-mingw32-winnt.h" end build_commands << "#{platform[:make]} depend" - build_commands << "#{platform[:make]}" + build_commands << platform[:make] pkg.build do build_commands @@ -177,7 +174,7 @@ if platform.is_aix? # "Removes any currently unused modules in kernel and library memory." - install_commands << "slibclean" + install_commands << 'slibclean' end # Skip man and html docs @@ -190,4 +187,3 @@ pkg.install_file 'LICENSE.txt', "#{settings[:prefix]}/share/doc/openssl-#{pkg.get_version}/LICENSE" end - diff --git a/configs/components/openssl-fips-2.0.16.rb b/configs/components/openssl-fips-2.0.16.rb deleted file mode 100644 index e95e8c7b..00000000 --- a/configs/components/openssl-fips-2.0.16.rb +++ /dev/null @@ -1,37 +0,0 @@ -##### -# Component release information: -# https://github.com/openssl/openssl/releases -# Notes: -# This is very, very old and only used for windowsfips (is actually 1.0.2). -# If OpenVox does a Windows FIPS build, we should replace this. -##### -component 'openssl-fips-2.0.16' do |pkg, settings, platform| - pkg.md5sum '55ef09f12bb199d47e6a84e79fb959d7' - pkg.url 'https://www.openssl.org/source/openssl-fips-2.0.16.tar.gz' - - if platform.is_windows? - pkg.environment 'PATH', "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)" - pkg.environment 'CYGWIN', settings[:cygwin] - pkg.environment 'CC', settings[:cc] - pkg.environment 'CXX', settings[:cxx] - pkg.environment 'MAKE', platform[:make] - pkg.environment 'SYSTEM', 'mingw64' - pkg.environment 'INSTALL_PREFIX', settings[:prefix] - end - - if platform.is_windows? - pkg.apply_patch 'resources/patches/openssl/openssl-fips-2.0.16.patch' - end - - pkg.configure do - ["./config no-asm"] - end - - pkg.build do - ['/usr/bin/make '] - end - - pkg.install do - ['/usr/bin/make install'] - end -end diff --git a/configs/components/pl-ruby-patch.rb b/configs/components/pl-ruby-patch.rb index 87610181..9c9dc809 100644 --- a/configs/components/pl-ruby-patch.rb +++ b/configs/components/pl-ruby-patch.rb @@ -6,28 +6,22 @@ # version and target architecture # # This component should also be present in the puppet-agent project -component "pl-ruby-patch" do |pkg, settings, platform| +component 'pl-ruby-patch' do |pkg, settings, platform| if platform.is_cross_compiled? - ruby_version_y = settings[:ruby_version].gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') - - pkg.add_source("file://resources/files/ruby/patch-hostruby.rb") + pkg.add_source('file://resources/files/ruby/patch-hostruby.rb') # The `target_triple` determines which directory native extensions are stored in the # compiled ruby and must match ruby's naming convention. # weird architecture naming conventions... target_triple = if platform.architecture =~ /ppc64el|ppc64le/ - "powerpc64le-linux" + 'powerpc64le-linux' elsif platform.name == 'solaris-11-sparc' - "sparc-solaris-2.11" + 'sparc-solaris-2.11' elsif platform.name =~ /solaris-10/ - "sparc-solaris" + 'sparc-solaris' elsif platform.is_macos? - if ruby_version_y.start_with?('2') - "aarch64-darwin" - else - "arm64-darwin" - end + 'arm64-darwin' else "#{platform.architecture}-linux" end diff --git a/configs/components/puppet-ca-bundle.rb b/configs/components/puppet-ca-bundle.rb index 17ce32ff..021d32fe 100644 --- a/configs/components/puppet-ca-bundle.rb +++ b/configs/components/puppet-ca-bundle.rb @@ -1,14 +1,14 @@ -component "puppet-ca-bundle" do |pkg, settings, platform| - pkg.load_from_json("configs/components/puppet-ca-bundle.json") +component 'puppet-ca-bundle' do |pkg, settings, platform| + pkg.load_from_json('configs/components/puppet-ca-bundle.json') pkg.build_requires "openssl-#{settings[:openssl_version]}" - if platform.is_cross_compiled_linux? - # Use the build host's openssl command, not our cross-compiled or vendored one - openssl_cmd = '/usr/bin/openssl' - else - openssl_cmd = "#{settings[:bindir]}/openssl" - end + openssl_cmd = if platform.is_cross_compiled_linux? + # Use the build host's openssl command, not our cross-compiled or vendored one + '/usr/bin/openssl' + else + "#{settings[:bindir]}/openssl" + end target = if platform.is_fips? 'install-fips' diff --git a/configs/components/readline.rb b/configs/components/readline.rb index b234549b..eec1c8c4 100644 --- a/configs/components/readline.rb +++ b/configs/components/readline.rb @@ -6,32 +6,31 @@ # 2023-07-23: Quite out of date, latest is 8.3. Need to evaluate if the # new version breaks anything. ##### -component "readline" do |pkg, settings, platform| - pkg.version "8.1.2" - pkg.md5sum "12819fa739a78a6172400f399ab34f81" +component 'readline' do |pkg, settings, platform| + pkg.version '8.1.2' + pkg.md5sum '12819fa739a78a6172400f399ab34f81' pkg.url "http://ftp.gnu.org/gnu/#{pkg.get_name}/#{pkg.get_name}-#{pkg.get_version}.tar.gz" pkg.mirror "#{settings[:buildsources_url]}/#{pkg.get_name}-#{pkg.get_version}.tar.gz" if platform.is_aix? - raise "readline is not supported on older AIX" if platform.name == 'aix-7.1-ppc' - - pkg.environment "PATH", "/opt/freeware/bin:$(PATH)" + pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' elsif platform.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" - pkg.environment "CFLAGS", settings[:cflags] - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', "/opt/pl-build-tools/bin:$(PATH):#{settings[:bindir]}" + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_solaris? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" - pkg.environment "CFLAGS", "#{settings[:cflags]} -std=c99" - pkg.environment "LDFLAGS", settings[:ldflags] + pkg.environment 'PATH', + "/opt/pl-build-tools/bin:$(PATH):/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:#{settings[:bindir]}" + pkg.environment 'CFLAGS', "#{settings[:cflags]} -std=c99" + pkg.environment 'LDFLAGS', settings[:ldflags] elsif platform.is_macos? - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] pkg.environment 'CC', settings[:cc] pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] else - pkg.environment "LDFLAGS", settings[:ldflags] - pkg.environment "CFLAGS", settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'CFLAGS', settings[:cflags] end pkg.build_requires "runtime-#{settings[:runtime_project]}" @@ -50,5 +49,4 @@ "rm -rf #{settings[:datadir]}/doc/#{pkg.get_name}*" ] end - end diff --git a/configs/components/ruby-2.7-augeas.rb b/configs/components/ruby-2.7-augeas.rb deleted file mode 100644 index 661b8473..00000000 --- a/configs/components/ruby-2.7-augeas.rb +++ /dev/null @@ -1,18 +0,0 @@ -component 'ruby-2.7-augeas' do |pkg, settings, platform| - expected_ruby_version = '2.7.8' - - unless settings[:ruby_version] == expected_ruby_version - unless settings.key?(:additional_rubies) && settings[:additional_rubies].key?(expected_ruby_version) - raise "No config found for Ruby #{expected_ruby_version} in settings[:additional_rubies]" - end - - ruby_settings = settings[:additional_rubies][expected_ruby_version] - - ruby_version = ruby_settings[:ruby_version] - host_ruby = ruby_settings[:host_ruby] - ruby_dir = ruby_settings[:ruby_dir] - ruby_bindir = ruby_settings[:ruby_bindir] - end - - instance_eval File.read('configs/components/_base-ruby-augeas.rb') -end diff --git a/configs/components/ruby-2.7-selinux.rb b/configs/components/ruby-2.7-selinux.rb deleted file mode 100644 index 61c9495a..00000000 --- a/configs/components/ruby-2.7-selinux.rb +++ /dev/null @@ -1,17 +0,0 @@ -component 'ruby-2.7-selinux' do |pkg, settings, platform| - expected_ruby_version = '2.7.8' - - unless settings[:ruby_version] == expected_ruby_version - unless settings.key?(:additional_rubies) && settings[:additional_rubies].key?(expected_ruby_version) - raise "No config found for Ruby #{expected_ruby_version} in settings[:additional_rubies]" - end - - ruby_settings = settings[:additional_rubies][expected_ruby_version] - - ruby_version = ruby_settings[:ruby_version] - host_ruby = ruby_settings[:host_ruby] - ruby_bindir = ruby_settings[:ruby_bindir] - end - - instance_eval File.read('configs/components/_base-ruby-selinux.rb') -end diff --git a/configs/components/ruby-2.7.8.rb b/configs/components/ruby-2.7.8.rb deleted file mode 100644 index 862483a4..00000000 --- a/configs/components/ruby-2.7.8.rb +++ /dev/null @@ -1,299 +0,0 @@ -##### -# Component release information: -# https://github.com/ruby/ruby/releases -# https://www.ruby-lang.org/en/downloads/releases/ -# Notes: -# The file name of the ruby component must match the ruby_version -##### -component 'ruby-2.7.8' do |pkg, settings, platform| - pkg.version '2.7.8' - pkg.sha256sum 'c2dab63cbc8f2a05526108ad419efa63a67ed4074dbbcf9fc2b1ca664cb45ba0' - - # rbconfig-update is used to munge rbconfigs after the fact. - pkg.add_source("file://resources/files/ruby/rbconfig-update.rb") - - # PDK packages multiple rubies and we need to tweak some settings - # if this is not the *primary* ruby. - if pkg.get_version != settings[:ruby_version] - # not primary ruby - - # ensure we have config for this ruby - unless settings.key?(:additional_rubies) && settings[:additional_rubies].key?(pkg.get_version) - raise "missing config for additional ruby #{pkg.get_version}" - end - - ruby_settings = settings[:additional_rubies][pkg.get_version] - - ruby_dir = ruby_settings[:ruby_dir] - ruby_bindir = ruby_settings[:ruby_bindir] - host_ruby = ruby_settings[:host_ruby] - else - # primary ruby - ruby_dir = settings[:ruby_dir] - ruby_bindir = settings[:ruby_bindir] - host_ruby = settings[:host_ruby] - end - - # Most ruby configuration happens in the base ruby config: - instance_eval File.read('configs/components/_base-ruby.rb') - # Configuration below should only be applicable to ruby 2.5 - - ######### - # PATCHES - ######### - - base = 'resources/patches/ruby_27' - # Patch for https://bugs.ruby-lang.org/issues/14972 - pkg.apply_patch "#{base}/net_http_eof_14972_r2.5.patch" - pkg.apply_patch "#{base}/regexp_use_after_free.patch" - - pkg.apply_patch "#{base}/uri-redos-cve-2023-36617.patch" - pkg.apply_patch "#{base}/stringio_cve-2024-27280.patch" - - pkg.apply_patch "#{base}/0001-Filter-marshaled-objects-ruby30.patch" - pkg.apply_patch "#{base}/0001-Use-safe_load-and-safe_load_file-for-rdoc_options.patch" - - if platform.is_cross_compiled? - unless platform.is_macos? - pkg.apply_patch "#{base}/uri_generic_remove_safe_nav_operator_r2.5.patch" - pkg.apply_patch "#{base}/lib_optparse_remove_safe_nav_operator.patch" - pkg.apply_patch "#{base}/revert_delete_prefix.patch" - pkg.apply_patch "#{base}/remove_squiggly_heredocs.patch" - pkg.apply_patch "#{base}/remove_deprecate_constant_statements.patch" - pkg.apply_patch "#{base}/ruby2_keywords_guard.patch" - pkg.apply_patch "#{base}/ruby_version_extra_guards.patch" - pkg.apply_patch "#{base}/ruby_20_guards.patch" - if platform.name =~ /^solaris-10-sparc/ - pkg.apply_patch "#{base}/Solaris-only-Replace-reference-to-RUBY-var-with-opt-pl-build-tool.patch" - else - pkg.apply_patch "#{base}/Replace-reference-to-RUBY-var-with-opt-pl-build-tool.patch" - end - if platform.name =~ /sparc/ - pkg.apply_patch "#{base}/transform_mjit_header.patch" - end - end - pkg.apply_patch "#{base}/rbinstall_gem_path.patch" - pkg.apply_patch "#{base}/revert_host_value_changes.patch" - end - - if platform.is_aix? - # TODO: Remove this patch once PA-1607 is resolved. - pkg.apply_patch "#{base}/aix_configure.patch" - pkg.apply_patch "#{base}/aix-fix-libpath-in-configure.patch" - pkg.apply_patch "#{base}/aix-do-not-use-realpath.patch" - pkg.apply_patch "#{base}/aix_ruby_2.1_fix_make_test_failure_r2.5.patch" - pkg.apply_patch "#{base}/Remove-O_CLOEXEC-check-for-AIX-builds_r2.5.patch" - end - - if platform.is_windows? - pkg.apply_patch "#{base}/windows_ruby_2.5_fixup_generated_batch_files.patch" - pkg.apply_patch "#{base}/windows_nocodepage_utf8_fallback_r2.5.patch" - pkg.apply_patch "#{base}/win32_long_paths_support.patch" - pkg.apply_patch "#{base}/ruby-faster-load_27.patch" - pkg.apply_patch "#{base}/windows_configure.patch" - end - - #################### - # ENVIRONMENT, FLAGS - #################### - - if platform.is_macos? - pkg.environment 'optflags', settings[:cflags] - elsif platform.is_windows? - pkg.environment 'optflags', settings[:cflags] + ' -O3' - pkg.environment 'MAKE', 'make' - elsif platform.is_cross_compiled? - pkg.environment 'CROSS_COMPILING', 'true' - else - pkg.environment 'optflags', '-O2' - end - - special_flags = " --prefix=#{ruby_dir} --with-opt-dir=#{settings[:prefix]} " - - if settings[:supports_pie] - special_flags += " CFLAGS='#{settings[:cflags]}' LDFLAGS='#{settings[:ldflags]}' CPPFLAGS='#{settings[:cppflags]}' " - end - - if platform.is_aix? - # This normalizes the build string to something like AIX 7.1.0.0 rather - # than AIX 7.1.0.2 or something - special_flags += " --build=#{settings[:platform_triple]} " - elsif platform.is_cross_compiled? && platform.is_linux? - special_flags += " --with-baseruby=#{host_ruby} " - elsif platform.is_cross_compiled? && platform.is_macos? - # When the target arch is aarch64, ruby incorrectly selects the 'ucontext' coroutine - # implementation instead of 'arm64', so specify 'amd64' explicitly - # https://github.com/ruby/ruby/blob/c9c2245c0a25176072e02db9254f0e0c84c805cd/configure.ac#L2329-L2330 - special_flags += " --with-baseruby=#{host_ruby} --with-coroutine=arm64 " - elsif platform.is_macos? && platform.architecture == 'arm64' && platform.os_version.to_i >= 13 - pkg.environment 'PATH', '/opt/homebrew/bin:$(PATH):/usr/local/bin' - special_flags += " --with-openssl-dir=#{settings[:prefix]} " - elsif platform.is_solaris? && platform.architecture == "sparc" - special_flags += " --with-baseruby=#{host_ruby} --enable-close-fds-by-recvmsg-with-peek " - elsif platform.name =~ /el-6/ || platform.name =~ /sles-11-x86_64/ - # Since we're not cross compiling, ignore old ruby versions that happen to be in the PATH - # and force ruby to build miniruby and use that to bootstrap the rest of the build - special_flags += " --with-baseruby=no " - elsif platform.is_windows? - special_flags = " CPPFLAGS='-DFD_SETSIZE=2048' debugflags=-g --prefix=#{ruby_dir} --with-opt-dir=#{settings[:prefix]} " - end - - without_dtrace = [ - 'aix-7.1-ppc', - 'el-7-ppc64le', - 'osx-11-arm64', - 'osx-12-arm64', - 'redhatfips-7-x86_64', - 'sles-11-x86_64', - 'sles-12-ppc64le', - 'solaris-10-sparc', - 'solaris-11-sparc', - 'windows-2012r2-x64', - 'windows-2012r2-x86', - 'windows-2019-x64', - 'windowsfips-2012r2-x64', - 'windowsfips-2016-x64' - ] - - unless without_dtrace.include? platform.name - special_flags += ' --enable-dtrace ' - end - - ########### - # CONFIGURE - ########### - - # TODO: Remove this once PA-1607 is resolved. - # TODO: Can we use native autoconf? The dependencies seemed a little too extensive - pkg.configure { ["/opt/pl-build-tools/bin/autoconf"] } if platform.is_aix? - - # Here we set --enable-bundled-libyaml to ensure that the libyaml included in - # ruby is used, even if the build system has a copy of libyaml available - pkg.configure do - [ - "bash configure \ - --enable-shared \ - --enable-bundled-libyaml \ - --disable-install-doc \ - --disable-install-rdoc \ - #{settings[:host]} \ - #{special_flags}" - ] - end - - if(platform.name =~ /windowsfips-2016/) - # We need the below patch since during ruby build step for windowsfips-2016-x64 agent-runtime builds, - # the rbconfig.rb file that gets generated contains '\r' trailing character in 'ruby_version' config. - # We patch rbconfig.rb to remove the '\r' character. - # This patch has to run after the build step since rbconfig.rb is generated during the build step. - # This is sort of a hacky way to do this. We need to find why the '\r' character gets appended to - # 'ruby_version' field in the future so that this patch can be removed - PA-6902. - pkg.add_source("#{base}/rbconfig_win.patch") - pkg.build do - ["TMP=/var/tmp /usr/bin/patch.exe --binary --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../rbconfig_win.patch"] - end - end - - ######### - # INSTALL - ######### - - if platform.is_windows? - # With ruby 2.5, ruby will generate cmd files instead of bat files; These - # cmd wrappers work fine in our environment if they're just renamed as batch - # files. Rake is omitted here on purpose - it retains the old batch wrapper. - # - # Note that this step must happen after the install step above. - pkg.install do - %w{erb gem irb rdoc ri}.map do |name| - "mv #{ruby_bindir}/#{name}.cmd #{ruby_bindir}/#{name}.bat" - end - end - end - - target_doubles = { - 'powerpc-ibm-aix7.1.0.0' => 'powerpc-aix7.1.0.0', - 'aarch64-apple-darwin' => 'aarch64-darwin', - 'aarch64-redhat-linux' => 'aarch64-linux', - 'ppc64-redhat-linux' => 'powerpc64-linux', - 'ppc64le-redhat-linux' => 'powerpc64le-linux', - 'powerpc64le-suse-linux' => 'powerpc64le-linux', - 'powerpc64le-linux-gnu' => 'powerpc64le-linux', - 'i386-pc-solaris2.10' => 'i386-solaris2.10', - 'sparc-sun-solaris2.10' => 'sparc-solaris2.10', - 'i386-pc-solaris2.11' => 'i386-solaris2.11', - 'sparc-sun-solaris2.11' => 'sparc-solaris2.11', - 'arm-linux-gnueabihf' => 'arm-linux-eabihf', - 'arm-linux-gnueabi' => 'arm-linux-eabi', - 'x86_64-w64-mingw32' => 'x64-mingw32', - 'i686-w64-mingw32' => 'i386-mingw32' - } - - if target_doubles.key?(settings[:platform_triple]) - rbconfig_topdir = File.join(ruby_dir, 'lib', 'ruby', '2.7.0', target_doubles[settings[:platform_triple]]) - else - rbconfig_topdir = "$$(#{ruby_bindir}/ruby -e \"puts RbConfig::CONFIG[\\\"topdir\\\"]\")" - end - - rbconfig_changes = {} - if platform.is_aix? - rbconfig_changes["CC"] = "gcc" - elsif platform.is_cross_compiled? || platform.is_solaris? - if platform.name =~ /osx-11/ - rbconfig_changes["CC"] = 'clang -target arm64-apple-macos11' - elsif platform.name =~ /osx-12/ - rbconfig_changes["CC"] = 'clang -target arm64-apple-macos12' - else - rbconfig_changes["CC"] = "gcc" - if platform.is_solaris? - # this should probably be done for aix and cross compiled targets too - rbconfig_changes["CPP"] = "gcc -E" - end - rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized" - end - if platform.name =~ /el-7-ppc64/ - # EL 7 on POWER will fail with -Wl,--compress-debug-sections=zlib so this - # will remove that entry - # Matches both endians - rbconfig_changes["DLDFLAGS"] = "-Wl,-rpath=/opt/puppetlabs/puppet/lib -L/opt/puppetlabs/puppet/lib -Wl,-rpath,/opt/puppetlabs/puppet/lib" - elsif platform.name =~ /sles-12-ppc64le/ - # the ancient gcc version on sles-12-ppc64le does not understand -fstack-protector-strong, so remove the `strong` part - rbconfig_changes["LDFLAGS"] = "-L. -Wl,-rpath=/opt/puppetlabs/puppet/lib -fstack-protector -rdynamic -Wl,-export-dynamic -L/opt/puppetlabs/puppet/lib" - end - elsif platform.is_macos? && platform.architecture == 'arm64' && platform.os_version.to_i >= 13 - rbconfig_changes["CC"] = 'clang' - elsif platform.is_windows? - if platform.architecture == "x64" - rbconfig_changes["CC"] = "x86_64-w64-mingw32-gcc" - else - rbconfig_changes["CC"] = "i686-w64-mingw32-gcc" - end - end - - pkg.add_source("file://resources/files/ruby_vendor_gems/operating_system.rb") - defaults_dir = File.join(settings[:libdir], "ruby/2.7.0/rubygems/defaults") - pkg.directory(defaults_dir) - pkg.install_file "../operating_system.rb", File.join(defaults_dir, 'operating_system.rb') - - certs_dir = File.join(settings[:libdir], 'ruby/2.7.0/rubygems/ssl_certs/puppetlabs.net') - pkg.directory(certs_dir) - - pkg.add_source('file://resources/files/rubygems/COMODO_RSA_Certification_Authority.pem') - pkg.install_file '../COMODO_RSA_Certification_Authority.pem', File.join(certs_dir, 'COMODO_RSA_Certification_Authority.pem') - - pkg.add_source('file://resources/files/rubygems/GlobalSignRootCA_R3.pem') - pkg.install_file '../GlobalSignRootCA_R3.pem', File.join(certs_dir, 'GlobalSignRootCA_R3.pem') - - pkg.add_source('file://resources/files/rubygems/DigiCertGlobalRootG2.pem') - pkg.install_file '../DigiCertGlobalRootG2.pem', File.join(certs_dir, 'DigiCertGlobalRootG2.pem') - - if rbconfig_changes.any? - pkg.install do - [ - "#{host_ruby} ../rbconfig-update.rb \"#{rbconfig_changes.to_s.gsub('"', '\"')}\" #{rbconfig_topdir}", - "cp original_rbconfig.rb #{settings[:datadir]}/doc/rbconfig-#{pkg.get_version}-orig.rb", - "cp new_rbconfig.rb #{rbconfig_topdir}/rbconfig.rb", - ] - end - end -end diff --git a/configs/components/ruby-3.2.rb b/configs/components/ruby-3.2.rb index 16dec74e..f26f8596 100644 --- a/configs/components/ruby-3.2.rb +++ b/configs/components/ruby-3.2.rb @@ -14,7 +14,7 @@ host_ruby = settings[:host_ruby] # rbconfig-update is used to munge rbconfigs after the fact. - pkg.add_source("file://resources/files/ruby/rbconfig-update.rb") + pkg.add_source('file://resources/files/ruby/rbconfig-update.rb') # Most ruby configuration happens in the base ruby config: instance_eval File.read('configs/components/_base-ruby.rb') @@ -25,13 +25,9 @@ base = 'resources/patches/ruby_32' - if platform.is_cross_compiled? - pkg.apply_patch "#{base}/rbinstall_gem_path.patch" - end + pkg.apply_patch "#{base}/rbinstall_gem_path.patch" if platform.is_cross_compiled? - if platform.is_aix? - pkg.apply_patch "#{base}/reline_disable_terminfo.patch" - end + pkg.apply_patch "#{base}/reline_disable_terminfo.patch" if platform.is_aix? if platform.is_windows? pkg.apply_patch "#{base}/windows_mingw32_mkmf.patch" @@ -63,7 +59,7 @@ pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin' elsif platform.is_windows? - optflags = cflags + ' -O3' + optflags = "#{cflags} -O3" pkg.environment 'optflags', optflags pkg.environment 'CFLAGS', optflags pkg.environment 'MAKE', 'make' @@ -77,7 +73,7 @@ # representative or the approved supplier. # collect2: error: ld returned 16 exit status - pkg.environment 'optflags', "-O2 -fPIC -g0 " + pkg.environment 'optflags', '-O2 -fPIC -g0 ' elsif platform.is_solaris? pkg.environment 'optflags', '-O1' else @@ -93,9 +89,7 @@ cflags += ' -Wno-error=implicit-function-declaration ' end - if settings[:supports_pie] - special_flags += " CFLAGS='#{cflags}' LDFLAGS='#{settings[:ldflags]}' CPPFLAGS='#{settings[:cppflags]}' " - end + special_flags += " CFLAGS='#{cflags}' LDFLAGS='#{settings[:ldflags]}' CPPFLAGS='#{settings[:cppflags]}' " if settings[:supports_pie] # Ruby's build process requires a "base" ruby and we need a ruby to install # gems into the /opt/puppetlabs/puppet/lib directory. @@ -108,11 +102,11 @@ # is in the PATH, as it's probably too old to build ruby 3.2. And we don't # want to use/maintain pl-ruby if we don't have to. Instead set baseruby to # "no" which will force ruby to build and use miniruby. - if platform.is_cross_compiled? - special_flags += " --with-baseruby=#{host_ruby} " - else - special_flags += " --with-baseruby=no " - end + special_flags += if platform.is_cross_compiled? + " --with-baseruby=#{host_ruby} " + else + ' --with-baseruby=no ' + end if platform.is_aix? # This normalizes the build string to something like AIX 7.1.0.0 rather @@ -122,14 +116,14 @@ # When the target arch is aarch64, ruby incorrectly selects the 'ucontext' coroutine # implementation instead of 'arm64', so specify 'amd64' explicitly # https://github.com/ruby/ruby/blob/c9c2245c0a25176072e02db9254f0e0c84c805cd/configure.ac#L2329-L2330 - special_flags += " --with-coroutine=arm64 " - elsif platform.is_solaris? && platform.architecture == "sparc" + special_flags += ' --with-coroutine=arm64 ' + elsif platform.is_solaris? && platform.architecture == 'sparc' unless platform.is_cross_compiled? # configure seems to enable dtrace because the executable is present, # explicitly disable it and don't enable it below - special_flags += " --enable-dtrace=no " + special_flags += ' --enable-dtrace=no ' end - special_flags += "--enable-close-fds-by-recvmsg-with-peek " + special_flags += '--enable-close-fds-by-recvmsg-with-peek ' elsif platform.is_windows? # ruby's configure script guesses the build host is `cygwin`, because we're using @@ -138,23 +132,21 @@ # target explicitly. special_flags += " CPPFLAGS='-DFD_SETSIZE=2048' debugflags=-g " - if platform.architecture == "x64" - special_flags += " --build x86_64-w64-mingw32 " - else - special_flags += " --build i686-w64-mingw32 " - end + special_flags += if platform.architecture == 'x64' + ' --build x86_64-w64-mingw32 ' + else + ' --build i686-w64-mingw32 ' + end elsif platform.is_macos? special_flags += " --with-openssl-dir=#{settings[:prefix]} " end without_dtrace = [ - 'aix-7.1-ppc', 'aix-7.2-ppc', 'el-7-ppc64le', 'macos-all-arm64', 'macos-all-x86_64', 'redhatfips-7-x86_64', - 'sles-11-x86_64', 'sles-12-ppc64le', 'solaris-11-sparc', 'solaris-113-sparc', @@ -162,9 +154,7 @@ 'windowsfips-2016-x64' ] - unless without_dtrace.include? platform.name - special_flags += ' --enable-dtrace ' - end + special_flags += ' --enable-dtrace ' unless without_dtrace.include? platform.name ########### # CONFIGURE @@ -173,13 +163,9 @@ # TODO: Remove this once PA-1607 is resolved. # TODO: Can we use native autoconf? The dependencies seemed a little too extensive if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - pkg.configure { ["/opt/pl-build-tools/bin/autoconf"] } - else - pkg.configure { ["/opt/freeware/bin/autoconf"] } - end + pkg.configure { ['/opt/freeware/bin/autoconf'] } else - pkg.configure { ["bash autogen.sh"] } + pkg.configure { ['bash autogen.sh'] } end pkg.configure do @@ -193,16 +179,16 @@ ] end - if(platform.name =~ /windowsfips-2016/) + if platform.name =~ /windowsfips-2016/ # We need the below patch since during ruby build step for windowsfips-2016-x64 agent-runtime builds, # the rbconfig.rb file that gets generated contains '\r' trailing character in 'ruby_version' config. # We patch rbconfig.rb to remove the '\r' character. - # This patch has to run after the build step since rbconfig.rb is generated during the build step. + # This patch has to run after the build step since rbconfig.rb is generated during the build step. # This is sort of a hacky way to do this. We need to find why the '\r' character gets appended to # 'ruby_version' field in the future so that this patch can be removed - PA-6902. pkg.add_source("#{base}/rbconfig_win.patch") pkg.build do - ["TMP=/var/tmp /usr/bin/patch.exe --binary --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../rbconfig_win.patch"] + ['TMP=/var/tmp /usr/bin/patch.exe --binary --strip=1 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../rbconfig_win.patch'] end end @@ -217,17 +203,16 @@ # # Note that this step must happen after the install step above. pkg.install do - %w{gem}.map do |name| + %w[gem].map do |name| "mv #{ruby_bindir}/#{name}.cmd #{ruby_bindir}/#{name}.bat" end end # Required when using `stack-protection-strong` and older versions of mingw-w64-gcc - pkg.install_file File.join(settings[:gcc_bindir], "libssp-0.dll"), File.join(settings[:bindir], "libssp-0.dll") + pkg.install_file File.join(settings[:gcc_bindir], 'libssp-0.dll'), File.join(settings[:bindir], 'libssp-0.dll') end target_doubles = { - 'powerpc-ibm-aix7.1.0.0' => 'powerpc-aix7.1.0.0', 'powerpc-ibm-aix7.2.0.0' => 'powerpc-aix7.2.0.0', 'aarch64-redhat-linux' => 'aarch64-linux', 'ppc64-redhat-linux' => 'powerpc64-linux', @@ -243,11 +228,11 @@ 'x86_64-w64-mingw32' => 'x64-mingw32', 'i686-w64-mingw32' => 'i386-mingw32' } - if target_doubles.key?(settings[:platform_triple]) - rbconfig_topdir = File.join(ruby_dir, 'lib', 'ruby', '3.2.0', target_doubles[settings[:platform_triple]]) - else - rbconfig_topdir = "$$(#{ruby_bindir}/ruby -e \"puts RbConfig::CONFIG[\\\"topdir\\\"]\")" - end + rbconfig_topdir = if target_doubles.key?(settings[:platform_triple]) + File.join(ruby_dir, 'lib', 'ruby', '3.2.0', target_doubles[settings[:platform_triple]]) + else + "$$(#{ruby_bindir}/ruby -e \"puts RbConfig::CONFIG[\\\"topdir\\\"]\")" + end # When cross compiling or building on non-linux, we sometimes need to patch # the rbconfig.rb in the "host" ruby so that later when we try to build gems @@ -257,40 +242,44 @@ # "host" ruby is configured in _shared-agent-settings rbconfig_changes = {} if platform.is_aix? - rbconfig_changes["CC"] = "gcc" + rbconfig_changes['CC'] = 'gcc' elsif platform.is_cross_compiled? || (platform.is_solaris? && platform.architecture != 'sparc') # REMIND: why are we overriding rbconfig for solaris intel? - rbconfig_changes["CC"] = 'gcc' - rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized" + rbconfig_changes['CC'] = 'gcc' + rbconfig_changes['warnflags'] = + '-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized' if platform.name =~ /el-7-ppc64/ # EL 7 on POWER will fail with -Wl,--compress-debug-sections=zlib so this # will remove that entry # Matches both endians - rbconfig_changes["DLDFLAGS"] = "-Wl,-rpath=/opt/puppetlabs/puppet/lib -L/opt/puppetlabs/puppet/lib -Wl,-rpath,/opt/puppetlabs/puppet/lib" + rbconfig_changes['DLDFLAGS'] = + '-Wl,-rpath=/opt/puppetlabs/puppet/lib -L/opt/puppetlabs/puppet/lib -Wl,-rpath,/opt/puppetlabs/puppet/lib' elsif platform.name =~ /sles-12-ppc64le/ # the ancient gcc version on sles-12-ppc64le does not understand -fstack-protector-strong, so remove the `strong` part - rbconfig_changes["LDFLAGS"] = "-L. -Wl,-rpath=/opt/puppetlabs/puppet/lib -fstack-protector -rdynamic -Wl,-export-dynamic -L/opt/puppetlabs/puppet/lib" + rbconfig_changes['LDFLAGS'] = + '-L. -Wl,-rpath=/opt/puppetlabs/puppet/lib -fstack-protector -rdynamic -Wl,-export-dynamic -L/opt/puppetlabs/puppet/lib' end elsif platform.is_macos? - rbconfig_changes["CC"] = "#{settings[:cc]} #{cflags}" + rbconfig_changes['CC'] = "#{settings[:cc]} #{cflags}" elsif platform.is_windows? - if platform.architecture == "x64" - rbconfig_changes["CC"] = "x86_64-w64-mingw32-gcc" - else - rbconfig_changes["CC"] = "i686-w64-mingw32-gcc" - end + rbconfig_changes['CC'] = if platform.architecture == 'x64' + 'x86_64-w64-mingw32-gcc' + else + 'i686-w64-mingw32-gcc' + end end - pkg.add_source("file://resources/files/ruby_vendor_gems/operating_system.rb") - defaults_dir = File.join(settings[:libdir], "ruby/3.2.0/rubygems/defaults") + pkg.add_source('file://resources/files/ruby_vendor_gems/operating_system.rb') + defaults_dir = File.join(settings[:libdir], 'ruby/3.2.0/rubygems/defaults') pkg.directory(defaults_dir) - pkg.install_file "../operating_system.rb", File.join(defaults_dir, 'operating_system.rb') + pkg.install_file '../operating_system.rb', File.join(defaults_dir, 'operating_system.rb') certs_dir = File.join(settings[:libdir], 'ruby/3.2.0/rubygems/ssl_certs/puppetlabs.net') pkg.directory(certs_dir) pkg.add_source('file://resources/files/rubygems/COMODO_RSA_Certification_Authority.pem') - pkg.install_file '../COMODO_RSA_Certification_Authority.pem', File.join(certs_dir, 'COMODO_RSA_Certification_Authority.pem') + pkg.install_file '../COMODO_RSA_Certification_Authority.pem', + File.join(certs_dir, 'COMODO_RSA_Certification_Authority.pem') pkg.add_source('file://resources/files/rubygems/GlobalSignRootCA_R3.pem') pkg.install_file '../GlobalSignRootCA_R3.pem', File.join(certs_dir, 'GlobalSignRootCA_R3.pem') @@ -303,7 +292,7 @@ [ "#{host_ruby} ../rbconfig-update.rb \"#{rbconfig_changes.to_s.gsub('"', '\"')}\" #{rbconfig_topdir}", "cp original_rbconfig.rb #{settings[:datadir]}/doc/rbconfig-#{pkg.get_version}-orig.rb", - "cp new_rbconfig.rb #{rbconfig_topdir}/rbconfig.rb", + "cp new_rbconfig.rb #{rbconfig_topdir}/rbconfig.rb" ] end end diff --git a/configs/components/ruby-augeas.rb b/configs/components/ruby-augeas.rb index 0b945d6f..684247c0 100644 --- a/configs/components/ruby-augeas.rb +++ b/configs/components/ruby-augeas.rb @@ -1,3 +1,89 @@ -component "ruby-augeas" do |pkg, settings, platform| - instance_eval File.read('configs/components/_base-ruby-augeas.rb') +##### +# Component release information: +# https://github.com/hercules-team/ruby-augeas/releases +##### +component 'ruby-augeas' do |pkg, settings, platform| + pkg.version '0.6.0' + pkg.sha256sum '98158a54c655b4823439b4bd38609f01e0b912a3d1453144082b8a5f43b0c4dc' + pkg.url "https://github.com/hercules-team/ruby-augeas/releases/download/release-#{pkg.get_version}/ruby-augeas-#{pkg.get_version}.tgz" + pkg.build_requires "ruby-#{settings[:ruby_version]}" + pkg.build_requires 'augeas' + + pkg.environment 'PATH', '$(PATH):/usr/local/bin:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin' + pkg.environment 'CONFIGURE_ARGS', '--vendor' + pkg.environment 'PKG_CONFIG_PATH', "#{File.join(settings[:libdir], 'pkgconfig')}:/usr/lib/pkgconfig" + + if platform.is_aix? + pkg.environment 'CC', '/opt/freeware/bin/gcc' + pkg.environment 'PATH', '$(PATH):/opt/freeware/bin' + pkg.environment 'RUBY', settings[:host_ruby] + pkg.environment 'LDFLAGS', " -brtl #{settings[:ldflags]}" + end + + if platform.is_solaris? + pkg.environment 'RUBY', settings[:host_ruby] if platform.is_cross_compiled? + + ruby = if !platform.is_cross_compiled? && platform.architecture == 'sparc' + File.join(settings[:ruby_bindir], 'ruby') + else + # This should really only be done when cross compiling but + # to avoid breaking solaris x86_64 in 7.x continue preloading + # our hook. + "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" + end + elsif platform.is_cross_compiled? && (platform.is_linux? || platform.is_macos?) + pkg.environment 'RUBY', settings[:host_ruby] + ruby = "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" + pkg.environment 'LDFLAGS', settings[:ldflags] + elsif platform.is_macos? + pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin' if platform.architecture == 'arm64' + pkg.environment 'CC', settings[:cc] + pkg.environment 'CFLAGS', settings[:cflags] + pkg.environment 'LDFLAGS', settings[:ldflags] + pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target] + ruby = File.join(settings[:ruby_bindir], 'ruby') + else + ruby = File.join(settings[:ruby_bindir], 'ruby') + end + + pkg.build do + build_commands = [] + + extconf = "#{ruby} ext/augeas/extconf.rb" + # The pkg-config shim gets confused on Almalinux 9 that we are building on + # due to the version of rpm being cranky about using our older OpenSSL version, + # so bypass the shim and use pkgconf directly. + extconf += ' --with-pkg-config=/usr/bin/pkgconf' if platform.name =~ /el-9/ + build_commands << extconf + build_commands << "#{platform[:make]} -e -j$(shell expr $(shell #{platform[:num_cores]}) + 1)" + + build_commands + end + + augeas_rb_target = if settings[:ruby_vendordir] + File.join(settings[:ruby_vendordir], 'augeas.rb') + else + # If no alternate vendordir has been set, install into default + # vendordir for this ruby version. + File.join(settings[:ruby_dir], 'lib', 'ruby', 'vendor_ruby', 'augeas.rb') + end + + pkg.install_file 'lib/augeas.rb', augeas_rb_target + + pkg.install do + [ + "#{platform[:make]} -e -j$(shell expr $(shell #{platform[:num_cores]}) + 1) DESTDIR=/ install" + ] + end + + if platform.is_solaris? || platform.is_cross_compiled_linux? + pkg.install do + "chown root:root #{augeas_rb_target}" + end + end + + # Clean after install in case we are building for multiple rubies. + pkg.install do + "#{platform[:make]} -e clean" + end end diff --git a/configs/components/ruby-selinux.rb b/configs/components/ruby-selinux.rb index 0175d33e..c37729fd 100644 --- a/configs/components/ruby-selinux.rb +++ b/configs/components/ruby-selinux.rb @@ -1,3 +1,137 @@ -component "ruby-selinux" do |pkg, settings, platform| - instance_eval File.read('configs/components/_base-ruby-selinux.rb') +##### +# Component release information: +# https://github.com/SELinuxProject/selinux/releases +##### +component 'ruby-selinux' do |pkg, settings, platform| + # We download tarballs because system development packages (e.g. + # libselinux-devel) don't necessarily include Swig interface files (*.i files) + # We select the minimum version available in the platform repos. + case platform.name + when /^(el-7|amazon-2|redhatfips-7)-/ + pkg.version '2.0.94' + pkg.sha256sum 'b8312852306650e9720de5a20fe7560d935d3c90ffedca1cac25bf3f283d8a36' + pkg.url 'https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20100525/devel/libselinux-2.0.94.tar.gz' + when /^(el-8|redhatfips-8)-/ + pkg.version '2.9' + pkg.sha256sum '1bccc8873e449587d9a2b2cf253de9b89a8291b9fbc7c59393ca9e5f5f4d2693' + pkg.apply_patch 'resources/patches/ruby-selinux/selinux-29-function.patch' + pkg.url 'https://github.com/SELinuxProject/selinux/releases/download/20190315/libselinux-2.9.tar.gz' + when /^debian-11-/ + pkg.version '3.1' + pkg.sha256sum 'ea5dcbb4d859e3f999c26a13c630da2f16dff9462e3cc8cb7b458ac157d112e7' + pkg.url 'https://github.com/SELinuxProject/selinux/releases/download/20200710/libselinux-3.1.tar.gz' + pkg.build_requires 'python3-distutils' if platform.is_deb? + when /^(el-9|redhatfips-9|ubuntu-22.04)-/ + pkg.version '3.3' + pkg.sha256sum 'acfdee27633d2496508c28727c3d41d3748076f66d42fccde2e6b9f3463a7057' + pkg.build_requires 'python3-distutils' if platform.is_deb? + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^(amazon-2023|debian-12)-/ + pkg.version '3.4' + pkg.sha256sum '77c294a927e6795c2e98f74b5c3adde9c8839690e9255b767c5fca6acff9b779' + pkg.build_requires 'python3-distutils' if platform.is_deb? + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^(sles-15|ubuntu-24.04)-/ + pkg.version '3.5' + pkg.sha256sum '9a3a3705ac13a2ccca2de6d652b6356fead10f36fb33115c185c5ccdf29eec19' + pkg.build_requires 'python3-setuptools' + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^(fedora-41|ubuntu-25.04)-/ + pkg.version '3.7' + pkg.sha256sum 'ea03f42d13a4f95757997dba8cf0b26321fac5d2f164418b4cc856a92d2b17bd' + pkg.build_requires 'python3-setuptools' + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^(el-10|redhatfips-10|fedora-42)-/ + pkg.version '3.8' + pkg.sha256sum '0c3756bca047c9270281d7c4dcdecd000b72e38a183c930661eba9690839b541' + pkg.build_requires 'python3-setuptools' + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^(debian-13|sles-16)-/ + pkg.version '3.8.1' + pkg.sha256sum 'ec2d2789f931152d21c1db1eb4bc202ce4eccede34d9be9e360e3b45243cee2c' + pkg.build_requires 'python3-setuptools' + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + when /^fedora-43-/ + pkg.version '3.9' + pkg.sha256sum 'e7ee2c01dba64a0c35c9d7c9c0e06209d8186b325b0638a0d83f915cc3c101e8' + pkg.build_requires 'python3-setuptools' + pkg.url "https://github.com/SELinuxProject/selinux/releases/download/#{pkg.get_version}/libselinux-#{pkg.get_version}.tar.gz" + else + raise "The ruby-selinux component needs to be updated for platform #{platform.name}" + end + + pkg.add_source('file://resources/patches/ruby-selinux/selinuxswig_ruby_wrap.patch') + pkg.add_source('file://resources/patches/ruby-selinux/selinuxswig_ruby_undefining_allocator.patch') + pkg.add_source('file://resources/patches/ruby-selinux/undefining_allocator_el_7.patch') + + pkg.build_requires "ruby-#{settings[:ruby_version]}" + system_include = '-I/usr/include' + ruby = "#{settings[:ruby_bindir]}/ruby -rrbconfig" + + # The RHEL 9 libselinux-devel package provides headers, but we don't want to + # use the package becuase of a compatibility issue with the shared library. + # Instead, we use the headers provided in the tarball. + system_include.prepend('-I./include ') if platform.name =~ /el-(9|10)/ + + if platform.is_cross_compiled_linux? + pkg.environment 'RUBY', settings[:host_ruby] + ruby = "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" + end + + cflags = '' + + pkg.build do + steps = [ + "export RUBYHDRDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"rubyhdrdir\"]')", + "export VENDORARCHDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"vendorarchdir\"]')", + "export ARCHDIR=$${RUBYHDRDIR}/$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"arch\"]')", + "export INCLUDESTR=\"-I#{settings[:includedir]} -I$${RUBYHDRDIR} -I$${ARCHDIR}\"", + 'cp -pr src/{selinuxswig_ruby.i,selinuxswig.i} .', + "swig -Wall -ruby #{system_include} -o selinuxswig_ruby_wrap.c -outdir ./ selinuxswig_ruby.i" + ] + + # swig 4.1 generated interface does not need patching, so skip + # when running debian >= 12, fedora >= 40, etc + unless (platform.is_debian? && platform.os_version.to_i >= 12) || + (platform.is_fedora? && platform.os_version.to_i >= 40) || + (platform.is_ubuntu? && platform.os_version.to_i >= 24) || + (platform.is_el? && platform.os_version.to_i >= 10) + steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_wrap.patch" + end + # EL 7 uses an older version of swig (2.0) so a different patch is needed to + # fix warning:undefining the allocator of T_DATA class + if platform.name =~ /el-7|redhatfips-7/ + steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../undefining_allocator_el_7.patch" + else + # Ubuntu 24, Fedora 40, EL 10, and Debian 13 use a newer swig that already has the fix that's + # being patched + unless (platform.is_fedora? && platform.os_version.to_i >= 40) || + (platform.is_ubuntu? && platform.os_version.to_i >= 24) || + (platform.is_el? && platform.os_version.to_i >= 10) || + (platform.is_debian? && platform.os_version.to_i >= 13) + steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_undefining_allocator.patch" + end + end + + # libselinux 3.3 is the minimum version we want to build on RHEL 9, but the + # libeselinux-devel-3.3 package confusingly installs a shared library that + # uses 3.4. The hacky workaround for this is to symlink an existing library. + # PDK builds two Rubies so check if symlink exists first. Similar issue + # exists for RHEL 10. + steps << 'if [ ! -L /usr/lib64/libselinux.so ]; then ln -s /usr/lib64/libselinux.so.1 /usr/lib64/libselinux.so; fi' if platform.name =~ /(el|redhatfips)-(9|10)/ + + steps.concat([ + "gcc $${INCLUDESTR} #{system_include} #{cflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -DSHARED -c -o selinuxswig_ruby_wrap.lo selinuxswig_ruby_wrap.c", + "gcc $${INCLUDESTR} #{system_include} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -shared -o _rubyselinux.so selinuxswig_ruby_wrap.lo -lselinux -Wl,-z,relro,-z,now,-soname,_rubyselinux.so" + ]) + end + + pkg.install do + [ + "export VENDORARCHDIR=$(shell #{ruby} -e 'puts RbConfig::CONFIG[\"vendorarchdir\"]')", + 'install -d $${VENDORARCHDIR}', + 'install -p -m755 _rubyselinux.so $${VENDORARCHDIR}/selinux.so', + "#{platform[:make]} -e clean" + ] + end end diff --git a/configs/components/ruby-shadow.rb b/configs/components/ruby-shadow.rb index 1473782b..ed344681 100644 --- a/configs/components/ruby-shadow.rb +++ b/configs/components/ruby-shadow.rb @@ -3,50 +3,42 @@ # https://github.com/apalmblad/ruby-shadow/tags # https://rubygems.org/gems/ruby-shadow ##### -component "ruby-shadow" do |pkg, settings, platform| - pkg.url "https://github.com/apalmblad/ruby-shadow" - pkg.ref "refs/tags/2.5.1" +component 'ruby-shadow' do |pkg, settings, platform| + pkg.url 'https://github.com/apalmblad/ruby-shadow' + pkg.ref 'refs/tags/2.5.1' pkg.build_requires "ruby-#{settings[:ruby_version]}" if !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment "PATH", "$(PATH):/opt/pl-build-tools/bin:/usr/ccs/bin:/usr/sfw/bin" - elsif platform.name == 'sles-11-x86_64' - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" + pkg.environment 'PATH', '$(PATH):/opt/pl-build-tools/bin:/usr/ccs/bin:/usr/sfw/bin' else - pkg.environment "PATH", "$(PATH):/usr/ccs/bin:/usr/sfw/bin" + pkg.environment 'PATH', '$(PATH):/usr/ccs/bin:/usr/sfw/bin' end - pkg.environment "CONFIGURE_ARGS", '--vendor' + pkg.environment 'CONFIGURE_ARGS', '--vendor' if platform.is_solaris? - if platform.is_cross_compiled? - pkg.environment "RUBY", settings[:host_ruby] - end + pkg.environment 'RUBY', settings[:host_ruby] if platform.is_cross_compiled? - if !platform.is_cross_compiled? && platform.architecture == 'sparc' - ruby = File.join(settings[:ruby_bindir], 'ruby') - else - # This should really only be done when cross compiling but - # to avoid breaking solaris x86_64 in 7.x continue preloading - # our hook. - ruby = "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" - end + ruby = if !platform.is_cross_compiled? && platform.architecture == 'sparc' + File.join(settings[:ruby_bindir], 'ruby') + else + # This should really only be done when cross compiling but + # to avoid breaking solaris x86_64 in 7.x continue preloading + # our hook. + "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" + end elsif platform.is_cross_compiled? - pkg.environment "RUBY", settings[:host_ruby] + pkg.environment 'RUBY', settings[:host_ruby] ruby = "#{settings[:host_ruby]} -r#{settings[:datadir]}/doc/rbconfig-#{settings[:ruby_version]}-orig.rb" else ruby = File.join(settings[:ruby_bindir], 'ruby') end - matchdata = platform.settings[:ruby_version].match(/(\d+)\.(\d+)(\.\d+)?/) - ruby_major_version = matchdata[1].to_i - if ruby_major_version >= 3 - base = "resources/patches/ruby_32" - # https://github.com/apalmblad/ruby-shadow/issues/26 - # if ruby-shadow gets a 3 release this should be removed - pkg.apply_patch "#{base}/ruby-shadow-taint.patch", strip: "1" - pkg.apply_patch "#{base}/ruby-shadow-rbconfig.patch", strip: "1" - end + base = 'resources/patches/ruby_32' + # https://github.com/apalmblad/ruby-shadow/issues/26 + # if ruby-shadow gets a 3 release this should be removed + pkg.apply_patch "#{base}/ruby-shadow-taint.patch", strip: '1' + pkg.apply_patch "#{base}/ruby-shadow-rbconfig.patch", strip: '1' pkg.build do [ diff --git a/configs/components/rubygem-CFPropertyList.rb b/configs/components/rubygem-CFPropertyList.rb index 8ce5a853..c85eeda8 100644 --- a/configs/components/rubygem-CFPropertyList.rb +++ b/configs/components/rubygem-CFPropertyList.rb @@ -6,12 +6,15 @@ # - 2025-11-03: Removed pinning agent-runtime-7.x to 2.x since CFPropertList 3.x dropped support # for Ruby 1.8, and the latest should still work on 2.7. ##### -component 'rubygem-CFPropertyList' do |pkg, settings, platform| +component 'rubygem-CFPropertyList' do |pkg, settings, _platform| ### Maintained by update_gems automation ### - pkg.version '3.0.7' - pkg.md5sum 'ed89ce5e7074a6f8e8b8e744eaf014d0' + pkg.version '4.0.0' + pkg.sha256sum '385e7bbd7c27e176b23415275ca936ca0ece1727e5b890b08e36632076b00aff' + pkg.build_requires 'rubygem-base64' + pkg.build_requires 'rubygem-nkf' + pkg.build_requires 'rubygem-rexml' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') - pkg.environment "GEM_HOME", settings[:gem_home] + pkg.environment 'GEM_HOME', settings[:gem_home] end diff --git a/configs/components/rubygem-addressable.rb b/configs/components/rubygem-addressable.rb index d37b91da..e4ea15ca 100644 --- a/configs/components/rubygem-addressable.rb +++ b/configs/components/rubygem-addressable.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/addressable # https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md ##### -component 'rubygem-addressable' do |pkg, settings, platform| +component 'rubygem-addressable' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.8.7' pkg.sha256sum '462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232' + pkg.build_requires 'rubygem-public_suffix' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-aws-eventstream.rb b/configs/components/rubygem-aws-eventstream.rb index 0d13cff2..fc163032 100644 --- a/configs/components/rubygem-aws-eventstream.rb +++ b/configs/components/rubygem-aws-eventstream.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/aws-eventstream # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-eventstream/CHANGELOG.md ##### -component 'rubygem-aws-eventstream' do |pkg, settings, platform| +component 'rubygem-aws-eventstream' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.sha256sum '116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b' diff --git a/configs/components/rubygem-aws-partitions.rb b/configs/components/rubygem-aws-partitions.rb index a1ccd598..a0c17aab 100644 --- a/configs/components/rubygem-aws-partitions.rb +++ b/configs/components/rubygem-aws-partitions.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/aws-partitions # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-partitions/CHANGELOG.md ##### -component 'rubygem-aws-partitions' do |pkg, settings, platform| +component 'rubygem-aws-partitions' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '1.1154.0' - pkg.sha256sum 'be80a8e07b87ce6c936eb251a8f371a887e07ed21ca7f45e5e1b66949eb77294' + pkg.version '1.1187.0' + pkg.sha256sum '77157ba65f856a1c2a177e8b203abe1c37d9fe5a6ff8f4706cf0fde5f635c5af' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-aws-sdk-core.rb b/configs/components/rubygem-aws-sdk-core.rb index 4ba1b40d..aee8f289 100644 --- a/configs/components/rubygem-aws-sdk-core.rb +++ b/configs/components/rubygem-aws-sdk-core.rb @@ -2,11 +2,18 @@ # Component release information: # https://rubygems.org/gems/aws-sdk-core # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/CHANGELOG.md -##### -component 'rubygem-aws-sdk-core' do |pkg, settings, platform| +##### +component 'rubygem-aws-sdk-core' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '3.232.0' - pkg.sha256sum '05291ae0da4fb69e9b6494fcc2d839584e8345714a93cd01f0f1bf11475619f2' + pkg.version '3.239.1' + pkg.sha256sum '60bc83b0ae61442c47c6ea674fc03c68ba9eb48a19b9de8575ff9614bca6b252' + pkg.build_requires 'rubygem-aws-eventstream' + pkg.build_requires 'rubygem-aws-partitions' + pkg.build_requires 'rubygem-aws-sigv4' + pkg.build_requires 'rubygem-base64' + pkg.build_requires 'rubygem-bigdecimal' + pkg.build_requires 'rubygem-jmespath' + pkg.build_requires 'rubygem-logger' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-aws-sdk-ec2.rb b/configs/components/rubygem-aws-sdk-ec2.rb index 3ef8beb5..7fd0f0d3 100644 --- a/configs/components/rubygem-aws-sdk-ec2.rb +++ b/configs/components/rubygem-aws-sdk-ec2.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/aws-sdk-ec2 # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-ec2/CHANGELOG.md ##### -component 'rubygem-aws-sdk-ec2' do |pkg, settings, platform| +component 'rubygem-aws-sdk-ec2' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '1.555.0' - pkg.sha256sum 'e323b6a5f810b97e51fc64befc4c88dba4dfa81c8ebb841907bad4cb7969f92f' + pkg.version '1.582.0' + pkg.sha256sum '43c3cc4959ec260cf0c2292abcffa2cdfb08086e44de642e4b8decd8f0f5da9b' + pkg.build_requires 'rubygem-aws-sdk-core' + pkg.build_requires 'rubygem-aws-sigv4' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-aws-sigv4.rb b/configs/components/rubygem-aws-sigv4.rb index c71eb9dc..701d7e25 100644 --- a/configs/components/rubygem-aws-sigv4.rb +++ b/configs/components/rubygem-aws-sigv4.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/aws-sigv4 # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sigv4/CHANGELOG.md ##### -component 'rubygem-aws-sigv4' do |pkg, settings, platform| +component 'rubygem-aws-sigv4' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.12.1' pkg.sha256sum '6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00' + pkg.build_requires 'rubygem-aws-eventstream' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-base64.rb b/configs/components/rubygem-base64.rb index 61a02a2f..4b1e5019 100644 --- a/configs/components/rubygem-base64.rb +++ b/configs/components/rubygem-base64.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/base64 # https://github.com/ruby/base64/releases ##### -component 'rubygem-base64' do |pkg, settings, platform| +component 'rubygem-base64' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.3.0' pkg.sha256sum '27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b' diff --git a/configs/components/rubygem-bcrypt_pbkdf.rb b/configs/components/rubygem-bcrypt_pbkdf.rb index a1375226..9d88c837 100644 --- a/configs/components/rubygem-bcrypt_pbkdf.rb +++ b/configs/components/rubygem-bcrypt_pbkdf.rb @@ -6,7 +6,7 @@ component 'rubygem-bcrypt_pbkdf' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.1' - pkg.md5sum '3efcbfd0289e0783513b738823a2deba' + pkg.sha256sum '2f9077dde837d1f0dd2eb0f9e5327c6871c68ebc8eba88870fb6b7956e1e2b13' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-benchmark.rb b/configs/components/rubygem-benchmark.rb new file mode 100644 index 00000000..d1511e98 --- /dev/null +++ b/configs/components/rubygem-benchmark.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/benchmark +##### +component 'rubygem-benchmark' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.5.0' + pkg.sha256sum '465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-bigdecimal.rb b/configs/components/rubygem-bigdecimal.rb new file mode 100644 index 00000000..20596397 --- /dev/null +++ b/configs/components/rubygem-bigdecimal.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/bigdecimal +##### +component 'rubygem-bigdecimal' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '3.3.1' + pkg.sha256sum 'eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-bindata.rb b/configs/components/rubygem-bindata.rb index 80fc3f4d..ed52d149 100644 --- a/configs/components/rubygem-bindata.rb +++ b/configs/components/rubygem-bindata.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/bindata # https://github.com/dmendel/bindata/blob/master/ChangeLog.rdoc ##### -component 'rubygem-bindata' do |pkg, settings, platform| +component 'rubygem-bindata' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.5.1' pkg.sha256sum '53186a1ec2da943d4cb413583d680644eb810aacbf8902497aac8f191fad9e58' diff --git a/configs/components/rubygem-builder.rb b/configs/components/rubygem-builder.rb index d03c59c2..9ed86fe6 100644 --- a/configs/components/rubygem-builder.rb +++ b/configs/components/rubygem-builder.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/builder # https://github.com/rails/builder/blob/master/CHANGES ##### -component 'rubygem-builder' do |pkg, settings, platform| +component 'rubygem-builder' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '3.3.0' - pkg.md5sum '3048be022111b96f47bb17c34c67dbc7' + pkg.sha256sum '497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-colored2.rb b/configs/components/rubygem-colored2.rb index 5ecdbb2e..da898ddd 100644 --- a/configs/components/rubygem-colored2.rb +++ b/configs/components/rubygem-colored2.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/colored2 # https://github.com/kigster/colored2/releases ##### -component 'rubygem-colored2' do |pkg, settings, platform| +component 'rubygem-colored2' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '4.0.3' pkg.sha256sum '63e1038183976287efc43034f5cca17fb180b4deef207da8ba78d051cbce2b37' diff --git a/configs/components/rubygem-concurrent-ruby.rb b/configs/components/rubygem-concurrent-ruby.rb index b8f8844c..93a447da 100644 --- a/configs/components/rubygem-concurrent-ruby.rb +++ b/configs/components/rubygem-concurrent-ruby.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/concurrent-ruby # https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md ##### -component 'rubygem-concurrent-ruby' do |pkg, settings, platform| +component 'rubygem-concurrent-ruby' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.3.5' pkg.sha256sum '813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6' diff --git a/configs/components/rubygem-connection_pool.rb b/configs/components/rubygem-connection_pool.rb index 49557e1c..df565ee3 100644 --- a/configs/components/rubygem-connection_pool.rb +++ b/configs/components/rubygem-connection_pool.rb @@ -7,11 +7,11 @@ # We need to test this before upgrading to ensure it doesn't break anything or # affect performance. There are no security fixes between 2.4.1 and 2.5.4. ##### -component 'rubygem-connection_pool' do |pkg, settings, platform| +component 'rubygem-connection_pool' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### # PINNED pkg.version '2.4.1' - pkg.md5sum 'fd45f00b6d127bb49845afd7f7b91baa' + pkg.sha256sum '0f40cf997091f1f04ff66da67eabd61a9fe0d4928b9a3645228532512fab62f4' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-cookiejar.rb b/configs/components/rubygem-cookiejar.rb new file mode 100644 index 00000000..4bc23f04 --- /dev/null +++ b/configs/components/rubygem-cookiejar.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/cookiejar +##### +component 'rubygem-cookiejar' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.3.4' + pkg.sha256sum '11b16acfc4baf7a0f463c21a6212005e04e25f5554d4d9f24d97f3492dfda0df' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-cri.rb b/configs/components/rubygem-cri.rb index 0de0b6e8..b309c8f0 100644 --- a/configs/components/rubygem-cri.rb +++ b/configs/components/rubygem-cri.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/cri # https://github.com/denisdefreyne/cri/releases ##### -component 'rubygem-cri' do |pkg, settings, platform| +component 'rubygem-cri' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.15.12' pkg.sha256sum '8abfe924ef53e772a8e4ee907e791d3bfcfca78bc62a5859e3b9899ba29956e5' diff --git a/configs/components/rubygem-date.rb b/configs/components/rubygem-date.rb new file mode 100644 index 00000000..e5f4d2bf --- /dev/null +++ b/configs/components/rubygem-date.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/date +##### +component 'rubygem-date' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '3.5.0' + pkg.sha256sum '5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-deep_merge.rb b/configs/components/rubygem-deep_merge.rb index 1d9d36a5..ff19314a 100644 --- a/configs/components/rubygem-deep_merge.rb +++ b/configs/components/rubygem-deep_merge.rb @@ -3,15 +3,15 @@ # https://rubygems.org/gems/deep_merge # https://github.com/danielsdeleo/deep_merge/blob/master/CHANGELOG ##### -component "rubygem-deep_merge" do |pkg, settings, platform| +component 'rubygem-deep_merge' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.2.2' pkg.sha256sum '83ced3a3d7f95f67de958d2ce41b1874e83c8d94fe2ddbff50c8b4b82323563a' ### End automated maintenance section ### - + instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-em-http-request.rb b/configs/components/rubygem-em-http-request.rb new file mode 100644 index 00000000..bc5ead4d --- /dev/null +++ b/configs/components/rubygem-em-http-request.rb @@ -0,0 +1,17 @@ +##### +# Component release information: +# https://rubygems.org/gems/em-http-request +##### +component 'rubygem-em-http-request' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.1.7' + pkg.sha256sum '16fbc72b2a6e20c804c564ac5d12e98668c6fcef8c3b1dd2387dff505f2efdab' + pkg.build_requires 'rubygem-addressable' + pkg.build_requires 'rubygem-cookiejar' + pkg.build_requires 'rubygem-em-socksify' + pkg.build_requires 'rubygem-eventmachine' + pkg.build_requires 'rubygem-http_parser.rb' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-em-socksify.rb b/configs/components/rubygem-em-socksify.rb new file mode 100644 index 00000000..52777eb3 --- /dev/null +++ b/configs/components/rubygem-em-socksify.rb @@ -0,0 +1,14 @@ +##### +# Component release information: +# https://rubygems.org/gems/em-socksify +##### +component 'rubygem-em-socksify' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.3.3' + pkg.sha256sum '7d8d08a7a8acc1263173433a6b5540edd80a8a36e35a066b650c929a3a3974ed' + pkg.build_requires 'rubygem-base64' + pkg.build_requires 'rubygem-eventmachine' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-erubi.rb b/configs/components/rubygem-erubi.rb index fa0e1454..fedc9804 100644 --- a/configs/components/rubygem-erubi.rb +++ b/configs/components/rubygem-erubi.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/erubi # https://github.com/jeremyevans/erubi/blob/master/CHANGELOG ##### -component 'rubygem-erubi' do |pkg, settings, platform| +component 'rubygem-erubi' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.13.1' pkg.sha256sum 'a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9' diff --git a/configs/components/rubygem-eventmachine.rb b/configs/components/rubygem-eventmachine.rb new file mode 100644 index 00000000..6b45ca81 --- /dev/null +++ b/configs/components/rubygem-eventmachine.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/eventmachine +##### +component 'rubygem-eventmachine' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.2.7' + pkg.sha256sum '994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-excon.rb b/configs/components/rubygem-excon.rb new file mode 100644 index 00000000..5b9ba9b5 --- /dev/null +++ b/configs/components/rubygem-excon.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/excon +##### +component 'rubygem-excon' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.3.1' + pkg.sha256sum 'bdf66805b7095105e45f7f36244f65c021d2d04a8453757a5d731e6a02587dbb' + pkg.build_requires 'rubygem-logger' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-faraday-em_http.rb b/configs/components/rubygem-faraday-em_http.rb index a8931ca7..e902a58d 100644 --- a/configs/components/rubygem-faraday-em_http.rb +++ b/configs/components/rubygem-faraday-em_http.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/faraday-em_http # https://github.com/lostisland/faraday-em_http/releases ##### -component 'rubygem-faraday-em_http' do |pkg, settings, platform| +component 'rubygem-faraday-em_http' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.0.1' pkg.sha256sum '05d3845d0b298a7dfbfb8205db39d10f1bc898d455be7a678ca6f460aba71632' + pkg.build_requires 'rubygem-em-http-request' + pkg.build_requires 'rubygem-faraday' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-em_synchrony.rb b/configs/components/rubygem-faraday-em_synchrony.rb index df756857..a47b44bf 100644 --- a/configs/components/rubygem-faraday-em_synchrony.rb +++ b/configs/components/rubygem-faraday-em_synchrony.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/faraday-em_synchrony # https://github.com/lostisland/faraday-em_synchrony/releases ##### -component 'rubygem-faraday-em_synchrony' do |pkg, settings, platform| +component 'rubygem-faraday-em_synchrony' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.0.1' pkg.sha256sum 'bf3ce45dcf543088d319ab051f80985ea6d294930635b7a0b966563179f81750' diff --git a/configs/components/rubygem-faraday-excon.rb b/configs/components/rubygem-faraday-excon.rb index 5af6bc01..73ae94ce 100644 --- a/configs/components/rubygem-faraday-excon.rb +++ b/configs/components/rubygem-faraday-excon.rb @@ -4,10 +4,12 @@ # https://github.com/excon/faraday-excon/tags # https://github.com/excon/faraday-excon/releases ##### -component 'rubygem-faraday-excon' do |pkg, settings, platform| +component 'rubygem-faraday-excon' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '2.3.0' - pkg.sha256sum 'c5fc7175ab284b164496559e35f550587ec5b028b3cdbb40b7ebe83aa7e5b575' + pkg.version '2.4.0' + pkg.sha256sum '2a07ff3583468468eb62325c6263d0b2dd39282a8de7dc35908d782de531c8f6' + pkg.build_requires 'rubygem-excon' + pkg.build_requires 'rubygem-faraday' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-follow_redirects.rb b/configs/components/rubygem-faraday-follow_redirects.rb index df05ee3f..750fff15 100644 --- a/configs/components/rubygem-faraday-follow_redirects.rb +++ b/configs/components/rubygem-faraday-follow_redirects.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-follow_redirects # https://github.com/tisba/faraday-follow-redirects/blob/main/CHANGELOG.md ##### -component 'rubygem-faraday-follow_redirects' do |pkg, settings, platform| +component 'rubygem-faraday-follow_redirects' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '0.3.0' - pkg.md5sum '75fa678fa40b54a94e51efc1600a6461' + pkg.version '0.4.0' + pkg.sha256sum 'd3fa1118ab1350e24035a272b4cff64948643bb7182846db89acaf87abadd5d9' + pkg.build_requires 'rubygem-faraday' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-httpclient.rb b/configs/components/rubygem-faraday-httpclient.rb index bfc4c908..9a363137 100644 --- a/configs/components/rubygem-faraday-httpclient.rb +++ b/configs/components/rubygem-faraday-httpclient.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-httpclient # https://github.com/lostisland/faraday-httpclient/releases ##### -component 'rubygem-faraday-httpclient' do |pkg, settings, platform| +component 'rubygem-faraday-httpclient' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.0.2' pkg.sha256sum 'd95fbe60cce5a87e157957d67c539a4c22fb8b0b0611d493a939cdde19d8d67c' + pkg.build_requires 'rubygem-httpclient' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-multipart.rb b/configs/components/rubygem-faraday-multipart.rb index 61619321..da5b84e4 100644 --- a/configs/components/rubygem-faraday-multipart.rb +++ b/configs/components/rubygem-faraday-multipart.rb @@ -2,11 +2,12 @@ # Component release information: # https://rubygems.org/gems/faraday-multipart # https://github.com/lostisland/faraday-multipart/releases -##### -component 'rubygem-faraday-multipart' do |pkg, settings, platform| +##### +component 'rubygem-faraday-multipart' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.1' pkg.sha256sum '77a18ff40149030fd1aef55bb4fc7a67ce46419a8a3fcd010e28c2526e8d8903' + pkg.build_requires 'rubygem-multipart-post' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-net_http.rb b/configs/components/rubygem-faraday-net_http.rb index 5d1f6dc6..3bc80b6e 100644 --- a/configs/components/rubygem-faraday-net_http.rb +++ b/configs/components/rubygem-faraday-net_http.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-net_http # https://github.com/lostisland/faraday-net_http/releases ##### -component 'rubygem-faraday-net_http' do |pkg, settings, platform| +component 'rubygem-faraday-net_http' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '3.4.1' - pkg.sha256sum '095757fae7872b94eac839c08a1a4b8d84fd91d6886cfbe75caa2143de64ab3b' + pkg.version '3.4.2' + pkg.sha256sum 'f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c' + pkg.build_requires 'rubygem-net-http' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-net_http_persistent.rb b/configs/components/rubygem-faraday-net_http_persistent.rb index e01a5f96..bec4b239 100644 --- a/configs/components/rubygem-faraday-net_http_persistent.rb +++ b/configs/components/rubygem-faraday-net_http_persistent.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/faraday-net_http_persistent # https://github.com/lostisland/faraday-net_http_persistent/releases ##### -component 'rubygem-faraday-net_http_persistent' do |pkg, settings, platform| +component 'rubygem-faraday-net_http_persistent' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.3.1' pkg.sha256sum '23ffba37d6a27807a10f033d01918ec958aa73fa6ff0fccfbcd5ce2d2e68fca3' + pkg.build_requires 'rubygem-faraday' + pkg.build_requires 'rubygem-net-http-persistent' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-patron.rb b/configs/components/rubygem-faraday-patron.rb index 628b0870..d21fdfb6 100644 --- a/configs/components/rubygem-faraday-patron.rb +++ b/configs/components/rubygem-faraday-patron.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-patron # https://github.com/lostisland/faraday-patron/releases ##### -component 'rubygem-faraday-patron' do |pkg, settings, platform| +component 'rubygem-faraday-patron' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.0.2' pkg.sha256sum 'cd4b77d48e3c638ce25c22b6affe2714cf13af99bfa8348c1c7f6733fc5f2086' + pkg.build_requires 'rubygem-patron' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-rack.rb b/configs/components/rubygem-faraday-rack.rb index e5ef2a09..b0eea480 100644 --- a/configs/components/rubygem-faraday-rack.rb +++ b/configs/components/rubygem-faraday-rack.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-rack # https://github.com/lostisland/faraday-rack/releases ##### -component 'rubygem-faraday-rack' do |pkg, settings, platform| +component 'rubygem-faraday-rack' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.1.3' pkg.sha256sum '9869993a8f1010ade286bda697dea43a8f29f0ab760877d73ec7de5d1d18faed' + pkg.build_requires 'rubygem-faraday' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday-retry.rb b/configs/components/rubygem-faraday-retry.rb index be40bd7e..f9ddfa76 100644 --- a/configs/components/rubygem-faraday-retry.rb +++ b/configs/components/rubygem-faraday-retry.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/faraday-retry # https://github.com/lostisland/faraday-retry/releases ##### -component 'rubygem-faraday-retry' do |pkg, settings, platform| +component 'rubygem-faraday-retry' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.3.2' pkg.sha256sum '2402d2029032ebd238a2046221e67f6ef0da78c5a8ce8cd4f8b9c62e4d6451d1' + pkg.build_requires 'rubygem-faraday' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-faraday.rb b/configs/components/rubygem-faraday.rb index 437ebd8b..5f62580c 100644 --- a/configs/components/rubygem-faraday.rb +++ b/configs/components/rubygem-faraday.rb @@ -3,10 +3,13 @@ # https://rubygems.org/gems/faraday # https://github.com/lostisland/faraday/releases ##### -component 'rubygem-faraday' do |pkg, settings, platform| +component 'rubygem-faraday' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '2.13.4' - pkg.sha256sum 'c719ff52cfd0dbaeca79dd83ed3aeea3f621032abf8bc959d1c05666157cac26' + pkg.version '2.14.0' + pkg.sha256sum '8699cfe5d97e55268f2596f9a9d5a43736808a943714e3d9a53e6110593941cd' + pkg.build_requires 'rubygem-faraday-net_http' + pkg.build_requires 'rubygem-json' + pkg.build_requires 'rubygem-logger' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-fast_gettext.rb b/configs/components/rubygem-fast_gettext.rb index f9fc2d40..ae28f872 100644 --- a/configs/components/rubygem-fast_gettext.rb +++ b/configs/components/rubygem-fast_gettext.rb @@ -5,16 +5,17 @@ # 2025-09-08: We must keep this at 2.4.0 for now because r10k # relies on gettext-setup, which pins fast_gettext ~> 2.1. ##### -component "rubygem-fast_gettext" do |pkg, settings, platform| +component 'rubygem-fast_gettext' do |pkg, settings, _platform| ### Maintained by update_gems automation ### # PINNED pkg.version '2.4.0' pkg.sha256sum 'fd26c4c406aa10be34f0fd2847ce3ffdc1e9d9798de87538594757bbb9175fbf' + pkg.build_requires 'rubygem-prime' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-ffi.rb b/configs/components/rubygem-ffi.rb index 760d8276..54a8a181 100644 --- a/configs/components/rubygem-ffi.rb +++ b/configs/components/rubygem-ffi.rb @@ -23,37 +23,38 @@ # gem *always* uses the libffi.so we already built. Note the term "system" is # misleading, because we override PKG_CONFIG_PATH below so that our libffi.so # is preferred, not the one in /usr/lib. - settings["#{pkg.get_name}_gem_install_options".to_sym] = "-- --enable-system-libffi" + settings["#{pkg.get_name}_gem_install_options".to_sym] = '-- --enable-system-libffi' instance_eval File.read('configs/components/_base-rubygem.rb') # due to contrib/make_sunver.pl missing on solaris 11 we cannot compile libffi, so we provide the opencsw library - pkg.environment "CPATH", "/opt/csw/lib/libffi-3.2.1/include" if platform.name =~ /solaris-11/ && (platform.is_cross_compiled? || platform.architecture != 'sparc') - pkg.environment "MAKE", platform[:make] if platform.is_solaris? + if platform.name =~ /solaris-11/ && (platform.is_cross_compiled? || platform.architecture != 'sparc') + pkg.environment 'CPATH', + '/opt/csw/lib/libffi-3.2.1/include' + end + pkg.environment 'MAKE', platform[:make] if platform.is_solaris? if platform.is_solaris? if !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment "PATH", "#{settings[:ruby_bindir]}:$(PATH)" + pkg.environment 'PATH', "#{settings[:ruby_bindir]}:$(PATH)" else - pkg.environment "PATH", "/opt/csw/bin:$(PATH)" + pkg.environment 'PATH', '/opt/csw/bin:$(PATH)' end elsif platform.is_aix? pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' end - if platform.name =~ /solaris-10-i386/ - pkg.install_file "/opt/csw/lib/libffi.so.6", "#{settings[:libdir]}/libffi.so.6" - end + pkg.install_file '/opt/csw/lib/libffi.so.6', "#{settings[:libdir]}/libffi.so.6" if platform.name =~ /solaris-10-i386/ pkg.environment 'PKG_CONFIG_PATH', '/opt/puppetlabs/puppet/lib/pkgconfig:$(PKG_CONFIG_PATH)' if platform.is_cross_compiled? && !platform.is_macos? base_ruby = case platform.name when /solaris-10/ - "/opt/csw/lib/ruby/2.0.0" + '/opt/csw/lib/ruby/2.0.0' else # Change this someday if we ever end up cross compiling OpenVox on Linux # as we won't be using pl-build-tools there - "/opt/pl-build-tools/lib/ruby/2.1.0" + '/opt/pl-build-tools/lib/ruby/2.1.0' end # force compilation without system libffi in order to have a statically linked ffi_c.so @@ -72,7 +73,7 @@ end # move ld back after the gem is installed - pkg.install { "mv /usr/bin/ld1 /usr/bin/ld" } + pkg.install { 'mv /usr/bin/ld1 /usr/bin/ld' } elsif platform.name =~ /solaris-10-sparc/ sed_exp = 's|CONFIG\["LDFLAGS"\].*|CONFIG["LDFLAGS"] = "-Wl,-rpath-link,/opt/pl-build-tools/sparc-sun-solaris2.10/sysroot/lib:/opt/pl-build-tools/sparc-sun-solaris2.10/sysroot/usr/lib -L. -Wl,-rpath=/opt/puppetlabs/puppet/lib -fstack-protector"|' diff --git a/configs/components/rubygem-fiddle.rb b/configs/components/rubygem-fiddle.rb new file mode 100644 index 00000000..bbaf4fd4 --- /dev/null +++ b/configs/components/rubygem-fiddle.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/fiddle +# https://github.com/ruby/fiddle/releases +##### +component 'rubygem-fiddle' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.1.8' + pkg.sha256sum '7fa8ee3627271497f3add5503acdbc3f40b32f610fc1cf49634f083ef3f32eee' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-forwardable.rb b/configs/components/rubygem-forwardable.rb new file mode 100644 index 00000000..9d9a2aee --- /dev/null +++ b/configs/components/rubygem-forwardable.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/forwardable +##### +component 'rubygem-forwardable' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.3.3' + pkg.sha256sum 'f17df4bd6afa6f46a003217023fe5716ef88ce261f5c4cf0edbdeed6470cafac' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-getoptlong.rb b/configs/components/rubygem-getoptlong.rb new file mode 100644 index 00000000..563e2cf9 --- /dev/null +++ b/configs/components/rubygem-getoptlong.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/getoptlong +##### +component 'rubygem-getoptlong' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.2.1' + pkg.sha256sum 'fd23f07397b994bf9310d4531cfdb4332629a9b8e8c9c457c32b7edf5bf21ba5' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-gettext-setup.rb b/configs/components/rubygem-gettext-setup.rb index deb4ce28..6ce8a45a 100644 --- a/configs/components/rubygem-gettext-setup.rb +++ b/configs/components/rubygem-gettext-setup.rb @@ -3,10 +3,13 @@ # https://rubygems.org/gems/gettext-setup # https://github.com/puppetlabs/gettext-setup-gem/tags ##### -component 'rubygem-gettext-setup' do |pkg, settings, platform| +component 'rubygem-gettext-setup' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.0' pkg.sha256sum '2ad4fa99575d869f18056941d98dc9cb2a656abc7b991f360fbd3e32d28fd4ec' + pkg.build_requires 'rubygem-fast_gettext' + pkg.build_requires 'rubygem-gettext' + pkg.build_requires 'rubygem-locale' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-gettext.rb b/configs/components/rubygem-gettext.rb index 29af0b0b..e252900d 100644 --- a/configs/components/rubygem-gettext.rb +++ b/configs/components/rubygem-gettext.rb @@ -3,10 +3,15 @@ # https://rubygems.org/gems/gettext # https://github.com/ruby-gettext/gettext/releases ##### -component 'rubygem-gettext' do |pkg, settings, platform| +component 'rubygem-gettext' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '3.5.1' pkg.sha256sum '03ec7f71ea7e2cf1fdcd5e08682e98b81601922fdbee890b7bc6f63b0e1a512a' + pkg.build_requires 'rubygem-erubi' + pkg.build_requires 'rubygem-locale' + pkg.build_requires 'rubygem-prime' + pkg.build_requires 'rubygem-racc' + pkg.build_requires 'rubygem-text' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') @@ -14,5 +19,5 @@ # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. gem_home = settings[:puppet_gem_vendor_dir] || settings[:gem_home] - pkg.environment "GEM_HOME", gem_home + pkg.environment 'GEM_HOME', gem_home end diff --git a/configs/components/rubygem-gssapi.rb b/configs/components/rubygem-gssapi.rb index 9bc480ba..88f78961 100644 --- a/configs/components/rubygem-gssapi.rb +++ b/configs/components/rubygem-gssapi.rb @@ -4,10 +4,11 @@ # https://github.com/zenchild/gssapi/tags # (Not up to date) https://github.com/zenchild/gssapi/blob/main/Changelog.md ##### -component 'rubygem-gssapi' do |pkg, settings, platform| +component 'rubygem-gssapi' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.3.1' - pkg.md5sum '4bd2df09d8e0ab4c6d2e1828c344eba1' + pkg.sha256sum 'c51cf30842ee39bd93ce7fc33e20405ff8a04cda9dec6092071b61258284aee1' + pkg.build_requires 'rubygem-ffi' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-gyoku.rb b/configs/components/rubygem-gyoku.rb index 012b190e..f23c1251 100644 --- a/configs/components/rubygem-gyoku.rb +++ b/configs/components/rubygem-gyoku.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/gyoku # https://github.com/savonrb/gyoku/blob/main/CHANGELOG.md ##### -component 'rubygem-gyoku' do |pkg, settings, platform| +component 'rubygem-gyoku' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.4.0' - pkg.md5sum 'fecd9488be9b07a250349e9bbe048e5f' + pkg.sha256sum '389d887384c777f271cb9377bb642f20bbe0c633d1ef5af78569d4db53c1a2cd' + pkg.build_requires 'rubygem-builder' + pkg.build_requires 'rubygem-rexml' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-hiera-eyaml.rb b/configs/components/rubygem-hiera-eyaml.rb index f99635ec..91f8db5d 100644 --- a/configs/components/rubygem-hiera-eyaml.rb +++ b/configs/components/rubygem-hiera-eyaml.rb @@ -3,17 +3,17 @@ # https://rubygems.org/gems/hiera-eyaml # https://github.com/voxpupuli/hiera-eyaml/blob/master/CHANGELOG.md ##### -component 'rubygem-hiera-eyaml' do |pkg, settings, platform| +component 'rubygem-hiera-eyaml' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '4.3.0' pkg.sha256sum '19eba2ea9d70b2d56de064df9e3242860d8070d47ff9c9a6348b7fe94708ab0a' - pkg.build_requires 'rubygem-optimist' pkg.build_requires 'rubygem-highline' + pkg.build_requires 'rubygem-optimist' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-hiera.rb b/configs/components/rubygem-hiera.rb index d1709b5a..7c5d4ead 100644 --- a/configs/components/rubygem-hiera.rb +++ b/configs/components/rubygem-hiera.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/hiera # https://github.com/puppetlabs/hiera/tags ##### -component 'rubygem-hiera' do |pkg, settings, platform| +component 'rubygem-hiera' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '3.12.0' - pkg.md5sum '67249a25571c9ee83cdb68579faf3f0d' + pkg.sha256sum '7808800f6da3ec9bb3b5d63d113a8ccbc3fb4fe72f459d5b67a1ef23ab952b61' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-highline.rb b/configs/components/rubygem-highline.rb index c6bfd671..8a69bc01 100644 --- a/configs/components/rubygem-highline.rb +++ b/configs/components/rubygem-highline.rb @@ -7,11 +7,12 @@ ### Maintained by update_gems automation ### pkg.version '3.1.2' pkg.sha256sum '67cbd34d19f6ef11a7ee1d82ffab5d36dfd5b3be861f450fc1716c7125f4bb4a' + pkg.build_requires 'rubygem-reline' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-hocon.rb b/configs/components/rubygem-hocon.rb index 3c0d038c..10ce4051 100644 --- a/configs/components/rubygem-hocon.rb +++ b/configs/components/rubygem-hocon.rb @@ -5,15 +5,15 @@ # (Not up to date) https://github.com/puppetlabs/ruby-hocon/blob/main/HISTORY.md # (Not up to date) https://github.com/puppetlabs/ruby-hocon/releases ##### -component 'rubygem-hocon' do |pkg, settings, platform| +component 'rubygem-hocon' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.sha256sum 'e71023ed7c56ae780ec34c0ce7789a233bcead08c045d50bc7b3af40f5afcd80' ### End automated maintenance section ### - + instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-http_parser.rb.rb b/configs/components/rubygem-http_parser.rb.rb new file mode 100644 index 00000000..e3a48f47 --- /dev/null +++ b/configs/components/rubygem-http_parser.rb.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/http_parser.rb +##### +component 'rubygem-http_parser.rb' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.8.0' + pkg.sha256sum '5a0932f1fa82ce08a8516a2685d5a86031c000560f89946913c555a0697544be' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-httpclient.rb b/configs/components/rubygem-httpclient.rb index 86c428b0..ae231413 100644 --- a/configs/components/rubygem-httpclient.rb +++ b/configs/components/rubygem-httpclient.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/httpclient # https://github.com/nahi/httpclient/blob/master/CHANGELOG.md ##### -component 'rubygem-httpclient' do |pkg, settings, platform| +component 'rubygem-httpclient' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.9.0' pkg.sha256sum '4b645958e494b2f86c2f8a2f304c959baa273a310e77a2931ddb986d83e498c8' + pkg.build_requires 'rubygem-mutex_m' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-io-console.rb b/configs/components/rubygem-io-console.rb new file mode 100644 index 00000000..92a8fec1 --- /dev/null +++ b/configs/components/rubygem-io-console.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/io-console +##### +component 'rubygem-io-console' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.8.1' + pkg.sha256sum '1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-jmespath.rb b/configs/components/rubygem-jmespath.rb index d4a11bb4..a125eae5 100644 --- a/configs/components/rubygem-jmespath.rb +++ b/configs/components/rubygem-jmespath.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/jmespath # https://github.com/jmespath/jmespath.rb/releases ##### -component 'rubygem-jmespath' do |pkg, settings, platform| +component 'rubygem-jmespath' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.6.2' - pkg.md5sum 'fdd62edafbd40171f976a53ab349ae9e' + pkg.sha256sum '238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-json.rb b/configs/components/rubygem-json.rb new file mode 100644 index 00000000..7b25ed34 --- /dev/null +++ b/configs/components/rubygem-json.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/json +##### +component 'rubygem-json' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '2.16.0' + pkg.sha256sum 'ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-jwt.rb b/configs/components/rubygem-jwt.rb index 94e1a8ee..c1e027c8 100644 --- a/configs/components/rubygem-jwt.rb +++ b/configs/components/rubygem-jwt.rb @@ -3,16 +3,14 @@ # https://rubygems.org/gems/jwt # https://github.com/jwt/ruby-jwt/blob/v3.1.2/CHANGELOG.md # Notes: -# This seems to only be for the bundled gcloud_inventory module -# in Bolt, which itself has a dependency of ~> 2.2.1. So probably -# this isn't even having the effect we want. Should take a look to -# see if we should just remove this component. +# r10k pins this to < 3, so pinning to the latest 2.x version for now. ##### -component 'rubygem-jwt' do |pkg, settings, platform| +component 'rubygem-jwt' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### # PINNED - pkg.version '2.7.1' - pkg.md5sum 'd3a7ba14444b03f91c7d36b61519fe17' + pkg.version '2.10.2' + pkg.sha256sum '31e1ee46f7359883d5e622446969fe9c118c3da87a0b1dca765ce269c3a0c4f4' + pkg.build_requires 'rubygem-base64' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-little-plugger.rb b/configs/components/rubygem-little-plugger.rb index 086b1d87..2c35e01b 100644 --- a/configs/components/rubygem-little-plugger.rb +++ b/configs/components/rubygem-little-plugger.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/little-plugger # https://github.com/TwP/little-plugger/blob/master/History.txt ##### -component 'rubygem-little-plugger' do |pkg, settings, platform| +component 'rubygem-little-plugger' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.4' - pkg.md5sum '8b1cf294a87eaabd12d5326bc13d7fe0' + pkg.sha256sum 'd5f347c00d9d648040ef7c17d6eb09d3d0719adf19ca30d1a3b6fb26d0a631bb' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-locale.rb b/configs/components/rubygem-locale.rb index 7155a968..545b8a9f 100644 --- a/configs/components/rubygem-locale.rb +++ b/configs/components/rubygem-locale.rb @@ -4,15 +4,15 @@ # https://github.com/ruby-gettext/locale/releases # (Not up to date) https://github.com/ruby-gettext/locale/blob/master/ChangeLog ##### -component 'rubygem-locale' do |pkg, settings, platform| +component 'rubygem-locale' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.1.4' - pkg.md5sum 'c324a7f34b94044f8d38eabff159de62' + pkg.sha256sum '522f9973ef3eee64aac9bca06d21db2fba675fa3d2cf61d21f42d1ca18a9f780' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-log4r.rb b/configs/components/rubygem-log4r.rb index ce2fc72e..431c1686 100644 --- a/configs/components/rubygem-log4r.rb +++ b/configs/components/rubygem-log4r.rb @@ -4,10 +4,10 @@ # Note: # Hasn't been updated since 2012. Should probably dump this. ##### -component 'rubygem-log4r' do |pkg, settings, platform| +component 'rubygem-log4r' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.10' - pkg.md5sum '8d54b52c97f9fc17cc20a5277af20402' + pkg.sha256sum '9b452928c964b7c54c09aeb25ff045b5a722b387b16c9ce37cb1baec00062966' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-logger.rb b/configs/components/rubygem-logger.rb index a0410143..07eed31c 100644 --- a/configs/components/rubygem-logger.rb +++ b/configs/components/rubygem-logger.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/logger # https://github.com/ruby/logger/releases ##### -component 'rubygem-logger' do |pkg, settings, platform| +component 'rubygem-logger' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.7.0' pkg.sha256sum '196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203' diff --git a/configs/components/rubygem-logging.rb b/configs/components/rubygem-logging.rb index f1912122..dab63efe 100644 --- a/configs/components/rubygem-logging.rb +++ b/configs/components/rubygem-logging.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/logging # https://github.com/TwP/logging/blob/master/History.txt ##### -component 'rubygem-logging' do |pkg, settings, platform| +component 'rubygem-logging' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.4.0' - pkg.md5sum '8953eab63c979ecdac781cbf0da1872a' + pkg.sha256sum 'ba8893a3c211b836f4131bb93b3eb3137a0c3b1fcd0ec3d570e324d8bdc00ccb' + pkg.build_requires 'rubygem-little-plugger' + pkg.build_requires 'rubygem-multi_json' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-mini_portile2.rb b/configs/components/rubygem-mini_portile2.rb deleted file mode 100644 index 2bc9932a..00000000 --- a/configs/components/rubygem-mini_portile2.rb +++ /dev/null @@ -1,15 +0,0 @@ -##### -# Component release information: -# https://rubygems.org/gems/mini_portile2 -# https://github.com/flavorjones/mini_portile/blob/main/CHANGELOG.md -##### -component 'rubygem-mini_portile2' do |pkg, _settings, _platform| - ### Maintained by update_gems automation ### - pkg.version '2.8.9' - pkg.sha256sum '0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289' - ### End automated maintenance section ### - - instance_eval File.read('configs/components/_base-rubygem.rb') - - pkg.environment 'GEM_HOME', settings[:gem_home] -end diff --git a/configs/components/rubygem-minitar.rb b/configs/components/rubygem-minitar.rb index 47ffed40..653910d7 100644 --- a/configs/components/rubygem-minitar.rb +++ b/configs/components/rubygem-minitar.rb @@ -2,15 +2,11 @@ # Component release information: # https://rubygems.org/gems/minitar # https://github.com/halostatue/minitar/blob/main/CHANGELOG.md -# Notes: -# 2025-07-23: 1.x changes a namespace, and there are no vulnerability fixes, -# so leaving this at 0.12.1 for now. ##### -component 'rubygem-minitar' do |pkg, settings, platform| +component 'rubygem-minitar' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - # PINNED - pkg.version '0.12.1' - pkg.md5sum '975dee1dadeb26a2a01105802c3172ab' + pkg.version '1.1.0' + pkg.sha256sum '38db0cfb6f3801017946cdcd8dc53f2cf3fd41ff752892312bf9a1639c9ea23e' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-molinillo.rb b/configs/components/rubygem-molinillo.rb index 1b022554..c622a148 100644 --- a/configs/components/rubygem-molinillo.rb +++ b/configs/components/rubygem-molinillo.rb @@ -4,10 +4,10 @@ # https://github.com/CocoaPods/Molinillo/releases # https://github.com/CocoaPods/Molinillo/blob/master/CHANGELOG.md ##### -component 'rubygem-molinillo' do |pkg, settings, platform| +component 'rubygem-molinillo' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.8.0' - pkg.md5sum '877866cc996d5ce819dd8843b3116b5f' + pkg.sha256sum 'efbff2716324e2a30bccd3eba1ff3a735f4d5d53ffddbc6a2f32c0ca9433045d' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-multi_json.rb b/configs/components/rubygem-multi_json.rb index 6c85b9dc..11fd495b 100644 --- a/configs/components/rubygem-multi_json.rb +++ b/configs/components/rubygem-multi_json.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/multi_json # https://github.com/sferik/multi_json/blob/main/CHANGELOG.md ##### -component 'rubygem-multi_json' do |pkg, settings, platform| +component 'rubygem-multi_json' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.17.0' pkg.sha256sum '76581f6c96aebf2e85f8a8b9854829e0988f335e8671cd1a56a1036eb75e4a1b' @@ -13,5 +13,5 @@ # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-multipart-post.rb b/configs/components/rubygem-multipart-post.rb index 5265149a..f42e9c8c 100644 --- a/configs/components/rubygem-multipart-post.rb +++ b/configs/components/rubygem-multipart-post.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/multipart-post # https://github.com/socketry/multipart-post/releases ##### -component 'rubygem-multipart-post' do |pkg, settings, platform| +component 'rubygem-multipart-post' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.4.1' - pkg.md5sum '190a88b4cae633a46b64c30764e5d624' + pkg.sha256sum '9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-mutex_m.rb b/configs/components/rubygem-mutex_m.rb new file mode 100644 index 00000000..fef555b8 --- /dev/null +++ b/configs/components/rubygem-mutex_m.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/mutex_m +##### +component 'rubygem-mutex_m' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.3.0' + pkg.sha256sum 'cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-net-ftp.rb b/configs/components/rubygem-net-ftp.rb new file mode 100644 index 00000000..fbc15bee --- /dev/null +++ b/configs/components/rubygem-net-ftp.rb @@ -0,0 +1,15 @@ +##### +# Component release information: +# https://rubygems.org/gems/net-ftp +# https://github.com/ruby/net-ftp/releases +##### +component 'rubygem-net-ftp' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.3.9' + pkg.sha256sum '307817ccf7f428f79d083f7e36dbb46a9d1d375e0d23027824de1866f0b13b65' + pkg.build_requires 'rubygem-net-protocol' + pkg.build_requires 'rubygem-time' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-net-http-persistent.rb b/configs/components/rubygem-net-http-persistent.rb index e1002cb0..227a44bb 100644 --- a/configs/components/rubygem-net-http-persistent.rb +++ b/configs/components/rubygem-net-http-persistent.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/net-http-persistent # https://github.com/drbrain/net-http-persistent/blob/master/History.txt ##### -component 'rubygem-net-http-persistent' do |pkg, settings, platform| +component 'rubygem-net-http-persistent' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '4.0.6' pkg.sha256sum '2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d' + pkg.build_requires 'rubygem-connection_pool' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-net-http.rb b/configs/components/rubygem-net-http.rb new file mode 100644 index 00000000..f309dfd2 --- /dev/null +++ b/configs/components/rubygem-net-http.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/net-http +##### +component 'rubygem-net-http' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.8.0' + pkg.sha256sum 'df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d' + pkg.build_requires 'rubygem-uri' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-net-protocol.rb b/configs/components/rubygem-net-protocol.rb new file mode 100644 index 00000000..f9617f65 --- /dev/null +++ b/configs/components/rubygem-net-protocol.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/net-protocol +##### +component 'rubygem-net-protocol' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.2.2' + pkg.sha256sum 'aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8' + pkg.build_requires 'rubygem-timeout' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-net-scp.rb b/configs/components/rubygem-net-scp.rb index 0cbe7253..11123ac6 100644 --- a/configs/components/rubygem-net-scp.rb +++ b/configs/components/rubygem-net-scp.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/net-scp # https://github.com/net-ssh/net-scp/tags ##### -component 'rubygem-net-scp' do |pkg, settings, platform| +component 'rubygem-net-scp' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '4.1.0' pkg.sha256sum 'a99b0b92a1e5d360b0de4ffbf2dc0c91531502d3d4f56c28b0139a7c093d1a5d' + pkg.build_requires 'rubygem-net-ssh' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-net-ssh-krb.rb b/configs/components/rubygem-net-ssh-krb.rb index 98c49f3c..4cdb000f 100644 --- a/configs/components/rubygem-net-ssh-krb.rb +++ b/configs/components/rubygem-net-ssh-krb.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/net-ssh-krb # https://github.com/cbeer/net-ssh-kerberos/releases ##### -component 'rubygem-net-ssh-krb' do |pkg, settings, platform| +component 'rubygem-net-ssh-krb' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.5.1' - pkg.md5sum '58f770a6a8eca61b5da467d584bb7016' + pkg.sha256sum '0c1448f32d7b1dc4decc5e2bb329f38c502c9fed6fb16122b257e5dc8cb61588' + pkg.build_requires 'rubygem-gssapi' + pkg.build_requires 'rubygem-net-ssh' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-net-ssh.rb b/configs/components/rubygem-net-ssh.rb index 17524b13..e5189438 100644 --- a/configs/components/rubygem-net-ssh.rb +++ b/configs/components/rubygem-net-ssh.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/net-ssh # https://github.com/net-ssh/net-ssh/blob/master/CHANGES.txt ##### -component 'rubygem-net-ssh' do |pkg, settings, platform| +component 'rubygem-net-ssh' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '7.3.0' pkg.sha256sum '172076c4b30ce56fb25a03961b0c4da14e1246426401b0f89cba1a3b54bf3ef0' diff --git a/configs/components/rubygem-nkf.rb b/configs/components/rubygem-nkf.rb new file mode 100644 index 00000000..7ae002b5 --- /dev/null +++ b/configs/components/rubygem-nkf.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/nkf +##### +component 'rubygem-nkf' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.2.0' + pkg.sha256sum 'fbc151bda025451f627fafdfcb3f4f13d0b22ae11f58c6d3a2939c76c5f5f126' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-nori.rb b/configs/components/rubygem-nori.rb index ae9ae40b..bb0fd3f6 100644 --- a/configs/components/rubygem-nori.rb +++ b/configs/components/rubygem-nori.rb @@ -4,10 +4,11 @@ # https://github.com/savonrb/nori/releases # https://github.com/savonrb/nori/blob/main/CHANGELOG.md ##### -component 'rubygem-nori' do |pkg, settings, platform| +component 'rubygem-nori' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.7.1' - pkg.md5sum '83952a081b5e86d5aa62943ca9ccf312' + pkg.sha256sum '6166cd336959854762073e2fbae888593809cac1b3e904f4fb009313d7226861' + pkg.build_requires 'rubygem-bigdecimal' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-openfact.rb b/configs/components/rubygem-openfact.rb index 273ad05e..1c7bbe71 100644 --- a/configs/components/rubygem-openfact.rb +++ b/configs/components/rubygem-openfact.rb @@ -3,10 +3,14 @@ # https://rubygems.org/gems/openfact # https://github.com/OpenVoxProject/openfact/releases ##### -component 'rubygem-openfact' do |pkg, settings, platform| +component 'rubygem-openfact' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '5.1.0' pkg.sha256sum '569b93bc6941f8efeef55c138577ae2e3ff4f6727657f9f48925c4a657d3f70c' + pkg.build_requires 'rubygem-base64' + pkg.build_requires 'rubygem-hocon' + pkg.build_requires 'rubygem-logger' + pkg.build_requires 'rubygem-thor' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-openvox-strings.rb b/configs/components/rubygem-openvox-strings.rb new file mode 100644 index 00000000..b50d7782 --- /dev/null +++ b/configs/components/rubygem-openvox-strings.rb @@ -0,0 +1,17 @@ +##### +# Component release information: +# https://rubygems.org/gems/openvox-strings +# https://github.com/voxpupuli/openvox-strings/releases +# https://github.com/voxpupuli/openvox-strings/blob/main/CHANGELOG.md +##### +component 'rubygem-openvox-strings' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '6.0.0' + pkg.sha256sum '3fd42dfd91d7d42ece6edb4254876937ec5634a65f951d912abcaec30156dc88' + pkg.build_requires 'rubygem-openvox' + pkg.build_requires 'rubygem-rgen' + pkg.build_requires 'rubygem-yard' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-openvox.rb b/configs/components/rubygem-openvox.rb new file mode 100644 index 00000000..3d165a6b --- /dev/null +++ b/configs/components/rubygem-openvox.rb @@ -0,0 +1,29 @@ +##### +# Component release information (lol): +# https://rubygems.org/gems/openvox +# https://github.com/OpenVoxProject/openvox/releases +# Notes: +# To be replaced with openvox +##### +component 'rubygem-openvox' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '8.23.1' + pkg.sha256sum '0af1d648fd4dc749b871df2f8fdcc6b74a21635961e8aa080b980a032a1bc915' + pkg.build_requires 'rubygem-base64' + pkg.build_requires 'rubygem-benchmark' + pkg.build_requires 'rubygem-concurrent-ruby' + pkg.build_requires 'rubygem-deep_merge' + pkg.build_requires 'rubygem-fast_gettext' + pkg.build_requires 'rubygem-getoptlong' + pkg.build_requires 'rubygem-locale' + pkg.build_requires 'rubygem-multi_json' + pkg.build_requires 'rubygem-openfact' + pkg.build_requires 'rubygem-ostruct' + pkg.build_requires 'rubygem-puppet-resource_api' + pkg.build_requires 'rubygem-racc' + pkg.build_requires 'rubygem-scanf' + pkg.build_requires 'rubygem-semantic_puppet' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-optimist.rb b/configs/components/rubygem-optimist.rb index 130c577a..5bc6488c 100644 --- a/configs/components/rubygem-optimist.rb +++ b/configs/components/rubygem-optimist.rb @@ -13,5 +13,5 @@ # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-orchestrator_client.rb b/configs/components/rubygem-orchestrator_client.rb index 12ab1f11..d27d0bb4 100644 --- a/configs/components/rubygem-orchestrator_client.rb +++ b/configs/components/rubygem-orchestrator_client.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/orchestrator_client # https://github.com/puppetlabs/orchestrator_client-ruby/tags ##### -component 'rubygem-orchestrator_client' do |pkg, settings, platform| +component 'rubygem-orchestrator_client' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '0.7.1' - pkg.md5sum '177686e31c134ae9fdee25ba8c0404a0' + pkg.version '0.7.2' + pkg.sha256sum 'ed07d84f3cfc6e03258fd91177c679712c5c95f3dbda467498d5ca429ad4b2df' + pkg.build_requires 'rubygem-faraday' + pkg.build_requires 'rubygem-faraday-net_http_persistent' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-ostruct.rb b/configs/components/rubygem-ostruct.rb new file mode 100644 index 00000000..7f9cefad --- /dev/null +++ b/configs/components/rubygem-ostruct.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/ostruct +##### +component 'rubygem-ostruct' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.6.3' + pkg.sha256sum '95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-paint.rb b/configs/components/rubygem-paint.rb index ceff522d..70959859 100644 --- a/configs/components/rubygem-paint.rb +++ b/configs/components/rubygem-paint.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/paint # https://github.com/janlelis/paint/blob/main/CHANGELOG.md ##### -component 'rubygem-paint' do |pkg, settings, platform| +component 'rubygem-paint' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.3.0' - pkg.md5sum '5f51716cec1f4fe3db8ba1880f9fc875' + pkg.sha256sum '327d623e4038619d5bd99ae5db07973859cd78400c7f0329eea283cef8e83be5' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-patron.rb b/configs/components/rubygem-patron.rb new file mode 100644 index 00000000..43d12c81 --- /dev/null +++ b/configs/components/rubygem-patron.rb @@ -0,0 +1,18 @@ +##### +# Component release information: +# https://rubygems.org/gems/patron +##### +component 'rubygem-patron' do |pkg, _settings, platform| + ### Maintained by update_gems automation ### + pkg.version '0.13.4' + pkg.sha256sum 'c4ae37404a028772541e2f19a71e19be970aa53fdf8a3d70c5a9c1350bab3b09' + ### End automated maintenance section ### + + # Because this is only used in openbolt-runtime, and we don't build + # our own curl there, we use the system version of libcurl to compile + # native extensions against. + pkg.build_requires 'libcurl-devel' if platform.is_rpm? + pkg.build_requires 'libcurl4-gnutls-dev' if platform.is_deb? + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-prime.rb b/configs/components/rubygem-prime.rb index f87b19a5..2e023923 100644 --- a/configs/components/rubygem-prime.rb +++ b/configs/components/rubygem-prime.rb @@ -3,10 +3,12 @@ # https://rubygems.org/gems/prime # https://github.com/ruby/prime/releases ##### -component 'rubygem-prime' do |pkg, settings, platform| +component 'rubygem-prime' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.1.4' pkg.sha256sum '4d755ebf7c2994a6f3a3fee0d072063be3fff2d4042ebff6cd5eebd4747a225e' + pkg.build_requires 'rubygem-forwardable' + pkg.build_requires 'rubygem-singleton' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-public_suffix.rb b/configs/components/rubygem-public_suffix.rb index 8d9f2d43..cc5a87dc 100644 --- a/configs/components/rubygem-public_suffix.rb +++ b/configs/components/rubygem-public_suffix.rb @@ -2,9 +2,11 @@ # Component release information: # https://rubygems.org/gems/public_suffix # https://github.com/weppos/publicsuffix-ruby/blob/main/CHANGELOG.md +# Notes: 2025-11-17 - Pinned to < 7 until the addressable gem updates its dependency ##### -component 'rubygem-public_suffix' do |pkg, settings, platform| +component 'rubygem-public_suffix' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### + # PINNED pkg.version '6.0.2' pkg.sha256sum 'bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394' ### End automated maintenance section ### diff --git a/configs/components/rubygem-puppet-resource_api.rb b/configs/components/rubygem-puppet-resource_api.rb index d039dd65..657fd243 100644 --- a/configs/components/rubygem-puppet-resource_api.rb +++ b/configs/components/rubygem-puppet-resource_api.rb @@ -4,10 +4,11 @@ # https://github.com/puppetlabs/puppet-resource_api/releases # https://github.com/puppetlabs/puppet-resource_api/blob/main/CHANGELOG.md ##### -component 'rubygem-puppet-resource_api' do |pkg, settings, platform| +component 'rubygem-puppet-resource_api' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.0.0' pkg.sha256sum '4649fcb5d5e5f8cbda0887f706b95be5b52a089bcf98ce8ebf0496c3266fd9c4' + pkg.build_requires 'rubygem-hocon' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-puppet-strings.rb b/configs/components/rubygem-puppet-strings.rb deleted file mode 100644 index 864b50d7..00000000 --- a/configs/components/rubygem-puppet-strings.rb +++ /dev/null @@ -1,15 +0,0 @@ -##### -# Component release information: -# https://rubygems.org/gems/puppet-strings -# https://github.com/puppetlabs/puppet-strings/releases -# https://github.com/puppetlabs/puppet-strings/blob/main/CHANGELOG.md -##### -component 'rubygem-puppet-strings' do |pkg, settings, platform| - ### Maintained by update_gems automation ### - pkg.version '5.0.0' - pkg.sha256sum '9f93221dab4d9c7441d0c7e4d9b5066e65dc325209487e6638b5cb3b7056fa8b' - ### End automated maintenance section ### - - instance_eval File.read('configs/components/_base-rubygem.rb') -end - diff --git a/configs/components/rubygem-puppet.rb b/configs/components/rubygem-puppet.rb deleted file mode 100644 index 028ebc23..00000000 --- a/configs/components/rubygem-puppet.rb +++ /dev/null @@ -1,15 +0,0 @@ -##### -# Component release information (lol): -# https://rubygems.org/gems/puppet -# https://github.com/puppetlabs/puppet/releases -# Notes: -# To be replaced with openvox -##### -component 'rubygem-puppet' do |pkg, settings, platform| - ### Maintained by update_gems automation ### - pkg.version '8.10.0' - pkg.sha256sum 'f2f5de8f5a794ec49ac30f42806c9ffb5cd42c9908ab3014f9d8ea68a21c2a3a' - ### End automated maintenance section ### - - instance_eval File.read('configs/components/_base-rubygem.rb') -end diff --git a/configs/components/rubygem-puppet_forge.rb b/configs/components/rubygem-puppet_forge.rb index 6ce2425c..9d1ca4a1 100644 --- a/configs/components/rubygem-puppet_forge.rb +++ b/configs/components/rubygem-puppet_forge.rb @@ -3,16 +3,15 @@ # https://rubygems.org/gems/puppet_forge # https://github.com/puppetlabs/forge-ruby/releases # https://github.com/puppetlabs/forge-ruby/blob/main/CHANGELOG.md -# Notes: -# 2025-07-23: Leaving this at 5.x for now since 6.x requires the new -# minitar gem, which OpenVox also uses. Need to fix it up -# in the agent before bumping this. ##### -component 'rubygem-puppet_forge' do |pkg, settings, platform| +component 'rubygem-puppet_forge' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - # PINNED - pkg.version '5.0.4' - pkg.md5sum '04a2ca2f027ed41d9142ced587b71bd7' + pkg.version '6.0.0' + pkg.sha256sum '0770bed61c9f5b21bd81666b121e086165e34c45691bdefec70438bf412f8ddf' + pkg.build_requires 'rubygem-faraday' + pkg.build_requires 'rubygem-faraday-follow_redirects' + pkg.build_requires 'rubygem-minitar' + pkg.build_requires 'rubygem-semantic_puppet' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-puppetfile-resolver.rb b/configs/components/rubygem-puppetfile-resolver.rb index 8dae4f4d..a6899b7e 100644 --- a/configs/components/rubygem-puppetfile-resolver.rb +++ b/configs/components/rubygem-puppetfile-resolver.rb @@ -5,10 +5,12 @@ # Notes: # Deprecated and needs to be removed. ##### -component 'rubygem-puppetfile-resolver' do |pkg, settings, platform| +component 'rubygem-puppetfile-resolver' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.6.3' - pkg.md5sum '8377387749cf0fcfcfd9f8c0c6baaf0c' + pkg.sha256sum 'd54695251bb62ca033d10bba2d9d91243fff474265d4979f2783259a974634ce' + pkg.build_requires 'rubygem-molinillo' + pkg.build_requires 'rubygem-semantic_puppet' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-r10k.rb b/configs/components/rubygem-r10k.rb index 5a76bf49..de483138 100644 --- a/configs/components/rubygem-r10k.rb +++ b/configs/components/rubygem-r10k.rb @@ -3,10 +3,18 @@ # https://rubygems.org/gems/r10k # https://github.com/puppetlabs/r10k/blob/main/CHANGELOG.mkd ##### -component 'rubygem-r10k' do |pkg, settings, platform| +component 'rubygem-r10k' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '5.0.2' pkg.sha256sum '48e24e2b8447cdc56b03303b741247a5255bb40f170c9d113c5d3dbd8c83e8b3' + pkg.build_requires 'rubygem-colored2' + pkg.build_requires 'rubygem-cri' + pkg.build_requires 'rubygem-gettext-setup' + pkg.build_requires 'rubygem-jwt' + pkg.build_requires 'rubygem-log4r' + pkg.build_requires 'rubygem-minitar' + pkg.build_requires 'rubygem-multi_json' + pkg.build_requires 'rubygem-puppet_forge' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-racc.rb b/configs/components/rubygem-racc.rb new file mode 100644 index 00000000..3dfb340f --- /dev/null +++ b/configs/components/rubygem-racc.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/racc +##### +component 'rubygem-racc' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.8.1' + pkg.sha256sum '4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-reline.rb b/configs/components/rubygem-reline.rb new file mode 100644 index 00000000..92ca4111 --- /dev/null +++ b/configs/components/rubygem-reline.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/reline +##### +component 'rubygem-reline' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.6.3' + pkg.sha256sum '1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835' + pkg.build_requires 'rubygem-io-console' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-rexml.rb b/configs/components/rubygem-rexml.rb index 86726bbb..54abb1d1 100644 --- a/configs/components/rubygem-rexml.rb +++ b/configs/components/rubygem-rexml.rb @@ -5,8 +5,8 @@ ##### component 'rubygem-rexml' do |pkg, settings, platform| ### Maintained by update_gems automation ### - pkg.version '3.4.2' - pkg.sha256sum '1384268554a37af5da5279431ca3f2f37d46f09ffdd6c95e17cc84c83ea7c417' + pkg.version '3.4.4' + pkg.sha256sum '19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142' ### End automated maintenance section ### settings["#{pkg.get_name}_remove_older_versions".to_sym] = true @@ -15,9 +15,7 @@ # ignoring the dependencies, this is because the pl-ruby version used in these platforms is ancient so it gets # confused when installing rexml. It tries to install rexml's dependency 'strscan' by building native extensions # but fails. We can ignore insalling that since strscan is already shipped with ruby 2 as its default gem. - if platform.name =~ /solaris-(10|11)-sparc/ && settings[:ruby_version].to_i < 3 - settings["#{pkg.get_name}_gem_install_options".to_sym] = "--ignore-dependencies" - end + settings["#{pkg.get_name}_gem_install_options".to_sym] = '--ignore-dependencies' if platform.name =~ /solaris-(10|11)-sparc/ && settings[:ruby_version].to_i < 3 instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-rgen.rb b/configs/components/rubygem-rgen.rb index 21d86f9f..843f4e08 100644 --- a/configs/components/rubygem-rgen.rb +++ b/configs/components/rubygem-rgen.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/rgen # https://github.com/mthiede/rgen/blob/master/CHANGELOG ##### -component 'rubygem-rgen' do |pkg, settings, platform| +component 'rubygem-rgen' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.10.2' pkg.sha256sum 'd978f84887a0b4815ff3a0e0c4d43a15cdeeac9fd4da02db8ec3ecd0f222f371' diff --git a/configs/components/rubygem-ruby2_keywords.rb b/configs/components/rubygem-ruby2_keywords.rb index 331d6d6a..da494d60 100644 --- a/configs/components/rubygem-ruby2_keywords.rb +++ b/configs/components/rubygem-ruby2_keywords.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/ruby2_keywords # https://github.com/ruby/ruby2_keywords/releases ##### -component 'rubygem-ruby2_keywords' do |pkg, settings, platform| +component 'rubygem-ruby2_keywords' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.0.5' - pkg.md5sum '89bc1e9231e63a0f93599772ae871e03' + pkg.sha256sum 'ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-ruby_smb.rb b/configs/components/rubygem-ruby_smb.rb index d21a9009..0a3ec891 100644 --- a/configs/components/rubygem-ruby_smb.rb +++ b/configs/components/rubygem-ruby_smb.rb @@ -6,11 +6,14 @@ # This is horrifically out of date. Need to try updating it carefully # and make sure this doesn't break Bolt SMB support. ##### -component 'rubygem-ruby_smb' do |pkg, settings, platform| +component 'rubygem-ruby_smb' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### # PINNED pkg.version '1.1.0' - pkg.md5sum 'f926be4cb045b5984d02dc10e2b240ca' + pkg.sha256sum 'c4692ec8983f492161239d36a743b2a8cd309d4523c832a71de14ead6a8db788' + pkg.build_requires 'rubygem-bindata' + pkg.build_requires 'rubygem-rubyntlm' + pkg.build_requires 'rubygem-windows_error' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-rubyntlm.rb b/configs/components/rubygem-rubyntlm.rb index 0be8a24f..3b85701c 100644 --- a/configs/components/rubygem-rubyntlm.rb +++ b/configs/components/rubygem-rubyntlm.rb @@ -3,13 +3,11 @@ # https://rubygems.org/gems/rubyntlm # https://github.com/WinRb/rubyntlm/releases ##### -component 'rubygem-rubyntlm' do |pkg, settings, platform| - # Do not update past this version without solving the jruby/ruby2.7 issue described in the commit - # message this comment is associated with. +component 'rubygem-rubyntlm' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - # PINNED - pkg.version '0.6.3' - pkg.md5sum 'e1f7477acf8a7d3effb2a3fb931aa84c' + pkg.version '0.6.5' + pkg.sha256sum '47013402b99ae29ee93f930af51edaec8c6008556f4be25705a422b4430314f5' + pkg.build_requires 'rubygem-base64' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-rubyzip.rb b/configs/components/rubygem-rubyzip.rb index 5c33356f..dabb0fc4 100644 --- a/configs/components/rubygem-rubyzip.rb +++ b/configs/components/rubygem-rubyzip.rb @@ -4,10 +4,10 @@ # https://github.com/rubyzip/rubyzip/releases # https://github.com/rubyzip/rubyzip/blob/master/Changelog.md ##### -component 'rubygem-rubyzip' do |pkg, settings, platform| +component 'rubygem-rubyzip' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '3.0.2' - pkg.sha256sum '30f75c0b631e23c0891453acbcc019bc1496cd44f4a3ade4ff76bc09a595cfa6' + pkg.version '3.2.2' + pkg.sha256sum 'c0ed99385f0625415c8f05bcae33fe649ed2952894a95ff8b08f26ca57ea5b3c' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-scanf.rb b/configs/components/rubygem-scanf.rb index 2a09454d..ad267161 100644 --- a/configs/components/rubygem-scanf.rb +++ b/configs/components/rubygem-scanf.rb @@ -3,15 +3,15 @@ # https://rubygems.org/gems/scanf # https://github.com/ruby/scanf/releases ##### -component 'rubygem-scanf' do |pkg, settings, platform| +component 'rubygem-scanf' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.0.0' - pkg.md5sum '6a48b02b5d7109331afa8bd9d55a802e' + pkg.sha256sum '533db7f7e5acafea1a145d6c5329cef667a58fbcb7d64379a808ff1199ee1b00' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-semantic_puppet.rb b/configs/components/rubygem-semantic_puppet.rb index 45763973..35a1c574 100644 --- a/configs/components/rubygem-semantic_puppet.rb +++ b/configs/components/rubygem-semantic_puppet.rb @@ -3,15 +3,15 @@ # https://rubygems.org/gems/semantic_puppet # https://github.com/puppetlabs/semantic_puppet/blob/main/CHANGELOG.md ##### -component 'rubygem-semantic_puppet' do |pkg, settings, platform| +component 'rubygem-semantic_puppet' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.1.1' pkg.sha256sum '15ff5b48d7f856549eb66b927a8894d3668b211970c9d7dc07dd4db57f5c7a96' ### End automated maintenance section ### - + instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-singleton.rb b/configs/components/rubygem-singleton.rb new file mode 100644 index 00000000..47dc8728 --- /dev/null +++ b/configs/components/rubygem-singleton.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/singleton +##### +component 'rubygem-singleton' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.3.0' + pkg.sha256sum '83ea1bca5f4aa34d00305ab842a7862ea5a8a11c73d362cb52379d94e9615778' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-sys-filesystem.rb b/configs/components/rubygem-sys-filesystem.rb index 80a6f102..5b63886f 100644 --- a/configs/components/rubygem-sys-filesystem.rb +++ b/configs/components/rubygem-sys-filesystem.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/sys-filesystem # https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md ##### -component 'rubygem-sys-filesystem' do |pkg, settings, platform| +component 'rubygem-sys-filesystem' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '1.5.3' - pkg.sha256sum '17b561d1be683c34bc53946461ea9d67012d8f395e7297db8c63b9018cb30ece' + pkg.version '1.5.4' + pkg.sha256sum 'a6101674a4d0e641b0f628753439091134e080ed84a3e794570aa2fb07872b45' + pkg.build_requires 'rubygem-ffi' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-terminal-table.rb b/configs/components/rubygem-terminal-table.rb index e542a051..2a466811 100644 --- a/configs/components/rubygem-terminal-table.rb +++ b/configs/components/rubygem-terminal-table.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/terminal-table # https://github.com/tj/terminal-table/releases ##### -component 'rubygem-terminal-table' do |pkg, settings, platform| +component 'rubygem-terminal-table' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '4.0.0' pkg.sha256sum 'f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2' + pkg.build_requires 'rubygem-unicode-display_width' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-text.rb b/configs/components/rubygem-text.rb index 4d2cff19..aea9949c 100644 --- a/configs/components/rubygem-text.rb +++ b/configs/components/rubygem-text.rb @@ -3,15 +3,15 @@ # https://rubygems.org/gems/text # https://github.com/threedaymonk/text/tags ##### -component 'rubygem-text' do |pkg, settings, platform| +component 'rubygem-text' do |pkg, settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.3.1' - pkg.md5sum '514c3d1db7a955fe793fc0cb149c164f' + pkg.sha256sum '2fbbbc82c1ce79c4195b13018a87cbb00d762bda39241bb3cdc32792759dd3f4' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') # Overwrite the base rubygem's default GEM_HOME with the vendor gem directory # shared by puppet and puppetserver. Fall-back to gem_home for other projects. - pkg.environment "GEM_HOME", (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) + pkg.environment 'GEM_HOME', (settings[:puppet_gem_vendor_dir] || settings[:gem_home]) end diff --git a/configs/components/rubygem-thor.rb b/configs/components/rubygem-thor.rb index 98946aaa..47e66f17 100644 --- a/configs/components/rubygem-thor.rb +++ b/configs/components/rubygem-thor.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/thor # https://github.com/rails/thor/releases ##### -component 'rubygem-thor' do |pkg, settings, platform| +component 'rubygem-thor' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.sha256sum '8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d' diff --git a/configs/components/rubygem-time.rb b/configs/components/rubygem-time.rb new file mode 100644 index 00000000..bb2fd13c --- /dev/null +++ b/configs/components/rubygem-time.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/time +##### +component 'rubygem-time' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.4.1' + pkg.sha256sum '035f360508a4a4dbabcbbcd3886566b9abd432de89136795d2ff7aec5bcdea61' + pkg.build_requires 'rubygem-date' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-timeout.rb b/configs/components/rubygem-timeout.rb new file mode 100644 index 00000000..1a7e57e8 --- /dev/null +++ b/configs/components/rubygem-timeout.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/timeout +##### +component 'rubygem-timeout' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '0.4.4' + pkg.sha256sum 'f0f6f970104b82427cd990680f539b6bbb8b1e55efa913a55c6492935e4e0edb' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-unicode-display_width.rb b/configs/components/rubygem-unicode-display_width.rb index 0f047e07..e91a97e1 100644 --- a/configs/components/rubygem-unicode-display_width.rb +++ b/configs/components/rubygem-unicode-display_width.rb @@ -3,10 +3,11 @@ # https://rubygems.org/gems/unicode-display_width # https://github.com/janlelis/unicode-display_width/blob/main/CHANGELOG.md ##### -component 'rubygem-unicode-display_width' do |pkg, settings, platform| +component 'rubygem-unicode-display_width' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### - pkg.version '3.1.5' - pkg.sha256sum 'bf566817855ee7ee3adcf7bace0d5906cb14401417db59193f8a5fcedf02dd4e' + pkg.version '3.2.0' + pkg.sha256sum '0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42' + pkg.build_requires 'rubygem-unicode-emoji' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-unicode-emoji.rb b/configs/components/rubygem-unicode-emoji.rb new file mode 100644 index 00000000..666401a1 --- /dev/null +++ b/configs/components/rubygem-unicode-emoji.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/unicode-emoji +##### +component 'rubygem-unicode-emoji' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '4.1.0' + pkg.sha256sum '4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-uri.rb b/configs/components/rubygem-uri.rb new file mode 100644 index 00000000..e40f71a8 --- /dev/null +++ b/configs/components/rubygem-uri.rb @@ -0,0 +1,12 @@ +##### +# Component release information: +# https://rubygems.org/gems/uri +##### +component 'rubygem-uri' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.1.1' + pkg.sha256sum '379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-webrick.rb b/configs/components/rubygem-webrick.rb index e17c7793..57d95414 100644 --- a/configs/components/rubygem-webrick.rb +++ b/configs/components/rubygem-webrick.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/webrick # https://github.com/ruby/webrick/releases ##### -component 'rubygem-webrick' do |pkg, settings, platform| +component 'rubygem-webrick' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.9.1' pkg.sha256sum 'b42d3c94f166f3fb73d87e9b359def9b5836c426fc8beacf38f2184a21b2a989' diff --git a/configs/components/rubygem-win32ole.rb b/configs/components/rubygem-win32ole.rb new file mode 100644 index 00000000..a7be897d --- /dev/null +++ b/configs/components/rubygem-win32ole.rb @@ -0,0 +1,13 @@ +##### +# Component release information: +# https://rubygems.org/gems/win32ole +# https://github.com/ruby/win32ole/releases +##### +component 'rubygem-win32ole' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '1.9.2' + pkg.sha256sum '99612fe2c6cb397c0910680f7d1ba6366f08e37aeac83ebaeab9e72ee823e0f5' + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') +end diff --git a/configs/components/rubygem-windows_error.rb b/configs/components/rubygem-windows_error.rb index 6da5aaf9..8a357318 100644 --- a/configs/components/rubygem-windows_error.rb +++ b/configs/components/rubygem-windows_error.rb @@ -3,10 +3,10 @@ # https://rubygems.org/gems/windows_error # https://github.com/rapid7/windows_error/tags ##### -component 'rubygem-windows_error' do |pkg, settings, platform| +component 'rubygem-windows_error' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.1.5' - pkg.md5sum 'cb1faeaed0e3b1e4d4ad4e7d1aef76c7' + pkg.sha256sum '59a827b74a9c7adc8f9d40782e8edc136806a239db79a68dd61d50b6e1d945a0' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-winrm-fs.rb b/configs/components/rubygem-winrm-fs.rb index 3f6bad70..7670ec3d 100644 --- a/configs/components/rubygem-winrm-fs.rb +++ b/configs/components/rubygem-winrm-fs.rb @@ -3,10 +3,14 @@ # https://rubygems.org/gems/winrm-fs # https://github.com/WinRb/winrm-fs/tags ##### -component 'rubygem-winrm-fs' do |pkg, settings, platform| +component 'rubygem-winrm-fs' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '1.3.5' - pkg.md5sum 'dcde27a3aff684b8277c069cd4b2efe7' + pkg.sha256sum '0d2cdd9e1fb6fc8d01f56a32dce41d98ae6eefb481937ed0e058faa0cd0c693d' + pkg.build_requires 'rubygem-erubi' + pkg.build_requires 'rubygem-logging' + pkg.build_requires 'rubygem-rubyzip' + pkg.build_requires 'rubygem-winrm' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-winrm.rb b/configs/components/rubygem-winrm.rb index 7f781b64..cff84144 100644 --- a/configs/components/rubygem-winrm.rb +++ b/configs/components/rubygem-winrm.rb @@ -3,10 +3,19 @@ # https://rubygems.org/gems/winrm # https://github.com/WinRb/WinRM/releases ##### -component 'rubygem-winrm' do |pkg, settings, platform| +component 'rubygem-winrm' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '2.3.9' pkg.sha256sum 'ef6b767c5772d06e186300b506ea5e65afb849904a551f8482a5cfc2a1be5d06' + pkg.build_requires 'rubygem-builder' + pkg.build_requires 'rubygem-erubi' + pkg.build_requires 'rubygem-gssapi' + pkg.build_requires 'rubygem-gyoku' + pkg.build_requires 'rubygem-httpclient' + pkg.build_requires 'rubygem-logging' + pkg.build_requires 'rubygem-nori' + pkg.build_requires 'rubygem-rexml' + pkg.build_requires 'rubygem-rubyntlm' ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-yard.rb b/configs/components/rubygem-yard.rb index 12830812..beb1b601 100644 --- a/configs/components/rubygem-yard.rb +++ b/configs/components/rubygem-yard.rb @@ -3,7 +3,7 @@ # https://rubygems.org/gems/yard # https://github.com/lsegal/yard/releases ##### -component 'rubygem-yard' do |pkg, settings, platform| +component 'rubygem-yard' do |pkg, _settings, _platform| ### Maintained by update_gems automation ### pkg.version '0.9.37' pkg.sha256sum 'a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992' @@ -11,4 +11,3 @@ instance_eval File.read('configs/components/_base-rubygem.rb') end - diff --git a/configs/components/runtime-agent.rb b/configs/components/runtime-agent.rb index 5b08aa5e..e6eb3527 100644 --- a/configs/components/runtime-agent.rb +++ b/configs/components/runtime-agent.rb @@ -1,63 +1,46 @@ # This component exists to link in the gcc and stdc++ runtime libraries as well as libssp. -component "runtime-agent" do |pkg, settings, platform| - pkg.environment "PROJECT_SHORTNAME", "puppet" - pkg.add_source "file://resources/files/runtime/runtime.sh" +component 'runtime-agent' do |pkg, settings, platform| + pkg.environment 'PROJECT_SHORTNAME', 'puppet' + pkg.add_source 'file://resources/files/runtime/runtime.sh' - if platform.name =~ /sles-11-x86_64/ - if settings[:ruby_version] =~ /2.7/ - pkg.install do - "zypper install -y pl-gcc=4.8.2-1" - end - else - pkg.install do - "zypper install -y pl-gcc8" - end - end - elsif platform.is_macos? && platform.is_cross_compiled? - if settings[:ruby_version] =~ /^3\./ - pkg.install do - # These are dependencies of ruby@3.x, remove symlinks from /usr/local - # so our build doesn't use the wrong headers - "cd /etc/homebrew && su test -c '#{platform.brew} unlink openssl libyaml'" - end + if platform.is_macos? && platform.is_cross_compiled? && (settings[:ruby_version] =~ /^3\./) + pkg.install do + # These are dependencies of ruby@3.x, remove symlinks from /usr/local + # so our build doesn't use the wrong headers + "cd /etc/homebrew && su test -c '#{platform.brew} unlink openssl libyaml'" end end if platform.is_cross_compiled? - if platform.architecture =~ /aarch64|ppc64$|ppc64le/ - libdir = File.join("/opt/pl-build-tools", settings[:platform_triple], "lib64") - else - libdir = File.join("/opt/pl-build-tools", settings[:platform_triple], "lib") - end + libdir = if platform.architecture =~ /aarch64|ppc64$|ppc64le/ + File.join('/opt/pl-build-tools', settings[:platform_triple], 'lib64') + else + File.join('/opt/pl-build-tools', settings[:platform_triple], 'lib') + end elsif platform.is_aix? - if platform.name == "aix-7.1-ppc" - libdir = "/opt/pl-build-tools/lib/gcc/powerpc-ibm-aix7.1.0.0/5.2.0/" - else - libdir = "/opt/freeware/lib/gcc/powerpc-ibm-aix7.2.0.0/10/" - end + libdir = '/opt/freeware/lib/gcc/powerpc-ibm-aix7.2.0.0/10/' elsif platform.is_solaris? || platform.architecture =~ /i\d86/ - libdir = "/opt/pl-build-tools/lib" + libdir = '/opt/pl-build-tools/lib' elsif platform.architecture =~ /64/ - libdir = "/opt/pl-build-tools/lib64" + libdir = '/opt/pl-build-tools/lib64' end # The runtime script uses readlink, which is in an odd place on Solaris systems: - pkg.environment "PATH", "$(PATH):/opt/csw/gnu" if platform.is_solaris? + pkg.environment 'PATH', '$(PATH):/opt/csw/gnu' if platform.is_solaris? if platform.is_aix? - pkg.install_file File.join(libdir, "libstdc++.a"), "/opt/puppetlabs/puppet/lib/libstdc++.a" - pkg.install_file File.join(libdir, "libgcc_s.a"), "/opt/puppetlabs/puppet/lib/libgcc_s.a" - if platform.name != 'aix-7.1-ppc' - pkg.install_file File.join(libdir, "libatomic.a"), "/opt/puppetlabs/puppet/lib/libatomic.a" - pkg.install_file "/opt/freeware/lib/libiconv.a", "/opt/puppetlabs/puppet/lib/libiconv.a" - pkg.install_file "/opt/freeware/lib/libncurses.so.6.4.0", "/opt/puppetlabs/puppet/lib/libncurses.so.6.4.0" - pkg.link "libncurses.so.6.4.0", "/opt/puppetlabs/puppet/lib/libncurses.so" - pkg.install_file "/opt/freeware/lib/libreadline.a", "/opt/puppetlabs/puppet/lib/libreadline.a" - pkg.install_file "/opt/freeware/lib/libz.a", "/opt/puppetlabs/puppet/lib/libz.a" - end + pkg.install_file File.join(libdir, 'libstdc++.a'), '/opt/puppetlabs/puppet/lib/libstdc++.a' + pkg.install_file File.join(libdir, 'libgcc_s.a'), '/opt/puppetlabs/puppet/lib/libgcc_s.a' + pkg.install_file File.join(libdir, 'libatomic.a'), '/opt/puppetlabs/puppet/lib/libatomic.a' + pkg.install_file '/opt/freeware/lib/libiconv.a', '/opt/puppetlabs/puppet/lib/libiconv.a' + pkg.install_file '/opt/freeware/lib/libncurses.so.6.4.0', '/opt/puppetlabs/puppet/lib/libncurses.so.6.4.0' + pkg.link 'libncurses.so.6.4.0', '/opt/puppetlabs/puppet/lib/libncurses.so' + pkg.install_file '/opt/freeware/lib/libreadline.a', '/opt/puppetlabs/puppet/lib/libreadline.a' + pkg.install_file '/opt/freeware/lib/libz.a', '/opt/puppetlabs/puppet/lib/libz.a' elsif platform.is_windows? - lib_type = platform.architecture == "x64" ? "seh" : "sjlj" - pkg.install_file "#{settings[:gcc_bindir]}/libgcc_s_#{lib_type}-1.dll", "#{settings[:bindir]}/libgcc_s_#{lib_type}-1.dll" + lib_type = platform.architecture == 'x64' ? 'seh' : 'sjlj' + pkg.install_file "#{settings[:gcc_bindir]}/libgcc_s_#{lib_type}-1.dll", + "#{settings[:bindir]}/libgcc_s_#{lib_type}-1.dll" pkg.install_file "#{settings[:gcc_bindir]}/libstdc++-6.dll", "#{settings[:bindir]}/libstdc++-6.dll" pkg.install_file "#{settings[:gcc_bindir]}/libwinpthread-1.dll", "#{settings[:bindir]}/libwinpthread-1.dll" @@ -68,10 +51,11 @@ # gdbm and iconv are all runtime dependencies of ruby, and their libraries need # to exist inside our vendored ruby pkg.install_file "#{settings[:tools_root]}/bin/libgdbm-4.dll", "#{settings[:ruby_bindir]}/libgdbm-4.dll" - pkg.install_file "#{settings[:tools_root]}/bin/libgdbm_compat-4.dll", "#{settings[:ruby_bindir]}/libgdbm_compat-4.dll" + pkg.install_file "#{settings[:tools_root]}/bin/libgdbm_compat-4.dll", + "#{settings[:ruby_bindir]}/libgdbm_compat-4.dll" pkg.install_file "#{settings[:tools_root]}/bin/libffi-6.dll", "#{settings[:ruby_bindir]}/libffi-6.dll" elsif platform.is_solaris? || - platform.name =~ /el-[56]|redhatfips-7|sles-(:?11)/ + platform.name =~ /redhatfips-7/ pkg.install do "bash runtime.sh #{libdir} puppet" end diff --git a/configs/components/runtime-openbolt.rb b/configs/components/runtime-openbolt.rb index a71c830c..895e972b 100644 --- a/configs/components/runtime-openbolt.rb +++ b/configs/components/runtime-openbolt.rb @@ -1,9 +1,10 @@ # This component exists to link in the gcc runtime libraries. component 'runtime-openbolt' do |pkg, settings, platform| - pkg.environment "PROJECT_SHORTNAME", "bolt" + pkg.environment 'PROJECT_SHORTNAME', 'bolt' if platform.is_windows? - lib_type = platform.architecture == "x64" ? "seh" : "sjlj" - pkg.install_file "#{settings[:gcc_bindir]}/libgcc_s_#{lib_type}-1.dll", "#{settings[:bindir]}/libgcc_s_#{lib_type}-1.dll" + lib_type = platform.architecture == 'x64' ? 'seh' : 'sjlj' + pkg.install_file "#{settings[:gcc_bindir]}/libgcc_s_#{lib_type}-1.dll", + "#{settings[:bindir]}/libgcc_s_#{lib_type}-1.dll" end end diff --git a/configs/components/virt-what.rb b/configs/components/virt-what.rb index d45a91d2..1b54853c 100644 --- a/configs/components/virt-what.rb +++ b/configs/components/virt-what.rb @@ -7,26 +7,22 @@ # https://github.com/chuckleb/virt-what, which you # SHOULD NOT USE as this is a fork. ##### -component "virt-what" do |pkg, settings, platform| +component 'virt-what' do |pkg, settings, platform| pkg.version '1.27' pkg.sha256sum 'd4d9bd9d4ae59095597443fac663495315c7eb4330b872aa5f062df38ac69bf1' # 2025-08-05: The upstream site was down, so using a mirror here. Revert this back to the # original URL next time we bump this. - #pkg.url "https://people.redhat.com/~rjones/virt-what/files/virt-what-#{pkg.get_version}.tar.gz" + # pkg.url "https://people.redhat.com/~rjones/virt-what/files/virt-what-#{pkg.get_version}.tar.gz" pkg.url "https://artifacts.voxpupuli.org/components/virt-what-#{pkg.get_version}.tar.gz" pkg.mirror "#{settings[:buildsources_url]}/virt-what-#{pkg.get_version}.tar.gz" pkg.replaces 'pe-virt-what' # Run-time requirements - unless platform.is_deb? - requires "util-linux" - end + requires 'util-linux' unless platform.is_deb? - if platform.is_rpm? - pkg.build_requires "util-linux" - end + pkg.build_requires 'util-linux' if platform.is_rpm? if platform.is_linux? if platform.architecture =~ /ppc64le$/ @@ -39,9 +35,9 @@ if platform.is_cross_compiled_linux? host_opt = "--host #{settings[:platform_triple]}" - pkg.environment "PATH" => "/opt/pl-build-tools/bin:$$PATH:#{settings[:bindir]}" - pkg.environment "CFLAGS" => settings[:cflags] - pkg.environment "LDFLAGS" => settings[:ldflags] + pkg.environment 'PATH' => "/opt/pl-build-tools/bin:$$PATH:#{settings[:bindir]}" + pkg.environment 'CFLAGS' => settings[:cflags] + pkg.environment 'LDFLAGS' => settings[:ldflags] end pkg.configure do diff --git a/configs/platforms/aix-7.2-ppc.rb b/configs/platforms/aix-7.2-ppc.rb index db38eaab..d2ce401a 100644 --- a/configs/platforms/aix-7.2-ppc.rb +++ b/configs/platforms/aix-7.2-ppc.rb @@ -1,10 +1,10 @@ -platform "aix-7.2-ppc" do |plat| +platform 'aix-7.2-ppc' do |plat| # os_version = 7.2 - plat.make "gmake" - plat.patch "/opt/freeware/bin/patch" - plat.rpmbuild "/usr/bin/rpm" - plat.servicetype "aix" - plat.tar "/opt/freeware/bin/tar" + plat.make 'gmake' + plat.patch '/opt/freeware/bin/patch' + plat.rpmbuild '/usr/bin/rpm' + plat.servicetype 'aix' + plat.tar '/opt/freeware/bin/tar' plat.provision_with %( curl -O https://artifactory.delivery.puppetlabs.net/artifactory/generic__buildsources/openssl-1.1.2.2000.tar.Z; @@ -31,7 +31,7 @@ # versions. plat.provision_with 'yum update --assumeyes --skip-broken' - packages = %w( + packages = %w[ autoconf cmake coreutils @@ -52,15 +52,15 @@ xz-5.4.3 zlib zlib-devel - ) + ] plat.provision_with "yum install --assumeyes #{packages.join(' ')}" # No upstream rsync packages - plat.provision_with "rpm -Uvh --replacepkgs https://artifactory.delivery.puppetlabs.net/artifactory/rpm__remote_aix_linux_toolbox/RPMS/ppc/rsync/rsync-3.0.6-1.aix5.3.ppc.rpm" + plat.provision_with 'rpm -Uvh --replacepkgs https://artifactory.delivery.puppetlabs.net/artifactory/rpm__remote_aix_linux_toolbox/RPMS/ppc/rsync/rsync-3.0.6-1.aix5.3.ppc.rpm' # lots of things expect mktemp to be installed in the usual place, so link it - plat.provision_with "ln -sf /opt/freeware/bin/mktemp /usr/bin/mktemp" + plat.provision_with 'ln -sf /opt/freeware/bin/mktemp /usr/bin/mktemp' - plat.install_build_dependencies_with "yum install --assumeyes " - plat.vmpooler_template "aix-7.2-power" + plat.install_build_dependencies_with 'yum install --assumeyes ' + plat.vmpooler_template 'aix-7.2-power' end diff --git a/configs/platforms/debian-11-aarch64.rb b/configs/platforms/debian-11-aarch64.rb index 6bf5df19..0da9ddbf 100644 --- a/configs/platforms/debian-11-aarch64.rb +++ b/configs/platforms/debian-11-aarch64.rb @@ -1,22 +1,21 @@ -platform "debian-11-aarch64" do |plat| - plat.inherit_from_default - packages = [ - 'build-essential', - 'cmake', - 'debhelper', - 'devscripts', - 'fakeroot', - 'libbz2-dev', - 'libreadline-dev', - 'libselinux1-dev', - 'make', - 'pkg-config', - 'quilt', - 'rsync', - 'swig', - 'systemtap-sdt-dev', - 'zlib1g-dev' - ] - plat.provision_with "export DEBIAN_FRONTEND=noninteractive; apt-get update -qq; apt-get install -qy --no-install-recommends #{packages.join(' ')}" - end - \ No newline at end of file +platform 'debian-11-aarch64' do |plat| + plat.inherit_from_default + packages = [ + 'build-essential', + 'cmake', + 'debhelper', + 'devscripts', + 'fakeroot', + 'libbz2-dev', + 'libreadline-dev', + 'libselinux1-dev', + 'make', + 'pkg-config', + 'quilt', + 'rsync', + 'swig', + 'systemtap-sdt-dev', + 'zlib1g-dev' + ] + plat.provision_with "export DEBIAN_FRONTEND=noninteractive; apt-get update -qq; apt-get install -qy --no-install-recommends #{packages.join(' ')}" +end diff --git a/configs/platforms/debian-11-amd64.rb b/configs/platforms/debian-11-amd64.rb index a4b9abd5..d9c545f8 100644 --- a/configs/platforms/debian-11-amd64.rb +++ b/configs/platforms/debian-11-amd64.rb @@ -1,4 +1,4 @@ -platform "debian-11-amd64" do |plat| +platform 'debian-11-amd64' do |plat| plat.inherit_from_default packages = [ diff --git a/configs/platforms/debian-11-armhf.rb b/configs/platforms/debian-11-armhf.rb index ae5c15a7..d1fb4541 100644 --- a/configs/platforms/debian-11-armhf.rb +++ b/configs/platforms/debian-11-armhf.rb @@ -1,29 +1,29 @@ -platform "debian-11-armhf" do |plat| - plat.servicedir "/lib/systemd/system" - plat.defaultdir "/etc/default" - plat.servicetype "systemd" - plat.codename "bullseye" +platform 'debian-11-armhf' do |plat| + plat.servicedir '/lib/systemd/system' + plat.defaultdir '/etc/default' + plat.servicetype 'systemd' + plat.codename 'bullseye' - plat.install_build_dependencies_with "DEBIAN_FRONTEND=noninteractive; apt-get install -qy --no-install-recommends " + plat.install_build_dependencies_with 'DEBIAN_FRONTEND=noninteractive; apt-get install -qy --no-install-recommends ' packages = [ - "build-essential", - "make", - "quilt", - "pkg-config", - "debhelper", - "rsync", - "fakeroot", - "libbz2-dev", - "libreadline-dev", - "libselinux1-dev", - "make", - "pkg-config", - "cmake", - "gcc", - "swig", - "systemtap-sdt-dev", - "zlib1g-dev" + 'build-essential', + 'make', + 'quilt', + 'pkg-config', + 'debhelper', + 'rsync', + 'fakeroot', + 'libbz2-dev', + 'libreadline-dev', + 'libselinux1-dev', + 'make', + 'pkg-config', + 'cmake', + 'gcc', + 'swig', + 'systemtap-sdt-dev', + 'zlib1g-dev' ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" diff --git a/configs/platforms/debian-12-aarch64.rb b/configs/platforms/debian-12-aarch64.rb index faf85e5c..e2fcc7bf 100644 --- a/configs/platforms/debian-12-aarch64.rb +++ b/configs/platforms/debian-12-aarch64.rb @@ -1,4 +1,4 @@ -platform "debian-12-aarch64" do |plat| +platform 'debian-12-aarch64' do |plat| plat.inherit_from_default packages = [ 'build-essential', @@ -18,4 +18,4 @@ 'zlib1g-dev' ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive; apt-get update -qq; apt-get install -qy --no-install-recommends #{packages.join(' ')}" -end \ No newline at end of file +end diff --git a/configs/platforms/debian-12-amd64.rb b/configs/platforms/debian-12-amd64.rb index f0ed30db..476a264b 100644 --- a/configs/platforms/debian-12-amd64.rb +++ b/configs/platforms/debian-12-amd64.rb @@ -1,4 +1,4 @@ -platform "debian-12-amd64" do |plat| +platform 'debian-12-amd64' do |plat| plat.inherit_from_default packages = [ 'build-essential', diff --git a/configs/platforms/debian-12-armhf.rb b/configs/platforms/debian-12-armhf.rb index 47fe31c5..c556d978 100644 --- a/configs/platforms/debian-12-armhf.rb +++ b/configs/platforms/debian-12-armhf.rb @@ -1,29 +1,29 @@ -platform "debian-12-armhf" do |plat| - plat.servicedir "/lib/systemd/system" - plat.defaultdir "/etc/default" - plat.servicetype "systemd" - plat.codename "bullseye" +platform 'debian-12-armhf' do |plat| + plat.servicedir '/lib/systemd/system' + plat.defaultdir '/etc/default' + plat.servicetype 'systemd' + plat.codename 'bullseye' - plat.install_build_dependencies_with "DEBIAN_FRONTEND=noninteractive; apt-get install -qy --no-install-recommends " + plat.install_build_dependencies_with 'DEBIAN_FRONTEND=noninteractive; apt-get install -qy --no-install-recommends ' packages = [ - "build-essential", - "make", - "quilt", - "pkg-config", - "debhelper", - "rsync", - "fakeroot", - "libbz2-dev", - "libreadline-dev", - "libselinux1-dev", - "make", - "pkg-config", - "cmake", - "gcc", - "swig", - "systemtap-sdt-dev", - "zlib1g-dev" + 'build-essential', + 'make', + 'quilt', + 'pkg-config', + 'debhelper', + 'rsync', + 'fakeroot', + 'libbz2-dev', + 'libreadline-dev', + 'libselinux1-dev', + 'make', + 'pkg-config', + 'cmake', + 'gcc', + 'swig', + 'systemtap-sdt-dev', + 'zlib1g-dev' ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" diff --git a/configs/platforms/debian-13-aarch64.rb b/configs/platforms/debian-13-aarch64.rb index 873220ab..6bfaddd9 100644 --- a/configs/platforms/debian-13-aarch64.rb +++ b/configs/platforms/debian-13-aarch64.rb @@ -1,4 +1,4 @@ -platform "debian-13-aarch64" do |plat| +platform 'debian-13-aarch64' do |plat| plat.inherit_from_default packages = [ 'build-essential', @@ -19,4 +19,3 @@ ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive; apt-get update -qq; apt-get install -qy --no-install-recommends #{packages.join(' ')}" end - diff --git a/configs/platforms/debian-13-amd64.rb b/configs/platforms/debian-13-amd64.rb index d0e3cab2..29d8a5c8 100644 --- a/configs/platforms/debian-13-amd64.rb +++ b/configs/platforms/debian-13-amd64.rb @@ -1,4 +1,4 @@ -platform "debian-13-amd64" do |plat| +platform 'debian-13-amd64' do |plat| plat.inherit_from_default packages = [ 'build-essential', diff --git a/configs/platforms/el-10-aarch64.rb b/configs/platforms/el-10-aarch64.rb index 641f055a..4f950d98 100644 --- a/configs/platforms/el-10-aarch64.rb +++ b/configs/platforms/el-10-aarch64.rb @@ -1,18 +1,18 @@ platform 'el-10-aarch64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ perl perl-FindBin - perl-Getopt-Long + perl-Getopt-Long perl-lib - patch - swig - readline-devel - zlib-devel + patch + swig + readline-devel + zlib-devel systemtap-sdt-devel systemtap-sdt-dtrace - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") - plat.install_build_dependencies_with "dnf install -y --allowerasing " + plat.install_build_dependencies_with 'dnf install -y --allowerasing ' end diff --git a/configs/platforms/el-10-x86_64.rb b/configs/platforms/el-10-x86_64.rb index ee5f1c11..546a5250 100644 --- a/configs/platforms/el-10-x86_64.rb +++ b/configs/platforms/el-10-x86_64.rb @@ -1,10 +1,10 @@ -platform "el-10-x86_64" do |plat| +platform 'el-10-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ perl perl-FindBin - perl-Getopt-Long + perl-Getopt-Long perl-lib libsepol libsepol-devel @@ -16,7 +16,6 @@ systemtap-sdt-devel yum-utils zlib-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") end - diff --git a/configs/platforms/el-7-x86_64.rb b/configs/platforms/el-7-x86_64.rb index 77a6c89b..c0aa8be7 100644 --- a/configs/platforms/el-7-x86_64.rb +++ b/configs/platforms/el-7-x86_64.rb @@ -1,6 +1,6 @@ -platform "el-7-x86_64" do |plat| +platform 'el-7-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ bzip2-devel libsepol libsepol-devel @@ -11,6 +11,6 @@ swig zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("yum install --assumeyes #{packages.join(' ')}") end diff --git a/configs/platforms/el-8-aarch64.rb b/configs/platforms/el-8-aarch64.rb index abc87f17..3f4d1fb5 100644 --- a/configs/platforms/el-8-aarch64.rb +++ b/configs/platforms/el-8-aarch64.rb @@ -1,14 +1,14 @@ platform 'el-8-aarch64' do |plat| plat.inherit_from_default - packages = %w( - perl-Getopt-Long - patch - swig - libselinux-devel - readline-devel - zlib-devel + packages = %w[ + perl-Getopt-Long + patch + swig + libselinux-devel + readline-devel + zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") end diff --git a/configs/platforms/el-8-x86_64.rb b/configs/platforms/el-8-x86_64.rb index 96a79403..917c1202 100644 --- a/configs/platforms/el-8-x86_64.rb +++ b/configs/platforms/el-8-x86_64.rb @@ -1,17 +1,17 @@ -platform "el-8-x86_64" do |plat| +platform 'el-8-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libsepol libsepol-devel libselinux-devel - pkgconfig + pkgconfig readline-devel rpmdevtools swig systemtap-sdt-devel yum-utils zlib-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") end diff --git a/configs/platforms/el-9-aarch64.rb b/configs/platforms/el-9-aarch64.rb index a1590699..71284391 100644 --- a/configs/platforms/el-9-aarch64.rb +++ b/configs/platforms/el-9-aarch64.rb @@ -1,18 +1,18 @@ platform 'el-9-aarch64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ perl perl-FindBin - perl-Getopt-Long + perl-Getopt-Long perl-lib - patch - swig - readline-devel - zlib-devel + patch + swig + readline-devel + zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") - plat.install_build_dependencies_with "dnf install -y --allowerasing " - plat.vmpooler_template "redhat-9-arm64" + plat.install_build_dependencies_with 'dnf install -y --allowerasing ' + plat.vmpooler_template 'redhat-9-arm64' end diff --git a/configs/platforms/el-9-ppc64le.rb b/configs/platforms/el-9-ppc64le.rb index a26c6e20..5c522e7d 100644 --- a/configs/platforms/el-9-ppc64le.rb +++ b/configs/platforms/el-9-ppc64le.rb @@ -1,16 +1,16 @@ platform 'el-9-ppc64le' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ perl perl-FindBin - perl-Getopt-Long + perl-Getopt-Long perl-lib - patch - swig - readline-devel - zlib-devel + patch + swig + readline-devel + zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") - plat.install_build_dependencies_with "dnf install -y --allowerasing " + plat.install_build_dependencies_with 'dnf install -y --allowerasing ' end diff --git a/configs/platforms/el-9-x86_64.rb b/configs/platforms/el-9-x86_64.rb index ca9db925..a8b1b722 100644 --- a/configs/platforms/el-9-x86_64.rb +++ b/configs/platforms/el-9-x86_64.rb @@ -1,10 +1,10 @@ -platform "el-9-x86_64" do |plat| +platform 'el-9-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ perl perl-FindBin - perl-Getopt-Long + perl-Getopt-Long perl-lib libsepol libsepol-devel @@ -15,7 +15,6 @@ systemtap-sdt-devel yum-utils zlib-devel - ) + ] plat.provision_with("dnf install -y --allowerasing #{packages.join(' ')}") end - diff --git a/configs/platforms/redhatfips-8-x86_64.rb b/configs/platforms/redhatfips-8-x86_64.rb index 8692d845..f18dd412 100644 --- a/configs/platforms/redhatfips-8-x86_64.rb +++ b/configs/platforms/redhatfips-8-x86_64.rb @@ -1,3 +1,3 @@ -platform "redhatfips-8-x86_64" do |plat| +platform 'redhatfips-8-x86_64' do |plat| plat.inherit_from_default end diff --git a/configs/platforms/redhatfips-9-x86_64.rb b/configs/platforms/redhatfips-9-x86_64.rb index 21ec6ded..74d8b707 100644 --- a/configs/platforms/redhatfips-9-x86_64.rb +++ b/configs/platforms/redhatfips-9-x86_64.rb @@ -1,3 +1,3 @@ -platform "redhatfips-9-x86_64" do |plat| +platform 'redhatfips-9-x86_64' do |plat| plat.inherit_from_default end diff --git a/configs/platforms/sles-12-x86_64.rb b/configs/platforms/sles-12-x86_64.rb index be47f0eb..cc85dd48 100644 --- a/configs/platforms/sles-12-x86_64.rb +++ b/configs/platforms/sles-12-x86_64.rb @@ -1,6 +1,6 @@ -platform "sles-12-x86_64" do |plat| +platform 'sles-12-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-devel pkgconfig pl-cmake @@ -8,6 +8,6 @@ readline-devel zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("zypper -n --no-gpg-checks install -y #{packages.join(' ')}") end diff --git a/configs/platforms/sles-15-x86_64.rb b/configs/platforms/sles-15-x86_64.rb index d81c1568..c3f78b32 100644 --- a/configs/platforms/sles-15-x86_64.rb +++ b/configs/platforms/sles-15-x86_64.rb @@ -1,12 +1,12 @@ -platform "sles-15-x86_64" do |plat| +platform 'sles-15-x86_64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-devel pkg-config readline-devel zlib-devel systemtap-sdt-devel - ) + ] plat.provision_with("zypper -n --no-gpg-checks install -y #{packages.join(' ')}") end diff --git a/configs/platforms/solaris-11-i386.rb b/configs/platforms/solaris-11-i386.rb index 1ac5501b..5e9cb4b5 100644 --- a/configs/platforms/solaris-11-i386.rb +++ b/configs/platforms/solaris-11-i386.rb @@ -1,13 +1,13 @@ -platform "solaris-11-i386" do |plat| +platform 'solaris-11-i386' do |plat| plat.inherit_from_default - plat.make "gmake" + plat.make 'gmake' - packages = %w( + packages = %w[ pl-binutils-i386 pl-cmake pl-gcc-i386 pl-pkg-config - ) + ] plat.provision_with("pkg install #{packages.join(' ')}") @@ -43,5 +43,5 @@ pkgadd -n -a /var/tmp/vanagon-noask -d http://get.opencsw.org/now all /opt/csw/bin/pkgutil --config=/var/tmp/vanagon-pkgutil.conf -y -i libffi_dev autoconf gcc4core CSWxz-5.2.8,REV=2022.11.16 || exit 1; ntpdate pool.ntp.org] - plat.output_dir File.join("solaris", "11", "PC1") + plat.output_dir File.join('solaris', '11', 'PC1') end diff --git a/configs/platforms/solaris-11-native-sparc.rb b/configs/platforms/solaris-11-native-sparc.rb index 3dcf0b19..8296497a 100644 --- a/configs/platforms/solaris-11-native-sparc.rb +++ b/configs/platforms/solaris-11-native-sparc.rb @@ -1,27 +1,27 @@ # This platform definition is used to build natively on SPARC, unlike # solaris-10/11-sparc, which are cross compiled. Therefore, this definition does # not inherit from vanagon defaults. -platform("solaris-11-sparc", override_name: true) do |plat| - plat.servicedir "/lib/svc/manifest" - plat.defaultdir "/lib/svc/method" - plat.servicetype "smf" +platform('solaris-11-sparc', override_name: true) do |plat| + plat.servicedir '/lib/svc/manifest' + plat.defaultdir '/lib/svc/method' + plat.servicetype 'smf' - plat.vmpooler_template "solaris-11-sparc" - plat.add_build_repository "http://solaris-11-reposync.delivery.puppetlabs.net:81", "puppetlabs.com" - plat.install_build_dependencies_with "pkg install ", " || [[ $? -eq 4 ]]" + plat.vmpooler_template 'solaris-11-sparc' + plat.add_build_repository 'http://solaris-11-reposync.delivery.puppetlabs.net:81', 'puppetlabs.com' + plat.install_build_dependencies_with 'pkg install ', ' || [[ $? -eq 4 ]]' packages = [ - "pl-gcc10", - "pl-libffi", - "pl-openssl", - "pl-yaml-cpp-sparc", + 'pl-gcc10', + 'pl-libffi', + 'pl-openssl', + 'pl-yaml-cpp-sparc', - "autoconf", - "automake", - "cmake", - "gnu-make", - "libtool", - "pkg-config" + 'autoconf', + 'automake', + 'cmake', + 'gnu-make', + 'libtool', + 'pkg-config' ] plat.provision_with("pkg install #{packages.join(' ')}") diff --git a/configs/platforms/solaris-11-sparc.rb b/configs/platforms/solaris-11-sparc.rb index 7c6da323..d1d2e71d 100644 --- a/configs/platforms/solaris-11-sparc.rb +++ b/configs/platforms/solaris-11-sparc.rb @@ -1,12 +1,12 @@ -platform "solaris-11-sparc" do |plat| +platform 'solaris-11-sparc' do |plat| plat.inherit_from_default - + packages = [ - "pl-binutils-sparc", - "pl-cmake", - "pl-gcc-sparc", - "pl-pkg-config", - "pl-ruby" + 'pl-binutils-sparc', + 'pl-cmake', + 'pl-gcc-sparc', + 'pl-pkg-config', + 'pl-ruby' ] plat.provision_with("pkg install #{packages.join(' ')}") diff --git a/configs/platforms/ubuntu-22.04-aarch64.rb b/configs/platforms/ubuntu-22.04-aarch64.rb index f06d8cd8..c09de279 100644 --- a/configs/platforms/ubuntu-22.04-aarch64.rb +++ b/configs/platforms/ubuntu-22.04-aarch64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-22.04-aarch64" do |plat| +platform 'ubuntu-22.04-aarch64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/ubuntu-22.04-amd64.rb b/configs/platforms/ubuntu-22.04-amd64.rb index 9ebc1a08..cf812e74 100644 --- a/configs/platforms/ubuntu-22.04-amd64.rb +++ b/configs/platforms/ubuntu-22.04-amd64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-22.04-amd64" do |plat| +platform 'ubuntu-22.04-amd64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/ubuntu-24.04-aarch64.rb b/configs/platforms/ubuntu-24.04-aarch64.rb index 61e26017..74d06026 100644 --- a/configs/platforms/ubuntu-24.04-aarch64.rb +++ b/configs/platforms/ubuntu-24.04-aarch64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-24.04-aarch64" do |plat| +platform 'ubuntu-24.04-aarch64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/ubuntu-24.04-amd64.rb b/configs/platforms/ubuntu-24.04-amd64.rb index 162cef93..c8a0ddd8 100644 --- a/configs/platforms/ubuntu-24.04-amd64.rb +++ b/configs/platforms/ubuntu-24.04-amd64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-24.04-amd64" do |plat| +platform 'ubuntu-24.04-amd64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/ubuntu-25.04-aarch64.rb b/configs/platforms/ubuntu-25.04-aarch64.rb index 1c16e83b..e44d1635 100644 --- a/configs/platforms/ubuntu-25.04-aarch64.rb +++ b/configs/platforms/ubuntu-25.04-aarch64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-25.04-aarch64" do |plat| +platform 'ubuntu-25.04-aarch64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/ubuntu-25.04-amd64.rb b/configs/platforms/ubuntu-25.04-amd64.rb index c081fc56..ab041ffa 100644 --- a/configs/platforms/ubuntu-25.04-amd64.rb +++ b/configs/platforms/ubuntu-25.04-amd64.rb @@ -1,7 +1,7 @@ -platform "ubuntu-25.04-amd64" do |plat| +platform 'ubuntu-25.04-amd64' do |plat| plat.inherit_from_default - packages = %w( + packages = %w[ libbz2-dev libreadline-dev libselinux1-dev @@ -9,6 +9,6 @@ swig systemtap-sdt-dev zlib1g-dev - ) + ] plat.provision_with "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install -qy --no-install-recommends #{packages.join(' ')}" end diff --git a/configs/platforms/windows-all-x64.rb b/configs/platforms/windows-all-x64.rb index e6e9d664..fb54c1b7 100644 --- a/configs/platforms/windows-all-x64.rb +++ b/configs/platforms/windows-all-x64.rb @@ -1,12 +1,12 @@ -platform "windows-all-x64" do |plat| - plat.vmpooler_template "win-2019-x86_64" - +platform 'windows-all-x64' do |plat| + plat.vmpooler_template 'win-2019-x86_64' + # Not currently used - plat.docker_image "windows:ltsc2019" - plat.docker_registry "mcr.microsoft.com" - plat.docker_arch "linux/amd64" + plat.docker_image 'windows:ltsc2019' + plat.docker_registry 'mcr.microsoft.com' + plat.docker_arch 'linux/amd64' - plat.servicetype "windows" + plat.servicetype 'windows' # Install ruby, ruby-devel, gcc-core, make, git, and libyaml-devel in Cygwin on the Windows image. # Run setup.bat found in the root of this repo. These are needed in order to successfully @@ -28,23 +28,23 @@ 'mingw64-x86_64-zlib', 'ruby', 'ruby-devel', - 'patch', + 'patch' ] plat.provision_with("C:/setup-x86_64.exe -q -P #{packages.join(',')}") - plat.install_build_dependencies_with "C:/setup-x86_64.exe -q -P" + plat.install_build_dependencies_with 'C:/setup-x86_64.exe -q -P' - plat.make "/usr/bin/make" - plat.patch "TMP=/var/tmp /usr/bin/patch.exe --binary" + plat.make '/usr/bin/make' + plat.patch 'TMP=/var/tmp /usr/bin/patch.exe --binary' - plat.platform_triple "x86_64-w64-mingw32" + plat.platform_triple 'x86_64-w64-mingw32' # Putting these here as a reminder where we use them elsewhere. DO NOT # use the full path, just the name of the executable without the extension. # Otherwise, autoconf gets confused. - plat.environment 'CC', "x86_64-w64-mingw32-gcc" - plat.environment 'CXX', "x86_64-w64-mingw32-g++" + plat.environment 'CC', 'x86_64-w64-mingw32-gcc' + plat.environment 'CXX', 'x86_64-w64-mingw32-g++' - plat.package_type "archive" - plat.output_dir "windows" + plat.package_type 'archive' + plat.output_dir 'windows' end diff --git a/configs/platforms/windowsfips-2016-x64.rb b/configs/platforms/windowsfips-2016-x64.rb index 4d32b41e..6338ce7c 100644 --- a/configs/platforms/windowsfips-2016-x64.rb +++ b/configs/platforms/windowsfips-2016-x64.rb @@ -1,4 +1,4 @@ -platform "windowsfips-2016-x64" do |plat| +platform 'windowsfips-2016-x64' do |plat| plat.vmpooler_template 'win-2016-fips-x86_64' plat.servicetype 'windows' @@ -6,26 +6,26 @@ visual_studio_sdk_version = 'win8.1' # We need to ensure we install chocolatey prior to adding any nuget repos. Otherwise, everything will fall over - plat.add_build_repository "https://artifactory.delivery.puppetlabs.net/artifactory/generic/buildsources/windows/chocolatey/install-chocolatey-1.4.0.ps1" - plat.provision_with "C:/ProgramData/chocolatey/bin/choco.exe feature enable -n useFipsCompliantChecksums" + plat.add_build_repository 'https://artifactory.delivery.puppetlabs.net/artifactory/generic/buildsources/windows/chocolatey/install-chocolatey-1.4.0.ps1' + plat.provision_with 'C:/ProgramData/chocolatey/bin/choco.exe feature enable -n useFipsCompliantChecksums' - plat.add_build_repository "https://artifactory.delivery.puppetlabs.net/artifactory/api/nuget/nuget" + plat.add_build_repository 'https://artifactory.delivery.puppetlabs.net/artifactory/api/nuget/nuget' # C:\tools is likely added by mingw, however because we also want to use that # dir for vsdevcmd.bat we create it for safety - plat.provision_with "mkdir -p C:/tools" + plat.provision_with 'mkdir -p C:/tools' # We don't want to install any packages from the chocolatey repo by accident - plat.provision_with "C:/ProgramData/chocolatey/bin/choco.exe sources remove -name chocolatey" + plat.provision_with 'C:/ProgramData/chocolatey/bin/choco.exe sources remove -name chocolatey' packages = [ - "cmake", - "pl-gdbm-#{self._platform.architecture}", - "pl-iconv-#{self._platform.architecture}", - "pl-libffi-#{self._platform.architecture}", - "pl-pdcurses-#{self._platform.architecture}", - "pl-toolchain-#{self._platform.architecture}", - "pl-zlib-#{self._platform.architecture}", - "mingw-w64 -version 5.2.0 -debug", + 'cmake', + "pl-gdbm-#{_platform.architecture}", + "pl-iconv-#{_platform.architecture}", + "pl-libffi-#{_platform.architecture}", + "pl-pdcurses-#{_platform.architecture}", + "pl-toolchain-#{_platform.architecture}", + "pl-zlib-#{_platform.architecture}", + 'mingw-w64 -version 5.2.0 -debug' ] packages.each do |name| @@ -42,13 +42,13 @@ # Note that the unruly \'s in the following string escape the following sequence to literal chars: "\" and then \"" plat.provision_with "touch C:/tools/vsdevcmd.bat && echo \"\\\"%ProgramFiles(x86)%\\Microsoft Visual Studio\\#{visual_studio_version}\\BuildTools\\Common7\\Tools\\vsdevcmd\\\"\" >> C:/tools/vsdevcmd.bat" - plat.install_build_dependencies_with "C:/ProgramData/chocolatey/bin/choco.exe install -y --no-progress" + plat.install_build_dependencies_with 'C:/ProgramData/chocolatey/bin/choco.exe install -y --no-progress' - plat.make "/usr/bin/make" - plat.patch "TMP=/var/tmp /usr/bin/patch.exe --binary" + plat.make '/usr/bin/make' + plat.patch 'TMP=/var/tmp /usr/bin/patch.exe --binary' - plat.platform_triple "x86_64-w64-mingw32" + plat.platform_triple 'x86_64-w64-mingw32' - plat.package_type "archive" - plat.output_dir "windows" + plat.package_type 'archive' + plat.output_dir 'windows' end diff --git a/configs/projects/_shared-agent-components.rb b/configs/projects/_shared-agent-components.rb deleted file mode 100644 index ed0ce1ef..00000000 --- a/configs/projects/_shared-agent-components.rb +++ /dev/null @@ -1,83 +0,0 @@ -# This "project" is designed to be shared by all puppet-agent projects -# See configs/projects/agent-runtime-.rb -unless defined?(proj) - warn('These are components shared by all puppet-agent projects; They cannot be built as a standalone project.') - warn('Please choose one of the other puppet-agent projects instead.') - exit 1 -end - -######## -# Common components for all versions of puppet-agent -######## - -# Common components required by all agent branches -proj.component 'runtime-agent' - -matchdata = platform.settings[:ruby_version].match(/(\d+)\.\d+(\.\d+)?/) -ruby_major_version = matchdata[1].to_i -# Ruby 3.2 does not package these two libraries so we need to add them as a component -if ruby_major_version >= 3 - proj.component 'libffi' - proj.component 'libyaml' -end - -if proj.openssl_version =~ /^3\./ # All Ruby 3 builds will use OpenSSL 3, including FIPS - proj.component "openssl-#{proj.openssl_version}" -elsif platform.name =~ /^redhatfips-.*/ # This is only Ruby 2 builds - proj.component "openssl-1.1.1-fips" -else - proj.component "openssl-fips-2.0.16" if platform.name =~ /windowsfips-/ && proj.openssl_version =~ /1.0.2/ - proj.component "openssl-#{proj.openssl_version}" -end - -proj.component 'curl' -proj.component 'puppet-ca-bundle' -proj.component "ruby-#{proj.ruby_version}" -proj.component "readline" if platform.is_macos? -proj.component 'augeas' unless platform.is_windows? -proj.component 'libxml2' unless platform.is_windows? -proj.component 'libxslt' unless platform.is_windows? - -proj.component 'ruby-augeas' unless platform.is_windows? -proj.component 'ruby-shadow' unless platform.is_aix? || platform.is_windows? -# We only build ruby-selinux for EL, Fedora, Debian and Ubuntu (amd64/i386) -if platform.is_el? || platform.is_fedora? || platform.is_debian? || (platform.is_ubuntu? && platform.architecture !~ /ppc64el$/) - proj.component 'ruby-selinux' -end - -# libedit is used instead of readline on these platforms -if platform.is_solaris? || platform.name == 'aix-7.1-ppc' - proj.component 'libedit' -end - -proj.component 'pl-ruby-patch' if platform.is_cross_compiled? - -proj.component 'rubygem-hocon' -proj.component 'rubygem-deep_merge' -proj.component 'rubygem-net-ssh' -proj.component 'rubygem-semantic_puppet' -proj.component 'rubygem-text' -proj.component 'rubygem-locale' -proj.component 'rubygem-gettext' -proj.component 'rubygem-fast_gettext' -proj.component 'rubygem-ffi' - -# These gems are still included in Ruby 3.2, but we include them because -# OpenFact requires them for Ruby 3.4 support, and the agent will need to -# do the same once we get to Ruby 3.4+ in OpenVox 9. -proj.component 'rubygem-logger' -proj.component 'rubygem-base64' - -# We add rexml explicitly in here because even though ruby 3 ships with rexml as its default gem, the version -# of rexml it ships with contains CVE-2024-41946, CVE-2024-41123, CVE-2024-35176 and CVE-2024-39908. -# So, we add it here to update to a higher version -# free from the CVEs. -proj.component 'rubygem-rexml' - -if platform.is_windows? || platform.is_solaris? || platform.is_aix? - proj.component 'rubygem-minitar' -end - -if platform.is_macos? - proj.component 'rubygem-CFPropertyList' -end diff --git a/configs/projects/_shared-agent-settings.rb b/configs/projects/_shared-agent-settings.rb index a242f619..96e4cc47 100644 --- a/configs/projects/_shared-agent-settings.rb +++ b/configs/projects/_shared-agent-settings.rb @@ -26,76 +26,74 @@ proj.homepage 'https://github.com/OpenVoxProject' proj.version_from_git -proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory") +proj.setting(:artifactory_url, 'https://artifactory.delivery.puppetlabs.net/artifactory') proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources") if platform.is_windows? # In order not to break people, we need to keep the paths Puppetlabs/Puppet - proj.setting(:company_id, "VoxPupuli") - proj.setting(:pl_company_id, "PuppetLabs") - proj.setting(:product_id, "OpenVox") - proj.setting(:pl_product_id, "Puppet") - if platform.architecture == "x64" - proj.setting(:base_dir, "ProgramFiles64Folder") + proj.setting(:company_id, 'VoxPupuli') + proj.setting(:pl_company_id, 'PuppetLabs') + proj.setting(:product_id, 'OpenVox') + proj.setting(:pl_product_id, 'Puppet') + if platform.architecture == 'x64' + proj.setting(:base_dir, 'ProgramFiles64Folder') else - proj.setting(:base_dir, "ProgramFilesFolder") + proj.setting(:base_dir, 'ProgramFilesFolder') end # We build for windows not in the final destination, but in the paths that correspond # to the directory ids expected by WIX. This will allow for a portable installation (ideally). - proj.setting(:install_root, File.join("C:", proj.base_dir, proj.pl_company_id, proj.pl_product_id)) - proj.setting(:sysconfdir, File.join("C:", "CommonAppDataFolder", proj.pl_company_id)) - proj.setting(:tmpfilesdir, "C:/Windows/Temp") + proj.setting(:install_root, File.join('C:', proj.base_dir, proj.pl_company_id, proj.pl_product_id)) + proj.setting(:sysconfdir, File.join('C:', 'CommonAppDataFolder', proj.pl_company_id)) + proj.setting(:tmpfilesdir, 'C:/Windows/Temp') else - proj.setting(:install_root, "/opt/puppetlabs") + proj.setting(:install_root, '/opt/puppetlabs') if platform.is_macos? - proj.setting(:sysconfdir, "/private/etc/puppetlabs") + proj.setting(:sysconfdir, '/private/etc/puppetlabs') else - proj.setting(:sysconfdir, "/etc/puppetlabs") + proj.setting(:sysconfdir, '/etc/puppetlabs') end - proj.setting(:logdir, "/var/log/puppetlabs") + proj.setting(:logdir, '/var/log/puppetlabs') if platform.is_linux? && platform.name !~ /sles-11|el-6/ - proj.setting(:piddir, "/run/puppetlabs") + proj.setting(:piddir, '/run/puppetlabs') else - proj.setting(:piddir, "/var/run/puppetlabs") + proj.setting(:piddir, '/var/run/puppetlabs') end - proj.setting(:tmpfilesdir, "/usr/lib/tmpfiles.d") + proj.setting(:tmpfilesdir, '/usr/lib/tmpfiles.d') end -proj.setting(:miscdir, File.join(proj.install_root, "misc")) -proj.setting(:prefix, File.join(proj.install_root, "puppet")) -proj.setting(:bindir, File.join(proj.prefix, "bin")) -proj.setting(:libdir, File.join(proj.prefix, "lib")) -proj.setting(:link_bindir, File.join(proj.install_root, "bin")) -proj.setting(:includedir, File.join(proj.prefix, "include")) -proj.setting(:datadir, File.join(proj.prefix, "share")) -proj.setting(:mandir, File.join(proj.datadir, "man")) +proj.setting(:miscdir, File.join(proj.install_root, 'misc')) +proj.setting(:prefix, File.join(proj.install_root, 'puppet')) +proj.setting(:bindir, File.join(proj.prefix, 'bin')) +proj.setting(:libdir, File.join(proj.prefix, 'lib')) +proj.setting(:link_bindir, File.join(proj.install_root, 'bin')) +proj.setting(:includedir, File.join(proj.prefix, 'include')) +proj.setting(:datadir, File.join(proj.prefix, 'share')) +proj.setting(:mandir, File.join(proj.datadir, 'man')) -if platform.is_windows? - proj.setting(:windows_tools, proj.bindir) -end +proj.setting(:windows_tools, proj.bindir) if platform.is_windows? proj.setting(:ruby_dir, proj.prefix) proj.setting(:ruby_bindir, proj.bindir) raise "Couldn't find a :ruby_version setting in the project file" unless proj.ruby_version + ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2.0') ruby_version_y = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') -ruby_version_x = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1') proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version)) -proj.setting(:ruby_vendordir, File.join(proj.libdir, "ruby", "vendor_ruby")) +proj.setting(:ruby_vendordir, File.join(proj.libdir, 'ruby', 'vendor_ruby')) -proj.setting(:ruby_dir_base, File.join(proj.libdir, "ruby")) +proj.setting(:ruby_dir_base, File.join(proj.libdir, 'ruby')) proj.setting(:ruby_dir_base_version, File.join(proj.ruby_dir_base, ruby_base_version)) proj.setting(:rubygems_dir, File.join(proj.ruby_dir_base_version, 'rubygems')) proj.setting(:rubygems_ssl_dir, File.join(proj.rubygems_dir, 'ssl_certs')) # Cross-compiled Linux platforms -platform_triple = "ppc64le-redhat-linux" if platform.architecture == "ppc64le" -platform_triple = "powerpc64le-suse-linux" if platform.architecture == "ppc64le" && platform.name =~ /^sles-/ -platform_triple = "powerpc64le-linux-gnu" if platform.architecture == "ppc64el" -platform_triple = "arm-linux-gnueabihf" if platform.architecture == "armhf" -platform_triple = "aarch64-apple-darwin" if platform.is_cross_compiled? && platform.is_macos? +platform_triple = 'ppc64le-redhat-linux' if platform.architecture == 'ppc64le' +platform_triple = 'powerpc64le-suse-linux' if platform.architecture == 'ppc64le' && platform.name =~ /^sles-/ +platform_triple = 'powerpc64le-linux-gnu' if platform.architecture == 'ppc64el' +platform_triple = 'arm-linux-gnueabihf' if platform.architecture == 'armhf' +platform_triple = 'aarch64-apple-darwin' if platform.is_cross_compiled? && platform.is_macos? # Ruby's build process needs a functional "baseruby". When native compiling, # ruby will build "miniruby" and use that as "baseruby". When cross compiling, @@ -103,28 +101,28 @@ # # Our build process also needs a "host" ruby to install rubygem-* components. if platform.is_windows? - proj.setting(:host_ruby, File.join(proj.ruby_bindir, "ruby.exe")) - proj.setting(:host_gem, File.join(proj.ruby_bindir, "gem.bat")) + proj.setting(:host_ruby, File.join(proj.ruby_bindir, 'ruby.exe')) + proj.setting(:host_gem, File.join(proj.ruby_bindir, 'gem.bat')) elsif platform.is_cross_compiled? && (platform.is_linux? || platform.is_solaris?) if platform.name =~ /solaris-10-sparc/ - proj.setting(:host_ruby, "/opt/csw/bin/ruby") - proj.setting(:host_gem, "/opt/csw/bin/gem2.0") + proj.setting(:host_ruby, '/opt/csw/bin/ruby') + proj.setting(:host_gem, '/opt/csw/bin/gem2.0') else - proj.setting(:host_ruby, "/opt/pl-build-tools/bin/ruby") - proj.setting(:host_gem, "/opt/pl-build-tools/bin/gem") + proj.setting(:host_ruby, '/opt/pl-build-tools/bin/ruby') + proj.setting(:host_gem, '/opt/pl-build-tools/bin/gem') end elsif platform.is_cross_compiled? && platform.is_macos? proj.setting(:host_ruby, "/usr/local/opt/ruby@#{ruby_version_y}/bin/ruby") proj.setting(:host_gem, "/usr/local/opt/ruby@#{ruby_version_y}/bin/gem") else - proj.setting(:host_ruby, File.join(proj.ruby_bindir, "ruby")) - proj.setting(:host_gem, File.join(proj.ruby_bindir, "gem")) + proj.setting(:host_ruby, File.join(proj.ruby_bindir, 'ruby')) + proj.setting(:host_gem, File.join(proj.ruby_bindir, 'gem')) end if platform.is_cross_compiled_linux? host = "--host #{platform_triple}" elsif platform.is_cross_compiled? && platform.is_macos? - host = "--host aarch64-apple-darwin --build x86_64-apple-darwin --target aarch64-apple-darwin" + host = '--host aarch64-apple-darwin --build x86_64-apple-darwin --target aarch64-apple-darwin' elsif platform.is_solaris? if platform.architecture == 'i386' platform_triple = "#{platform.architecture}-pc-solaris2.#{platform.os_version}" @@ -142,9 +140,7 @@ proj.setting(:gem_uninstall, "#{proj.host_gem} uninstall --all --ignore-dependencies ") # For AIX, we use the triple to install a better rbconfig -if platform.is_aix? - platform_triple = "powerpc-ibm-aix#{platform.os_version}.0.0" -end +platform_triple = "powerpc-ibm-aix#{platform.os_version}.0.0" if platform.is_aix? proj.setting(:platform_triple, platform_triple) proj.setting(:host, host) @@ -152,34 +148,23 @@ # Load default compiler settings instance_eval File.read('configs/projects/_shared-compiler-settings.rb') -# Always use OpenSSL 3, even on FIPS, when we're building for Ruby 3 -if ruby_version_x == "3" - proj.setting(:openssl_version, '3.0') -elsif platform.name =~ /^redhatfips-/ # This is only Ruby 2 builds - proj.setting(:openssl_version, '1.1.1-fips') -elsif platform.name =~ /^windowsfips-/ - proj.setting(:openssl_version, '1.0.2') -else - proj.setting(:openssl_version, '1.1.1') -end +proj.setting(:openssl_version, '3.0') if platform.is_windows? - proj.setting(:gcc_root, "/usr/x86_64-w64-mingw32/sys-root/mingw") + proj.setting(:gcc_root, '/usr/x86_64-w64-mingw32/sys-root/mingw') proj.setting(:gcc_bindir, "#{proj.gcc_root}/bin") - proj.setting(:tools_root, "/usr/x86_64-w64-mingw32/sys-root/mingw") + proj.setting(:tools_root, '/usr/x86_64-w64-mingw32/sys-root/mingw') # If tools_root ever differs from gcc_root again, add it back here. proj.setting(:cppflags, "-I#{proj.gcc_root}/include -I#{proj.gcc_root}/include/readline -I#{proj.includedir}") - proj.setting(:cflags, "#{proj.cppflags}") + proj.setting(:cflags, proj.cppflags) ldflags = "-L#{proj.tools_root}/lib -L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat" - if platform.name !~ /windowsfips-/ || name != 'agent-runtime-7.x' - ldflags += ' -Wl,--dynamicbase' - end + ldflags += ' -Wl,--dynamicbase' if platform.name !~ /windowsfips-/ || name != 'agent-runtime-7.x' proj.setting(:ldflags, ldflags) - proj.setting(:cygwin, "nodosfilewarning winsymlinks:native") + proj.setting(:cygwin, 'nodosfilewarning winsymlinks:native') else - proj.setting(:tools_root, "/opt/pl-build-tools") + proj.setting(:tools_root, '/opt/pl-build-tools') end if platform.is_macos? @@ -199,13 +184,7 @@ proj.setting(:ldflags, "-L#{proj.libdir}") end -if platform.is_aix? - if platform.name == 'aix-7.1-ppc' - proj.setting(:ldflags, "-Wl,-brtl -L#{proj.libdir} -L/opt/pl-build-tools/lib") - else - proj.setting(:ldflags, "-Wl,-brtl -L#{proj.libdir}") - end -end +proj.setting(:ldflags, "-Wl,-brtl -L#{proj.libdir}") if platform.is_aix? if platform.is_solaris? proj.identifier 'voxpupuli.org' @@ -217,15 +196,17 @@ # Most branches of puppet-agent use these openssl flags in addition to the defaults in configs/components/openssl.rb - # Individual projects can override these if necessary. -proj.setting(:openssl_extra_configure_flags, [ - 'no-dtls', - 'no-dtls1', - 'no-idea', - 'no-seed', - # 'no-ssl2-method', - 'no-weak-ssl-ciphers', - '-DOPENSSL_NO_HEARTBEATS', -]) unless proj.settings[:openssl_extra_configure_flags] +unless proj.settings[:openssl_extra_configure_flags] + proj.setting(:openssl_extra_configure_flags, [ + 'no-dtls', + 'no-dtls1', + 'no-idea', + 'no-seed', + # 'no-ssl2-method', + 'no-weak-ssl-ciphers', + '-DOPENSSL_NO_HEARTBEATS' + ]) +end # Commmon platform-specific settings for all agent branches: platform = proj.get_platform diff --git a/configs/projects/_shared-compiler-settings.rb b/configs/projects/_shared-compiler-settings.rb index 260f928e..b8f93bf0 100644 --- a/configs/projects/_shared-compiler-settings.rb +++ b/configs/projects/_shared-compiler-settings.rb @@ -1,7 +1,7 @@ # Define default CFLAGS and LDFLAGS for most platforms, and then # tweak or adjust them as needed. proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include") -proj.setting(:cflags, "#{proj.cppflags}") +proj.setting(:cflags, proj.cppflags) proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}") # Platform specific overrides or settings, which may override the defaults @@ -11,12 +11,11 @@ # We only do this on platforms that use their default OS toolchain since pl-gcc versions # are too old to support these flags. -if((platform.is_sles? && platform.os_version.to_i >= 15) || - (platform.is_el? && platform.os_version.to_i == 8 && platform.architecture !~ /ppc64/) || - (platform.is_debian? && platform.os_version.to_i >= 10) || - (platform.is_ubuntu? && platform.os_version.to_i >= 22) || - platform.is_fedora? - ) +if (platform.is_sles? && platform.os_version.to_i >= 15) || + (platform.is_el? && platform.os_version.to_i == 8 && platform.architecture !~ /ppc64/) || + (platform.is_debian? && platform.os_version.to_i >= 10) || + (platform.is_ubuntu? && platform.os_version.to_i >= 22) || + platform.is_fedora? proj.setting(:supports_pie, true) proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2") proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2') diff --git a/configs/projects/agent-runtime-7.x.rb b/configs/projects/agent-runtime-7.x.rb deleted file mode 100644 index c1e7e4f2..00000000 --- a/configs/projects/agent-runtime-7.x.rb +++ /dev/null @@ -1,76 +0,0 @@ -project 'agent-runtime-7.x' do |proj| - - # Set preferred component versions if they differ from defaults: - proj.setting :ruby_version, '2.7.8' - - # Solaris and AIX depend on libedit which breaks augeas compliation starting with 1.13.0 - if platform.is_solaris? || platform.is_aix? - proj.setting :augeas_version, '1.12.0' - else - proj.setting :augeas_version, '1.14.1' - end - - proj.setting :curl_version, '7.88.1' - - ######## - # Load shared agent settings - ######## - - instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-agent-settings.rb')) - - ######## - # Settings specific to the next branch - ######## - - # Directory for gems shared by puppet and puppetserver - proj.setting(:puppet_gem_vendor_dir, File.join(proj.libdir, "ruby", "vendor_gems")) - - # Ruby 2.7 loads openssl on installation. Because pl-ruby was not - # built with openssl support, we switch to compile with system - # rubies. - # Solaris 11 seems to work with pl-ruby, and 10 is handled in _shared-agent-settings.rb. - if platform.is_cross_compiled_linux? - proj.setting(:host_ruby, "/usr/bin/ruby") - end - - # Ruby 2.6 (RubyGems 3.0.1) removed the --ri and --rdoc - # options. Switch to using --no-document which is available starting - # with RubyGems 2.0.0preview2. This should also cover cross-compiled - # platforms that use older rubies. - proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local") - - ######## - # Load shared agent components - ######## - - instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-agent-components.rb')) - - ######## - # Components specific to the main branch - ######## - - # When adding components to this list, please - # add them to pe-installer-runtime-main as well - proj.component 'rubygem-concurrent-ruby' - proj.component 'rubygem-multi_json' - proj.component 'rubygem-optimist' - proj.component 'rubygem-highline' - proj.component 'rubygem-hiera-eyaml' - proj.component 'rubygem-thor' - proj.component 'rubygem-scanf' - - if platform.is_linux? - proj.component "virt-what" - proj.component "dmidecode" unless platform.architecture =~ /ppc64/ - end - - unless platform.is_windows? - proj.component 'rubygem-sys-filesystem' - end - - # Nokogiri and dependencies to improve macOS performance (PUP-11332) - if platform.is_macos? - proj.component 'rubygem-nokogiri' - proj.component 'rubygem-mini_portile2' - end -end diff --git a/configs/projects/agent-runtime-main.rb b/configs/projects/agent-runtime-main.rb index af2210e3..48b5f21a 100644 --- a/configs/projects/agent-runtime-main.rb +++ b/configs/projects/agent-runtime-main.rb @@ -1,11 +1,10 @@ project 'agent-runtime-main' do |proj| - # Set preferred component versions if they differ from defaults: proj.setting :ruby_version, '3.2' # Leave the .Z out for Ruby 3.2 proj.setting :rubygem_highline_version, '3.0.1' # Solaris and AIX depend on libedit which breaks augeas compliation starting with 1.13.0 - if platform.is_solaris? || platform.name == 'aix-7.1-ppc' + if platform.is_solaris? proj.setting :augeas_version, '1.12.0' else proj.setting :augeas_version, '1.14.1' @@ -22,15 +21,13 @@ ######## # Directory for gems shared by puppet and puppetserver - proj.setting(:puppet_gem_vendor_dir, File.join(proj.libdir, "ruby", "vendor_gems")) + proj.setting(:puppet_gem_vendor_dir, File.join(proj.libdir, 'ruby', 'vendor_gems')) # Ruby 2.7 loads openssl on installation. Because pl-ruby was not # built with openssl support, we switch to compile with system # rubies. # Solaris 11 seems to work with pl-ruby, and 10 is handled in _shared-agent-settings.rb. - if platform.is_cross_compiled_linux? - proj.setting(:host_ruby, "/usr/bin/ruby") - end + proj.setting(:host_ruby, '/usr/bin/ruby') if platform.is_cross_compiled_linux? # Ruby 2.6 (RubyGems 3.0.1) removed the --ri and --rdoc # options. Switch to using --no-document which is available starting @@ -39,41 +36,96 @@ proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local") ######## - # Load shared agent components + # Components + # Use full blocks here, rather than single line logic so that + # automation can insert components as needed. ######## - instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-agent-components.rb')) + # rubocop:disable Style/IfUnlessModifier + proj.component 'runtime-agent' + proj.component 'libffi' + proj.component 'libyaml' + proj.component "openssl-#{proj.openssl_version}" - ######## - # Components specific to the main branch - ######## + proj.component 'curl' + proj.component 'puppet-ca-bundle' + proj.component "ruby-#{proj.ruby_version}" - # When adding components to this list, please - # add them to pe-installer-runtime-main as well + proj.component 'rubygem-base64' proj.component 'rubygem-concurrent-ruby' + proj.component 'rubygem-deep_merge' + proj.component 'rubygem-erubi' + proj.component 'rubygem-fast_gettext' + proj.component 'rubygem-ffi' + proj.component 'rubygem-fiddle' + proj.component 'rubygem-gettext' + proj.component 'rubygem-racc' + proj.component 'rubygem-hiera-eyaml' + proj.component 'rubygem-highline' + proj.component 'rubygem-reline' + proj.component 'rubygem-io-console' + proj.component 'rubygem-hocon' + proj.component 'rubygem-locale' + proj.component 'rubygem-logger' proj.component 'rubygem-multi_json' + proj.component 'rubygem-net-ftp' + proj.component 'rubygem-time' + proj.component 'rubygem-date' + proj.component 'rubygem-net-protocol' + proj.component 'rubygem-timeout' + proj.component 'rubygem-net-ssh' proj.component 'rubygem-optimist' - proj.component 'rubygem-highline' - proj.component 'rubygem-hiera-eyaml' - proj.component 'rubygem-thor' + proj.component 'rubygem-prime' + proj.component 'rubygem-singleton' + proj.component 'rubygem-forwardable' + proj.component 'rubygem-semantic_puppet' proj.component 'rubygem-scanf' + proj.component 'rubygem-text' + proj.component 'rubygem-thor' - if platform.is_linux? - proj.component "virt-what" - proj.component "dmidecode" unless platform.architecture =~ /ppc64/ - end + # We add rexml explicitly in here because even though ruby 3 ships with rexml as its default gem, the version + # of rexml it ships with can contain CVEs. So, we add it here to update to a higher version free from the CVEs. + proj.component 'rubygem-rexml' unless platform.is_windows? + proj.component 'augeas' + proj.component 'ruby-augeas' + proj.component 'libxml2' proj.component 'rubygem-sys-filesystem' + proj.component 'rubygem-win32ole' end - # Nokogiri and dependencies to improve macOS performance (PUP-11332) if platform.is_macos? - proj.component 'rubygem-nokogiri' - proj.component 'rubygem-mini_portile2' + proj.component 'readline' + proj.component 'rubygem-CFPropertyList' + proj.component 'rubygem-nkf' end - # Dependencies for gettext for Ruby >= 3.2 (PA-4815) - proj.component 'rubygem-erubi' - proj.component 'rubygem-prime' + unless platform.is_aix? || platform.is_windows? + proj.component 'ruby-shadow' + end + + # We only build ruby-selinux for EL, Fedora, Debian and Ubuntu (amd64/i386) + if platform.is_el? || platform.is_fedora? || platform.is_debian? || (platform.is_ubuntu? && platform.architecture !~ /ppc64el$/) + proj.component 'ruby-selinux' + end + + # libedit is used instead of readline on these platforms + if platform.is_solaris? + proj.component 'libedit' + end + + if platform.is_cross_compiled? + proj.component 'pl-ruby-patch' + end + + if platform.is_windows? || platform.is_solaris? || platform.is_aix? + proj.component 'rubygem-minitar' + end + + if platform.is_linux? + proj.component 'virt-what' + proj.component 'dmidecode' unless platform.architecture =~ /ppc64/ + end + # rubocop:enable Style/IfUnlessModifier end diff --git a/configs/projects/openbolt-runtime.rb b/configs/projects/openbolt-runtime.rb index 0c355219..f1d25d6e 100644 --- a/configs/projects/openbolt-runtime.rb +++ b/configs/projects/openbolt-runtime.rb @@ -57,8 +57,6 @@ end ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2.0') - ruby_version_y = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1.\2') - ruby_version_x = proj.ruby_version.gsub(/(\d+)\.(\d+)(\.\d+)?/, '\1') proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version)) proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local --bindir=#{proj.ruby_bindir}") @@ -74,13 +72,12 @@ # Platform specific overrides or settings, which may override the defaults if platform.is_windows? - arch = platform.architecture == 'x64' ? '64' : '32' - proj.setting(:gcc_root, "/usr/x86_64-w64-mingw32/sys-root/mingw") + proj.setting(:gcc_root, '/usr/x86_64-w64-mingw32/sys-root/mingw') proj.setting(:gcc_bindir, "#{proj.gcc_root}/bin") - proj.setting(:tools_root, "/usr/x86_64-w64-mingw32/sys-root/mingw") + proj.setting(:tools_root, '/usr/x86_64-w64-mingw32/sys-root/mingw') # If tools_root ever differs from gcc_root again, add it back here. proj.setting(:cppflags, "-I#{proj.gcc_root}/include -I#{proj.gcc_root}/include/readline -I#{proj.includedir}") - proj.setting(:cflags, "#{proj.cppflags}") + proj.setting(:cflags, proj.cppflags) proj.setting(:ldflags, "-L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat -Wl,--dynamicbase") proj.setting(:cygwin, 'nodosfilewarning winsymlinks:native') end @@ -97,16 +94,21 @@ # These flags are applied in addition to the defaults in configs/component/openssl.rb. proj.setting(:openssl_extra_configure_flags, [ - 'no-dtls', - 'no-dtls1', - 'no-idea', - 'no-seed', - 'no-weak-ssl-ciphers', - '-DOPENSSL_NO_HEARTBEATS', - ]) + 'no-dtls', + 'no-dtls1', + 'no-idea', + 'no-seed', + 'no-weak-ssl-ciphers', + '-DOPENSSL_NO_HEARTBEATS' + ]) - # What to build? - # -------------- + ######## + # Components + # Use full blocks here, rather than single line logic so that + # automation can insert components as needed. + ######## + + # rubocop:disable Style/IfUnlessModifier # Required to build ruby >=3.0.0 proj.component 'libffi' @@ -133,7 +135,10 @@ proj.component 'rubygem-text' proj.component 'rubygem-locale' proj.component 'rubygem-gettext' + proj.component 'rubygem-racc' proj.component 'rubygem-prime' + proj.component 'rubygem-singleton' + proj.component 'rubygem-forwardable' proj.component 'rubygem-fast_gettext' proj.component 'rubygem-scanf' proj.component 'rubygem-semantic_puppet' @@ -143,19 +148,31 @@ # hiera-eyaml and its dependencies proj.component 'rubygem-highline' + proj.component 'rubygem-reline' + proj.component 'rubygem-io-console' proj.component 'rubygem-optimist' proj.component 'rubygem-hiera-eyaml' # faraday and its dependencies proj.component 'rubygem-faraday' + proj.component 'rubygem-json' proj.component 'rubygem-faraday-em_http' + proj.component 'rubygem-em-http-request' + proj.component 'rubygem-http_parser.rb' + proj.component 'rubygem-eventmachine' + proj.component 'rubygem-em-socksify' + proj.component 'rubygem-cookiejar' proj.component 'rubygem-faraday-em_synchrony' proj.component 'rubygem-faraday-excon' + proj.component 'rubygem-excon' proj.component 'rubygem-faraday-httpclient' proj.component 'rubygem-faraday-multipart' proj.component 'rubygem-faraday-net_http' + proj.component 'rubygem-net-http' + proj.component 'rubygem-uri' proj.component 'rubygem-faraday-net_http_persistent' proj.component 'rubygem-faraday-patron' + proj.component 'rubygem-patron' proj.component 'rubygem-faraday-rack' proj.component 'rubygem-faraday-retry' proj.component 'rubygem-faraday-follow_redirects' @@ -166,11 +183,13 @@ proj.component 'rubygem-aws-eventstream' proj.component 'rubygem-aws-partitions' proj.component 'rubygem-aws-sdk-core' + proj.component 'rubygem-bigdecimal' proj.component 'rubygem-aws-sdk-ec2' proj.component 'rubygem-aws-sigv4' proj.component 'rubygem-bindata' proj.component 'rubygem-builder' proj.component 'rubygem-CFPropertyList' + proj.component 'rubygem-nkf' proj.component 'rubygem-colored2' proj.component 'rubygem-concurrent-ruby' proj.component 'rubygem-connection_pool' @@ -178,10 +197,13 @@ proj.component 'rubygem-erubi' proj.component 'rubygem-openfact' proj.component 'rubygem-ffi' + proj.component 'rubygem-fiddle' proj.component 'rubygem-gssapi' proj.component 'rubygem-gyoku' + proj.component 'rubygem-rexml' proj.component 'rubygem-hiera' proj.component 'rubygem-httpclient' + proj.component 'rubygem-mutex_m' proj.component 'rubygem-jmespath' proj.component 'rubygem-jwt' proj.component 'rubygem-little-plugger' @@ -191,6 +213,11 @@ proj.component 'rubygem-molinillo' proj.component 'rubygem-multi_json' proj.component 'rubygem-multipart-post' + proj.component 'rubygem-net-ftp' + proj.component 'rubygem-time' + proj.component 'rubygem-date' + proj.component 'rubygem-net-protocol' + proj.component 'rubygem-timeout' proj.component 'rubygem-net-http-persistent' proj.component 'rubygem-net-scp' proj.component 'rubygem-net-ssh' @@ -199,10 +226,14 @@ proj.component 'rubygem-orchestrator_client' proj.component 'rubygem-paint' proj.component 'rubygem-public_suffix' - proj.component 'rubygem-puppet' + proj.component 'rubygem-openvox' + proj.component 'rubygem-ostruct' + proj.component 'rubygem-benchmark' + proj.component 'rubygem-getoptlong' + proj.component 'rubygem-openfact' proj.component 'rubygem-puppet_forge' proj.component 'rubygem-puppet-resource_api' - proj.component 'rubygem-puppet-strings' + proj.component 'rubygem-openvox-strings' proj.component 'rubygem-puppetfile-resolver' proj.component 'rubygem-r10k' proj.component 'rubygem-rgen' @@ -213,6 +244,7 @@ proj.component 'rubygem-terminal-table' proj.component 'rubygem-thor' proj.component 'rubygem-unicode-display_width' + proj.component 'rubygem-unicode-emoji' proj.component 'rubygem-webrick' proj.component 'rubygem-yard' @@ -221,6 +253,10 @@ proj.component 'rubygem-winrm' proj.component 'rubygem-winrm-fs' + if platform.is_windows? + proj.component 'rubygem-win32ole' + end + # Components from puppet-runtime included to support apply on localhost # We only build ruby-selinux for EL, Fedora, Debian and Ubuntu (amd64/i386) if platform.is_el? || platform.is_fedora? || platform.is_debian? || (platform.is_ubuntu? && platform.architecture !~ /ppc64el$/) @@ -233,14 +269,20 @@ proj.component 'readline' if platform.is_macos? proj.component 'augeas' proj.component 'libxml2' - proj.component 'libxslt' # Ruby Augeas and shadow proj.component 'ruby-augeas' proj.component 'ruby-shadow' end + # rubocop:enable Style/IfUnlessModifier + # What to include in package? proj.directory proj.prefix + proj.directory proj.bindir if platform.is_windows? || platform.is_macos? + proj.directory proj.libdir + proj.directory proj.includedir + proj.directory proj.datadir + proj.directory proj.mandir # Export the settings for the current project and platform as yaml during builds proj.publish_yaml_settings diff --git a/generate.rb b/generate.rb old mode 100644 new mode 100755 index d609a94d..dff91890 --- a/generate.rb +++ b/generate.rb @@ -23,18 +23,16 @@ bundle = Bundler::LockfileParser.new(Bundler.read_file(lockfile)) gem_name_to_version = bundle.specs.each_with_object({}) { |gem_object, acc| acc[gem_object.name] = gem_object.version } -# Print a warning if the version defined in the component defintion is +# Print a warning if the version defined in the component defintion is # Older than the version in the Gemfile.lock def check_update(component_def, spec, gem_name_to_version) component_def.each_line do |line| - # TODO: Some of the component files handle multiple versions with a case statement (for example net-ssh). - # Add more logic to compare each of those versions. For now there are only a hand full. - if line =~ /pkg.version/ - ver = Gem::Version.new(line.scan(/\d\.*/).join('')) - if gem_name_to_version[spec.name] > ver - warn "Update needed for: #{spec.name} \nUpgrade from #{ver} to #{gem_name_to_version[spec.name]}\n\n" - end - end + # TODO: Some of the component files handle multiple versions with a case statement (for example net-ssh). + # Add more logic to compare each of those versions. For now there are only a hand full. + next unless line =~ /pkg.version/ + + ver = Gem::Version.new(line.scan(/\d\.*/).join('')) + warn "Update needed for: #{spec.name} \nUpgrade from #{ver} to #{gem_name_to_version[spec.name]}\n\n" if gem_name_to_version[spec.name] > ver end end @@ -43,11 +41,10 @@ def check_update(component_def, spec, gem_name_to_version) bundle.specs.each do |s| filename = "configs/components/rubygem-#{s.name}.rb" next unless File.exist?(filename) + # Check if an update is needed by comparing version in component defintion to version in lockfile check_update(File.read(filename), s, gem_name_to_version) # Warn if the gem is not mirrored in artifactory resp = http.head("/artifactory/generic__buildsources/buildsources/#{s.name}-#{s.version}.gem") - unless resp.is_a?(Net::HTTPSuccess) - warn "Update Needed for #{s.name}:\n!mirrorsource https://rubygems.org/downloads/#{s.name}-#{s.version}.gem\n\n" - end + warn "Update Needed for #{s.name}:\n!mirrorsource https://rubygems.org/downloads/#{s.name}-#{s.version}.gem\n\n" unless resp.is_a?(Net::HTTPSuccess) end diff --git a/resources/files/ruby/patch-hostruby.rb b/resources/files/ruby/patch-hostruby.rb index 0e09dd68..9b7afd40 100644 --- a/resources/files/ruby/patch-hostruby.rb +++ b/resources/files/ruby/patch-hostruby.rb @@ -9,11 +9,11 @@ require 'tempfile' if ARGV.length < 2 - warn < + warn <<~USAGE + USAGE: patch-hostruby.rb -example: patch-hostruby.rb 3.2.2 arm64-darwin -USAGE + example: patch-hostruby.rb 3.2.2 arm64-darwin + USAGE exit(1) end @@ -32,7 +32,7 @@ def rewrite(file) # so rename doesn't cross filesystems tmpfile = Tempfile.new(File.basename(file), File.dirname(file)) begin - File.open("#{file}.orig", "w") do |orig| + File.open("#{file}.orig", 'w') do |orig| File.open(file, 'r').readlines.each do |line| orig.write(line) yield line @@ -55,13 +55,13 @@ def rewrite(file) # was, that way we can easily append to it. And since it's in a double quoted string, it's escaped # as `\\&` # -if GEM_VERSION <= Gem::Version.new('2.0.0') +if Gem::Version.new('2.0.0') >= GEM_VERSION # $ git show v2.0.0:lib/rubygems/ext/ext_conf_builder.rb # cmd = "#{Gem.ruby} #{File.basename extension}" regexp = /{Gem\.ruby}/ replace = "\\& -r/opt/puppetlabs/puppet/share/doc/rbconfig-#{target_ruby_version}-orig.rb" builder = 'rubygems/ext/ext_conf_builder.rb' -elsif GEM_VERSION < Gem::Version.new('3.0.0') # there weren't any tags between >= 2.7.11 and < 3.0.0 +elsif Gem::Version.new('3.0.0') > GEM_VERSION # there weren't any tags between >= 2.7.11 and < 3.0.0 # $ git show v2.0.1:lib/rubygems/ext/ext_conf_builder.rb # cmd = [Gem.ruby, File.basename(extension), *args].join ' ' # @@ -70,7 +70,7 @@ def rewrite(file) regexp = /Gem\.ruby/ replace = "\\&, '-r/opt/puppetlabs/puppet/share/doc/rbconfig-#{target_ruby_version}-orig.rb'" builder = 'rubygems/ext/ext_conf_builder.rb' -elsif GEM_VERSION <= Gem::Version.new('3.4.8') +elsif Gem::Version.new('3.4.8') >= GEM_VERSION # $ git show v3.0.0:lib/rubygems/ext/ext_conf_builder.rb # cmd = Gem.ruby.shellsplit << "-I" << File.expand_path("../../..", __FILE__) << # @@ -79,7 +79,7 @@ def rewrite(file) regexp = /Gem\.ruby\.shellsplit/ replace = "\\& << '-r/opt/puppetlabs/puppet/share/doc/rbconfig-#{target_ruby_version}-orig.rb'" builder = 'rubygems/ext/ext_conf_builder.rb' -elsif GEM_VERSION <= Gem::Version.new('3.4.14') +elsif Gem::Version.new('3.4.14') >= GEM_VERSION # NOTE: rubygems 3.4.9 moved the code to builder.rb # # $ git show v3.4.9:lib/rubygems/ext/builder.rb @@ -90,7 +90,7 @@ def rewrite(file) regexp = /Gem\.ruby\.shellsplit/ replace = "\\& << '-r/opt/puppetlabs/puppet/share/doc/rbconfig-#{target_ruby_version}-orig.rb'" builder = 'rubygems/ext/builder.rb' -elsif GEM_VERSION <= Gem::Version.new('3.5.16') +elsif Gem::Version.new('3.5.16') >= GEM_VERSION # $ git show v3.4.9:lib/rubygems/ext/builder.rb # cmd = Shellwords.split(Gem.ruby) # @@ -111,9 +111,7 @@ def rewrite(file) # hook rubygems builder so it loads our rbconfig when building native gems patched = false rewrite(builder) do |line| - if line.gsub!(regexp, replace) - patched = true - end + patched = true if line.gsub!(regexp, replace) end raise "Failed to patch rubygems hook, because we couldn't match #{regexp} in #{builder}" unless patched @@ -129,17 +127,15 @@ def rewrite(file) api_version_patched = false spec_file = "#{host_rubylibdir}/rubygems/basic_specification.rb" rewrite(spec_file) do |line| - if line.gsub!(/Gem::Platform\.local\.to_s/, "'#{target_triple}'") - triple_patched = true - end - if line.gsub!(/Gem\.extension_api_version/, "'#{target_api_version}'") - api_version_patched = true - end + triple_patched = true if line.gsub!(/Gem::Platform\.local\.to_s/, "'#{target_triple}'") + api_version_patched = true if line.gsub!(/Gem\.extension_api_version/, "'#{target_api_version}'") end raise "Failed to patch '#{target_triple}' in #{spec_file}" unless triple_patched + puts "Patched '#{target_triple}' in #{spec_file}" raise "Failed to patch '#{target_api_version}' in #{spec_file}" unless api_version_patched + puts "Patched '#{target_api_version}' in #{spec_file}" end diff --git a/resources/files/ruby/rbconfig-update.rb b/resources/files/ruby/rbconfig-update.rb index 7691a74b..7f58f45e 100644 --- a/resources/files/ruby/rbconfig-update.rb +++ b/resources/files/ruby/rbconfig-update.rb @@ -16,7 +16,7 @@ # The following replaces any configuration line in an rbconfig # that matches any of the key value pairs listed in the CHANGES # hash -def replace_line(changes, line, file) +def replace_line(changes, line, _file) changes.each do |change_key, change_value| if line.strip.start_with?("CONFIG[\"#{change_key}\"]") puts "Updating #{change_key} to CONFIG[\"#{change_key}\"] = \"#{change_value}\"" @@ -26,7 +26,6 @@ def replace_line(changes, line, file) line end - # the following creates two files: # new_rbconfig.rb that is a copy of the rbcofig read from ARGV1 # with replacements for anything provided in the hash passed in as ARGV0 @@ -34,9 +33,9 @@ def replace_line(changes, line, file) # and original_rbconfig.rb that is a copy of rbconfig with all exceptions changed # to warnings. begin - new_rbconfig = File.open("new_rbconfig.rb", "w") - copy_rbconfig = File.open("original_rbconfig.rb", "w") - File.open(File.join(ARGV[1], "rbconfig.rb"), "r").readlines.each do |line| + new_rbconfig = File.open('new_rbconfig.rb', 'w') + copy_rbconfig = File.open('original_rbconfig.rb', 'w') + File.open(File.join(ARGV[1], 'rbconfig.rb'), 'r').readlines.each do |line| new_rbconfig.puts replace_line(instance_eval(ARGV[0]), line, new_rbconfig) copy_rbconfig.puts line.gsub('raise', 'warn') end diff --git a/resources/files/ruby_vendor_gems/operating_system.rb b/resources/files/ruby_vendor_gems/operating_system.rb index b84eb786..799b5c2a 100644 --- a/resources/files/ruby_vendor_gems/operating_system.rb +++ b/resources/files/ruby_vendor_gems/operating_system.rb @@ -7,21 +7,21 @@ class << self remove_method :default_path if method_defined? :default_path def puppet_vendor_dir - path = if defined? RUBY_FRAMEWORK_VERSION then + path = if defined? RUBY_FRAMEWORK_VERSION [ - File.dirname(RbConfig::CONFIG['sitedir']), - 'VendorGems' + File.dirname(RbConfig::CONFIG['sitedir']), + 'VendorGems' ] - elsif RbConfig::CONFIG['rubylibprefix'] then + elsif RbConfig::CONFIG['rubylibprefix'] [ - RbConfig::CONFIG['rubylibprefix'], - 'vendor_gems', + RbConfig::CONFIG['rubylibprefix'], + 'vendor_gems' ] else [ - RbConfig::CONFIG['libdir'], - 'ruby', - 'vendor_gems', + RbConfig::CONFIG['libdir'], + 'ruby', + 'vendor_gems' ] end @@ -33,7 +33,7 @@ def default_path path << user_dir if user_home && File.exist?(user_home) path << default_dir path << puppet_vendor_dir - path << vendor_dir if vendor_dir and File.directory? vendor_dir + path << vendor_dir if vendor_dir && File.directory?(vendor_dir) path end end diff --git a/setup.ps1 b/setup.ps1 index 9ef2e0d7..6ca75ea2 100644 --- a/setup.ps1 +++ b/setup.ps1 @@ -1,4 +1,4 @@ $url="https://cygwin.com/setup-x86_64.exe" $dest="C:\setup-x86_64.exe" Invoke-WebRequest -Uri $url -OutFile $dest -cmd /c "C:\setup-x86_64.exe -s https://cygwin.osuosl.org -q -P ruby,ruby-devel,gcc-core,make,git,libyaml-devel" +cmd /c "C:\setup-x86_64.exe -s https://cygwin.osuosl.org -q -P ruby=3.2.2-2,ruby-devel=3.2.2-2,gcc-core,make,git,libyaml-devel" diff --git a/tasks/build.rake b/tasks/build.rake index 813db3ff..793481c1 100644 --- a/tasks/build.rake +++ b/tasks/build.rake @@ -10,7 +10,7 @@ namespace :vox do abort 'You must provide a platform.' if args[:platform].nil? || args[:platform].empty? platform = args[:platform] - os, _ver, arch = platform.match(/^(\w+)-([\w|\.]+)-(\w+)$/).captures + os, _ver, arch = platform.match(/^(\w+)-([\w.]+)-(\w+)$/).captures if os == 'macos' shell = `uname -m`.chomp ruby = `ruby -v`.chomp diff --git a/tasks/update_gems.rake b/tasks/update_gems.rake index 9956cf73..66f5a570 100644 --- a/tasks/update_gems.rake +++ b/tasks/update_gems.rake @@ -6,62 +6,76 @@ require 'uri' require 'net/http' require 'rubygems/version' require 'rubygems/requirement' -require 'colorize' -require 'tty-table' -require 'set' +require 'open3' -# ----- Constants ----- REPO_ROOT = File.expand_path('..', __dir__) COMPONENT_DIR = File.join(REPO_ROOT, 'configs', 'components') COMPONENT_GLOB = File.join(COMPONENT_DIR, 'rubygem-*.rb') +PROJECT_GLOB = File.join(REPO_ROOT, 'configs', 'projects', '*.rb') -MAINT_START = /^\s*### Maintained by update_gems automation ###\s*$/ -MAINT_END = /^\s*### End automated maintenance section ###\s*$/ -PINNED_LINE = /^\s*#\s*PINNED\b.*$/ -VER_LINE = /^\s*pkg\.version\s+['"](?[^'"]+)['"]\s*$/ -SHA_LINE = /^\s*pkg\.(?:sha256sum|md5sum)\s+['"](?[0-9a-fA-F]+)['"]\s*$/ -BUILD_REQ = /^\s*pkg\.build_requires\s+['"]rubygem-([^'"]+)['"]\s*$/ -GEM_TYPE = /^\s*#\s*GEM\s+TYPE:\s*(?[A-Za-z0-9\-_\.]+)\s*$/ +MAINT_START = /^\s*### Maintained by update_gems automation ###\s*$/ +MAINT_END = /^\s*### End automated maintenance section ###\s*$/ +PINNED_LINE = /^\s*#\s*PINNED\b.*$/ +VER_LINE = /^\s*pkg\.version\s+['"](?[^'"]+)['"]\s*$/ +SHA_LINE = /^\s*pkg\.(?:sha256sum|md5sum)\s+['"](?[0-9a-fA-F]+)['"]\s*$/ +BUILD_REQ = /^\s*pkg\.build_requires\s+['"]rubygem-([^'"]+)['"]\s*$/ +GEM_TYPE = /^\s*#\s*GEM\s+TYPE:\s*(?[A-Za-z0-9\-_.]+)\s*$/ +PROJ_COMPONENT = /^\s*proj\.component\s+(?['"]?)(?rubygem-[^'"\s]+)\k\s*$/ TARGET_RUBY_VER = ENV['TARGET_RUBY']&.strip || '3.2' MAX_TABLE_WIDTH = 140 -VERSIONS_CACHE = {} +@versions_cache = {} -def create_component_file(path, gemname, version, sha, deps = []) - lines = [] - lines << "#####\n" - lines << "# Component release information:\n" - lines << "# https://rubygems.org/gems/#{gemname}\n" - lines << "#####\n" - lines << "component 'rubygem-#{gemname}' do |pkg, settings, platform|\n" - lines << " ### Maintained by update_gems automation ###\n" - lines << " pkg.version '#{version}'\n" - lines << " pkg.sha256sum '#{sha}'\n" - deps.each { |name| lines << " pkg.build_requires 'rubygem-#{name}'\n" } - lines << " ### End automated maintenance section ###\n" - lines << "\n" - lines << " instance_eval File.read('configs/components/_base-rubygem.rb')\n" - lines << "end\n" - File.write(path, lines.join, encoding: 'UTF-8') +def git_relative_path(path) + path = File.expand_path(path) + prefix = REPO_ROOT + File::SEPARATOR + path.start_with?(prefix) ? path[prefix.length..] : path +end + +def git_commit_file(path, message) + rel = git_relative_path(path) + status_out, status_err, status_ok = Open3.capture3( + 'git', '-C', REPO_ROOT, 'status', '--porcelain', '--', rel + ) + unless status_ok + warn "git status failed for #{rel}:\n#{status_err}\n#{status_out}" + return false + end + return true if status_out.strip.empty? + + _, add_err, add_ok = Open3.capture3('git', '-C', REPO_ROOT, 'add', rel) + unless add_ok + warn "git add failed for #{rel}:\n#{add_err}" + return false + end + + _, commit_err, commit_ok = Open3.capture3('git', '-C', REPO_ROOT, 'commit', '-m', message) + unless commit_ok + warn "git commit failed for #{rel}:\n#{commit_err}" + return false + end + true end -# ----- Table and progress output ----- -def color_status(s) - case s - when 'UP TO DATE' then s.green - when 'UPDATED' then s.yellow - when 'ADDED' then s.cyan - when 'ERROR' then s.red - when 'UNKNOWN' then s.red - else s +def color_status(status) + require 'colorize' + case status + when 'UP TO DATE' then status.green + when 'UPDATED' then status.yellow + when 'ADDED' then status.cyan + when 'ERROR', 'UNKNOWN' then status.red + else status end end def print_table(headers, rows) - comp_w, status_w, version_w = 50, 12, 32 + require 'tty-table' + comp_w = 50 + status_w = 12 + version_w = 32 deps_w = [MAX_TABLE_WIDTH - (comp_w + status_w + version_w + 13), 10].max table = TTY::Table.new headers, rows - puts table.render(:ascii, width: MAX_TABLE_WIDTH, resize: true, multiline: true, padding: [0,1,0,1]) { |r| + puts table.render(:ascii, width: MAX_TABLE_WIDTH, resize: true, multiline: true, padding: [0, 1, 0, 1]) { |r| r.alignments = [:left, :center, :left, :left] r.border.separator = :each_row r.column_widths = [comp_w, status_w, version_w, deps_w] @@ -78,25 +92,26 @@ end def progress_clear(io: $stderr) return if @progress_max_width <= 0 + io.print("\r#{' ' * @progress_max_width}\r") io.flush @progress_max_width = 0 end -# ----- Rubygems API access ----- def http(url) uri = URI(url) Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |h| r = Net::HTTP::Get.new(uri) - r['User-Agent'] = "openvox-runtime-script/1.0" + r['User-Agent'] = 'openvox-runtime-script/1.0' res = h.request(r) raise "HTTP #{res.code} #{uri}" unless res.is_a?(Net::HTTPSuccess) + res.body end end def get_versions(name) - VERSIONS_CACHE[name] ||= JSON.parse(http("https://rubygems.org/api/v1/versions/#{name}.json")) + @versions_cache[name] ||= JSON.parse(http("https://rubygems.org/api/v1/versions/#{name}.json")) end def get_version_details(name, version) @@ -104,26 +119,18 @@ def get_version_details(name, version) JSON.parse(http("https://rubygems.org/api/v2/rubygems/#{name}/versions/#{enc}.json")) end -# ----- Fetching gem metadata ----- def ruby_req_ok?(req_str) - req = (req_str.nil? || req_str.strip.empty?) ? '>= 0' : req_str - req = req.split(',').map(&:strip) - Gem::Requirement.new(req).satisfied_by?(Gem::Version.new(TARGET_RUBY_VER)) + req = req_str.to_s.strip + req = '>= 0' if req.empty? + Gem::Requirement.new(req.split(',').map!(&:strip)) + .satisfied_by?(Gem::Version.new(TARGET_RUBY_VER)) end def find_sha(name, version, platform) - # The v2 API only returns SHA for the "ruby" platform - if platform.nil? || platform == '' || platform == 'ruby' - details = get_version_details(name, version) - raise "SHA not found in details for gem #{name} version #{version}" unless details['sha'] - return details['sha'] - end - - # Otherwise, use the v1 API to find the specific platform - list = get_versions(name) - metadata = list.find { |v| v['number'] == version && v['platform'] == platform } + metadata = get_versions(name).find { |v| v['number'] == version && v['platform'] == platform } raise "Version #{version} (platform: #{platform}) not found for gem #{name}" unless metadata raise "SHA not found in metadata for gem #{name} version #{version} platform #{platform}" unless metadata['sha'] + metadata['sha'] end @@ -131,45 +138,41 @@ def get_metadata(name:, version: nil, platforms: ['ruby']) all = get_versions(name) raise "No versions found for gem #{name}" if all.empty? - # Choose version, either the one passed in, or the latest compatible new_version = version unless new_version candidates = all.select do |v| - next false if v['prerelease'] - next false if v['yanked'] + next false if v['prerelease'] || v['yanked'] next false unless v['platform'].nil? || v['platform'] == 'ruby' + ruby_req_ok?(v['ruby_version']) end raise "No compatible versions found for gem #{name}" if candidates.empty? + new_version = candidates.max_by { |v| Gem::Version.new(v['number']) }['number'] end - # Gather SHAs for requested platforms platforms = platforms.compact.uniq shas = {} - platforms.each do |platform| - shas[platform] = find_sha(name, new_version, platform) - end + platforms.each { |platform| shas[platform] = find_sha(name, new_version, platform) } details = get_version_details(name, new_version) - deps = (details.dig('dependencies', 'runtime') || []) + deps = details.dig('dependencies', 'runtime') || [] { 'version' => new_version, 'shas' => shas, 'dependencies' => deps } end -# ----- Processing component files ----- def process_component(path, gemname) lines = File.read(path, encoding: 'UTF-8').lines - # Find maintenance block start = lines.index { |l| l =~ MAINT_START } or raise "Automated maintenance section not found in #{path}" - end_rel = lines[(start + 1)..].to_a.index { |l| l =~ MAINT_END } or raise "Automated maintenance section not closed in #{path}" + end_rel = lines[(start + 1)..].to_a.index do |l| + l =~ MAINT_END + end or raise "Automated maintenance section not closed in #{path}" finish = start + 1 + end_rel body = lines[(start + 1)...finish] old_body_str = body.join - # First pass: read current version, pinned, deps, and platforms pinned = false current_version = nil old_deps = [] @@ -186,16 +189,15 @@ def process_component(path, gemname) end prev = line end + platforms.uniq! raise "pkg.version not found in maintenance section for #{path}" unless current_version - # Resolve target version, shas, and deps - metadata = get_metadata(name: gemname, version: pinned ? current_version : nil, platforms: platforms.uniq) + metadata = get_metadata(name: gemname, version: pinned ? current_version : nil, platforms: platforms) target_version = metadata['version'] shas = metadata['shas'] new_deps = metadata['dependencies'].map { |d| d['name'] }.uniq.sort - [gemname] newly_added = new_deps - old_deps - # Generate new block body new_body = [] current_platform = nil body.each do |l| @@ -207,113 +209,294 @@ def process_component(path, gemname) elsif (m = l.match(SHA_LINE)) platform = current_platform || 'ruby' raise "No SHA found for platform #{platform} of gem #{gemname}" unless shas[platform] + new_body << l.sub('md5sum', 'sha256sum').sub(m[:sha], shas[platform]) current_platform = nil elsif l =~ BUILD_REQ - # Drop existing build_requires next else new_body << l end end - # Append new build_requires at end of block body new_deps.each { |name| new_body << " pkg.build_requires 'rubygem-#{name}'\n" } new_body_str = new_body.join - block_changed = (old_body_str != new_body_str) + block_changed = old_body_str != new_body_str lines[(start + 1)...finish] = new_body if block_changed - - version_changed = (current_version != target_version) + version_changed = current_version != target_version File.write(path, lines.join, encoding: 'UTF-8') if block_changed - status = (version_changed || newly_added.any? || block_changed) ? 'UPDATED' : 'UP TO DATE' + status = version_changed || newly_added.any? || block_changed ? 'UPDATED' : 'UP TO DATE' ver_col = version_changed ? "#{current_version} -> #{target_version}" : '' + missing = new_deps.reject { |name| File.exist?(File.join(COMPONENT_DIR, "rubygem-#{name}.rb")) } + + { + name: gemname, + status: status, + version: ver_col, + deps_added: newly_added.map { |n| "rubygem-#{n}" }, + missing: missing, + gem_deps: new_deps, + path: path, + old_version: current_version, + new_version: target_version, + block_changed: block_changed + } +end + +def update_projects_for_added(gem, added) + changed_files = [] + Dir[PROJECT_GLOB].each do |proj_path| + lines = File.read(proj_path, encoding: 'UTF-8').lines + next if lines.any? { |l| (m = l.match(PROJ_COMPONENT)) && m[:component] == added } - # Report missing components so the task can create them - missing = new_deps.select { |name| !File.exist?(File.join(COMPONENT_DIR, "rubygem-#{name}.rb")) } + gem_index = nil + gem_indent = ' ' + lines.each_with_index do |l, i| + next unless (m = l.match(PROJ_COMPONENT)) && m[:component] == gem - { name: gemname, status: status, version: ver_col, deps_added: newly_added.map { |n| "rubygem-#{n}" }, missing: missing } + gem_index = i + gem_indent = l[/^\s*/] || ' ' + break + end + next unless gem_index + + lines.insert(gem_index + 1, "#{gem_indent}proj.component '#{added}'\n") + File.write(proj_path, lines.join, encoding: 'UTF-8') + changed_files << proj_path + end + changed_files end +def create_component_file(path, gemname, version, sha, deps = []) + deps_block = deps.map { |name| " pkg.build_requires 'rubygem-#{name}'\n" }.join + content = <<~RUBY + ##### + # Component release information: + # https://rubygems.org/gems/#{gemname} + ##### + component 'rubygem-#{gemname}' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### + pkg.version '#{version}' + pkg.sha256sum '#{sha}' + RUBY + content << deps_block + content << <<~RUBY + ### End automated maintenance section ### + + instance_eval File.read('configs/components/_base-rubygem.rb') + end + RUBY + File.write(path, content, encoding: 'UTF-8') +end -namespace :vox do - desc 'Update rubygem components and print a summary table or JSON of changes' - task :update_gems do - results = [] - files = Dir.glob(COMPONENT_GLOB).select { |p| File.file?(p) } - total = files.length - - files.each_with_index do |path, i| - basename = File.basename(path, '.rb') - gemname = basename.sub(/^rubygem-/, '') - progress_print("Processing (#{i + 1}/#{total}): #{basename}") - results << process_component(path, gemname) +# Build a map of "rubygem-foo" => ["rubygem-bar", "rubygem-baz", ...] +# based on component metadata (after components and any new ones are in place). +def build_component_dependency_map(results, added) + existing_components = Dir[COMPONENT_GLOB].map { |p| File.basename(p, '.rb') } + deps_map = Hash.new { |h, k| h[k] = [] } + + results.each do |r| + component_name = "rubygem-#{r[:name]}" + (r[:gem_deps] || []).each do |gem_dep| + dep_component = "rubygem-#{gem_dep}" + deps_map[component_name] << dep_component if existing_components.include?(dep_component) + end + end + + added.each do |info| + component_name = "rubygem-#{info[:name]}" + (info[:deps] || []).each do |gem_dep| + dep_component = "rubygem-#{gem_dep}" + deps_map[component_name] << dep_component if existing_components.include?(dep_component) + end + end + + deps_map.each_value(&:uniq!) + deps_map +end + +# Ensure that for every project that references a component, the project also +# references all of that component's dependencies as components. +def ensure_projects_have_component_deps(component_deps_map) + issues = [] + processed_pairs = {} + + component_deps_map.each do |component, deps| + deps.each do |dep| + key = "#{component}->#{dep}" + next if processed_pairs[key] + + processed_pairs[key] = true + + changed_files = update_projects_for_added(component, dep) + next if changed_files.empty? + + changed_files.each do |proj_path| + project_name = File.basename(proj_path, '.rb') + git_commit_file(proj_path, "#{project_name}: Add #{dep} component") + issues << { + project: project_name, + project_path: proj_path, + component: component, + missing_dep: dep + } + end end - progress_clear - - # Create missing component files after processing all - # Because some of the added components may have runtime - # dependencies themselves that are also missing, we need - # to keep a running queue of missing components to add. - added = [] - queue = results.flat_map { |r| r[:missing] || [] }.uniq - seen = Set.new - until queue.empty? - name = queue.shift - next if seen.include?(name) - seen << name - - progress_print("Creating component for missing gem: #{name}") - - path = File.join(COMPONENT_DIR, "rubygem-#{name}.rb") - next if File.exist?(path) - - m = get_metadata(name: name, platforms: ['ruby']) + end + + issues +end + +def update_all_components_and_projects + results = [] + added = [] + + files = Dir[COMPONENT_GLOB] + total = files.length + + files.each_with_index do |path, i| + basename = File.basename(path, '.rb') + gemname = basename.sub(/^rubygem-/, '') + progress_print("Processing (#{i + 1}/#{total}): #{basename}") + r = process_component(path, gemname) + results << r + + next unless r[:block_changed] + + component = "rubygem-#{r[:name]}" + msg = + if r[:old_version] != r[:new_version] + "#{component}: Update #{r[:old_version]} -> #{r[:new_version]}" + elsif !r[:deps_added].empty? + if r[:deps_added].length == 1 + dep = r[:deps_added].first + "#{component}: Add #{dep} dependency" + else + deps = r[:deps_added].join(', ') + "#{component}: Add dependencies #{deps}" + end + else + "#{component}: Update component metadata" + end + git_commit_file(r[:path], msg) + end + progress_clear + + queue = results.flat_map { |r| (r[:missing] || []).map { |dep| [r[:name], dep] } } + + until queue.empty? + existing_gem, added_dep = queue.shift + dep_path = File.join(COMPONENT_DIR, "rubygem-#{added_dep}.rb") + created = false + deps = nil + + unless File.exist?(dep_path) + progress_print("Creating component rubygem-#{added_dep} (required by #{existing_gem})") + m = get_metadata(name: added_dep, platforms: ['ruby']) ver = m['version'] sha = m['shas']['ruby'] - deps = (m['dependencies'] || []).map { |d| d['name'] }.uniq.sort - [name] + deps = (m['dependencies'] || []).map { |d| d['name'] }.uniq.sort - [added_dep] - create_component_file(path, name, ver, sha, deps) - added << { name: name, version: ver, deps: deps } + create_component_file(dep_path, added_dep, ver, sha, deps) + added << { name: added_dep, version: ver, deps: deps, path: dep_path } - deps.each do |name| - path = File.join(COMPONENT_DIR, "rubygem-#{name}.rb") - queue << name unless File.exist?(path) || seen.include?(name) || queue.include?(name) - end + component_full_name = "rubygem-#{added_dep}" + git_commit_file(dep_path, "#{component_full_name}: Add new component") + created = true end - progress_clear - # JSON output - if !(ARGV & ['--json', '-j', '--format=json']).empty? - payload = { - ruby_version_used_for_checks: TARGET_RUBY_VER, - results: results, - added: added, - } - puts JSON.pretty_generate(payload) - next + if created || added.any? { |g| g[:name] == added_dep } + component_full_name = "rubygem-#{added_dep}" + update_projects_for_added("rubygem-#{existing_gem}", component_full_name).each do |proj_path| + project_name = File.basename(proj_path, '.rb') + git_commit_file(proj_path, "#{project_name}: Add #{component_full_name} component") + end end - # Table output - headers = ['Component', 'Status', 'Version update', 'Dependencies added'] - rows = results.map do |r| - [ - "rubygem-#{r[:name]}", - color_status(r[:status]), - r[:version], - r[:deps_added].join(', '), - ] + deps&.each do |trans_dep| + trans_path = File.join(COMPONENT_DIR, "rubygem-#{trans_dep}.rb") + queue << [added_dep, trans_dep] unless File.exist?(trans_path) end - added.each do |info| - rows << [ - "rubygem-#{info[:name]}", - color_status('ADDED'), - info[:version].to_s, - info[:deps].to_a.uniq.sort.map { |dn| "rubygem-#{dn}" }.join(', '), - ] + end + + progress_clear + + # After all components and new components have been created, build the + # component dependency map and ensure every project includes all required + # component dependencies. + component_deps_map = build_component_dependency_map(results, added) + project_issues = ensure_projects_have_component_deps(component_deps_map) + + [results, added, project_issues] +end + +def output_json(results, added, project_issues) + puts JSON.pretty_generate( + ruby_version_used_for_checks: TARGET_RUBY_VER, + results: results.map { |r| + { + name: r[:name], + status: r[:status], + version: r[:version], + deps_added: r[:deps_added], + missing: r[:missing] + } + }, + added: added.map { |info| + { name: info[:name], version: info[:version], deps: info[:deps] } + }, + project_dependency_fixes: project_issues.map { |i| + { + project: i[:project], + project_path: git_relative_path(i[:project_path]), + component: i[:component], + missing_dependency_added: i[:missing_dep] + } + } + ) +end + +def output_table(results, added, project_issues) + headers = ['Component', 'Status', 'Version update', 'Dependencies added'] + rows = results.map do |r| + [ + "rubygem-#{r[:name]}", + color_status(r[:status]), + r[:version], + r[:deps_added].join(', ') + ] + end + added.each do |info| + rows << [ + "rubygem-#{info[:name]}", + color_status('ADDED'), + info[:version].to_s, + info[:deps].to_a.uniq.sort.map { |dn| "rubygem-#{dn}" }.join(', ') + ] + end + print_table(headers, rows) + + return if project_issues.empty? + + puts + puts 'Project dependency fixes:' + project_issues.group_by { |i| i[:project] }.each do |project, list| + deps_list = list.map { |i| "#{i[:component]} -> #{i[:missing_dep]}" }.uniq + puts " #{project}: #{deps_list.join(', ')}" + end +end + +namespace :vox do + desc 'Update rubygem components and print a summary table or JSON of changes' + task :update_gems do + results, added, project_issues = update_all_components_and_projects + if !(ARGV & ['--json', '-j', '--format=json']).empty? + output_json(results, added, project_issues) + else + output_table(results, added, project_issues) end - print_table(headers, rows) end -end \ No newline at end of file +end diff --git a/tasks/vanagon_component_diff.rake b/tasks/vanagon_component_diff.rake deleted file mode 100644 index c4de7972..00000000 --- a/tasks/vanagon_component_diff.rake +++ /dev/null @@ -1,328 +0,0 @@ -# coding: utf-8 -namespace :vanagon do |args| - desc 'Show component diff' - task(:component_diff) do - require 'tempfile' - require 'highline/import' - require 'json' - require 'parallel' - require 'hashdiff' - require 'optparse' - - class String - @@markdown = false - @@diff_open = false - - class << self - def format_as_markdown - @@markdown = true - end - - def is_in_markdown? - @@markdown - end - - def start_diff(alternative = '') - return alternative unless @@markdown - @@diff_open = true - '```diff' - end - - def end_diff(alternative = '') - return alternative unless @@markdown - @@diff_open = false - '```' - end - - def start_collapsible(text) - return text unless @@markdown - text.delete!('`~*_').gsub!(' ','') - "
\n #{text}\n\n" - end - - def end_collapsible - return '' unless @@markdown - '
' - end - - def hr - return "\n---\n" if @@markdown - '' - end - end - - def +(text) - "#{self} #{text}" - end - - def red - return @@diff_open ? self : "#{self} :x:" if @@markdown - "\e[31m#{self}\e[0m" - end - - def green - return @@diff_open ? self : "#{self} :white_check_mark:" if @@markdown - "\e[32m#{self}\e[0m" - end - - def cyan - return self if @@markdown - "\e[36m#{self}\e[0m" - end - - def code - return "`#{self}`" if @@markdown - self.italic - end - - def strike - return "~~#{self.strip}~~" if @@markdown - self - end - - def bold - return "**#{self.strip}**" if @@markdown - "\e[1m#{self}\e[22m" - end - - def italic - return "_#{self.strip}_" if @@markdown - "\e[3m#{self}\e[23m" - end - - def tab(number = 1) - return @@diff_open ? self : "#{' '*4*number}#{self}" if @@markdown - "#{' '*4*number}#{self}" - end - - def h(number) - return "#{'#'*number}" + self if @@markdown - self.bold - end - - def unwrap - return self unless @@markdown - self.gsub! /([^\n])\n([^\n])/, '\1 \2' - end - end - - MAX_CPU = Etc.nprocessors - 1 - TASK_NAME = ARGV.first - - def vanagon_inspect(project, ref, platforms) - files = {} - - platforms.each do |platform| - files[platform] = Tempfile.new('vanagon_component_diff') - end - prev_branch = `git rev-parse --abbrev-ref HEAD` - - `git checkout -q #{ref}` - - Parallel.each(files, max_threads: MAX_CPU) do |platform, file| - `bundle exec vanagon inspect #{project} #{platform} > '#{file.path}' 2> /dev/null || echo '{}' > '#{file.path}'` - end - - `git checkout -q #{prev_branch}` - files - end - - git_from_rev = 'origin/main' - git_to_rev = 'HEAD' - default_projects = ['agent-runtime-main'] - projects = [] - default_platforms = ['el-7-x86_64'] - platforms = [] - - parser = OptionParser.new do |opts| - opts.banner = "Usage: rake #{TASK_NAME} -- [options]" - - opts.on('-f', '--from from_rev', "from git revision (default: #{git_from_rev})") do |from_rev| - git_from_rev = from_rev - end - - opts.on('-t', '--to to_rev', "to git revision (default: #{git_to_rev})") do |to_rev| - git_to_rev = to_rev - end - - opts.on('-P', '--project vanagon_project', "vanagon project name (default: #{default_projects}, can be specified multiple times); use 'all' to add all available") do |project_name| - if project_name == 'all' - Dir.entries('configs/projects').each do |file_name| - next unless file_name.end_with?('.rb') - next if file_name.start_with?('_') - projects << File.basename(file_name, '.rb') - end - else - projects << project_name - end - end - - opts.on('-p', '--platform vanagon_platform', "vanagon platform names (default: #{default_platforms}, can be specified multiple times); use 'all' to add all available") do |platform_name| - if platform_name == 'all' - Dir.entries('configs/platforms').each do |file_name| - next unless file_name.end_with?('.rb') - platforms << File.basename(file_name, '.rb') - end - else - platforms << platform_name - end - end - - opts.on('-i', '--interactive', 'interactive mode (prompt for settings)') do - git_from_rev = ask('Enter Git From Rev: ') { |q| q.default = git_from_rev } - git_to_rev = ask('Enter Git To Rev: ') { |q| q.default = git_to_rev } - projects = ask("Enter project name (default: #{default_projects.first}, write 'done' to finish project input): ") do |q| - q.default = default_projects - q.gather = "done" - end - platforms = ask("Enter platform name (default: #{default_platforms.first}, write 'done' to finish platform input): ") do |q| - q.default = default_platforms - q.gather = "done" - end - end - - opts.on('-m', '--markdown', 'format output with markdown for GitHub') do - String.format_as_markdown - end - - opts.on('-h', '--help', 'this message') do - puts opts - exit 1 - end - end - - args = parser.order!(ARGV) {} - parser.parse!(args) - - if platforms.empty? - platforms = default_platforms - end - - if projects.empty? - projects = default_projects - end - - puts <<~DISCLAIMER.unwrap - #{'⚠️ DISCLAIMER'.h(3)} - - This task is still experimental, it can be invoked locally provided that - development dependencies are installed (#{'bundle install --with development'.code}). - - Ensure all your local changes are committed, then run - #{"bundle exec rake #{TASK_NAME} -- [options]".code}. - - Run the task with #{'--help'.code} to see all available options. If you notice unexpected - behavior or want to suggest improvements, ping #prod-puppet-agent on Slack. - - DISCLAIMER - - puts "Here is what your code changes would affect:".h(1) - puts - projects.each do |project| - puts "Project #{project.code}".h(2) - new_files = vanagon_inspect(project, git_to_rev, platforms) - old_files = vanagon_inspect(project, git_from_rev, platforms) - - old, new = {}, {} - Parallel.each(old_files.zip(new_files), in_threads: MAX_CPU) do |old_file, new_file| - old[old_file.first] = JSON.parse(old_file.last.read) - new[new_file.first] = JSON.parse(new_file.last.read) - end - - old_hash = old.each_with_object({}) do |k, v| - v[k.first] ||= {} # k.first = platform name - k.last.each do |component| # k.last = components - component["platform"].delete("settings") - v[k.first]["_settings"] = component.delete("settings") - v[k.first]["_platform"] = component.delete("platform") - v[k.first][component.delete("name")] = component - end - end - - new_hash = new.each_with_object({}) do |k, v| - v[k.first] ||= {} # k.first = platform name - k.last.each do |component| # k.last = components - component["platform"].delete("settings") - v[k.first]["_settings"] = component.delete("settings") - v[k.first]["_platform"] = component.delete("platform") - v[k.first][component.delete("name")] = component - end - end - - diff = {} - Parallel.each(platforms, in_threads: MAX_CPU) do |platform| - diff[platform] = Hashdiff.diff(old_hash[platform], new_hash[platform], delimiter: '|') # TODO investigate if the array_path option is useful - end - - changes_found = false - diff.each do |platform, diff| - diff.reject! do |hunk| - # these are repos added by vanagon using SecureRandom hashes so we should exclude them from the diff output - hunk[1].include?('platform|provisioning') && - hunk.last.is_a?(String) && - hunk.last.start_with?('curl --silent --show-error --fail --location -o') - end - - next if diff.empty? - puts String.hr if changes_found - changes_found = true - puts - - puts "Platform name:".h(3) + platform.cyan.code - ordered_diff = diff.each_with_object({}) do |k, v| - name, field = k[1].match(/^([a-zA-Z\-._0-9]+)\|?(.*)?/).captures - next if ['_settings', '_platform'].include?(name) - if field.nil? || field.empty? - case k.first - when '+' - puts "Component '#{name}' was newly added, not showing diff for it".tab.green - when '-' - puts "Component '#{name}' was removed, not showing diff for it".tab.red - end - puts - next - end - - diff = [k[0], k[2], k[3]].compact - v[name] ||= {} - v[name][field] ||= [] - v[name][field] << diff unless v[name][field].include?(diff) - end - - ordered_diff.each do |component, field_hash| - title = case component - when '_settings' - 'Project settings'.tab.bold - when '_platform' - 'Platform settings'.tab.bold - else - 'Component'.tab.bold + "'#{component.cyan}'" - end - - puts String.start_collapsible(title) - - field_hash.each do |field, diff| - puts "Field:".tab(2).bold + field.code.cyan - - puts String.start_diff(('-'*20).tab(2)) - diff.each do |line| - case line.first - when '-' - puts "- #{line[1]}".tab(2).red - when '+' - puts "+ #{line[1]}".tab(2).green - when '~' - puts "- #{line[1]}".tab(2).red - puts "+ #{line[2]}".tab(2).green - end - end - puts String.end_diff - end - puts String.end_collapsible - end - end - puts "Nothing is affected 😊" if !changes_found - end - exit 0 - end -end diff --git a/tasks/vox.rake b/tasks/vox.rake index 4478bfcb..7a8f6e06 100644 --- a/tasks/vox.rake +++ b/tasks/vox.rake @@ -1,10 +1,10 @@ class Version attr_reader :date, :x, :raw - def initialize(v) - @raw = v + def initialize(value) + @raw = value - if (m = v.match(%r{\A(?\d{4}[-|\.]\d{2}[-|\.]\d{2})[-|\.](?\d+)\z})) + if (m = value.match(%r{\A(?\d{4}[-|.]\d{2}[-|.]\d{2})[-|.](?\d+)\z})) @date = m['date'] @x = m['x'].to_i else @@ -68,22 +68,23 @@ task 'vox:version:next' do end begin - require "github_changelog_generator/task" + require 'github_changelog_generator/task' GitHubChangelogGenerator::RakeTask.new :changelog do |config| config.header = <<~HEADER.chomp - # Changelog - All notable changes to this project will be documented in this file. + # Changelog + All notable changes to this project will be documented in this file. HEADER - config.user = "openvoxproject" - config.project = "puppet-runtime" + config.user = 'openvoxproject' + config.project = 'puppet-runtime' config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog] - config.since_tag = "202501080" + config.since_tag = '202501080' config.future_release = Version.load_from_changelog.next!.to_s end rescue LoadError task :changelog do - abort("Run `bundle install --with release` to install the `github_changelog_generator` gem.") + abort('Run `bundle install --with release` to install the `github_changelog_generator` gem.') end end +desc 'Prepare the changelog for a new release' task 'release:prepare': :changelog