rake-compiler-dock 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +168 -0
  4. data/.gitignore +11 -1
  5. data/Dockerfile.jruby +6 -5
  6. data/Dockerfile.mri.erb +83 -43
  7. data/History.md +19 -1
  8. data/README.md +95 -36
  9. data/Rakefile +39 -12
  10. data/build/parallel_docker_build.rb +7 -3
  11. data/build/patches/{ruby-2.5.8 → ruby-2.5.9}/no_sendfile.patch +0 -0
  12. data/build/patches/{ruby-3.0.0 → ruby-3.1.0}/no_sendfile.patch +0 -0
  13. data/build/patches2/{rake-compiler-1.1.1 → rake-compiler-1.1.6}/0004-Enable-build-of-static-libruby.patch +3 -4
  14. data/build/rcd-env.sh +6 -0
  15. data/build/runas +1 -9
  16. data/lib/rake_compiler_dock/starter.rb +3 -2
  17. data/lib/rake_compiler_dock/version.rb +2 -2
  18. data/mingw64-ucrt/Dockerfile +62 -0
  19. data/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  20. data/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  21. data/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  22. data/rake-compiler-dock.gemspec +2 -2
  23. data/test/env/Dockerfile.alpine +17 -0
  24. data/test/env/Dockerfile.centos +17 -0
  25. data/test/env/Dockerfile.debian +24 -0
  26. data/test/rcd_test/Gemfile +11 -0
  27. data/test/rcd_test/Rakefile +74 -0
  28. data/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  29. data/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  30. data/test/rcd_test/ext/mri/extconf.rb +20 -0
  31. data/test/rcd_test/ext/mri/rcd_test_ext.c +35 -0
  32. data/test/rcd_test/ext/mri/rcd_test_ext.h +6 -0
  33. data/test/rcd_test/lib/rcd_test.rb +6 -0
  34. data/test/rcd_test/rcd_test.gemspec +27 -0
  35. data/test/rcd_test/test/test_basic.rb +22 -0
  36. data/test/test_environment_variables.rb +56 -31
  37. data/test/test_parallel_docker_build.rb +19 -6
  38. data.tar.gz.sig +0 -0
  39. metadata +74 -37
  40. metadata.gz.sig +0 -0
  41. data/build/patches2/hoe-3.20.0/0001-Load-encrypted-private-key-using-ENV-GEM_PRIVATE_KEY.patch +0 -32
  42. data/build/patches2/rake-compiler-1.1.1/0001-Fix-determining-of-ruby-versions-in-rake-native-gem.patch +0 -44
  43. data/build/patches2/rake-compiler-1.1.1/0003-Allow-building-of-cross-rubies-in-parallel.patch +0 -214
  44. data/build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch +0 -30
  45. data/build/patches2/rake-compiler-1.1.1/0006-Use-RAKE_EXTENSION_TASK_NO_NATIVE-env-var-as-the-def.patch +0 -26
  46. data/build/patches2/ruby-2.7.0/ruby2_keywords.patch +0 -15
  47. data/build/patches2/ruby-3.0.0/ruby2_keywords.patch +0 -15
