Skip to content

Commit 3bd1ef9

Browse files
committed
Add bundled gems to list we don't package
There's not really a good reason to update the bundled gems either, unless they have a CVE. This adds them to the list, and the only bundled gem we keep around is rexml, since it currently and often has CVEs.
1 parent 03fb02f commit 3bd1ef9

File tree

8 files changed

+28
-49
lines changed

8 files changed

+28
-49
lines changed

configs/components/_base-rubygem.rb

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,16 @@
3535
# If a gem needs more command line options to install set the :gem_install_options
3636
# in its component file rubygem-<compoment>, before the instance_eval of this file.
3737
gem_install_options = settings["#{pkg.get_name}_gem_install_options".to_sym]
38-
remove_older_versions = settings["#{pkg.get_name}_remove_older_versions".to_sym]
3938
# Set a default gem_uninstall
4039
gem_uninstall = settings[:gem_uninstall] || "#{settings[:host_gem]} uninstall --all --ignore-dependencies"
4140
pkg.install do
4241
steps = []
43-
steps << "#{gem_uninstall} #{name}" if remove_older_versions
44-
steps << if gem_install_options.nil?
45-
"#{settings[:gem_install]} #{name}-#{version}.gem"
46-
else
47-
"#{settings[:gem_install]} #{name}-#{version}.gem #{gem_install_options}"
48-
end
42+
# Attempting to uninstall a default gem this way will fail, so ignore failures
43+
steps << "#{gem_uninstall} --force #{name} || true"
44+
steps << "#{settings[:gem_install]} #{name}-#{version}.gem #{gem_install_options || ''}"
4945
# If we are installing a newer version of a default gem, we need to remove the existing
50-
# specification file so that we don't get warnings.
46+
# specification file so that we don't get warnings. The corresponding gem directory is
47+
# usually empty and only there for compatibility reasons, so we remove that too to avoid confusion.
5148
steps << "rm -f #{settings[:gem_home]}/specifications/default/#{name}-*.gemspec"
52-
# This dir is usually empty and only there for compatilibity reasons for things requiring
53-
# a directory corresponding to a gemspec. Remove it to avoid confusion.
54-
steps << "rm -f #{settings[:gem_home]}/gems/#{name}-*[!#{version}]"
49+
steps << "rm -rf #{settings[:gem_home]}/gems/#{name}-*[!#{version}]"
5550
end

configs/components/rubygem-fast_gettext.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
# PINNED
1111
pkg.version '2.4.0'
1212
pkg.sha256sum 'fd26c4c406aa10be34f0fd2847ce3ffdc1e9d9798de87538594757bbb9175fbf'
13-
pkg.build_requires 'rubygem-prime'
1413
### End automated maintenance section ###
1514

1615
instance_eval File.read('configs/components/_base-rubygem.rb')

configs/components/rubygem-gettext.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
pkg.sha256sum '03ec7f71ea7e2cf1fdcd5e08682e98b81601922fdbee890b7bc6f63b0e1a512a'
1010
pkg.build_requires 'rubygem-erubi'
1111
pkg.build_requires 'rubygem-locale'
12-
pkg.build_requires 'rubygem-prime'
1312
pkg.build_requires 'rubygem-text'
1413
### End automated maintenance section ###
1514

configs/components/rubygem-net-ftp.rb

Lines changed: 0 additions & 13 deletions
This file was deleted.

configs/components/rubygem-prime.rb

Lines changed: 0 additions & 13 deletions
This file was deleted.

configs/projects/agent-runtime-main.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,8 @@
5555
proj.component 'rubygem-hocon'
5656
proj.component 'rubygem-locale'
5757
proj.component 'rubygem-multi_json'
58-
proj.component 'rubygem-net-ftp'
5958
proj.component 'rubygem-net-ssh'
6059
proj.component 'rubygem-optimist'
61-
proj.component 'rubygem-prime'
6260
proj.component 'rubygem-semantic_puppet'
6361
proj.component 'rubygem-scanf'
6462
proj.component 'rubygem-text'

