rake-compiler-dock 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
-