diff --git a/Gemfile b/Gemfile index 9c418dd1..1eb3eed2 100644 --- a/Gemfile +++ b/Gemfile @@ -20,11 +20,10 @@ group(:development, optional: true) do gem 'parallel', require: false gem 'colorize', require: false gem 'hashdiff', require: false + gem 'tty-table', require: false end group(:release, optional: true) do gem 'faraday-retry', '~> 2.1', require: false gem 'github_changelog_generator', '~> 1.16.4', require: false end - -#gem 'rubocop', "~> 0.34.2" diff --git a/README.md b/README.md index ca25854c..9f313850 100644 --- a/README.md +++ b/README.md @@ -55,3 +55,47 @@ Where: the [configs/platforms](configs/platforms) directory - `target-vm` is the hostname of the VM you will build on. You must have root ssh access configured for this host, and it must match the target platform. + +## Updating rubygem components + +This repo includes a rake task that will use the RubyGems API to update all rubygem components, including adding any missing runtime dependencies. +``` +$ bundle exec rake vox:update_gems +``` +In each `rubygem-*.rb` file in `configs/components`, you will find a "magic" block near the top. For example: +``` +### Maintained by update_gems automation ### +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 ### +``` +Everything in this block can be automatically updated by the rake task. There are some special comments that change the behavior. + +`# PINNED` right before the `pkg.version` line will keep this component at the current version. Dependencies will still be checked to ensure none are missing. For example: +``` +### Maintained by update_gems automation ### +# PINNED +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 ### +``` + +Adding `# GEM TYPE: ` will allow you to specify a checksum for a precompiled version of a gem. This can be used with other logic within the magic block to specify a checksum based on platform. For example: +``` +### Maintained by update_gems automation ### +pkg.version '1.17.2' +if platform.is_windows? + # GEM TYPE: x64-mingw32 + pkg.sha256sum '' +else + pkg.sha256sum '297235842e5947cc3036ebe64077584bff583cd7a4e94e9a02fdec399ef46da6' +end +### End automated maintenance section ### +``` +The rake task will leave any lines it doesn't know about alone (in this case, the if/else/end logic) and update both checksums, with the default without the `# GEM TYPE` decorator being the `ruby` uncompiled gem. Try not to get too fancy with logic in here. diff --git a/configs/components/rubygem-CFPropertyList.rb b/configs/components/rubygem-CFPropertyList.rb index 2306c827..8ce5a853 100644 --- a/configs/components/rubygem-CFPropertyList.rb +++ b/configs/components/rubygem-CFPropertyList.rb @@ -2,15 +2,15 @@ # Component release information: # https://rubygems.org/gems/CFPropertyList # https://github.com/ckruse/CFPropertyList/tags +# Notes: +# - 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| - if settings[:ruby_version].to_f >= 3.2 - pkg.version '3.0.7' - pkg.md5sum 'ed89ce5e7074a6f8e8b8e744eaf014d0' - else - pkg.version '2.3.6' - pkg.md5sum 'ae4086185992f293ffab1641b83286a5' - end + ### Maintained by update_gems automation ### + pkg.version '3.0.7' + pkg.md5sum 'ed89ce5e7074a6f8e8b8e744eaf014d0' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') pkg.environment "GEM_HOME", settings[:gem_home] diff --git a/configs/components/rubygem-addressable.rb b/configs/components/rubygem-addressable.rb index 4fae8811..d37b91da 100644 --- a/configs/components/rubygem-addressable.rb +++ b/configs/components/rubygem-addressable.rb @@ -3,9 +3,11 @@ # https://rubygems.org/gems/addressable # https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md ##### -component "rubygem-addressable" do |pkg, settings, platform| - pkg.version "2.8.7" - pkg.sha256sum "462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232" +component 'rubygem-addressable' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '2.8.7' + pkg.sha256sum '462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-aws-eventstream.rb b/configs/components/rubygem-aws-eventstream.rb index ddaff756..0d13cff2 100644 --- a/configs/components/rubygem-aws-eventstream.rb +++ b/configs/components/rubygem-aws-eventstream.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-aws-partitions.rb b/configs/components/rubygem-aws-partitions.rb index 8e62f917..a1ccd598 100644 --- a/configs/components/rubygem-aws-partitions.rb +++ b/configs/components/rubygem-aws-partitions.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-aws-sdk-core.rb b/configs/components/rubygem-aws-sdk-core.rb index 4b18e834..4ba1b40d 100644 --- a/configs/components/rubygem-aws-sdk-core.rb +++ b/configs/components/rubygem-aws-sdk-core.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-aws-sdk-ec2.rb b/configs/components/rubygem-aws-sdk-ec2.rb index e2fd558e..3ef8beb5 100644 --- a/configs/components/rubygem-aws-sdk-ec2.rb +++ b/configs/components/rubygem-aws-sdk-ec2.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-aws-sigv4.rb b/configs/components/rubygem-aws-sigv4.rb index 53bfd865..c71eb9dc 100644 --- a/configs/components/rubygem-aws-sigv4.rb +++ b/configs/components/rubygem-aws-sigv4.rb @@ -3,9 +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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-base64.rb b/configs/components/rubygem-base64.rb index 5d445eeb..61a02a2f 100644 --- a/configs/components/rubygem-base64.rb +++ b/configs/components/rubygem-base64.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/base64/releases ##### component 'rubygem-base64' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.3.0' pkg.sha256sum '27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-bcrypt_pbkdf.rb b/configs/components/rubygem-bcrypt_pbkdf.rb index 16d4495f..a1375226 100644 --- a/configs/components/rubygem-bcrypt_pbkdf.rb +++ b/configs/components/rubygem-bcrypt_pbkdf.rb @@ -4,8 +4,10 @@ # https://github.com/net-ssh/bcrypt_pbkdf-ruby/tags ##### component 'rubygem-bcrypt_pbkdf' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### pkg.version '1.1.1' pkg.md5sum '3efcbfd0289e0783513b738823a2deba' + ### 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 fe28752a..80fc3f4d 100644 --- a/configs/components/rubygem-bindata.rb +++ b/configs/components/rubygem-bindata.rb @@ -4,8 +4,10 @@ # https://github.com/dmendel/bindata/blob/master/ChangeLog.rdoc ##### component 'rubygem-bindata' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.5.1' pkg.sha256sum '53186a1ec2da943d4cb413583d680644eb810aacbf8902497aac8f191fad9e58' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-builder.rb b/configs/components/rubygem-builder.rb index b6b1ee88..d03c59c2 100644 --- a/configs/components/rubygem-builder.rb +++ b/configs/components/rubygem-builder.rb @@ -4,8 +4,10 @@ # https://github.com/rails/builder/blob/master/CHANGES ##### component 'rubygem-builder' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.3.0' pkg.md5sum '3048be022111b96f47bb17c34c67dbc7' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-colored2.rb b/configs/components/rubygem-colored2.rb index 4408f288..5ecdbb2e 100644 --- a/configs/components/rubygem-colored2.rb +++ b/configs/components/rubygem-colored2.rb @@ -4,8 +4,10 @@ # https://github.com/kigster/colored2/releases ##### component 'rubygem-colored2' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '4.0.3' pkg.sha256sum '63e1038183976287efc43034f5cca17fb180b4deef207da8ba78d051cbce2b37' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-concurrent-ruby.rb b/configs/components/rubygem-concurrent-ruby.rb index 2aff2e49..b8f8844c 100644 --- a/configs/components/rubygem-concurrent-ruby.rb +++ b/configs/components/rubygem-concurrent-ruby.rb @@ -4,8 +4,10 @@ # https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md ##### component 'rubygem-concurrent-ruby' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.3.5' pkg.sha256sum '813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-connection_pool.rb b/configs/components/rubygem-connection_pool.rb index a4418683..49557e1c 100644 --- a/configs/components/rubygem-connection_pool.rb +++ b/configs/components/rubygem-connection_pool.rb @@ -8,8 +8,11 @@ # affect performance. There are no security fixes between 2.4.1 and 2.5.4. ##### component 'rubygem-connection_pool' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED pkg.version '2.4.1' pkg.md5sum 'fd45f00b6d127bb49845afd7f7b91baa' + ### 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 73105902..0de0b6e8 100644 --- a/configs/components/rubygem-cri.rb +++ b/configs/components/rubygem-cri.rb @@ -3,9 +3,11 @@ # https://rubygems.org/gems/cri # https://github.com/denisdefreyne/cri/releases ##### -component "rubygem-cri" do |pkg, settings, platform| - pkg.version "2.15.12" - pkg.sha256sum "8abfe924ef53e772a8e4ee907e791d3bfcfca78bc62a5859e3b9899ba29956e5" +component 'rubygem-cri' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '2.15.12' + pkg.sha256sum '8abfe924ef53e772a8e4ee907e791d3bfcfca78bc62a5859e3b9899ba29956e5' + ### 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 e76faccc..1d9d36a5 100644 --- a/configs/components/rubygem-deep_merge.rb +++ b/configs/components/rubygem-deep_merge.rb @@ -4,8 +4,10 @@ # https://github.com/danielsdeleo/deep_merge/blob/master/CHANGELOG ##### 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') diff --git a/configs/components/rubygem-ed25519.rb b/configs/components/rubygem-ed25519.rb index 056ea244..366e4a80 100644 --- a/configs/components/rubygem-ed25519.rb +++ b/configs/components/rubygem-ed25519.rb @@ -4,8 +4,10 @@ # https://github.com/RubyCrypto/ed25519/blob/main/CHANGES.md ##### component 'rubygem-ed25519' do |pkg, _settings, _platform| + ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.sha256sum '16e97f5198689a154247169f3453ef4cfd3f7a47481fde0ae33206cdfdcac506' + ### 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 6f3bd4d4..fa0e1454 100644 --- a/configs/components/rubygem-erubi.rb +++ b/configs/components/rubygem-erubi.rb @@ -4,8 +4,10 @@ # https://github.com/jeremyevans/erubi/blob/master/CHANGELOG ##### component 'rubygem-erubi' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.13.1' pkg.sha256sum 'a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9' + ### 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 0c08e1ed..a8931ca7 100644 --- a/configs/components/rubygem-faraday-em_http.rb +++ b/configs/components/rubygem-faraday-em_http.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-em_http/releases ##### component 'rubygem-faraday-em_http' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.0.1' pkg.sha256sum '05d3845d0b298a7dfbfb8205db39d10f1bc898d455be7a678ca6f460aba71632' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-em_synchrony.rb b/configs/components/rubygem-faraday-em_synchrony.rb index e2ad52a3..df756857 100644 --- a/configs/components/rubygem-faraday-em_synchrony.rb +++ b/configs/components/rubygem-faraday-em_synchrony.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-em_synchrony/releases ##### component 'rubygem-faraday-em_synchrony' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.0.1' pkg.sha256sum 'bf3ce45dcf543088d319ab051f80985ea6d294930635b7a0b966563179f81750' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-excon.rb b/configs/components/rubygem-faraday-excon.rb index e4756167..5af6bc01 100644 --- a/configs/components/rubygem-faraday-excon.rb +++ b/configs/components/rubygem-faraday-excon.rb @@ -5,8 +5,10 @@ # https://github.com/excon/faraday-excon/releases ##### component 'rubygem-faraday-excon' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.3.0' pkg.sha256sum 'c5fc7175ab284b164496559e35f550587ec5b028b3cdbb40b7ebe83aa7e5b575' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-follow_redirects.rb b/configs/components/rubygem-faraday-follow_redirects.rb index e0430de6..df05ee3f 100644 --- a/configs/components/rubygem-faraday-follow_redirects.rb +++ b/configs/components/rubygem-faraday-follow_redirects.rb @@ -4,8 +4,10 @@ # https://github.com/tisba/faraday-follow-redirects/blob/main/CHANGELOG.md ##### component 'rubygem-faraday-follow_redirects' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.3.0' pkg.md5sum '75fa678fa40b54a94e51efc1600a6461' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-httpclient.rb b/configs/components/rubygem-faraday-httpclient.rb index 62e6cf97..bfc4c908 100644 --- a/configs/components/rubygem-faraday-httpclient.rb +++ b/configs/components/rubygem-faraday-httpclient.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-httpclient/releases ##### component 'rubygem-faraday-httpclient' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.0.2' pkg.sha256sum 'd95fbe60cce5a87e157957d67c539a4c22fb8b0b0611d493a939cdde19d8d67c' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-multipart.rb b/configs/components/rubygem-faraday-multipart.rb index a90b65e0..61619321 100644 --- a/configs/components/rubygem-faraday-multipart.rb +++ b/configs/components/rubygem-faraday-multipart.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-multipart/releases ##### component 'rubygem-faraday-multipart' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.1.1' pkg.sha256sum '77a18ff40149030fd1aef55bb4fc7a67ce46419a8a3fcd010e28c2526e8d8903' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-net_http.rb b/configs/components/rubygem-faraday-net_http.rb index 37bf660c..5d1f6dc6 100644 --- a/configs/components/rubygem-faraday-net_http.rb +++ b/configs/components/rubygem-faraday-net_http.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-net_http/releases ##### component 'rubygem-faraday-net_http' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.4.1' pkg.sha256sum '095757fae7872b94eac839c08a1a4b8d84fd91d6886cfbe75caa2143de64ab3b' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-net_http_persistent.rb b/configs/components/rubygem-faraday-net_http_persistent.rb index d75eb217..e01a5f96 100644 --- a/configs/components/rubygem-faraday-net_http_persistent.rb +++ b/configs/components/rubygem-faraday-net_http_persistent.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-net_http_persistent/releases ##### component 'rubygem-faraday-net_http_persistent' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.3.1' pkg.sha256sum '23ffba37d6a27807a10f033d01918ec958aa73fa6ff0fccfbcd5ce2d2e68fca3' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-patron.rb b/configs/components/rubygem-faraday-patron.rb index 524f1e4a..628b0870 100644 --- a/configs/components/rubygem-faraday-patron.rb +++ b/configs/components/rubygem-faraday-patron.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-patron/releases ##### component 'rubygem-faraday-patron' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.0.2' pkg.sha256sum 'cd4b77d48e3c638ce25c22b6affe2714cf13af99bfa8348c1c7f6733fc5f2086' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-rack.rb b/configs/components/rubygem-faraday-rack.rb index fdaedf7c..e5ef2a09 100644 --- a/configs/components/rubygem-faraday-rack.rb +++ b/configs/components/rubygem-faraday-rack.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-rack/releases ##### component 'rubygem-faraday-rack' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.1.3' pkg.sha256sum '9869993a8f1010ade286bda697dea43a8f29f0ab760877d73ec7de5d1d18faed' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday-retry.rb b/configs/components/rubygem-faraday-retry.rb index dc825ae6..be40bd7e 100644 --- a/configs/components/rubygem-faraday-retry.rb +++ b/configs/components/rubygem-faraday-retry.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday-retry/releases ##### component 'rubygem-faraday-retry' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.3.2' pkg.sha256sum '2402d2029032ebd238a2046221e67f6ef0da78c5a8ce8cd4f8b9c62e4d6451d1' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-faraday.rb b/configs/components/rubygem-faraday.rb index 15b47a23..437ebd8b 100644 --- a/configs/components/rubygem-faraday.rb +++ b/configs/components/rubygem-faraday.rb @@ -4,8 +4,10 @@ # https://github.com/lostisland/faraday/releases ##### component 'rubygem-faraday' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.13.4' pkg.sha256sum 'c719ff52cfd0dbaeca79dd83ed3aeea3f621032abf8bc959d1c05666157cac26' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-fast_gettext.rb b/configs/components/rubygem-fast_gettext.rb index 3ea744d6..f9fc2d40 100644 --- a/configs/components/rubygem-fast_gettext.rb +++ b/configs/components/rubygem-fast_gettext.rb @@ -6,8 +6,11 @@ # relies on gettext-setup, which pins fast_gettext ~> 2.1. ##### component "rubygem-fast_gettext" do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED pkg.version '2.4.0' pkg.sha256sum 'fd26c4c406aa10be34f0fd2847ce3ffdc1e9d9798de87538594757bbb9175fbf' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-ffi.rb b/configs/components/rubygem-ffi.rb index be14b024..760d8276 100644 --- a/configs/components/rubygem-ffi.rb +++ b/configs/components/rubygem-ffi.rb @@ -5,116 +5,42 @@ # Notes: # Read the comments in the code below carefully. ##### -component "rubygem-ffi" do |pkg, settings, platform| - if platform.is_cross_compiled? && (platform.is_linux? || platform.is_solaris?) - # Installing ffi >= 1.14.0 blows up horribly if we're cross compiling on Linux and Solaris. - # This is because we're using old rubies (2.1 and 2.0) to install gems which do not have - # methods like `append_ldflags`. - # (see https://github.com/ffi/ffi/commit/3aa6b25f5423a64ad4afa7f2a5a5855483bae3c2) - # - # A more long term solution would be to update the host rubies on those - # platforms to something newer (preferably the same API version as the ruby - # we're building for). We can probably avoid this until we start shipping Ruby 3. - pkg.version '1.13.1' - pkg.sha256sum '4e15f52ee45af7c5674d656041855448adbb5022618be252cd602d81b8e2978a' - else - pkg.version '1.17.2' - pkg.sha256sum '297235842e5947cc3036ebe64077584bff583cd7a4e94e9a02fdec399ef46da6' - end - - rb_major_minor_version = settings[:ruby_version].to_f - - # Windows versions of the FFI gem have custom filenames, so we overwite the - # defaults that _base-rubygem provides here, just for Windows for Ruby < 3.2 - if platform.is_windows? && rb_major_minor_version < 3.2 - # Pin this if lower than Ruby 2.7 - pkg.version '1.9.25' if rb_major_minor_version < 2.7 - - instance_eval File.read('configs/components/_base-rubygem.rb') - - # Vanagon's `pkg.mirror` is additive, and the _base_rubygem sets the - # non-Windows gem as the first mirror, which is incorrect. We need to unset - # the list of mirrors before adding the Windows-appropriate ones here: - @component.mirrors = [] - # Same for install steps: - @component.install = [] - - if platform.architecture == "x64" - # NOTE: make sure to verify the shas for the x64-mingw32 gem! - case pkg.get_version - when '1.9.25' - pkg.sha256sum '5473ac958b78f271f53e9a88197c35cd3e990fbe625d21e525c56d62ae3750da' - when '1.17.2' - pkg.sha256sum 'c67b84b1bd54b680bcc23b516e87c96b4585cad3ca9e0afea953c9a9cb90243d' - end - - pkg.url "https://rubygems.org/downloads/ffi-#{pkg.get_version}-x64-mingw32.gem" - pkg.mirror "#{settings[:buildsources_url]}/ffi-#{pkg.get_version}-x64-mingw32.gem" - else - # Note make sure to verify the shas from the x86-mingw32 gem! - case pkg.get_version - when '1.9.25' - pkg.sha256sum '43d357732a6a0e3e41dc7e28a9c9c5112ac66f4a6ed9e1de40afba9ffcb836c1' - when '1.17.2' - pkg.sha256sum '5052e800045e95acdcd2c404777d5296751e66553c12ff4bf20f29ddcc9e4139' - end - - pkg.url "https://rubygems.org/downloads/ffi-#{pkg.get_version}-x86-mingw32.gem" - pkg.mirror "#{settings[:buildsources_url]}/ffi-#{pkg.get_version}-x86-mingw32.gem" - end - - pkg.install do - "#{settings[:gem_install]} ffi-#{pkg.get_version}-#{platform.architecture}-mingw32.gem" - end - else - # Prior to ruby 3.2, both ruby and the ffi gem vendored a version of libffi. - # If libffi happened to be installed in /usr/lib, then the ffi gem preferred - # that instead of building libffi itself. To ensure consistency, we use - # --disable-system-libffi so that the ffi gem *always* builds libffi, then - # builds the ffi_c native extension and links it against libffi.so. - # - # In ruby 3.2 and up, libffi is no longer vendored. So we created a separate - # libffi vanagon component which is built before ruby. The ffi gem still - # vendors libffi, so we use the --enable-system-libffi option to ensure the ffi - # 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] = - if rb_major_minor_version > 2.7 - "-- --enable-system-libffi" - else - "-- --disable-system-libffi" - end - instance_eval File.read('configs/components/_base-rubygem.rb') - end +component 'rubygem-ffi' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '1.17.2' + pkg.sha256sum '297235842e5947cc3036ebe64077584bff583cd7a4e94e9a02fdec399ef46da6' + ### End automated maintenance section ### + + # Prior to ruby 3.2, both ruby and the ffi gem vendored a version of libffi. + # If libffi happened to be installed in /usr/lib, then the ffi gem preferred + # that instead of building libffi itself. To ensure consistency, we use + # --disable-system-libffi so that the ffi gem *always* builds libffi, then + # builds the ffi_c native extension and links it against libffi.so. + # + # In ruby 3.2 and up, libffi is no longer vendored. So we created a separate + # libffi vanagon component which is built before ruby. The ffi gem still + # vendors libffi, so we use the --enable-system-libffi option to ensure the ffi + # 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" + 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.is_cross_compiled_linux? - pkg.environment "PATH", "/opt/pl-build-tools/bin:$(PATH)" - elsif platform.is_solaris? - if settings[:ruby_version] =~ /3\.\d+\.\d+/ - if !platform.is_cross_compiled? && platform.architecture == 'sparc' - pkg.environment "PATH", "#{settings[:ruby_bindir]}:$(PATH)" - else - pkg.environment "PATH", "/opt/csw/bin:/opt/pl-build-tools/bin:$(PATH)" - end + if platform.is_solaris? + if !platform.is_cross_compiled? && platform.architecture == 'sparc' + pkg.environment "PATH", "#{settings[:ruby_bindir]}:$(PATH)" else - pkg.environment "PATH", "/opt/pl-build-tools/bin:/opt/csw/bin:$(PATH)" + pkg.environment "PATH", "/opt/csw/bin:$(PATH)" end - elsif platform.is_aix? - pkg.environment 'PATH', '/opt/freeware/bin:/opt/pl-build-tools/bin:$(PATH)' - elsif platform.name == 'sles-11-x86_64' - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH)' + elsif platform.is_aix? + pkg.environment 'PATH', '/opt/freeware/bin:$(PATH)' end - # With Ruby 3.2 on Solaris-11 we install OpenSCW's libffi, no need to copy over the system libffi - if platform.name =~ /solaris-11-i386/ && rb_major_minor_version < 3.2 - pkg.install_file "/usr/lib/libffi.so.5.0.10", "#{settings[:libdir]}/libffi.so" - elsif platform.name =~ /solaris-10-i386/ - # If we ever support Solaris-11 on Ruby 3.2, then we won't want to do this + if platform.name =~ /solaris-10-i386/ pkg.install_file "/opt/csw/lib/libffi.so.6", "#{settings[:libdir]}/libffi.so.6" end @@ -125,6 +51,8 @@ when /solaris-10/ "/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" end diff --git a/configs/components/rubygem-gettext-setup.rb b/configs/components/rubygem-gettext-setup.rb index c971a3db..deb4ce28 100644 --- a/configs/components/rubygem-gettext-setup.rb +++ b/configs/components/rubygem-gettext-setup.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-gettext.rb b/configs/components/rubygem-gettext.rb index 2c248fa0..29af0b0b 100644 --- a/configs/components/rubygem-gettext.rb +++ b/configs/components/rubygem-gettext.rb @@ -3,9 +3,11 @@ # 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' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-gssapi.rb b/configs/components/rubygem-gssapi.rb index fb608ec3..9bc480ba 100644 --- a/configs/components/rubygem-gssapi.rb +++ b/configs/components/rubygem-gssapi.rb @@ -5,8 +5,10 @@ # (Not up to date) https://github.com/zenchild/gssapi/blob/main/Changelog.md ##### component 'rubygem-gssapi' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.3.1' pkg.md5sum '4bd2df09d8e0ab4c6d2e1828c344eba1' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-gyoku.rb b/configs/components/rubygem-gyoku.rb index 54c6908a..012b190e 100644 --- a/configs/components/rubygem-gyoku.rb +++ b/configs/components/rubygem-gyoku.rb @@ -4,8 +4,10 @@ # https://github.com/savonrb/gyoku/blob/main/CHANGELOG.md ##### component 'rubygem-gyoku' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.md5sum 'fecd9488be9b07a250349e9bbe048e5f' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-hiera-eyaml.rb b/configs/components/rubygem-hiera-eyaml.rb index aa588b38..f99635ec 100644 --- a/configs/components/rubygem-hiera-eyaml.rb +++ b/configs/components/rubygem-hiera-eyaml.rb @@ -4,13 +4,14 @@ # https://github.com/voxpupuli/hiera-eyaml/blob/master/CHANGELOG.md ##### component 'rubygem-hiera-eyaml' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '4.3.0' pkg.sha256sum '19eba2ea9d70b2d56de064df9e3242860d8070d47ff9c9a6348b7fe94708ab0a' - - instance_eval File.read('configs/components/_base-rubygem.rb') - pkg.build_requires 'rubygem-optimist' pkg.build_requires 'rubygem-highline' + ### 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. diff --git a/configs/components/rubygem-hiera.rb b/configs/components/rubygem-hiera.rb index 30ea87d8..d1709b5a 100644 --- a/configs/components/rubygem-hiera.rb +++ b/configs/components/rubygem-hiera.rb @@ -4,8 +4,10 @@ # https://github.com/puppetlabs/hiera/tags ##### component 'rubygem-hiera' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.12.0' pkg.md5sum '67249a25571c9ee83cdb68579faf3f0d' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-highline.rb b/configs/components/rubygem-highline.rb index 3b8e6409..c6bfd671 100644 --- a/configs/components/rubygem-highline.rb +++ b/configs/components/rubygem-highline.rb @@ -4,13 +4,10 @@ # https://github.com/JEG2/highline/blob/master/Changelog.md ##### component 'rubygem-highline' do |pkg, settings, _platform| - if settings[:ruby_version].to_f >= 3.2 - pkg.version '3.1.2' - pkg.sha256sum '67cbd34d19f6ef11a7ee1d82ffab5d36dfd5b3be861f450fc1716c7125f4bb4a' - else - pkg.version '2.1.0' - pkg.sha256sum 'd63d7f472f8ffaa143725161ae6fb06895b5cb7527e0b4dac5ad1e4902c80cb9' - end + ### Maintained by update_gems automation ### + pkg.version '3.1.2' + pkg.sha256sum '67cbd34d19f6ef11a7ee1d82ffab5d36dfd5b3be861f450fc1716c7125f4bb4a' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-hocon.rb b/configs/components/rubygem-hocon.rb index 17aaa944..3c0d038c 100644 --- a/configs/components/rubygem-hocon.rb +++ b/configs/components/rubygem-hocon.rb @@ -5,9 +5,11 @@ # (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" + pkg.sha256sum 'e71023ed7c56ae780ec34c0ce7789a233bcead08c045d50bc7b3af40f5afcd80' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-httpclient.rb b/configs/components/rubygem-httpclient.rb index 5de2d92a..86c428b0 100644 --- a/configs/components/rubygem-httpclient.rb +++ b/configs/components/rubygem-httpclient.rb @@ -4,8 +4,10 @@ # https://github.com/nahi/httpclient/blob/master/CHANGELOG.md ##### component 'rubygem-httpclient' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.9.0' pkg.sha256sum '4b645958e494b2f86c2f8a2f304c959baa273a310e77a2931ddb986d83e498c8' + ### 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 b6b52f70..d4a11bb4 100644 --- a/configs/components/rubygem-jmespath.rb +++ b/configs/components/rubygem-jmespath.rb @@ -3,9 +3,11 @@ # https://rubygems.org/gems/jmespath # https://github.com/jmespath/jmespath.rb/releases ##### -component "rubygem-jmespath" do |pkg, settings, platform| - pkg.version "1.6.2" - pkg.md5sum "fdd62edafbd40171f976a53ab349ae9e" +component 'rubygem-jmespath' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '1.6.2' + pkg.md5sum 'fdd62edafbd40171f976a53ab349ae9e' + ### 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 38eba83e..94e1a8ee 100644 --- a/configs/components/rubygem-jwt.rb +++ b/configs/components/rubygem-jwt.rb @@ -8,9 +8,12 @@ # this isn't even having the effect we want. Should take a look to # see if we should just remove this component. ##### -component "rubygem-jwt" do |pkg, settings, platform| - pkg.version "2.7.1" - pkg.md5sum "d3a7ba14444b03f91c7d36b61519fe17" +component 'rubygem-jwt' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED + pkg.version '2.7.1' + pkg.md5sum 'd3a7ba14444b03f91c7d36b61519fe17' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-little-plugger.rb b/configs/components/rubygem-little-plugger.rb index 65e0d6ce..086b1d87 100644 --- a/configs/components/rubygem-little-plugger.rb +++ b/configs/components/rubygem-little-plugger.rb @@ -4,8 +4,10 @@ # https://github.com/TwP/little-plugger/blob/master/History.txt ##### component 'rubygem-little-plugger' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.1.4' pkg.md5sum '8b1cf294a87eaabd12d5326bc13d7fe0' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-locale.rb b/configs/components/rubygem-locale.rb index bf3d32fa..7155a968 100644 --- a/configs/components/rubygem-locale.rb +++ b/configs/components/rubygem-locale.rb @@ -4,9 +4,11 @@ # 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| - pkg.version "2.1.4" - pkg.md5sum "c324a7f34b94044f8d38eabff159de62" +component 'rubygem-locale' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '2.1.4' + pkg.md5sum 'c324a7f34b94044f8d38eabff159de62' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-log4r.rb b/configs/components/rubygem-log4r.rb index 6c2f80d2..ce2fc72e 100644 --- a/configs/components/rubygem-log4r.rb +++ b/configs/components/rubygem-log4r.rb @@ -5,8 +5,10 @@ # Hasn't been updated since 2012. Should probably dump this. ##### component 'rubygem-log4r' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.1.10' pkg.md5sum '8d54b52c97f9fc17cc20a5277af20402' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-logger.rb b/configs/components/rubygem-logger.rb index 5e25a4e8..a0410143 100644 --- a/configs/components/rubygem-logger.rb +++ b/configs/components/rubygem-logger.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/logger/releases ##### component 'rubygem-logger' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.7.0' pkg.sha256sum '196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-logging.rb b/configs/components/rubygem-logging.rb index 9e8add79..f1912122 100644 --- a/configs/components/rubygem-logging.rb +++ b/configs/components/rubygem-logging.rb @@ -4,8 +4,10 @@ # https://github.com/TwP/logging/blob/master/History.txt ##### component 'rubygem-logging' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.4.0' pkg.md5sum '8953eab63c979ecdac781cbf0da1872a' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-mini_portile2.rb b/configs/components/rubygem-mini_portile2.rb index f3c4d65a..2bc9932a 100644 --- a/configs/components/rubygem-mini_portile2.rb +++ b/configs/components/rubygem-mini_portile2.rb @@ -4,8 +4,10 @@ # 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') diff --git a/configs/components/rubygem-minitar.rb b/configs/components/rubygem-minitar.rb index d119f2a9..47ffed40 100644 --- a/configs/components/rubygem-minitar.rb +++ b/configs/components/rubygem-minitar.rb @@ -7,8 +7,11 @@ # so leaving this at 0.12.1 for now. ##### component 'rubygem-minitar' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED pkg.version '0.12.1' pkg.md5sum '975dee1dadeb26a2a01105802c3172ab' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-molinillo.rb b/configs/components/rubygem-molinillo.rb index f02966b4..1b022554 100644 --- a/configs/components/rubygem-molinillo.rb +++ b/configs/components/rubygem-molinillo.rb @@ -4,9 +4,11 @@ # https://github.com/CocoaPods/Molinillo/releases # https://github.com/CocoaPods/Molinillo/blob/master/CHANGELOG.md ##### -component "rubygem-molinillo" do |pkg, settings, platform| - pkg.version "0.8.0" - pkg.md5sum "877866cc996d5ce819dd8843b3116b5f" +component 'rubygem-molinillo' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '0.8.0' + pkg.md5sum '877866cc996d5ce819dd8843b3116b5f' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-multi_json.rb b/configs/components/rubygem-multi_json.rb index e74e483e..6c85b9dc 100644 --- a/configs/components/rubygem-multi_json.rb +++ b/configs/components/rubygem-multi_json.rb @@ -3,14 +3,11 @@ # https://rubygems.org/gems/multi_json # https://github.com/sferik/multi_json/blob/main/CHANGELOG.md ##### -component "rubygem-multi_json" do |pkg, settings, platform| - if settings[:ruby_version].to_f >= 3.0 - pkg.version '1.17.0' - pkg.sha256sum '76581f6c96aebf2e85f8a8b9854829e0988f335e8671cd1a56a1036eb75e4a1b' - else - pkg.version '1.15.0' - pkg.sha256sum '1fd04138b6e4a90017e8d1b804c039031399866ff3fbabb7822aea367c78615d' - end +component 'rubygem-multi_json' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '1.17.0' + pkg.sha256sum '76581f6c96aebf2e85f8a8b9854829e0988f335e8671cd1a56a1036eb75e4a1b' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-multipart-post.rb b/configs/components/rubygem-multipart-post.rb index 29166887..5265149a 100644 --- a/configs/components/rubygem-multipart-post.rb +++ b/configs/components/rubygem-multipart-post.rb @@ -4,8 +4,10 @@ # https://github.com/socketry/multipart-post/releases ##### component 'rubygem-multipart-post' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.4.1' pkg.md5sum '190a88b4cae633a46b64c30764e5d624' + ### 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 207fd354..e1002cb0 100644 --- a/configs/components/rubygem-net-http-persistent.rb +++ b/configs/components/rubygem-net-http-persistent.rb @@ -4,8 +4,10 @@ # https://github.com/drbrain/net-http-persistent/blob/master/History.txt ##### component 'rubygem-net-http-persistent' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '4.0.6' pkg.sha256sum '2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d' + ### 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 4246a20f..0cbe7253 100644 --- a/configs/components/rubygem-net-scp.rb +++ b/configs/components/rubygem-net-scp.rb @@ -4,8 +4,10 @@ # https://github.com/net-ssh/net-scp/tags ##### component 'rubygem-net-scp' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '4.1.0' pkg.sha256sum 'a99b0b92a1e5d360b0de4ffbf2dc0c91531502d3d4f56c28b0139a7c093d1a5d' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-net-ssh-krb.rb b/configs/components/rubygem-net-ssh-krb.rb index 9f047ed2..98c49f3c 100644 --- a/configs/components/rubygem-net-ssh-krb.rb +++ b/configs/components/rubygem-net-ssh-krb.rb @@ -3,9 +3,11 @@ # 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.md5sum '58f770a6a8eca61b5da467d584bb7016' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-net-ssh.rb b/configs/components/rubygem-net-ssh.rb index 758a9ee4..17524b13 100644 --- a/configs/components/rubygem-net-ssh.rb +++ b/configs/components/rubygem-net-ssh.rb @@ -3,17 +3,11 @@ # 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| - if platform.is_cross_compiled? && platform.is_solaris? - # Building agent-runtime-7.x on Solaris 10/11 SPARC fails with newer versions of net-ssh because those platforms - # use older (<= 2.1) versions of Ruby for cross-compiling. Pin to 4.2.0, the last version of net-ssh that supports - # those older Rubies, until we deprecate those platforms. - pkg.version '4.2.0' - pkg.md5sum "fec5b151d84110b95ec0056017804491" - else - pkg.version '7.3.0' - pkg.sha256sum '172076c4b30ce56fb25a03961b0c4da14e1246426401b0f89cba1a3b54bf3ef0' - end +component 'rubygem-net-ssh' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '7.3.0' + pkg.sha256sum '172076c4b30ce56fb25a03961b0c4da14e1246426401b0f89cba1a3b54bf3ef0' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-nokogiri.rb b/configs/components/rubygem-nokogiri.rb deleted file mode 100644 index 50d2f97e..00000000 --- a/configs/components/rubygem-nokogiri.rb +++ /dev/null @@ -1,30 +0,0 @@ -##### -# Component release information: -# https://rubygems.org/gems/nokogiri -# https://nokogiri.org/CHANGELOG.html -##### -component 'rubygem-nokogiri' do |pkg, settings, _platform| - pkg.version '1.18.9' - pkg.sha256sum 'ac5a7d93fd0e3cef388800b037407890882413feccca79eb0272a2715a82fa33' - - cflags = platform.is_macos? ? settings[:cflags] + '--with-cflags="-Wno-incompatible-function-pointer-types"' : '' - settings["#{pkg.get_name}_gem_install_options".to_sym] = "--platform=ruby -- \ - --use-system-libraries \ - --with-xml2-lib=#{settings[:libdir]} \ - --with-xml2-include=#{settings[:includedir]}/libxml2 \ - --with-xslt-lib=#{settings[:libdir]} \ - --with-xslt-include=#{settings[:includedir]} \ - #{cflags}" - instance_eval File.read('configs/components/_base-rubygem.rb') - pkg.build_requires 'rubygem-mini_portile2' - gem_home = settings[:gem_home] - pkg.environment "GEM_HOME", gem_home - if platform.is_macos? - pkg.environment "PKG_CONFIG_PATH", "#{settings[:libdir]}/pkgconfig" - if platform.is_cross_compiled? - pkg.install do - "rm -r #{gem_home}/gems/nokogiri-#{pkg.get_version}/ext/nokogiri/tmp" - end - end - end -end diff --git a/configs/components/rubygem-nori.rb b/configs/components/rubygem-nori.rb index f9d01248..ae9ae40b 100644 --- a/configs/components/rubygem-nori.rb +++ b/configs/components/rubygem-nori.rb @@ -5,13 +5,10 @@ # https://github.com/savonrb/nori/blob/main/CHANGELOG.md ##### component 'rubygem-nori' do |pkg, settings, platform| - if settings[:ruby_version].to_f >= 3.0 - pkg.version '2.7.1' - pkg.md5sum '83952a081b5e86d5aa62943ca9ccf312' - else - pkg.version '2.6.0' - pkg.md5sum 'dc9c83026c10a3eb7093b9c8208c84f7' - end + ### Maintained by update_gems automation ### + pkg.version '2.7.1' + pkg.md5sum '83952a081b5e86d5aa62943ca9ccf312' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-openfact.rb b/configs/components/rubygem-openfact.rb index 84afad9c..273ad05e 100644 --- a/configs/components/rubygem-openfact.rb +++ b/configs/components/rubygem-openfact.rb @@ -4,8 +4,10 @@ # https://github.com/OpenVoxProject/openfact/releases ##### component 'rubygem-openfact' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '5.1.0' pkg.sha256sum '569b93bc6941f8efeef55c138577ae2e3ff4f6727657f9f48925c4a657d3f70c' + ### 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 0c8cffe8..130c577a 100644 --- a/configs/components/rubygem-optimist.rb +++ b/configs/components/rubygem-optimist.rb @@ -4,8 +4,10 @@ # https://github.com/ManageIQ/optimist/blob/master/CHANGELOG.md ##### component 'rubygem-optimist' do |pkg, settings, _platform| + ### Maintained by update_gems automation ### pkg.version '3.2.1' pkg.sha256sum '8cf8a0fd69f3aa24ab48885d3a666717c27bc3d9edd6e976e18b9d771e72e34e' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-orchestrator_client.rb b/configs/components/rubygem-orchestrator_client.rb index 22f75282..12ab1f11 100644 --- a/configs/components/rubygem-orchestrator_client.rb +++ b/configs/components/rubygem-orchestrator_client.rb @@ -4,8 +4,10 @@ # https://github.com/puppetlabs/orchestrator_client-ruby/tags ##### component 'rubygem-orchestrator_client' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.7.1' pkg.md5sum '177686e31c134ae9fdee25ba8c0404a0' + ### 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 6536b5a0..ceff522d 100644 --- a/configs/components/rubygem-paint.rb +++ b/configs/components/rubygem-paint.rb @@ -4,8 +4,10 @@ # https://github.com/janlelis/paint/blob/main/CHANGELOG.md ##### component 'rubygem-paint' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.3.0' pkg.md5sum '5f51716cec1f4fe3db8ba1880f9fc875' + ### End automated maintenance section ### 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 e9c8e695..f87b19a5 100644 --- a/configs/components/rubygem-prime.rb +++ b/configs/components/rubygem-prime.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/prime/releases ##### component 'rubygem-prime' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.1.4' pkg.sha256sum '4d755ebf7c2994a6f3a3fee0d072063be3fff2d4042ebff6cd5eebd4747a225e' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-public_suffix.rb b/configs/components/rubygem-public_suffix.rb index 11eb90c2..8d9f2d43 100644 --- a/configs/components/rubygem-public_suffix.rb +++ b/configs/components/rubygem-public_suffix.rb @@ -4,8 +4,10 @@ # https://github.com/weppos/publicsuffix-ruby/blob/main/CHANGELOG.md ##### component 'rubygem-public_suffix' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '6.0.2' pkg.sha256sum 'bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-puppet-resource_api.rb b/configs/components/rubygem-puppet-resource_api.rb index 52c21317..d039dd65 100644 --- a/configs/components/rubygem-puppet-resource_api.rb +++ b/configs/components/rubygem-puppet-resource_api.rb @@ -5,8 +5,10 @@ # https://github.com/puppetlabs/puppet-resource_api/blob/main/CHANGELOG.md ##### component 'rubygem-puppet-resource_api' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.0.0' pkg.sha256sum '4649fcb5d5e5f8cbda0887f706b95be5b52a089bcf98ce8ebf0496c3266fd9c4' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-puppet-strings.rb b/configs/components/rubygem-puppet-strings.rb index 24cfa7e4..864b50d7 100644 --- a/configs/components/rubygem-puppet-strings.rb +++ b/configs/components/rubygem-puppet-strings.rb @@ -5,8 +5,10 @@ # 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 index 3ec9f19b..028ebc23 100644 --- a/configs/components/rubygem-puppet.rb +++ b/configs/components/rubygem-puppet.rb @@ -6,8 +6,10 @@ # 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 0b3b8d56..6ce2425c 100644 --- a/configs/components/rubygem-puppet_forge.rb +++ b/configs/components/rubygem-puppet_forge.rb @@ -9,8 +9,11 @@ # in the agent before bumping this. ##### component 'rubygem-puppet_forge' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED pkg.version '5.0.4' pkg.md5sum '04a2ca2f027ed41d9142ced587b71bd7' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-puppetfile-resolver.rb b/configs/components/rubygem-puppetfile-resolver.rb index fd8affba..8dae4f4d 100644 --- a/configs/components/rubygem-puppetfile-resolver.rb +++ b/configs/components/rubygem-puppetfile-resolver.rb @@ -5,9 +5,11 @@ # Notes: # Deprecated and needs to be removed. ##### -component "rubygem-puppetfile-resolver" do |pkg, settings, platform| - pkg.version "0.6.3" - pkg.md5sum "8377387749cf0fcfcfd9f8c0c6baaf0c" +component 'rubygem-puppetfile-resolver' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '0.6.3' + pkg.md5sum '8377387749cf0fcfcfd9f8c0c6baaf0c' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-r10k.rb b/configs/components/rubygem-r10k.rb index a09e6924..5a76bf49 100644 --- a/configs/components/rubygem-r10k.rb +++ b/configs/components/rubygem-r10k.rb @@ -4,8 +4,10 @@ # https://github.com/puppetlabs/r10k/blob/main/CHANGELOG.mkd ##### component 'rubygem-r10k' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '5.0.2' pkg.sha256sum '48e24e2b8447cdc56b03303b741247a5255bb40f170c9d113c5d3dbd8c83e8b3' + ### 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 607ad6a5..86726bbb 100644 --- a/configs/components/rubygem-rexml.rb +++ b/configs/components/rubygem-rexml.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/rexml/releases ##### component 'rubygem-rexml' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.4.2' pkg.sha256sum '1384268554a37af5da5279431ca3f2f37d46f09ffdd6c95e17cc84c83ea7c417' + ### End automated maintenance section ### settings["#{pkg.get_name}_remove_older_versions".to_sym] = true diff --git a/configs/components/rubygem-rgen.rb b/configs/components/rubygem-rgen.rb index aa659eb7..21d86f9f 100644 --- a/configs/components/rubygem-rgen.rb +++ b/configs/components/rubygem-rgen.rb @@ -4,8 +4,10 @@ # https://github.com/mthiede/rgen/blob/master/CHANGELOG ##### component 'rubygem-rgen' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.10.2' pkg.sha256sum 'd978f84887a0b4815ff3a0e0c4d43a15cdeeac9fd4da02db8ec3ecd0f222f371' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-ruby2_keywords.rb b/configs/components/rubygem-ruby2_keywords.rb index f9a1eb17..331d6d6a 100644 --- a/configs/components/rubygem-ruby2_keywords.rb +++ b/configs/components/rubygem-ruby2_keywords.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/ruby2_keywords/releases ##### component 'rubygem-ruby2_keywords' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.0.5' pkg.md5sum '89bc1e9231e63a0f93599772ae871e03' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-ruby_smb.rb b/configs/components/rubygem-ruby_smb.rb index 559566b4..d21a9009 100644 --- a/configs/components/rubygem-ruby_smb.rb +++ b/configs/components/rubygem-ruby_smb.rb @@ -7,8 +7,11 @@ # and make sure this doesn't break Bolt SMB support. ##### component 'rubygem-ruby_smb' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + # PINNED pkg.version '1.1.0' pkg.md5sum 'f926be4cb045b5984d02dc10e2b240ca' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-rubyntlm.rb b/configs/components/rubygem-rubyntlm.rb index c5b53c7d..0be8a24f 100644 --- a/configs/components/rubygem-rubyntlm.rb +++ b/configs/components/rubygem-rubyntlm.rb @@ -6,7 +6,11 @@ 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. + ### Maintained by update_gems automation ### + # PINNED pkg.version '0.6.3' pkg.md5sum 'e1f7477acf8a7d3effb2a3fb931aa84c' + ### End automated maintenance section ### + instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-rubyzip.rb b/configs/components/rubygem-rubyzip.rb index fe7615e3..5c33356f 100644 --- a/configs/components/rubygem-rubyzip.rb +++ b/configs/components/rubygem-rubyzip.rb @@ -5,8 +5,10 @@ # https://github.com/rubyzip/rubyzip/blob/master/Changelog.md ##### component 'rubygem-rubyzip' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.0.2' pkg.sha256sum '30f75c0b631e23c0891453acbcc019bc1496cd44f4a3ade4ff76bc09a595cfa6' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-scanf.rb b/configs/components/rubygem-scanf.rb index a5a4abec..2a09454d 100644 --- a/configs/components/rubygem-scanf.rb +++ b/configs/components/rubygem-scanf.rb @@ -3,9 +3,11 @@ # 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.md5sum '6a48b02b5d7109331afa8bd9d55a802e' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-semantic_puppet.rb b/configs/components/rubygem-semantic_puppet.rb index c2326643..45763973 100644 --- a/configs/components/rubygem-semantic_puppet.rb +++ b/configs/components/rubygem-semantic_puppet.rb @@ -3,16 +3,11 @@ # https://rubygems.org/gems/semantic_puppet # https://github.com/puppetlabs/semantic_puppet/blob/main/CHANGELOG.md ##### -component "rubygem-semantic_puppet" do |pkg, settings, platform| - if platform.is_cross_compiled? && platform.is_solaris? - # solaris 10/11 sparc are failing in agent-runtime-7.x installing semantic_puppet because the gem requires ruby >= 2.7.0 - # when cross compiling on sparc, we use ancient pl-ruby or equivalent. For these older platforms, use older semantic_puppet - pkg.version = '1.0.4' - pkg.sha256sum '5d8380bf733c1552ef77e06a7c44a6d5b48def7d390ecf3bd71cad477f5ce13d' - else - pkg.version '1.1.1' - pkg.sha256sum '15ff5b48d7f856549eb66b927a8894d3668b211970c9d7dc07dd4db57f5c7a96' - end +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') diff --git a/configs/components/rubygem-sys-filesystem.rb b/configs/components/rubygem-sys-filesystem.rb index 51d81f86..80a6f102 100644 --- a/configs/components/rubygem-sys-filesystem.rb +++ b/configs/components/rubygem-sys-filesystem.rb @@ -4,13 +4,10 @@ # https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md ##### component 'rubygem-sys-filesystem' do |pkg, settings, platform| - if platform.is_solaris? - pkg.version '1.4.5' - pkg.sha256sum '1b61da4ace0f71fc4304126acf005fb8cd03677081bb352343199fddc9eaa56d' - else - pkg.version '1.5.3' - pkg.sha256sum '17b561d1be683c34bc53946461ea9d67012d8f395e7297db8c63b9018cb30ece' - end + ### Maintained by update_gems automation ### + pkg.version '1.5.3' + pkg.sha256sum '17b561d1be683c34bc53946461ea9d67012d8f395e7297db8c63b9018cb30ece' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-terminal-table.rb b/configs/components/rubygem-terminal-table.rb index 425beea4..e542a051 100644 --- a/configs/components/rubygem-terminal-table.rb +++ b/configs/components/rubygem-terminal-table.rb @@ -4,8 +4,10 @@ # https://github.com/tj/terminal-table/releases ##### component 'rubygem-terminal-table' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '4.0.0' pkg.sha256sum 'f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-text.rb b/configs/components/rubygem-text.rb index e05fae26..4d2cff19 100644 --- a/configs/components/rubygem-text.rb +++ b/configs/components/rubygem-text.rb @@ -3,9 +3,11 @@ # https://rubygems.org/gems/text # https://github.com/threedaymonk/text/tags ##### -component "rubygem-text" do |pkg, settings, platform| - pkg.version "1.3.1" - pkg.md5sum "514c3d1db7a955fe793fc0cb149c164f" +component 'rubygem-text' do |pkg, settings, platform| + ### Maintained by update_gems automation ### + pkg.version '1.3.1' + pkg.md5sum '514c3d1db7a955fe793fc0cb149c164f' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') diff --git a/configs/components/rubygem-thor.rb b/configs/components/rubygem-thor.rb index a49f5a6f..98946aaa 100644 --- a/configs/components/rubygem-thor.rb +++ b/configs/components/rubygem-thor.rb @@ -4,8 +4,10 @@ # https://github.com/rails/thor/releases ##### component 'rubygem-thor' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.4.0' pkg.sha256sum '8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d' + ### 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 deb397bd..0f047e07 100644 --- a/configs/components/rubygem-unicode-display_width.rb +++ b/configs/components/rubygem-unicode-display_width.rb @@ -4,8 +4,10 @@ # https://github.com/janlelis/unicode-display_width/blob/main/CHANGELOG.md ##### component 'rubygem-unicode-display_width' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '3.1.5' pkg.sha256sum 'bf566817855ee7ee3adcf7bace0d5906cb14401417db59193f8a5fcedf02dd4e' + ### 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 5f9d971a..e17c7793 100644 --- a/configs/components/rubygem-webrick.rb +++ b/configs/components/rubygem-webrick.rb @@ -4,8 +4,10 @@ # https://github.com/ruby/webrick/releases ##### component 'rubygem-webrick' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.9.1' pkg.sha256sum 'b42d3c94f166f3fb73d87e9b359def9b5836c426fc8beacf38f2184a21b2a989' + ### 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 93de90b5..6da5aaf9 100644 --- a/configs/components/rubygem-windows_error.rb +++ b/configs/components/rubygem-windows_error.rb @@ -4,8 +4,10 @@ # https://github.com/rapid7/windows_error/tags ##### component 'rubygem-windows_error' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.1.5' pkg.md5sum 'cb1faeaed0e3b1e4d4ad4e7d1aef76c7' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-winrm-fs.rb b/configs/components/rubygem-winrm-fs.rb index d20d1bea..3f6bad70 100644 --- a/configs/components/rubygem-winrm-fs.rb +++ b/configs/components/rubygem-winrm-fs.rb @@ -4,8 +4,10 @@ # https://github.com/WinRb/winrm-fs/tags ##### component 'rubygem-winrm-fs' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '1.3.5' pkg.md5sum 'dcde27a3aff684b8277c069cd4b2efe7' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-winrm.rb b/configs/components/rubygem-winrm.rb index 2baca8bf..7f781b64 100644 --- a/configs/components/rubygem-winrm.rb +++ b/configs/components/rubygem-winrm.rb @@ -4,8 +4,10 @@ # https://github.com/WinRb/WinRM/releases ##### component 'rubygem-winrm' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '2.3.9' pkg.sha256sum 'ef6b767c5772d06e186300b506ea5e65afb849904a551f8482a5cfc2a1be5d06' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/rubygem-yard.rb b/configs/components/rubygem-yard.rb index fc7c4b20..12830812 100644 --- a/configs/components/rubygem-yard.rb +++ b/configs/components/rubygem-yard.rb @@ -4,8 +4,10 @@ # https://github.com/lsegal/yard/releases ##### component 'rubygem-yard' do |pkg, settings, platform| + ### Maintained by update_gems automation ### pkg.version '0.9.37' pkg.sha256sum 'a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992' + ### End automated maintenance section ### instance_eval File.read('configs/components/_base-rubygem.rb') end diff --git a/configs/components/runtime-bolt.rb b/configs/components/runtime-bolt.rb deleted file mode 100644 index cafb0064..00000000 --- a/configs/components/runtime-bolt.rb +++ /dev/null @@ -1,28 +0,0 @@ -# This component exists to link in the gcc runtime libraries. -component "runtime-bolt" do |pkg, settings, platform| - 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" - - # zlib, gdbm, yaml-cpp and iconv are all runtime dependancies of ruby, and their libraries need to exist inside our vendored ruby - pkg.build_requires "pl-zlib-#{platform.architecture}" - pkg.install_file "#{settings[:tools_root]}/bin/zlib1.dll", "#{settings[:ruby_bindir]}/zlib1.dll" - 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/libiconv-2.dll", "#{settings[:ruby_bindir]}/libiconv-2.dll" - pkg.install_file "#{settings[:tools_root]}/bin/libffi-6.dll", "#{settings[:ruby_bindir]}/libffi-6.dll" - elsif settings[:supports_pie] - - # Do nothing for distros that have a suitable compiler do not use pl-build-tools - - else # Linux and Solaris systems - libbase = platform.architecture =~ /64/ ? 'lib64' : 'lib' - libdir = "/opt/pl-build-tools/#{libbase}" - pkg.add_source "file://resources/files/runtime/runtime.sh" - pkg.install do - "bash runtime.sh #{libdir}" - end - end -end diff --git a/configs/components/runtime-openbolt.rb b/configs/components/runtime-openbolt.rb new file mode 100644 index 00000000..a71c830c --- /dev/null +++ b/configs/components/runtime-openbolt.rb @@ -0,0 +1,9 @@ +# This component exists to link in the gcc runtime libraries. +component 'runtime-openbolt' do |pkg, settings, platform| + 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" + end +end diff --git a/configs/projects/bolt-runtime.rb b/configs/projects/openbolt-runtime.rb similarity index 71% rename from configs/projects/bolt-runtime.rb rename to configs/projects/openbolt-runtime.rb index 8043f44b..0c355219 100644 --- a/configs/projects/bolt-runtime.rb +++ b/configs/projects/openbolt-runtime.rb @@ -1,9 +1,9 @@ -project 'bolt-runtime' do |proj| +project 'openbolt-runtime' do |proj| # Used in component configurations to conditionally include dependencies - proj.setting(:runtime_project, 'bolt') + proj.setting(:runtime_project, 'openbolt') proj.setting(:ruby_version, '3.2') # Leave the .Z out for Ruby 3.2 proj.setting(:openssl_version, '3.0') - # Legacy algos must be enabled in OpenSSL >= 3.0 for Bolt's WinRM transport to work. + # Legacy algos must be enabled in OpenSSL >= 3.0 for OpenBolt's WinRM transport to work. proj.setting(:use_legacy_openssl_algos, true) proj.setting(:augeas_version, '1.14.1') @@ -13,48 +13,53 @@ proj.generate_archives true proj.generate_packages false - proj.description "The Bolt runtime contains third-party components needed for Bolt standalone packaging" - proj.license "See components" - proj.vendor "Vox Pupuli " - proj.homepage "https://github.com/OpenVoxProject" - proj.identifier "org.voxpupuli" + proj.description 'The OpenBolt runtime contains third-party components needed for OpenBolt standalone packaging' + proj.license 'See components' + proj.vendor 'Vox Pupuli ' + proj.homepage 'https://github.com/OpenVoxProject' + proj.identifier 'org.voxpupuli' if platform.is_windows? - proj.setting(:company_id, "PuppetLabs") - proj.setting(:product_id, "Bolt") - if platform.architecture == "x64" - proj.setting(:base_dir, "ProgramFiles64Folder") + proj.setting(:company_id, 'VoxPupuli') + proj.setting(:pl_company_id, 'PuppetLabs') + proj.setting(:product_id, 'OpenBolt') + proj.setting(:pl_product_id, 'Bolt') + 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(:prefix, File.join("C:", proj.base_dir, proj.company_id, proj.product_id)) + proj.setting(:prefix, File.join('C:', proj.base_dir, proj.company_id, proj.product_id)) else - proj.setting(:prefix, "/opt/puppetlabs/bolt") + proj.setting(:prefix, '/opt/puppetlabs/bolt') end proj.setting(:ruby_dir, proj.prefix) proj.setting(:bindir, File.join(proj.prefix, 'bin')) proj.setting(:ruby_bindir, proj.bindir) proj.setting(:libdir, File.join(proj.prefix, 'lib')) - 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(: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(: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')) # For windows, we need to ensure we are building for mingw not cygwin platform_triple = platform.platform_triple host = "--host #{platform_triple}" 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 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}") @@ -63,35 +68,31 @@ # 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(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}") + proj.setting(:cppflags, "-I#{proj.includedir}") + proj.setting(:cflags, proj.cppflags) + proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir}") # Platform specific overrides or settings, which may override the defaults if platform.is_windows? - arch = platform.architecture == "x64" ? "64" : "32" - proj.setting(:gcc_root, "C:/tools/mingw#{arch}") + arch = platform.architecture == 'x64' ? '64' : '32' + proj.setting(:gcc_root, "/usr/x86_64-w64-mingw32/sys-root/mingw") proj.setting(:gcc_bindir, "#{proj.gcc_root}/bin") - proj.setting(:tools_root, "C:/tools/pl-build-tools") - proj.setting(:cppflags, "-I#{settings[:includedir]}/ruby-2.7.0 -I#{proj.tools_root}/include -I#{proj.gcc_root}/include -I#{proj.includedir}") + 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(:ldflags, "-L#{proj.tools_root}/lib -L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat -Wl,--dynamicbase") - proj.setting(:cygwin, "nodosfilewarning winsymlinks:native") + proj.setting(:ldflags, "-L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat -Wl,--dynamicbase") + proj.setting(:cygwin, 'nodosfilewarning winsymlinks:native') end if platform.is_macos? - proj.setting(:cppflags, "-I#{proj.includedir}") - proj.setting(:cflags, proj.cppflags.to_s) - - # For OS X, we should optimize for an older x86 architecture than Apple - # currently ships for; there's a lot of older xeon chips based on - # that architecture still in use throughout the Mac ecosystem. - # Additionally, OS X doesn't use RPATH for linking. We shouldn't - # define it or try to force it in the linker, because this might - # break gcc or clang if they try to use the RPATH values we forced. - proj.setting(:cflags, "-march=core2 -msse4 #{proj.cflags}") unless platform.architecture == 'arm64' - - proj.setting(:ldflags, "-L#{proj.libdir} ") + proj.setting(:deployment_target, '13.0') + targeting_flags = "-target #{platform.architecture}-apple-darwin22 -arch #{platform.architecture} -mmacos-version-min=13.0" + proj.setting(:cflags, "#{targeting_flags} #{proj.cflags}") + proj.setting(:cppflags, "#{targeting_flags} #{proj.cppflags}") + proj.setting(:cc, 'clang') + proj.setting(:cxx, 'clang++') + proj.setting(:ldflags, "-L#{proj.libdir}") end # These flags are applied in addition to the defaults in configs/component/openssl.rb. @@ -113,8 +114,8 @@ # Ruby and deps proj.component "openssl-#{proj.openssl_version}" - proj.component "runtime-bolt" - proj.component "puppet-ca-bundle" + proj.component 'runtime-openbolt' + proj.component 'puppet-ca-bundle' proj.component "ruby-#{proj.ruby_version}" proj.component 'rubygem-bcrypt_pbkdf' diff --git a/tasks/update_gems.rake b/tasks/update_gems.rake new file mode 100644 index 00000000..9956cf73 --- /dev/null +++ b/tasks/update_gems.rake @@ -0,0 +1,319 @@ +# frozen_string_literal: true + +require 'rake' +require 'json' +require 'uri' +require 'net/http' +require 'rubygems/version' +require 'rubygems/requirement' +require 'colorize' +require 'tty-table' +require 'set' + +# ----- Constants ----- +REPO_ROOT = File.expand_path('..', __dir__) +COMPONENT_DIR = File.join(REPO_ROOT, 'configs', 'components') +COMPONENT_GLOB = File.join(COMPONENT_DIR, 'rubygem-*.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*$/ + +TARGET_RUBY_VER = ENV['TARGET_RUBY']&.strip || '3.2' +MAX_TABLE_WIDTH = 140 +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') +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 + end +end + +def print_table(headers, rows) + comp_w, status_w, version_w = 50, 12, 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| + r.alignments = [:left, :center, :left, :left] + r.border.separator = :each_row + r.column_widths = [comp_w, status_w, version_w, deps_w] + } +end + +@progress_max_width = 0 +def progress_print(msg, io: $stderr) + clean = msg[0, MAX_TABLE_WIDTH - 1] + @progress_max_width = [@progress_max_width, clean.length].max + io.print("\r#{clean.ljust(@progress_max_width)}") + io.flush +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" + 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")) +end + +def get_version_details(name, version) + enc = URI.encode_www_form_component(version.to_s) + 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)) +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 } + 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 + +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 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 + + details = get_version_details(name, new_version) + 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}" + 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 = [] + platforms = ['ruby'] + prev = nil + body.each do |line| + if (m = line.match(VER_LINE)) + current_version = m[:version] + pinned = !!(prev && prev =~ PINNED_LINE) + elsif (m = line.match(BUILD_REQ)) + old_deps << m[1] + elsif (m = line.match(GEM_TYPE)) + platforms << m[:platform] + end + prev = line + end + 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) + 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| + if (m = l.match(VER_LINE)) + new_body << l.sub(m[:version], target_version) + elsif (m = l.match(GEM_TYPE)) + current_platform = m[:platform] + new_body << l + 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) + lines[(start + 1)...finish] = new_body if block_changed + + 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' + ver_col = version_changed ? "#{current_version} -> #{target_version}" : '' + + # Report missing components so the task can create them + missing = new_deps.select { |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 } +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) + 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']) + ver = m['version'] + sha = m['shas']['ruby'] + deps = (m['dependencies'] || []).map { |d| d['name'] }.uniq.sort - [name] + + create_component_file(path, name, ver, sha, deps) + added << { name: name, version: ver, deps: deps } + + 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 + 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 + 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(', '), + ] + 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) + end +end \ No newline at end of file