configs/projects/openbolt-runtime.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@
131131
proj.component 'rubygem-text'
132132
proj.component 'rubygem-locale'
133133
proj.component 'rubygem-gettext'
134-
proj.component 'rubygem-prime'
135134
proj.component 'rubygem-fast_gettext'
136135
proj.component 'rubygem-scanf'
137136
proj.component 'rubygem-semantic_puppet'
@@ -197,7 +196,6 @@
197196
proj.component 'rubygem-multi_json'
198197
proj.component 'rubygem-multipart-post'
199198
proj.component 'rubygem-net-http-persistent'
200-
proj.component 'rubygem-net-ftp'
201199
proj.component 'rubygem-net-scp'
202200
proj.component 'rubygem-net-ssh'
203201
proj.component 'rubygem-net-ssh-krb'

tasks/update_gems.rake

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ GEM_TYPE = /^\s*#\s*GEM\s+TYPE:\s*(?<platform>[A-Za-z0-9\-_.]+)\s*$/
2323
PROJ_COMPONENT = /^\s*proj\.component\s+(?<quote>['"]?)(?<component>rubygem-[^'"\s]+)\k<quote>\s*$/
2424

2525
TARGET_RUBY_VER = ENV['TARGET_RUBY']&.strip || '3.2'
26-
# Update this list when targeting a new Ruby version
27-
DEFAULT_GEMS = [
26+
# Update this list when targeting a new Ruby version. Comment out
27+
# gems that we specifically want to manage even if they are default or bundled.
28+
DEFAULT_AND_BUNDLED_GEMS = [
2829
'abbrev',
2930
'base64',
3031
'benchmark',
@@ -33,6 +34,7 @@ DEFAULT_GEMS = [
3334
'cgi',
3435
'csv',
3536
'date',
37+
'debug',
3638
'delegate',
3739
'did_you_mean',
3840
'digest',
@@ -54,29 +56,41 @@ DEFAULT_GEMS = [
5456
'irb',
5557
'json',
5658
'logger',
59+
'matrix',
60+
'minitest',
5761
'mutex_m',
62+
'net-ftp',
5863
'net-http',
64+
'net-imap',
65+
'net-pop',
5966
'net-protocol',
67+
'net-smtp',
6068
'nkf',
6169
'observer',
70+
'open-uri',
6271
'open3',
6372
'openssl',
64-
'open-uri',
6573
'optparse',
6674
'ostruct',
6775
'pathname',
76+
'power_assert',
6877
'pp',
6978
'prettyprint',
79+
'prime',
7080
'pstore',
7181
'psych',
7282
'racc',
83+
'rake',
84+
'rbs',
7385
'rdoc',
86+
# 'rexml',
7487
'readline',
7588
'readline-ext',
7689
'reline',
7790
'resolv',
7891
'resolv-replace',
7992
'rinda',
93+
'rss',
8094
'ruby2_keywords',
8195
'rubygems',
8296
'securerandom',
@@ -85,15 +99,17 @@ DEFAULT_GEMS = [
8599
'singleton',
86100
'stringio',
87101
'strscan',
88-
'syslog',
89102
'syntax_suggest',
103+
'syslog',
90104
'tempfile',
105+
'test-unit',
91106
'time',
92107
'timeout',
93108
'tmpdir',
94109
'tsort',
110+
'typeprof',
95111
'un',
96-
'uri',
112+
# 'uri',
97113
'weakref',
98114
'win32ole',
99115
'yaml',
@@ -177,7 +193,7 @@ def get_metadata(name:, version: nil, platforms: ['ruby'])
177193
shas = platforms.to_h { |platform| [platform, find_sha(name, version, platform)] }
178194
deps = get_version_details(name, version).dig('dependencies', 'runtime') || []
179195
# Remove any default gems as we don't want to manage them unless specifically needed
180-
deps.reject! { |d| DEFAULT_GEMS.include?(d['name']) }
196+
deps.reject! { |d| DEFAULT_AND_BUNDLED_GEMS.include?(d['name']) }
181197
{ 'version' => version, 'shas' => shas, 'dependencies' => deps }
182198
end
183199

0 commit comments

Comments
 (0)