Skip to content

Commit d476378

Browse files
committed
Include gem extension stubs in stdlib artifacts
The extension stubs installed for JRuby versions of extension gems must be included in the stdlib, dist, and complete artifacts or those libraries will fail to load. This is the cause of issues mentioned in the Docker official-images PR here: docker-library/official-images#20939 (comment) The jruby-dist and jruby-complete artifacts get their stdlib content from the jruby-stdlib artifact, so including the files that artifact is necessary before including them in the other two. jruby-complete just packages the contents of jruby-stdlib as-is, but the jruby-dist artifact needs to filter and copy them back into their dist locations.
1 parent 31200ba commit d476378

3 files changed

Lines changed: 97 additions & 5 deletions

File tree

lib/pom.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,15 +207,15 @@ def log(message = nil)
207207
execute_goal 'copy-dependencies', phase: 'generate-resources'
208208
end
209209

210+
# force platform to match build JRuby
211+
Gem.set_target_rbconfig(File.join(File.dirname(__FILE__), "ruby/stdlib/jruby/build/rbconfig.rb"))
212+
Gem.instance_variable_set :@ruby_api_version, Gem.target_rbconfig['ruby_version']
213+
210214
execute :install_gems, :initialize do |ctx|
211215
require 'fileutils'
212216

213217
log "using jruby #{JRUBY_VERSION}"
214218

215-
# force platform to match build JRuby
216-
Gem.set_target_rbconfig(File.join(File.dirname(__FILE__), "ruby/stdlib/jruby/build/rbconfig.rb"))
217-
Gem.instance_variable_set :@ruby_api_version, Gem.target_rbconfig['ruby_version']
218-
219219
target = ctx.project.build.directory.to_pathname
220220
gem_home = File.join(target, 'rubygems')
221221
gems = File.join(gem_home, 'gems')
@@ -437,7 +437,8 @@ def installer.ensure_required_ruby_version_met; end
437437
'specifications/default/*',
438438
*all_gems.map { |name, version| "specifications/#{name}-#{version}*" },
439439
*all_gems.map { |name, version| "gems/#{name}-#{version}*/**/*" },
440-
*all_gems.map { |name, version| "cache/#{name}-#{version}*" }
440+
*all_gems.map { |name, version| "cache/#{name}-#{version}*" },
441+
*all_gems.map { |name, version| "extensions/universal-java/#{Gem.target_rbconfig['ruby_version']}/#{name}-#{version}/*" }
441442
]
442443
target_path '${jruby.complete.gems}'
443444
end

