rake-compiler-dock 1.1.0 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +240 -0
  4. data/.gitignore +11 -1
  5. data/Dockerfile.jruby +6 -5
  6. data/Dockerfile.mri.erb +91 -45
  7. data/History.md +34 -1
  8. data/README.md +92 -36
  9. data/Rakefile +39 -12
  10. data/build/math_h.patch +189 -0
  11. data/build/parallel_docker_build.rb +7 -3
  12. data/build/patches/{ruby-2.5.8 → ruby-2.5.9}/no_sendfile.patch +0 -0
  13. data/build/patches/{ruby-3.0.0 → ruby-3.1.0}/no_sendfile.patch +0 -0
  14. data/build/patches2/{rake-compiler-1.1.1 → rake-compiler-1.1.6}/0004-Enable-build-of-static-libruby.patch +3 -4
  15. data/build/rcd-env.sh +6 -0
  16. data/build/runas +1 -9
  17. data/lib/rake_compiler_dock/starter.rb +3 -2
  18. data/lib/rake_compiler_dock/version.rb +2 -2
  19. data/mingw64-ucrt/Dockerfile +62 -0
  20. data/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  21. data/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  22. data/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  23. data/rake-compiler-dock.gemspec +2 -2
  24. data/test/env/Dockerfile.alpine +17 -0
  25. data/test/env/Dockerfile.centos +22 -0
  26. data/test/env/Dockerfile.debian +24 -0
  27. data/test/rcd_test/Gemfile +11 -0
  28. data/test/rcd_test/Rakefile +76 -0
  29. data/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  30. data/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  31. data/test/rcd_test/ext/mri/extconf.rb +29 -0
  32. data/test/rcd_test/ext/mri/rcd_test_ext.c +51 -0
  33. data/test/rcd_test/ext/mri/rcd_test_ext.h +6 -0
  34. data/test/rcd_test/lib/rcd_test.rb +6 -0
  35. data/test/rcd_test/rcd_test.gemspec +27 -0
  36. data/test/rcd_test/test/test_basic.rb +31 -0
  37. data/test/test_environment_variables.rb +56 -31
  38. data/test/test_parallel_docker_build.rb +19 -6
  39. data.tar.gz.sig +0 -0
  40. metadata +75 -37
  41. metadata.gz.sig +2 -2
  42. data/build/patches2/hoe-3.20.0/0001-Load-encrypted-private-key-using-ENV-GEM_PRIVATE_KEY.patch +0 -32
  43. data/build/patches2/rake-compiler-1.1.1/0001-Fix-determining-of-ruby-versions-in-rake-native-gem.patch +0 -44
  44. data/build/patches2/rake-compiler-1.1.1/0003-Allow-building-of-cross-rubies-in-parallel.patch +0 -214
  45. data/build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch +0 -30
  46. data/build/patches2/rake-compiler-1.1.1/0006-Use-RAKE_EXTENSION_TASK_NO_NATIVE-env-var-as-the-def.patch +0 -26
  47. data/build/patches2/ruby-2.7.0/ruby2_keywords.patch +0 -15
  48. data/build/patches2/ruby-3.0.0/ruby2_keywords.patch +0 -15
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.2
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
+ L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yMjAyMTQxMzMwNTZaFw0yMzAy
15
+ MTQxMzMwNTZaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
16
+ PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
17
+ mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
18
+ eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
19
+ 8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
20
+ SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
21
+ JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
22
+ eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
23
+ chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
24
+ 9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjgYEwfzAJ
25
+ BgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUOIdbSMr3VFrTCO9/cTM0
26
+ 0exHzBcwIgYDVR0RBBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwIgYDVR0S
27
+ BBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwDQYJKoZIhvcNAQELBQADggGB
28
+ AFWP7F/y3Oq3NgrqUOnjKOeDaBa7AqNhHS+PZg+C90lnJzMgOs4KKgZYxqSQVSab
29
+ SCEmzIO/StkXY4NpJ4fYLrHemf/fJy1wPyu+fNdp5SEEUwEo+2toRFlzTe4u4LdS
30
+ QC636nPPTMt8H3xz2wf/lUIUeo2Qc95Qt2BQM465ibbG9kmA3c7Sopx6yOabYOAl
31
+ KPRbOSEPiWYcF9Suuz8Gdf8jxEtPlnZiwRvnYJ+IHMq3XQCJWPpMzdDMbtlgHbXE
32
+ vq1zOTLMSYAS0UB3uionR4yo1hLz60odwkCm7qf0o2Ci/5OjtB0a89VuyqRU2vUJ
33
+ QH95WBjDJ6lCCW7J0mrMPnJQSUFTmufsU6jOChvPaCeAzW1YwrsP/YKnvwueG7ip
34
+ VOdW6RitjtFxhS7evRL0201+KUvLz12zZWWjOcujlQs64QprxOtiv/MiisKb1Ng+
35
+ oL1mUdzB8KrZL4/WbG5YNX6UTtJbIOu9qEFbBAy4/jtIkJX+dlNoFwd4GXQW1YNO
36
+ nA==
31
37
  -----END CERTIFICATE-----