@@ -0,0 +1,74 @@
1
+ require "bundler/gem_tasks"
2
+ require "rubygems/package_task"
3
+ require "rake/testtask"
4
+
5
+ rcd_test_spec = Bundler.load_gemspec("rcd_test.gemspec")
6
+
7
+ if RUBY_ENGINE == "jruby"
8
+ require "rake/javaextensiontask"
9
+
10
+ Rake::JavaExtensionTask.new("rcd_test_ext", rcd_test_spec) do |ext|
11
+ ext.ext_dir = 'ext/java'
12
+ ext.lib_dir = 'lib/rcd_test'
13
+ end
14
+ else
15
+ require "rake/extensiontask"
16
+
17
+ exttask = Rake::ExtensionTask.new('rcd_test_ext', rcd_test_spec) do |ext|
18
+ ext.ext_dir = 'ext/mri'
19
+ ext.lib_dir = 'lib/rcd_test'
20
+ ext.cross_compile = true
21
+ ext.cross_platform = %w[x86-mingw32 x64-mingw-ucrt x64-mingw32 x86-linux x86_64-linux aarch64-linux arm-linux x86_64-darwin arm64-darwin]
22
+ end
23
+ end
24
+
25
+ namespace "gem" do
26
+ if exttask
27
+ task 'prepare' do
28
+ require 'rake_compiler_dock'
29
+ require 'io/console'
30
+ sh "bundle package --all"
31
+ sh "mkdir -p tmp/gem"
32
+ sh "cp ~/.gem/gem-*.pem tmp/gem/ || true"
33
+ unless ENV['CI']
34
+ ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = STDIN.getpass("Enter passphrase of gem signature key: ")
35
+ end
36
+ end
37
+
38
+ exttask.cross_platform.each do |plat|
39
+ desc "Build all native binary gems"
40
+ multitask 'native' => plat
41
+
42
+ desc "Build the native gem for #{plat}"
43
+ task plat => 'prepare' do
44
+ # Set mountdir of the directory where .git resides, so that git ls-files in the gemspec works
45
+ RakeCompilerDock.sh <<-EOT, platform: plat, mountdir: Dir.pwd + "/../.."
46
+ (cp tmp/gem/gem-*.pem ~/.gem/ || true) &&
47
+ bundle --local &&
48
+ rake native:#{plat} pkg/#{exttask.gem_spec.full_name}-#{plat}.gem
49
+ EOT
50
+ end
51
+ end
52
+ end
53
+
54
+ desc "Build a jruby gem"
55
+ task "jruby" do
56
+ require 'rake_compiler_dock'
57
+ sh "bundle package --all"
58
+ RakeCompilerDock.sh <<-EOT, rubyvm: "jruby", platform: "jruby", mountdir: Dir.pwd + "/../.."
59
+ bundle --local &&
60
+ bundle exec rake java gem
61
+ EOT
62
+ end
63
+ end
64
+
65
+ Rake::TestTask.new(:test) do |t|
66
+ t.libs << "test"
67
+ t.libs << "lib"
68
+ t.test_files = FileList["test/**/test_*.rb"]
69
+ end
70
+
71
+ task default: [:clobber, :compile, :test]
72
+ task gem: :build
73
+
74
+ CLEAN.add("{ext,lib}/**/*.{o,so}", "pkg", "tmp")
@@ -0,0 +1,19 @@
1
+ package rcd_test;
2
+
3
+ import org.jruby.Ruby;
4
+ import org.jruby.RubyClass;
5
+ import org.jruby.RubyModule;
6
+ import org.jruby.runtime.ObjectAllocator;
7
+ import org.jruby.runtime.builtin.IRubyObject;
8
+ import org.jruby.runtime.load.BasicLibraryService;
9
+
10
+ import java.io.IOException;
11
+
12
+ public class RcdTestExtService implements BasicLibraryService {
13
+ @Override
14
+ public boolean basicLoad(final Ruby ruby) throws IOException {
15
+ RubyModule rb_mRcdTest = ruby.defineModule("RcdTest");
16
+ rb_mRcdTest.defineAnnotatedMethods(RubyRcdTest.class);
17
+ return true;
18
+ }
19
+ }
@@ -0,0 +1,16 @@
1
+ package rcd_test;
2
+
3
+ import org.jruby.Ruby;
4
+ import org.jruby.anno.JRubyMethod;
5
+ import org.jruby.runtime.builtin.IRubyObject;
6
+ import org.jruby.anno.JRubyModule;
7
+ import org.jruby.runtime.ThreadContext;
8
+
9
+ @JRubyModule(name = "RcdTest")
10
+ public class RubyRcdTest {
11
+ @JRubyMethod(name = "do_something", module = true, meta = true)
12
+ public static IRubyObject buildSelfString(ThreadContext context, IRubyObject recv) {
13
+ Ruby runtime = context.getRuntime();
14
+ return runtime.newString("something has been done");
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ if RUBY_ENGINE == "jruby"
2
+ File.open("Makefile", "w") do |mf|
3
+ mf.puts "# Dummy makefile for JRuby"
4
+ mf.puts "all install::\n"
5
+ end
6
+ else
7
+ require "mkmf"
8
+
9
+ include RbConfig
10
+
11
+ puts "-"*70
12
+ puts "CONFIG['arch']: #{CONFIG['arch'].inspect}"
13
+ puts "CONFIG['sitearch']: #{CONFIG['sitearch'].inspect}"
14
+ puts "CONFIG['RUBY_SO_NAME']: #{CONFIG['RUBY_SO_NAME'].inspect}"
15
+ puts "RUBY_PLATFORM: #{RUBY_PLATFORM.inspect}"
16
+ puts "Gem::Platform.local.to_s: #{Gem::Platform.local.to_s.inspect}"
17
+ puts "-"*70
18
+
19
+ create_makefile("rcd_test/rcd_test_ext")
20
+ end
@@ -0,0 +1,35 @@
1
+ #include "rcd_test_ext.h"
2
+
3
+ #ifndef __has_builtin
4
+ #define __has_builtin(x) 0
5
+ #endif
6
+
7
+ VALUE rb_mRcdTest;
8
+
9
+ static VALUE
10
+ rcdt_do_something(VALUE self)
11
+ {
12
+ return rb_str_new_cstr("something has been done");
13
+ }
14
+
15
+ static VALUE
16
+ rcdt_darwin_builtin_available_eh(VALUE self)
17
+ {
18
+ #if __has_builtin(__builtin_available)
19
+ // This version must be higher than MACOSX_DEPLOYMENT_TARGET to prevent clang from optimizing it away
20
+ if (__builtin_available(macOS 10.14, *)) {
21
+ return Qtrue;
22
+ }
23
+ return Qfalse;
24
+ #else
25
+ rb_raise(rb_eRuntimeError, "__builtin_available is not defined");
26
+ #endif
27
+ }
28
+
29
+ void
30
+ Init_rcd_test_ext(void)
31
+ {
32
+ rb_mRcdTest = rb_define_module("RcdTest");
33
+ rb_define_singleton_method(rb_mRcdTest, "do_something", rcdt_do_something, 0);
34
+ rb_define_singleton_method(rb_mRcdTest, "darwin_builtin_available?", rcdt_darwin_builtin_available_eh, 0);
35
+ }
@@ -0,0 +1,6 @@
1
+ #ifndef RCD_TEST_EXT_H
2
+ #define RCD_TEST_EXT_H 1
3
+
4
+ #include "ruby.h"
5
+
6
+ #endif /* RCD_TEST_EXT_H */
@@ -0,0 +1,6 @@
1
+ begin
2
+ RUBY_VERSION =~ /(\d+\.\d+)/
3
+ require "rcd_test/#{$1}/rcd_test_ext"
4
+ rescue LoadError
5
+ require 'rcd_test/rcd_test_ext'
6
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "rcd_test"
5
+ spec.version = "1.0.0"
6
+ spec.authors = ["Lars Kanis"]
7
+ spec.email = ["lars@greiz-reinsdorf.de"]
8
+
9
+ spec.summary = "C extension for testing rake-compiler-dock"
10
+ spec.description = "This gem has no real use other than testing builds of binary gems."
11
+ spec.homepage = "https://github.com/rake-compiler/rake-compiler-dock"
12
+ spec.required_ruby_version = ">= 2.0.0"
13
+ spec.license = "MIT"
14
+
15
+ # Specify which files should be added to the gem when it is released.
16
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+ spec.extensions = ["ext/mri/extconf.rb"]
24
+
25
+ # Uncomment to register a new dependency of your gem
26
+ # spec.add_dependency "example-gem", "~> 1.0"
27
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "rcd_test"
5
+
6
+ class TestBasic < Minitest::Test
7
+
8
+ def test_do_something
9
+ assert_equal "something has been done", RcdTest.do_something
10
+ end
11
+
12
+ def test_check_darwin_compiler_rt_symbol_resolution
13
+ skip("jruby should not run libc-specific tests") if RUBY_ENGINE == "jruby"
14
+
15
+ if RUBY_PLATFORM.include?("darwin")
16
+ assert(RcdTest.darwin_builtin_available?)
17
+ else
18
+ e = assert_raises(RuntimeError) { RcdTest.darwin_builtin_available? }
19
+ assert_equal("__builtin_available is not defined", e.message)
20
+ end
21
+ end
22
+ end
@@ -6,49 +6,74 @@ begin
6
6
  rescue LoadError
7
7
  end
8
8
 
9
- class TestEnvironmentVariables < Test::Unit::TestCase
10
- @@rcd_env = nil
9
+ class TestEnvironmentVariables
10
+ module Common
11
+ IMAGE_NAME = "larskanis/rake-compiler-dock-mri-x86-mingw32:#{RakeCompilerDock::IMAGE_VERSION}"
11
12
 
12
- def setup
13
- @@rcd_env ||= begin
14
- args = "bash -c 'set'"
15
- idir = File.join(File.dirname(__FILE__), '../lib')
16
- cmd = "#{RbConfig::CONFIG['RUBY_INSTALL_NAME']} -I#{idir.inspect} bin/rake-compiler-dock #{args}"
17
- output = `#{cmd}`
13
+ def rcd_env
14
+ self.class.instance_variable_get("@rcd_env") || begin
15
+ command = "env"
16
+ output = %x(#{invocation(command)})
18
17
 
19
- output.split("\n").inject({}) do |hash, line|
20
- if line =~ /\A(\w+)=(.*)\z/
21
- hash[$1] = $2.chomp
18
+ env = output.split("\n").each_with_object({}) do |line, hash|
19
+ hash[Regexp.last_match(1)] = Regexp.last_match(2).chomp if line =~ /\A(\w+)=(.*)\z/
22
20
  end
23
- hash
21
+
22
+ self.class.instance_variable_set("@rcd_env", env)
24
23
  end
25
24
  end
26
- end
27
25
 
28
- def rcd_env
29
- @@rcd_env
30
- end
26
+ def test_RUBY_CC_VERSION
27
+ df = File.read(File.expand_path("../../Dockerfile.mri.erb", __FILE__))
28
+ df =~ /^ENV RUBY_CC_VERSION\s+(.*)\s+$/
29
+ assert_equal $1, rcd_env['RUBY_CC_VERSION']
30
+ end
31
31
 
32
- def test_IMAGE
33
- assert_equal "larskanis/rake-compiler-dock-mri-x86-mingw32:#{RakeCompilerDock::IMAGE_VERSION}", rcd_env['RCD_IMAGE']
34
- end
32
+ def test_RAKE_EXTENSION_TASK_NO_NATIVE
33
+ assert_equal "true", rcd_env['RAKE_EXTENSION_TASK_NO_NATIVE']
34
+ end
35
35
 
36
- def test_RUBY_CC_VERSION
37
- df = File.read(File.expand_path("../../Dockerfile.mri.erb", __FILE__))
38
- df =~ /^ENV RUBY_CC_VERSION\s+(.*)\s+$/
39
- assert_equal $1, rcd_env['RUBY_CC_VERSION']
40
- end
36
+ def test_symlink_rake_compiler
37
+ cmd = invocation("if test -h $HOME/.rake-compiler ; then echo yes ; else echo no ; fi")
38
+ assert_equal("yes", %x(#{cmd}).strip)
39
+ end
41
40
 
42
- def test_HOST_RUBY_PLATFORM
43
- assert_equal RUBY_PLATFORM, rcd_env['RCD_HOST_RUBY_PLATFORM']
41
+ def test_gem_directory
42
+ cmd = invocation("if test -d $HOME/.gem ; then echo yes ; else echo no ; fi")
43
+ assert_equal("yes", %x(#{cmd}).strip)
44
+ end
44
45
  end
45
46
 
46
- def test_HOST_RUBY_VERSION
47
- assert_equal RUBY_VERSION, rcd_env['RCD_HOST_RUBY_VERSION']
48
- end
47
+ class UsingWrapper < Test::Unit::TestCase
48
+ include Common
49
+
50
+ def invocation(command)
51
+ idir = File.join(File.dirname(__FILE__), '../lib')
52
+ "#{RbConfig::CONFIG['RUBY_INSTALL_NAME']} -I#{idir.inspect} bin/rake-compiler-dock bash -c '#{command}'"
53
+ end
54
+
55
+ def test_HOST_RUBY_PLATFORM
56
+ assert_equal RUBY_PLATFORM, rcd_env['RCD_HOST_RUBY_PLATFORM']
57
+ end
58
+
59
+ def test_HOST_RUBY_VERSION
60
+ assert_equal RUBY_VERSION, rcd_env['RCD_HOST_RUBY_VERSION']
61
+ end
49
62
 
50
- def test_PWD
51
- assert_equal Dir.pwd, rcd_env['PWD']
63
+ def test_IMAGE
64
+ assert_equal IMAGE_NAME, rcd_env['RCD_IMAGE']
65
+ end
66
+
67
+ def test_PWD
68
+ assert_equal Dir.pwd, rcd_env['PWD']
69
+ end
52
70
  end
53
71
 
72
+ class AsIfContinuousIntegration < Test::Unit::TestCase
73
+ include Common
74
+
75
+ def invocation(command)
76
+ "docker run -it #{IMAGE_NAME} bash -c '#{command}'"
77
+ end
78
+ end
54
79
  end
@@ -1,36 +1,47 @@
1
1
  require 'test/unit'
2
2
  require_relative "../build/parallel_docker_build"
3
+ require "tmpdir"
3
4
 
4
5
  class TestParallelDockerBuild < Test::Unit::TestCase
5
6
  def setup
6
- File.write "File0", <<-EOT
7
+ @tmpdir ||= Dir.mktmpdir
8
+
9
+ Dir.chdir(@tmpdir) do
10
+ File.write "File0", <<-EOT
7
11
  FROM a
8
12
  RUN a
9
13
  RUN d
10
14
  EOT
11
- File.write "File1", <<-EOT
15
+ File.write "File1", <<-EOT
12
16
  FROM a
13
17
  RUN a
14
18
  RUN d
15
19
  RUN f \\
16
20
  g
17
21
  EOT
18
- File.write "File2", <<-EOT
22
+ File.write "File2", <<-EOT
19
23
  FROM a
20
24
  RUN b
21
25
  RUN c
22
26
  RUN d
23
27
  EOT
24
- File.write "File3", <<-EOT
28
+ File.write "File3", <<-EOT
25
29
  FROM a
26
30
  RUN b
27
31
  RUN c
28
32
  RUN d
29
33
  EOT
34
+ end
35
+ end
36
+
37
+ def teardown
38
+ FileUtils.rm_rf @tmpdir
30
39
  end
31
40
 
32
41
  def test_tasks
33
- RakeCompilerDock::ParallelDockerBuild.new(%w[ File0 File1 File2 File3 ], task_prefix: "y")
42
+ Dir.chdir(@tmpdir) do
43
+ RakeCompilerDock::ParallelDockerBuild.new(%w[ File0 File1 File2 File3 ], task_prefix: "y")
44
+ end
34
45
 
35
46
  assert_operator Rake::Task["File0"].prerequisites, :include?, "yFile0File1"
36
47
  assert_operator Rake::Task["File1"].prerequisites, :include?, "yFile1"
@@ -43,7 +54,9 @@ class TestParallelDockerBuild < Test::Unit::TestCase
43
54
  end
44
55
 
45
56
  def test_common_files
46
- RakeCompilerDock::ParallelDockerBuild.new(%w[ File0 File1 File2 File3 ], task_prefix: "y")
57
+ Dir.chdir(@tmpdir) do
58
+ RakeCompilerDock::ParallelDockerBuild.new(%w[ File0 File1 File2 File3 ], task_prefix: "y")
59
+ end
47
60
 
48
61
  assert_equal "FROM a\nRUN a\nRUN d\nRUN f \\\ng\n", read_df("yFile1")
49
62
  assert_equal "FROM a\nRUN a\nRUN d\n", read_df("yFile0File1")
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-compiler-dock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Kanis
@@ -10,55 +10,67 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPDCCAiSgAwIBAgIBBTANBgkqhkiG9w0BAQsFADBEMQ0wCwYDVQQDDARsYXJz
14
- MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
15
- GRYCZGUwHhcNMjAxMjI2MTgzMzUyWhcNMjExMjI2MTgzMzUyWjBEMQ0wCwYDVQQD
16
- DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
17
- iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
18
- RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
19
- YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
20
- gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
21
- P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
22
- LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
23
- brhXrfCwWRvOXA4TAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
24
- A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQsFAAOCAQEA
25
- DT6QoI7WEM1wivGn5BBHv3hJa2vGgmAxSPy7QM5iQX7U2ROfOeXYIHIRxsIv/cQl
26
- +F568J6v3GAcFePi4Is9S7b8KWQkm+IjrPjL863hds6WVG8KyJZ758oczbviXNEV
27
- vzna4S8Ra0m7LqGYGZW9B8ZIVdfhzKAF6V6iVlQtEFP7GQp17SjpNPd/gCbictIw
28
- +jwual4DCn3p1X+Vgyl/AXPwU1NBAuuYUijOr7dVIoW2QNUh2d7jCwGe2mNi7Dbu
29
- CqyDIUe+OuWLEpvgupYpVKQKx4+pa0s2ccLokMXYGFp1Z36heaYApV92yDjks8Sq
30
- XtSi3zpLl4JPGBoeuZj97Q==
13
+ MIIETTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
14
+ L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yMTAzMTAyMDIxNDBaFw0yMjAz
15
+ MTAyMDIxNDBaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
16
+ PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAoJSMECFMhBiOcic1
17
+ y1cPjgrfxw/R7wK81sQbiilecqw7zcTRZKzhy7sFQzEF0Wbiy2WmStbktq8cXmet
18
+ 44ZEQI5LtyDhkGl7AFMSows5eMu1ChBdOr45OJsHaidrZfVU2vkkohu2+ZJmcqCB
19
+ TmjBIxTrKpSjMbL1TFd/C491L/SyKhJq90QMs3OfA12SUBD5wlgdfkQ5ZDi1LNTY
20
+ rKCOqGaa/zkr7/5BWpsgYcC6ziaA956ktyuQFVUgZgyJTzYStRuYjbDmaZv2sldW
21
+ zwx3Z2YTEItsdGAoZGbiLNuULmzzwyu8yGaWycpK8l8Al+vMpPaa/dgKUFUkAPjy
22
+ neRjP+N6qWW0hxt0acdw3nXN5ITxo618dQmMzWdLw94wxsWzSUMGldLfNfu9hFnV
23
+ zLrh1bFBYdXk6Mg1OnejZFBc2YlzF1u8Us+NNydHR8dMfRcAhp7sPeHOEKH8V6z2
24
+ VgCHlzf1xq+P+FR8svIqGEBVPHuidr1GguIEqJe7enbjrF2ZAgMBAAGjgYEwfzAJ
25
+ BgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUZT8nEztzNp6aQDDOuZHX
26
+ K9PjoW0wIgYDVR0RBBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwIgYDVR0S
27
+ BBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwDQYJKoZIhvcNAQELBQADggGB
28
+ AHZW9LEmp+sptD9VhxGbMSacFwlf03IdkEfmd+7MGzS4nQCQJvs/B5JGTm6q20ML
29
+ IJXpCnjBPjwnAflyV9rSr9DL2ShuAIJVNWuWs0uhUtz5HEOuV/fVSAFgLHpXP1yV
30
+ weeoJfLmVeXhRUNo/mH0sjpuRm+C1EVb8QuKFItVa5VBf111Zgn7cFXuOjAtflQ2
31
+ n3EGZATdVzduNvUENzg6l1Ba+q/nRKKHq5CnG6+1YzOhdzYKFOwlYMi6jLQK33aV
32
+ aLvq6jWUIpNbL/95ZdOR8Cd6KsCmK5Zvxd5FMMjrQCsZD6OgReshsok5r6tSiNXc
33
+ YgnBIIAFeoeGz8q+dsm6hPtkii/zr25MPRPmKnbRV7bV/zlbmwpIPxhso95lq3R5
34
+ H5q2yo7qMajDFkxRffqQO8ONvDLGecxbuv1QEyzNBdehVt4I7UedIfxyOvKd9cg2
35
+ d5T9wAD7jW/0seVujw+76/YOJWO3Dft+FQmMBbdd8s3J47HbN9R2mDt6fl6he+X/
36
+ gw==
31
37
  -----END CERTIFICATE-----
32
- date: 2020-12-29 00:00:00.000000000 Z
38
+ date: 2022-01-04 00:00:00.000000000 Z
33
39
  dependencies:
34
40
  - !ruby/object:Gem::Dependency
35
41
  name: bundler
36
42
  requirement: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - "~>"
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: '1.7'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.0'
41
50
  type: :development
42
51
  prerelease: false
43
52
  version_requirements: !ruby/object:Gem::Requirement
44
53
  requirements:
45
- - - "~>"
54
+ - - ">="
46
55
  - !ruby/object:Gem::Version
47
56
  version: '1.7'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.0'
48
60
  - !ruby/object:Gem::Dependency
49
61
  name: rake
50
62
  requirement: !ruby/object:Gem::Requirement
51
63
  requirements:
52
- - - "~>"
64
+ - - ">="
53
65
  - !ruby/object:Gem::Version
54
- version: '12.0'
66
+ version: '12'
55
67
  type: :development
56
68
  prerelease: false
57
69
  version_requirements: !ruby/object:Gem::Requirement
58
70
  requirements:
59
- - - "~>"
71
+ - - ">="
60
72
  - !ruby/object:Gem::Version
61
- version: '12.0'
73
+ version: '12'
62
74
  - !ruby/object:Gem::Dependency
63
75
  name: test-unit
64
76
  requirement: !ruby/object:Gem::Requirement
@@ -83,6 +95,7 @@ executables:
83
95
  extensions: []
84
96
  extra_rdoc_files: []
85
97
  files:
98
+ - ".github/workflows/ci.yml"
86
99
  - ".gitignore"
87
100
  - Dockerfile.jruby
88
101
  - Dockerfile.mri.erb
@@ -95,16 +108,10 @@ files:
95
108
  - build/gem_helper.rb
96
109
  - build/mk_i686.rb
97
110
  - build/parallel_docker_build.rb
98
- - build/patches/ruby-2.5.8/no_sendfile.patch
99
- - build/patches/ruby-3.0.0/no_sendfile.patch
100
- - build/patches2/hoe-3.20.0/0001-Load-encrypted-private-key-using-ENV-GEM_PRIVATE_KEY.patch
101
- - build/patches2/rake-compiler-1.1.1/0001-Fix-determining-of-ruby-versions-in-rake-native-gem.patch
102
- - build/patches2/rake-compiler-1.1.1/0003-Allow-building-of-cross-rubies-in-parallel.patch
103
- - build/patches2/rake-compiler-1.1.1/0004-Enable-build-of-static-libruby.patch
104
- - build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch
105
- - build/patches2/rake-compiler-1.1.1/0006-Use-RAKE_EXTENSION_TASK_NO_NATIVE-env-var-as-the-def.patch
106
- - build/patches2/ruby-2.7.0/ruby2_keywords.patch
107
- - build/patches2/ruby-3.0.0/ruby2_keywords.patch
111
+ - build/patches/ruby-2.5.9/no_sendfile.patch
112
+ - build/patches/ruby-3.1.0/no_sendfile.patch
113
+ - build/patches2/rake-compiler-1.1.6/0004-Enable-build-of-static-libruby.patch
114
+ - build/rcd-env.sh
108
115
  - build/runas
109
116
  - build/sigfw.c
110
117
  - build/strip_wrapper
@@ -115,7 +122,24 @@ files:
115
122
  - lib/rake_compiler_dock/predefined_user_group.rb
116
123
  - lib/rake_compiler_dock/starter.rb
117
124
  - lib/rake_compiler_dock/version.rb
125
+ - mingw64-ucrt/Dockerfile
126
+ - mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch
127
+ - mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch
128
+ - mingw64-ucrt/mingw-w64-enable-ucrt.patch
118
129
  - rake-compiler-dock.gemspec
130
+ - test/env/Dockerfile.alpine
131
+ - test/env/Dockerfile.centos
132
+ - test/env/Dockerfile.debian
133
+ - test/rcd_test/Gemfile
134
+ - test/rcd_test/Rakefile
135
+ - test/rcd_test/ext/java/RcdTestExtService.java
136
+ - test/rcd_test/ext/java/RubyRcdTest.java
137
+ - test/rcd_test/ext/mri/extconf.rb
138
+ - test/rcd_test/ext/mri/rcd_test_ext.c
139
+ - test/rcd_test/ext/mri/rcd_test_ext.h
140
+ - test/rcd_test/lib/rcd_test.rb
141
+ - test/rcd_test/rcd_test.gemspec
142
+ - test/rcd_test/test/test_basic.rb
119
143
  - test/test_environment_variables.rb
120
144
  - test/test_parallel_docker_build.rb
121
145
  - test/test_starter.rb
@@ -138,12 +162,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
162
  - !ruby/object:Gem::Version
139
163
  version: '0'
140
164
  requirements: []
141
- rubygems_version: 3.1.4
165
+ rubygems_version: 3.2.22
142
166
  signing_key:
143
167
  specification_version: 4
144
168
  summary: Easy to use and reliable cross compiler environment for building Windows
145
169
  and Linux binary gems.
146
170
  test_files:
171
+ - test/env/Dockerfile.alpine
172
+ - test/env/Dockerfile.centos
173
+ - test/env/Dockerfile.debian
174
+ - test/rcd_test/Gemfile
175
+ - test/rcd_test/Rakefile
176
+ - test/rcd_test/ext/java/RcdTestExtService.java
177
+ - test/rcd_test/ext/java/RubyRcdTest.java
178
+ - test/rcd_test/ext/mri/extconf.rb
179
+ - test/rcd_test/ext/mri/rcd_test_ext.c
180
+ - test/rcd_test/ext/mri/rcd_test_ext.h
181
+ - test/rcd_test/lib/rcd_test.rb
182
+ - test/rcd_test/rcd_test.gemspec
183
+ - test/rcd_test/test/test_basic.rb
147
184
  - test/test_environment_variables.rb
148
185
  - test/test_parallel_docker_build.rb
149
186
  - test/test_starter.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,32 +0,0 @@
1
- From ecc5669223457ceaba6bd94c2947ae99ddfa8f10 Mon Sep 17 00:00:00 2001
2
- From: Lars Kanis <lars@greiz-reinsdorf.de>
3
- Date: Fri, 27 Dec 2019 15:57:07 +0100
4
- Subject: [PATCH] Load encrypted private key using
5
- ENV['GEM_PRIVATE_KEY_PASSPHRASE'] as passphrase.
6
-
7
- This way the password can be avoided to be entered several times when building multiple gems.
8
- It also allows parallel builds which are incompatible to interactive password prompts.
9
-
10
- The same feature has been implemented in rubygems:
11
- https://github.com/rubygems/rubygems/commit/c1a114396fcec124d3feabf74708b4bdec02eac3
12
- ---
13
- lib/hoe/signing.rb | 3 ++-
14
- 1 file changed, 2 insertions(+), 1 deletion(-)
15
-
16
- diff --git a/lib/hoe/signing.rb b/lib/hoe/signing.rb
17
- index 4833c55..11c8c2f 100644
18
- --- a/lib/hoe/signing.rb
19
- +++ b/lib/hoe/signing.rb
20
- @@ -70,7 +70,8 @@ module Hoe::Signing
21
- end
22
-
23
- if signing_key and cert_chain then
24
- - spec.signing_key = OpenSSL::PKey::RSA.new File.read signing_key
25
- + passphrase = ENV['GEM_PRIVATE_KEY_PASSPHRASE']
26
- + spec.signing_key = OpenSSL::PKey::RSA.new(File.read(signing_key), passphrase)
27
- spec.cert_chain = cert_chain
28
- end
29
- end
30
- --
31
- 2.20.1
32
-
@@ -1,44 +0,0 @@
1
- From 365843bfe0bfc3f1c1b11e81e24ac7b6c7942bdf Mon Sep 17 00:00:00 2001
2
- From: Lars Kanis <lars@greiz-reinsdorf.de>
3
- Date: Fri, 27 Dec 2019 18:18:59 +0100
4
- Subject: [PATCH] Fix determining of ruby versions in "rake native gem"
5
-
6
- "rake native gem" without "cross" didn't set the ruby version constraint.
7
- Instead it failed with NoMethodError like so:
8
-
9
- /ffi $ rake native gem
10
- no configuration section for specified version of Ruby (rbconfig-i386-mingw32-2.6.3)
11
- no configuration section for specified version of Ruby (rbconfig-x64-mingw32-2.6.3)
12
- install -c build/x86_64-linux/ffi_c/2.6.3/ffi_c.so lib/ffi_c.so
13
- cp build/x86_64-linux/ffi_c/2.6.3/ffi_c.so build/x86_64-linux/stage/lib/ffi_c.so
14
- rake aborted!
15
- NoMethodError: undefined method `split' for nil:NilClass
16
- /home/lars/.rvm/gems/ruby-2.6.3/gems/rake-compiler-1.0.9/lib/rake/extensiontask.rb:515:in `ruby_api_version'
17
- /home/lars/.rvm/gems/ruby-2.6.3/gems/rake-compiler-1.0.9/lib/rake/extensiontask.rb:262:in `block in define_native_tasks'
18
- /home/lars/.rvm/gems/ruby-2.6.3/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
19
- /home/lars/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `eval'
20
- /home/lars/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `<main>'
21
- Tasks: TOP => native => native:x86_64-linux => native:ffi:x86_64-linux
22
- (See full trace by running task with --trace)
23
- ---
24
- lib/rake/extensiontask.rb | 4 ++++
25
- 1 file changed, 4 insertions(+)
26
-
27
- diff --git a/lib/rake/extensiontask.rb b/lib/rake/extensiontask.rb
28
- index d85b1a3..cb1ea12 100644
29
- --- a/lib/rake/extensiontask.rb
30
- +++ b/lib/rake/extensiontask.rb
31
- @@ -242,6 +242,10 @@ Java extension should be preferred.
32
- # lib_path
33
- lib_path = lib_dir
34
-
35
- + # Update compiled platform/version combinations
36
- + ruby_versions = (@ruby_versions_per_platform[platf] ||= [])
37
- + ruby_versions << ruby_ver
38
- +
39
- # create 'native:gem_name' and chain it to 'native' task
40
- unless Rake::Task.task_defined?("native:#{@gem_spec.name}:#{platf}")
41
- task "native:#{@gem_spec.name}:#{platf}" do |t|
42
- --
43
- 2.20.1
44
-