lib/pom.xml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,90 @@ DO NOT MODIFY - GENERATED CODE
13961396
<include>cache/rss-0.3.1*</include>
13971397
<include>cache/syslog-0.4.0*</include>
13981398
<include>cache/test-unit-3.6.7*</include>
1399+
<include>extensions/universal-java/3.4.0/rubygems-update-3.7.2/*</include>
1400+
<include>extensions/universal-java/3.4.0/benchmark-0.4.0/*</include>
1401+
<include>extensions/universal-java/3.4.0/bundler-2.7.2/*</include>
1402+
<include>extensions/universal-java/3.4.0/cgi-0.4.2/*</include>
1403+
<include>extensions/universal-java/3.4.0/date-3.4.1/*</include>
1404+
<include>extensions/universal-java/3.4.0/delegate-0.4.0/*</include>
1405+
<include>extensions/universal-java/3.4.0/did_you_mean-2.0.0/*</include>
1406+
<include>extensions/universal-java/3.4.0/digest-3.2.0/*</include>
1407+
<include>extensions/universal-java/3.4.0/english-0.8.0/*</include>
1408+
<include>extensions/universal-java/3.4.0/erb-4.0.4/*</include>
1409+
<include>extensions/universal-java/3.4.0/error_highlight-0.7.0/*</include>
1410+
<include>extensions/universal-java/3.4.0/ffi-1.17.0/*</include>
1411+
<include>extensions/universal-java/3.4.0/fiddle-1.1.6/*</include>
1412+
<include>extensions/universal-java/3.4.0/fileutils-1.7.3/*</include>
1413+
<include>extensions/universal-java/3.4.0/find-0.2.0/*</include>
1414+
<include>extensions/universal-java/3.4.0/forwardable-1.3.3/*</include>
1415+
<include>extensions/universal-java/3.4.0/io-console-0.8.1/*</include>
1416+
<include>extensions/universal-java/3.4.0/io-wait-0.3.2/*</include>
1417+
<include>extensions/universal-java/3.4.0/ipaddr-1.2.7/*</include>
1418+
<include>extensions/universal-java/3.4.0/irb-1.14.3/*</include>
1419+
<include>extensions/universal-java/3.4.0/jar-dependencies-0.5.4/*</include>
1420+
<include>extensions/universal-java/3.4.0/jruby-readline-1.3.7/*</include>
1421+
<include>extensions/universal-java/3.4.0/jruby-openssl-0.15.5/*</include>
1422+
<include>extensions/universal-java/3.4.0/json-2.16.0/*</include>
1423+
<include>extensions/universal-java/3.4.0/logger-1.6.4/*</include>
1424+
<include>extensions/universal-java/3.4.0/net-http-0.6.0/*</include>
1425+
<include>extensions/universal-java/3.4.0/net-protocol-0.2.2/*</include>
1426+
<include>extensions/universal-java/3.4.0/open-uri-0.5.0/*</include>
1427+
<include>extensions/universal-java/3.4.0/open3-0.2.1/*</include>
1428+
<include>extensions/universal-java/3.4.0/optparse-0.6.0/*</include>
1429+
<include>extensions/universal-java/3.4.0/ostruct-0.6.1/*</include>
1430+
<include>extensions/universal-java/3.4.0/pp-0.6.2/*</include>
1431+
<include>extensions/universal-java/3.4.0/prettyprint-0.2.0/*</include>
1432+
<include>extensions/universal-java/3.4.0/pstore-0.1.4/*</include>
1433+
<include>extensions/universal-java/3.4.0/psych-5.2.3/*</include>
1434+
<include>extensions/universal-java/3.4.0/rake-ant-1.0.6/*</include>
1435+
<include>extensions/universal-java/3.4.0/rdoc-6.14.0/*</include>
1436+
<include>extensions/universal-java/3.4.0/reline-0.6.0/*</include>
1437+
<include>extensions/universal-java/3.4.0/resolv-0.6.3/*</include>
1438+
<include>extensions/universal-java/3.4.0/ruby2_keywords-0.0.5/*</include>
1439+
<include>extensions/universal-java/3.4.0/securerandom-0.4.1/*</include>
1440+
<include>extensions/universal-java/3.4.0/shellwords-0.2.2/*</include>
1441+
<include>extensions/universal-java/3.4.0/singleton-0.3.0/*</include>
1442+
<include>extensions/universal-java/3.4.0/stringio-3.1.9/*</include>
1443+
<include>extensions/universal-java/3.4.0/strscan-3.1.7/*</include>
1444+
<include>extensions/universal-java/3.4.0/subspawn-0.1.1/*</include>
1445+
<include>extensions/universal-java/3.4.0/subspawn-posix-0.1.1/*</include>
1446+
<include>extensions/universal-java/3.4.0/ffi-binary-libfixposix-0.5.1.1/*</include>
1447+
<include>extensions/universal-java/3.4.0/ffi-bindings-libfixposix-0.5.1.0/*</include>
1448+
<include>extensions/universal-java/3.4.0/syntax_suggest-2.0.2/*</include>
1449+
<include>extensions/universal-java/3.4.0/tempfile-0.3.1/*</include>
1450+
<include>extensions/universal-java/3.4.0/time-0.4.1/*</include>
1451+
<include>extensions/universal-java/3.4.0/timeout-0.4.3/*</include>
1452+
<include>extensions/universal-java/3.4.0/tsort-0.2.0/*</include>
1453+
<include>extensions/universal-java/3.4.0/un-0.3.0/*</include>
1454+
<include>extensions/universal-java/3.4.0/uri-1.0.3/*</include>
1455+
<include>extensions/universal-java/3.4.0/weakref-0.1.3/*</include>
1456+
<include>extensions/universal-java/3.4.0/yaml-0.4.0/*</include>
1457+
<include>extensions/universal-java/3.4.0/abbrev-0.1.2/*</include>
1458+
<include>extensions/universal-java/3.4.0/base64-0.2.0/*</include>
1459+
<include>extensions/universal-java/3.4.0/bigdecimal-3.1.9/*</include>
1460+
<include>extensions/universal-java/3.4.0/csv-3.3.2/*</include>
1461+
<include>extensions/universal-java/3.4.0/debug-0.2.1/*</include>
1462+
<include>extensions/universal-java/3.4.0/drb-2.2.1/*</include>
1463+
<include>extensions/universal-java/3.4.0/getoptlong-0.2.1/*</include>
1464+
<include>extensions/universal-java/3.4.0/matrix-0.4.2/*</include>
1465+
<include>extensions/universal-java/3.4.0/minitest-5.25.4/*</include>
1466+
<include>extensions/universal-java/3.4.0/mutex_m-0.3.0/*</include>
1467+
<include>extensions/universal-java/3.4.0/net-ftp-0.3.8/*</include>
1468+
<include>extensions/universal-java/3.4.0/net-imap-0.5.8/*</include>
1469+
<include>extensions/universal-java/3.4.0/net-pop-0.1.2/*</include>
1470+
<include>extensions/universal-java/3.4.0/net-smtp-0.5.1/*</include>
1471+
<include>extensions/universal-java/3.4.0/nkf-0.2.0/*</include>
1472+
<include>extensions/universal-java/3.4.0/observer-0.1.2/*</include>
1473+
<include>extensions/universal-java/3.4.0/power_assert-2.0.5/*</include>
1474+
<include>extensions/universal-java/3.4.0/prime-0.1.3/*</include>
1475+
<include>extensions/universal-java/3.4.0/racc-1.8.1/*</include>
1476+
<include>extensions/universal-java/3.4.0/rake-${rake.version}/*</include>
1477+
<include>extensions/universal-java/3.4.0/resolv-replace-0.1.1/*</include>
1478+
<include>extensions/universal-java/3.4.0/rexml-3.4.4/*</include>
1479+
<include>extensions/universal-java/3.4.0/rinda-0.2.0/*</include>
1480+
<include>extensions/universal-java/3.4.0/rss-0.3.1/*</include>
1481+
<include>extensions/universal-java/3.4.0/syslog-0.4.0/*</include>
1482+
<include>extensions/universal-java/3.4.0/test-unit-3.6.7/*</include>
13991483
</includes>
14001484
</resource>
14011485
<resource>

maven/jruby-dist/src/main/assembly/common.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@
4444
<include>*.gemspec</include>
4545
</includes>
4646
</fileSet>
47+
<fileSet>
48+
<directory>${project.build.directory}/rubygems-provided/extensions</directory>
49+
<outputDirectory>/lib/ruby/gems/shared/extensions</outputDirectory>
50+
<includes>
51+
<include>**/*</include>
52+
</includes>
53+
</fileSet>
4754
<fileSet>
4855
<directory>${project.build.directory}/rdoc/unpacked/usr</directory>
4956
<outputDirectory>/</outputDirectory>

0 commit comments

Comments
 (0)