32
- date: 2020-12-29 00:00:00.000000000 Z
38
+ date: 2022-06-27 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
@@ -93,18 +106,13 @@ files:
93
106
  - Rakefile
94
107
  - bin/rake-compiler-dock
95
108
  - build/gem_helper.rb
109
+ - build/math_h.patch
96
110
  - build/mk_i686.rb
97
111
  - 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
112
+ - build/patches/ruby-2.5.9/no_sendfile.patch
113
+ - build/patches/ruby-3.1.0/no_sendfile.patch
114
+ - build/patches2/rake-compiler-1.1.6/0004-Enable-build-of-static-libruby.patch
115
+ - build/rcd-env.sh
108
116
  - build/runas
109
117
  - build/sigfw.c
110
118
  - build/strip_wrapper
@@ -115,7 +123,24 @@ files:
115
123
  - lib/rake_compiler_dock/predefined_user_group.rb
116
124
  - lib/rake_compiler_dock/starter.rb
117
125
  - lib/rake_compiler_dock/version.rb
126
+ - mingw64-ucrt/Dockerfile
127
+ - mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch
128
+ - mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch
129
+ - mingw64-ucrt/mingw-w64-enable-ucrt.patch
118
130
  - rake-compiler-dock.gemspec
131
+ - test/env/Dockerfile.alpine
132
+ - test/env/Dockerfile.centos
133
+ - test/env/Dockerfile.debian
134
+ - test/rcd_test/Gemfile
135
+ - test/rcd_test/Rakefile
136
+ - test/rcd_test/ext/java/RcdTestExtService.java
137
+ - test/rcd_test/ext/java/RubyRcdTest.java
138
+ - test/rcd_test/ext/mri/extconf.rb
139
+ - test/rcd_test/ext/mri/rcd_test_ext.c
140
+ - test/rcd_test/ext/mri/rcd_test_ext.h
141
+ - test/rcd_test/lib/rcd_test.rb
142
+ - test/rcd_test/rcd_test.gemspec
143
+ - test/rcd_test/test/test_basic.rb
119
144
  - test/test_environment_variables.rb
120
145
  - test/test_parallel_docker_build.rb
121
146
  - test/test_starter.rb
@@ -138,12 +163,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
163
  - !ruby/object:Gem::Version
139
164
  version: '0'
140
165
  requirements: []
141
- rubygems_version: 3.1.4
166
+ rubygems_version: 3.2.22
142
167
  signing_key:
143
168
  specification_version: 4
144
169
  summary: Easy to use and reliable cross compiler environment for building Windows
145
170
  and Linux binary gems.
146
171
  test_files:
172
+ - test/env/Dockerfile.alpine
173
+ - test/env/Dockerfile.centos
174
+ - test/env/Dockerfile.debian
175
+ - test/rcd_test/Gemfile
176
+ - test/rcd_test/Rakefile
177
+ - test/rcd_test/ext/java/RcdTestExtService.java
178
+ - test/rcd_test/ext/java/RubyRcdTest.java
179
+ - test/rcd_test/ext/mri/extconf.rb
180
+ - test/rcd_test/ext/mri/rcd_test_ext.c
181
+ - test/rcd_test/ext/mri/rcd_test_ext.h
182
+ - test/rcd_test/lib/rcd_test.rb
183
+ - test/rcd_test/rcd_test.gemspec
184
+ - test/rcd_test/test/test_basic.rb
147
185
  - test/test_environment_variables.rb
148
186
  - test/test_parallel_docker_build.rb
149
187
  - test/test_starter.rb
metadata.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
-
2
- � ;�&%$xuQ�����GA�Ơ�9r\ZA�'g
1
+ ,1o�0����o����ɂl��4.y��ƖǙ^(���/�F^P�A��F��"M2��0����3O�tY ��?��AYͨ\:L�4��M�QZͩY&~�w�����#t܆-�;鼍_�>�J06܉���X#E�M+� ����K�;0-�I(N@*���M��J���2�2h�(cS�+��+L�C���6���/����Kr��N�2Kz����Ց��(����e� �R�D��߬ªRɲ��j��2[j���.P֭�OE���Op:z�zP�ɀ=�y�%Y飗^�MRjo�8b9�~W�#Uq�=�p�
2
+ \��AP"e(�3�\�2Xm���n��$����¼jU��c7����).�f|��y�v��mH��M�LՍ��
@@ -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
-
@@ -1,214 +0,0 @@
1
- From 01fd7364bdcb37ac8709ffa48388b5cbe6478211 Mon Sep 17 00:00:00 2001
2
- From: Lars Kanis <lars@greiz-reinsdorf.de>
3
- Date: Fri, 10 Jan 2020 23:57:18 +0100
4
- Subject: [PATCH] Allow building of cross rubies in parallel
5
-
6
- Rubies can be build like so:
7
- rake-compiler cross-ruby VERSION=2.7.0:2.6.0 HOST=x86_64-w64-mingw32:i686-w64-mingw32
8
-
9
- This builds the cross product of all ":" separated ruby and host versions.
10
- To force sequential builds add option "-j1".
11
- ---
12
- tasks/bin/cross-ruby.rake | 161 +++++++++++++++++++-------------------
13
- 1 file changed, 80 insertions(+), 81 deletions(-)
14
-
15
- diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
16
- index 278541c..8b88025 100644
17
- --- a/tasks/bin/cross-ruby.rake
18
- +++ b/tasks/bin/cross-ruby.rake
19
- @@ -41,106 +41,105 @@ end
20
- require 'rake/extensioncompiler'
21
-
22
- MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system("#{c} -v > /dev/null 2>&1") }
23
- -USER_HOME = File.expand_path("~/.rake-compiler")
24
- -RUBY_CC_VERSION = "ruby-" << ENV.fetch("VERSION", "1.8.7-p371")
25
- +USER_HOME = File.realpath(File.expand_path("~/.rake-compiler"))
26
- RUBY_SOURCE = ENV['SOURCE']
27
- RUBY_BUILD = RbConfig::CONFIG["host"]
28
-
29
- -# grab the major "1.8" or "1.9" part of the version number
30
- -MAJOR = RUBY_CC_VERSION.match(/.*-(\d.\d).\d/)[1]
31
- -
32
- -# Use Rake::ExtensionCompiler helpers to find the proper host
33
- -MINGW_HOST = ENV['HOST'] || Rake::ExtensionCompiler.mingw_host
34
- -MINGW_TARGET = MINGW_HOST.gsub('msvc', '')
35
- -
36
- # Unset any possible variable that might affect compilation
37
- ["CC", "CXX", "CPPFLAGS", "LDFLAGS", "RUBYOPT"].each do |var|
38
- ENV.delete(var)
39
- end
40
-
41
- -source_dir = "#{USER_HOME}/sources/#{RUBY_CC_VERSION}"
42
- -build_dir = "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}"
43
- -
44
- -# define a location where sources will be stored
45
- -directory source_dir
46
- -directory build_dir
47
- -
48
- -# clean intermediate files and folders
49
- -CLEAN.include(source_dir)
50
- -CLEAN.include(build_dir)
51
- -
52
- -# remove the final products and sources
53
- -CLOBBER.include("#{USER_HOME}/sources")
54
- -CLOBBER.include("#{USER_HOME}/builds")
55
- -CLOBBER.include("#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}")
56
- -CLOBBER.include("#{USER_HOME}/config.yml")
57
- +RUBY_CC_VERSIONS = ENV.fetch("VERSION", "1.8.7-p371")
58
- +RUBY_CC_VERSIONS.split(":").each do |ruby_cc_version|
59
- + ruby_cc_version = "ruby-" + ruby_cc_version
60
- + # grab the major "1.8" or "1.9" part of the version number
61
- + major = ruby_cc_version.match(/.*-(\d.\d).\d/)[1]
62
- +
63
- + # define a location where sources will be stored
64
- + source_dir = "#{USER_HOME}/sources/#{ruby_cc_version}"
65
- + directory source_dir
66
- + # clean intermediate files and folders
67
- + CLEAN.include(source_dir)
68
- +
69
- + # remove the final products and sources
70
- + CLOBBER.include("#{USER_HOME}/sources")
71
- + CLOBBER.include("#{USER_HOME}/builds")
72
- + CLOBBER.include("#{USER_HOME}/config.yml")
73
- +
74
- + # Extract the sources
75
- + source_file = RUBY_SOURCE ? RUBY_SOURCE.split('/').last : "#{ruby_cc_version}.tar.bz2"
76
- + file source_dir => ["#{USER_HOME}/sources/#{source_file}"] do |t|
77
- + t.prerequisites.each { |f| sh "tar xf #{File.basename(f)}", chdir: File.dirname(t.name) }
78
- + end
79
-
80
- -# ruby source file should be stored there
81
- -file "#{USER_HOME}/sources/#{RUBY_CC_VERSION}.tar.bz2" => ["#{USER_HOME}/sources"] do |t|
82
- - # download the source file using wget or curl
83
- - chdir File.dirname(t.name) do
84
- + # ruby source file should be stored there
85
- + file "#{USER_HOME}/sources/#{ruby_cc_version}.tar.bz2" => ["#{USER_HOME}/sources"] do |t|
86
- + # download the source file using wget or curl
87
- if RUBY_SOURCE
88
- url = RUBY_SOURCE
89
- else
90
- - url = "http://cache.ruby-lang.org/pub/ruby/#{MAJOR}/#{File.basename(t.name)}"
91
- + url = "http://cache.ruby-lang.org/pub/ruby/#{major}/#{File.basename(t.name)}"
92
- end
93
- - sh "wget #{url} || curl -O #{url}"
94
- + sh "wget #{url} || curl -O #{url}", chdir: File.dirname(t.name)
95
- end
96
- -end
97
- -
98
- -# Extract the sources
99
- -source_file = RUBY_SOURCE ? RUBY_SOURCE.split('/').last : "#{RUBY_CC_VERSION}.tar.bz2"
100
- -file source_dir => ["#{USER_HOME}/sources/#{source_file}"] do |t|
101
- - chdir File.dirname(t.name) do
102
- - t.prerequisites.each { |f| sh "tar xf #{File.basename(f)}" }
103
- - end
104
- -end
105
-
106
- -task :mingw32 do
107
- - unless MINGW_HOST then
108
- - warn "You need to install mingw32 cross compile functionality to be able to continue."
109
- - warn "Please refer to your distribution/package manager documentation about installation."
110
- - fail
111
- - end
112
- -end
113
- + # Create tasks for each host out of the ":" separated hosts list in the HOST variable.
114
- + # These tasks are processed in parallel as dependencies to the "install" task.
115
- + mingw_hosts = ENV['HOST'] || Rake::ExtensionCompiler.mingw_host
116
- + mingw_hosts.split(":").each do |mingw_host|
117
- +
118
- + # Use Rake::ExtensionCompiler helpers to find the proper host
119
- + mingw_target = mingw_host.gsub('msvc', '')
120
- +
121
- + # define a location where built files for each host will be stored
122
- + build_dir = "#{USER_HOME}/builds/#{mingw_host}/#{ruby_cc_version}"
123
- + directory build_dir
124
- + install_dir = "#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}"
125
- +
126
- + # clean intermediate files and folders
127
- + CLEAN.include(build_dir)
128
- + CLOBBER.include(install_dir)
129
- +
130
- + task :mingw32 do
131
- + unless mingw_host then
132
- + warn "You need to install mingw32 cross compile functionality to be able to continue."
133
- + warn "Please refer to your distribution/package manager documentation about installation."
134
- + fail
135
- + end
136
- + end
137
-
138
- -# generate the makefile in a clean build location
139
- -file "#{build_dir}/Makefile" => [build_dir, source_dir] do |t|
140
- -
141
- - options = [
142
- - "--host=#{MINGW_HOST}",
143
- - "--target=#{MINGW_TARGET}",
144
- - "--build=#{RUBY_BUILD}",
145
- - '--enable-shared',
146
- - '--disable-install-doc',
147
- - '--with-ext=',
148
- - 'LDFLAGS=-pipe -s',
149
- - ]
150
- -
151
- - # Force Winsock2 for Ruby 1.8, 1.9 defaults to it
152
- - options << "--with-winsock2" if MAJOR == "1.8"
153
- -
154
- - chdir File.dirname(t.name) do
155
- - prefix = File.expand_path("../../../ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}")
156
- - options << "--prefix=#{prefix}"
157
- - sh File.expand_path("../../../sources/#{RUBY_CC_VERSION}/configure"), *options
158
- - end
159
- -end
160
- + # generate the makefile in a clean build location
161
- + file "#{build_dir}/Makefile" => [build_dir, source_dir] do |t|
162
- +
163
- + options = [
164
- + "--host=#{mingw_host}",
165
- + "--target=#{mingw_target}",
166
- + "--build=#{RUBY_BUILD}",
167
- + '--enable-shared',
168
- + '--disable-install-doc',
169
- + '--with-ext=',
170
- + 'LDFLAGS=-pipe -s',
171
- + ]
172
- +
173
- + # Force Winsock2 for Ruby 1.8, 1.9 defaults to it
174
- + options << "--with-winsock2" if major == "1.8"
175
- + options << "--prefix=#{install_dir}"
176
- + sh File.expand_path("#{USER_HOME}/sources/#{ruby_cc_version}/configure"), *options, chdir: File.dirname(t.name)
177
- + end
178
-
179
- -# make
180
- -file "#{build_dir}/ruby.exe" => ["#{build_dir}/Makefile"] do |t|
181
- - chdir File.dirname(t.prerequisites.first) do
182
- - sh MAKE
183
- - end
184
- -end
185
- + # make
186
- + file "#{build_dir}/ruby.exe" => ["#{build_dir}/Makefile"] do |t|
187
- + sh MAKE, chdir: File.dirname(t.prerequisites.first)
188
- + end
189
-
190
- -# make install
191
- -file "#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}/bin/ruby.exe" => ["#{build_dir}/ruby.exe"] do |t|
192
- - chdir File.dirname(t.prerequisites.first) do
193
- - sh "#{MAKE} install"
194
- + # make install
195
- + file "#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}/bin/ruby.exe" => ["#{build_dir}/ruby.exe"] do |t|
196
- + sh "#{MAKE} install", chdir: File.dirname(t.prerequisites.first)
197
- + end
198
- + multitask :install => ["#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}/bin/ruby.exe"]
199
- end
200
- end
201
- -task :install => ["#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}/bin/ruby.exe"]
202
-
203
- desc "Update rake-compiler list of installed Ruby versions"
204
- task 'update-config' do
205
- @@ -187,5 +186,5 @@ task :default do
206
- Rake.application.display_tasks_and_comments
207
- end
208
-
209
- -desc "Build #{RUBY_CC_VERSION} suitable for cross-platform development."
210
- +desc "Build rubies suitable for cross-platform development."
211
- task 'cross-ruby' => [:mingw32, :install, 'update-config']
212
- --
213
- 2.20.1
214
-
@@ -1,30 +0,0 @@
1
- From 783d3d380e6abf107e0747d229da0f5e001c623f Mon Sep 17 00:00:00 2001
2
- From: Lars Kanis <lars@greiz-reinsdorf.de>
3
- Date: Sun, 20 Dec 2020 19:08:22 +0100
4
- Subject: [PATCH] Don't mask out build env vars for cross-ruby
5
-
6
- This was introduced in commit a7c113e580c1565000166f9967da82ff2ecdaeaa to avoid interference with host build.
7
- However it prohibits setting important flags for cross-build.
8
-
9
- Also don't force 'LDFLAGS=-pipe -s' in configure, which doesn't work with clang targeting MacOS.
10
- It can now be set externally.
11
- ---
12
- tasks/bin/cross-ruby.rake | 3 +--
13
- 1 file changed, 1 insertion(+), 2 deletions(-)
14
-
15
- diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
16
- index 8edf5cd..8317a2a 100644
17
- --- a/tasks/bin/cross-ruby.rake
18
- +++ b/tasks/bin/cross-ruby.rake
19
- @@ -46,7 +46,7 @@ RUBY_SOURCE = ENV['SOURCE']
20
- RUBY_BUILD = RbConfig::CONFIG["host"]
21
-
22
- # Unset any possible variable that might affect compilation
23
- -["CC", "CXX", "CPPFLAGS", "LDFLAGS", "RUBYOPT"].each do |var|
24
- +["RUBYOPT"].each do |var|
25
- ENV.delete(var)
26
- end
27
-
28
- --
29
- 2.27.0
30
-
@@ -1,26 +0,0 @@
1
- From 15f630adc4325f9cafb762e15a051c2ec8bd21e2 Mon Sep 17 00:00:00 2001
2
- From: Sutou Kouhei <kou@clear-code.com>
3
- Date: Mon, 21 Dec 2020 04:30:44 +0900
4
- Subject: [PATCH] Use RAKE_EXTENSION_TASK_NO_NATIVE env var as the default
5
- value
6
-
7
- ---
8
- lib/rake/extensiontask.rb | 2 +-
9
- 1 file changed, 1 insertion(+), 1 deletion(-)
10
-
11
- diff --git a/lib/rake/extensiontask.rb b/lib/rake/extensiontask.rb
12
- index b0ab88e..49d59da 100644
13
- --- a/lib/rake/extensiontask.rb
14
- +++ b/lib/rake/extensiontask.rb
15
- @@ -23,7 +23,7 @@ module Rake
16
- @cross_compile = false
17
- @cross_config_options = []
18
- @cross_compiling = nil
19
- - @no_native = false
20
- + @no_native = (ENV["RAKE_EXTENSION_TASK_NO_NATIVE"] == "true")
21
- @config_includes = []
22
- @ruby_versions_per_platform = {}
23
- @make = nil
24
- --
25
- 2.27.0
26
-
@@ -1,15 +0,0 @@
1
- diff --git a/template/fake.rb.in b/template/fake.rb.in
2
- index f1da719ecb..e0b649fb28 100644
3
- --- a/template/fake.rb.in
4
- +++ b/template/fake.rb.in
5
- @@ -27,6 +27,10 @@ case "$0" in /*) r=-r"$0";; *) r=-r"./$0";; esac
6
- exec $ruby "$r" "$@"
7
- =end
8
- =baseruby
9
- +<% if RUBY_VERSION < "2.7" %>
10
- +def ruby2_keywords(*)
11
- +end
12
- +<% end %>
13
- class Object
14
- remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING)
15
- CROSS_COMPILING = RUBY_PLATFORM
@@ -1,15 +0,0 @@
1
- diff --git a/template/fake.rb.in b/template/fake.rb.in
2
- index f1da719ecb..e0b649fb28 100644
3
- --- a/template/fake.rb.in
4
- +++ b/template/fake.rb.in
5
- @@ -27,6 +27,10 @@ case "$0" in /*) r=-r"$0";; *) r=-r"./$0";; esac
6
- exec $ruby "$r" "$@"
7
- =end
8
- =baseruby
9
- +<% if RUBY_VERSION < "2.7" %>
10
- +def ruby2_keywords(*)
11
- +end
12
- +<% end %>
13
- class Object
14
- remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING)
15
- CROSS_COMPILING = RUBY_PLATFORM