rake-compiler-dock 1.1.0 → 1.2.2
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +240 -0
- data/.gitignore +11 -1
- data/Dockerfile.jruby +6 -5
- data/Dockerfile.mri.erb +91 -45
- data/History.md +34 -1
- data/README.md +92 -36
- data/Rakefile +39 -12
- data/build/math_h.patch +189 -0
- data/build/parallel_docker_build.rb +7 -3
- data/build/patches/{ruby-2.5.8 → ruby-2.5.9}/no_sendfile.patch +0 -0
- data/build/patches/{ruby-3.0.0 → ruby-3.1.0}/no_sendfile.patch +0 -0
- data/build/patches2/{rake-compiler-1.1.1 → rake-compiler-1.1.6}/0004-Enable-build-of-static-libruby.patch +3 -4
- data/build/rcd-env.sh +6 -0
- data/build/runas +1 -9
- data/lib/rake_compiler_dock/starter.rb +3 -2
- data/lib/rake_compiler_dock/version.rb +2 -2
- data/mingw64-ucrt/Dockerfile +62 -0
- data/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
- data/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
- data/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
- data/rake-compiler-dock.gemspec +2 -2
- data/test/env/Dockerfile.alpine +17 -0
- data/test/env/Dockerfile.centos +22 -0
- data/test/env/Dockerfile.debian +24 -0
- data/test/rcd_test/Gemfile +11 -0
- data/test/rcd_test/Rakefile +76 -0
- data/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
- data/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
- data/test/rcd_test/ext/mri/extconf.rb +29 -0
- data/test/rcd_test/ext/mri/rcd_test_ext.c +51 -0
- data/test/rcd_test/ext/mri/rcd_test_ext.h +6 -0
- data/test/rcd_test/lib/rcd_test.rb +6 -0
- data/test/rcd_test/rcd_test.gemspec +27 -0
- data/test/rcd_test/test/test_basic.rb +31 -0
- data/test/test_environment_variables.rb +56 -31
- data/test/test_parallel_docker_build.rb +19 -6
- data.tar.gz.sig +0 -0
- metadata +75 -37
- metadata.gz.sig +2 -2
- data/build/patches2/hoe-3.20.0/0001-Load-encrypted-private-key-using-ENV-GEM_PRIVATE_KEY.patch +0 -32
- data/build/patches2/rake-compiler-1.1.1/0001-Fix-determining-of-ruby-versions-in-rake-native-gem.patch +0 -44
- data/build/patches2/rake-compiler-1.1.1/0003-Allow-building-of-cross-rubies-in-parallel.patch +0 -214
- data/build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch +0 -30
- data/build/patches2/rake-compiler-1.1.1/0006-Use-RAKE_EXTENSION_TASK_NO_NATIVE-env-var-as-the-def.patch +0 -26
- data/build/patches2/ruby-2.7.0/ruby2_keywords.patch +0 -15
- data/build/patches2/ruby-3.0.0/ruby2_keywords.patch +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22fdbf0b0336450a55882dd000bea66c52a43325c6de59b0721ffbc6b5360576
|
4
|
+
data.tar.gz: 425f0ae751dfdcd3ff2936ff387c58b20d89e297d831c8c333ddd5738a9a92c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 290f60e3969979b7830ab2a69c8989c484dbdf116fc76d9424a5efb71e5a1a4ab0bb834bc6504b3db3b383b76fbdb35ea070566d5118420ebfcf8b454a85a0a3
|
7
|
+
data.tar.gz: ab7a5180be028e305798032e35fc2070bce0ad882ace282ec21700b74552d35bf8a80dd2b660f9c66a8247605c11277eaf79c9ee338430b8ef4511bc945f1dfc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -0,0 +1,240 @@
|
|
1
|
+
name: Build docker images
|
2
|
+
concurrency:
|
3
|
+
group: "${{github.workflow}}-${{github.ref}}"
|
4
|
+
cancel-in-progress: true
|
5
|
+
on:
|
6
|
+
workflow_dispatch:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- main
|
10
|
+
tags:
|
11
|
+
- "*.*.*"
|
12
|
+
pull_request:
|
13
|
+
types: [opened, synchronize]
|
14
|
+
branches:
|
15
|
+
- "*"
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
# These jobs use Buildx layer caching
|
19
|
+
docker_build:
|
20
|
+
name: Build
|
21
|
+
|
22
|
+
strategy:
|
23
|
+
fail-fast: false
|
24
|
+
matrix:
|
25
|
+
platform:
|
26
|
+
- x86-mingw32
|
27
|
+
- x64-mingw-ucrt
|
28
|
+
- x64-mingw32
|
29
|
+
- x86-linux
|
30
|
+
- x86_64-linux
|
31
|
+
- x86_64-darwin
|
32
|
+
- arm64-darwin
|
33
|
+
- arm-linux
|
34
|
+
- aarch64-linux
|
35
|
+
- jruby
|
36
|
+
|
37
|
+
runs-on: ubuntu-latest
|
38
|
+
env:
|
39
|
+
PLATFORM: ${{ matrix.platform }}
|
40
|
+
steps:
|
41
|
+
- uses: actions/checkout@v2
|
42
|
+
|
43
|
+
- name: Cache Docker layers
|
44
|
+
uses: actions/cache@v2
|
45
|
+
with:
|
46
|
+
path: tmp/build-cache
|
47
|
+
key: ${{ runner.os }}-${{ matrix.platform }}-buildx-${{ github.sha }}
|
48
|
+
restore-keys: |
|
49
|
+
${{ runner.os }}-${{ matrix.platform }}-buildx
|
50
|
+
|
51
|
+
- uses: ruby/setup-ruby@v1
|
52
|
+
with:
|
53
|
+
ruby-version: "3.0"
|
54
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
55
|
+
|
56
|
+
- name: Build docker image
|
57
|
+
run: |
|
58
|
+
docker buildx create --driver docker-container --use
|
59
|
+
bundle exec rake build:${PLATFORM} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,src=tmp/build-cache --cache-to=type=local,dest=tmp/build-cache-new --load"
|
60
|
+
|
61
|
+
- name: Move build cache and remove outdated layers
|
62
|
+
run: |
|
63
|
+
rm -rf tmp/build-cache
|
64
|
+
mv tmp/build-cache-new tmp/build-cache
|
65
|
+
|
66
|
+
- name: Build rcd_test.gem
|
67
|
+
run: |
|
68
|
+
gem build rake-compiler-dock.gemspec
|
69
|
+
gem install -l rake-compiler-dock-*.gem
|
70
|
+
cd test/rcd_test/
|
71
|
+
bundle install
|
72
|
+
bundle exec rake clean clobber
|
73
|
+
bundle exec rake gem:${PLATFORM}
|
74
|
+
|
75
|
+
- name: Upload binary gem
|
76
|
+
uses: actions/upload-artifact@v2
|
77
|
+
with:
|
78
|
+
name: gem-${{ matrix.platform }}
|
79
|
+
path: test/rcd_test/pkg/*-*-*.gem
|
80
|
+
|
81
|
+
- if: matrix.platform == 'jruby'
|
82
|
+
name: Upload source gem
|
83
|
+
uses: actions/upload-artifact@v2
|
84
|
+
with:
|
85
|
+
name: gem-ruby
|
86
|
+
path: test/rcd_test/pkg/*-?.?.?.gem
|
87
|
+
|
88
|
+
- if: contains(matrix.platform, 'x64-mingw')
|
89
|
+
name: Build static rcd_test.gem
|
90
|
+
env:
|
91
|
+
RCD_TEST_CONFIG: "--link-static"
|
92
|
+
run: |
|
93
|
+
gem build rake-compiler-dock.gemspec
|
94
|
+
gem install -l rake-compiler-dock-*.gem
|
95
|
+
cd test/rcd_test/
|
96
|
+
bundle install
|
97
|
+
bundle exec rake clean clobber
|
98
|
+
bundle exec rake gem:${PLATFORM}
|
99
|
+
|
100
|
+
- if: contains(matrix.platform, 'x64-mingw')
|
101
|
+
name: Upload static binary gem
|
102
|
+
uses: actions/upload-artifact@v2
|
103
|
+
with:
|
104
|
+
name: gem-${{ matrix.platform }}-static
|
105
|
+
path: test/rcd_test/pkg/*-*-*.gem
|
106
|
+
|
107
|
+
job_test_native:
|
108
|
+
name: Test (${{matrix.ruby}}, ${{matrix.platform}})
|
109
|
+
needs: docker_build
|
110
|
+
strategy:
|
111
|
+
fail-fast: false
|
112
|
+
matrix:
|
113
|
+
os:
|
114
|
+
- windows
|
115
|
+
- macos
|
116
|
+
- ubuntu
|
117
|
+
ruby:
|
118
|
+
- "3.1"
|
119
|
+
- "3.0"
|
120
|
+
- "2.7"
|
121
|
+
- "2.6"
|
122
|
+
- "2.5"
|
123
|
+
- "2.4"
|
124
|
+
include:
|
125
|
+
- os: windows
|
126
|
+
platform: x64-mingw32
|
127
|
+
- os: macos
|
128
|
+
platform: x86_64-darwin
|
129
|
+
- os: ubuntu
|
130
|
+
platform: x86_64-linux
|
131
|
+
- os: ubuntu
|
132
|
+
platform: ruby
|
133
|
+
- os: ubuntu
|
134
|
+
ruby: jruby-head
|
135
|
+
platform: jruby
|
136
|
+
- os: windows
|
137
|
+
ruby: "3.1"
|
138
|
+
platform: x64-mingw-ucrt
|
139
|
+
exclude:
|
140
|
+
- os: windows
|
141
|
+
ruby: "3.1"
|
142
|
+
|
143
|
+
runs-on: ${{ matrix.os }}-latest
|
144
|
+
steps:
|
145
|
+
- uses: actions/checkout@v2
|
146
|
+
- uses: ruby/setup-ruby@v1
|
147
|
+
with:
|
148
|
+
ruby-version: ${{ matrix.ruby }}
|
149
|
+
- run: ruby --version
|
150
|
+
- name: Download gem-${{matrix.platform}}
|
151
|
+
uses: actions/download-artifact@v2
|
152
|
+
with:
|
153
|
+
name: gem-${{ matrix.platform }}
|
154
|
+
- name: Install gem-${{matrix.platform}}
|
155
|
+
run: gem install --local *.gem --verbose
|
156
|
+
- name: Run tests
|
157
|
+
run: |
|
158
|
+
cd test/rcd_test/
|
159
|
+
bundle install
|
160
|
+
ruby -rrcd_test -S rake test
|
161
|
+
|
162
|
+
job_test_native_static:
|
163
|
+
name: Test static (${{matrix.ruby}}, ${{matrix.platform}})
|
164
|
+
needs: docker_build
|
165
|
+
strategy:
|
166
|
+
fail-fast: false
|
167
|
+
matrix:
|
168
|
+
os:
|
169
|
+
- windows
|
170
|
+
ruby:
|
171
|
+
- "3.1"
|
172
|
+
- "3.0"
|
173
|
+
- "2.7"
|
174
|
+
- "2.6"
|
175
|
+
- "2.5"
|
176
|
+
- "2.4"
|
177
|
+
include:
|
178
|
+
- os: windows
|
179
|
+
platform: x64-mingw32
|
180
|
+
- os: windows
|
181
|
+
ruby: "3.1"
|
182
|
+
platform: x64-mingw-ucrt
|
183
|
+
exclude:
|
184
|
+
- os: windows
|
185
|
+
ruby: "3.1"
|
186
|
+
|
187
|
+
runs-on: ${{ matrix.os }}-latest
|
188
|
+
steps:
|
189
|
+
- uses: actions/checkout@v2
|
190
|
+
- uses: ruby/setup-ruby@v1
|
191
|
+
with:
|
192
|
+
ruby-version: ${{ matrix.ruby }}
|
193
|
+
- run: ruby --version
|
194
|
+
- name: Download gem-${{matrix.platform}}-static
|
195
|
+
uses: actions/download-artifact@v2
|
196
|
+
with:
|
197
|
+
name: gem-${{ matrix.platform }}-static
|
198
|
+
- name: Install gem-${{matrix.platform}}-static
|
199
|
+
run: gem install --local *.gem --verbose
|
200
|
+
- name: Run tests
|
201
|
+
run: |
|
202
|
+
cd test/rcd_test/
|
203
|
+
bundle install
|
204
|
+
ruby -rrcd_test -S rake test
|
205
|
+
|
206
|
+
job_test_multiarch:
|
207
|
+
name: Test ${{matrix.platform}} on ${{matrix.from_image}}
|
208
|
+
needs: docker_build
|
209
|
+
strategy:
|
210
|
+
fail-fast: false
|
211
|
+
matrix:
|
212
|
+
include:
|
213
|
+
- from_image: amd64/centos
|
214
|
+
platform: x86_64-linux
|
215
|
+
dockerfile: centos
|
216
|
+
- from_image: navikey/raspbian-bullseye
|
217
|
+
platform: arm-linux
|
218
|
+
dockerfile: debian
|
219
|
+
- from_image: arm64v8/ubuntu
|
220
|
+
platform: aarch64-linux
|
221
|
+
dockerfile: debian
|
222
|
+
- from_image: i386/alpine
|
223
|
+
platform: x86-linux
|
224
|
+
dockerfile: alpine
|
225
|
+
- from_image: arm32v6/alpine
|
226
|
+
platform: arm-linux
|
227
|
+
dockerfile: alpine
|
228
|
+
|
229
|
+
runs-on: ubuntu-latest
|
230
|
+
steps:
|
231
|
+
- uses: actions/checkout@v2
|
232
|
+
- name: Download gem-${{matrix.platform}}
|
233
|
+
uses: actions/download-artifact@v2
|
234
|
+
with:
|
235
|
+
name: gem-${{ matrix.platform }}
|
236
|
+
- name: Build image and Run tests
|
237
|
+
run: |
|
238
|
+
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
239
|
+
docker build --rm --build-arg from_image=${{matrix.from_image}} -t ruby-test -f test/env/Dockerfile.${{matrix.dockerfile}} .
|
240
|
+
docker run --rm -t --network=host -v `pwd`:/build ruby-test
|
data/.gitignore
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
/.bundle/
|
2
2
|
/.yardoc
|
3
|
+
/Dockerfile.mri.aarch64-linux
|
4
|
+
/Dockerfile.mri.arm-linux
|
5
|
+
/Dockerfile.mri.arm64-darwin
|
6
|
+
/Dockerfile.mri.arm64-linux
|
7
|
+
/Dockerfile.mri.x64-mingw32
|
3
8
|
/Dockerfile.mri.x86-linux
|
4
9
|
/Dockerfile.mri.x86-mingw32
|
10
|
+
/Dockerfile.mri.x86_64-darwin
|
5
11
|
/Dockerfile.mri.x86_64-linux
|
6
|
-
/Dockerfile.mri.x64-mingw32
|
7
12
|
/Gemfile.lock
|
8
13
|
/_yardoc/
|
9
14
|
/coverage/
|
@@ -16,3 +21,8 @@
|
|
16
21
|
*.o
|
17
22
|
*.a
|
18
23
|
mkmf.log
|
24
|
+
.byebug_history
|
25
|
+
test/rcd_test/Gemfile.lock
|
26
|
+
test/rcd_test/pkg/
|
27
|
+
test/rcd_test/tmp/
|
28
|
+
test/rcd_test/vendor/
|
data/Dockerfile.jruby
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
FROM ubuntu:20.04
|
2
2
|
|
3
|
+
ENV DEBIAN_FRONTEND noninteractive
|
3
4
|
RUN apt-get -y update && \
|
4
|
-
apt-get install -y curl git-core xz-utils wget unzip sudo gpg dirmngr openjdk-
|
5
|
+
apt-get install -y curl git-core xz-utils wget unzip sudo gpg dirmngr openjdk-11-jdk-headless maven && \
|
5
6
|
rm -rf /var/lib/apt/lists/*
|
6
7
|
|
7
8
|
# Add "rvm" as system group, to avoid conflicts with host GIDs typically starting with 1000
|
@@ -13,7 +14,7 @@ RUN mkdir ~/.gnupg && \
|
|
13
14
|
echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf
|
14
15
|
|
15
16
|
# install rvm, RVM 1.26.0+ has signed releases, source rvm for usage outside of package scripts
|
16
|
-
RUN gpg --keyserver hkp://
|
17
|
+
RUN gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \
|
17
18
|
(curl -L http://get.rvm.io | sudo bash) && \
|
18
19
|
bash -c " \
|
19
20
|
source /etc/rubybashrc && \
|
@@ -26,7 +27,7 @@ ENV BASH_ENV /etc/rubybashrc
|
|
26
27
|
# install rubies and fix permissions on
|
27
28
|
RUN bash -c " \
|
28
29
|
export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
|
29
|
-
for v in jruby-9.2.
|
30
|
+
for v in jruby-9.3.2.0 ; do \
|
30
31
|
rvm install --binary \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
|
31
32
|
done && \
|
32
33
|
rvm cleanup all && \
|
@@ -46,8 +47,8 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
|
|
46
47
|
|
47
48
|
USER root
|
48
49
|
|
49
|
-
RUN bash -c "rvm alias create default jruby-9.2.
|
50
|
-
RUN echo "rvm use jruby-9.2.
|
50
|
+
RUN bash -c "rvm alias create default jruby-9.3.2.0"
|
51
|
+
RUN echo "rvm use jruby-9.3.2.0 > /dev/null" >> /etc/rubybashrc
|
51
52
|
|
52
53
|
# Add rvm to the global bashrc
|
53
54
|
RUN echo "source /etc/profile.d/rvm.sh" >> /etc/bash.bashrc
|
data/Dockerfile.mri.erb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
<%
|
2
|
+
image = case platform
|
3
|
+
when /x86_64-linux/ then "quay.io/pypa/manylinux2014_x86_64"
|
4
|
+
when /x86-linux/ then "quay.io/pypa/manylinux2014_i686"
|
5
|
+
else "ubuntu:20.04"
|
6
|
+
end
|
7
|
+
manylinux = !!(image =~ /manylinux/)
|
8
|
+
%>
|
9
|
+
FROM <%= image %>
|
10
|
+
|
11
|
+
<% if manylinux %>
|
9
12
|
# install packages which rvm will require
|
10
|
-
RUN yum install -y autoconf gcc-c++ libtool readline-devel sqlite-devel ruby openssl-devel xz cmake sudo less
|
13
|
+
RUN yum install -y autoconf gcc-c++ libtool readline-devel sqlite-devel ruby openssl-devel xz cmake sudo less libffi-devel git wget
|
11
14
|
|
12
15
|
# Prepare sudo and delete sudo as alias to gosu
|
13
16
|
RUN rm -f /usr/local/bin/sudo && \
|
@@ -36,7 +39,7 @@ RUN mkdir ~/.gnupg && \
|
|
36
39
|
echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf
|
37
40
|
|
38
41
|
# install rvm, RVM 1.26.0+ has signed releases, source rvm for usage outside of package scripts
|
39
|
-
RUN gpg --keyserver hkp://
|
42
|
+
RUN gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \
|
40
43
|
(curl -L http://get.rvm.io | sudo bash) && \
|
41
44
|
bash -c " \
|
42
45
|
source /etc/rubybashrc && \
|
@@ -47,7 +50,7 @@ RUN gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A
|
|
47
50
|
COPY build/patches /home/rvm/patches/
|
48
51
|
|
49
52
|
# install rubies and fix permissions on
|
50
|
-
ENV RVM_RUBIES 2.5.
|
53
|
+
ENV RVM_RUBIES 2.5.9 3.1.0
|
51
54
|
RUN bash -c " \
|
52
55
|
export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
|
53
56
|
for v in ${RVM_RUBIES} ; do \
|
@@ -61,7 +64,7 @@ RUN bash -c " \
|
|
61
64
|
RUN echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
|
62
65
|
bash -c " \
|
63
66
|
rvm all do gem update --system --no-document && \
|
64
|
-
rvm all do gem install --no-document bundler 'bundler:~>1.16' 'rake-compiler:1.1.
|
67
|
+
rvm all do gem install --no-document bundler 'bundler:~>1.16' 'rake-compiler:1.1.6' hoe mini_portile rubygems-tasks mini_portile2 && \
|
65
68
|
find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
|
66
69
|
|
67
70
|
# Install rake-compiler's cross rubies in global dir instead of /root
|
@@ -72,20 +75,33 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
|
|
72
75
|
# Add cross compilers for Windows and Linux
|
73
76
|
USER root
|
74
77
|
|
75
|
-
<% if platform
|
78
|
+
<% if platform=~/x64-mingw-ucrt/ %>
|
79
|
+
COPY --from=larskanis/mingw64-ucrt:20.04 \
|
80
|
+
/build/binutils-mingw-w64-x86-64_2.34-6ubuntu1.3+8.8_amd64.deb \
|
81
|
+
/build/g++-mingw-w64-x86-64_9.3.0-17ubuntu1~20.04+22~exp1ubuntu4_amd64.deb \
|
82
|
+
/build/gcc-mingw-w64-base_9.3.0-17ubuntu1~20.04+22~exp1ubuntu4_amd64.deb \
|
83
|
+
/build/gcc-mingw-w64-x86-64_9.3.0-17ubuntu1~20.04+22~exp1ubuntu4_amd64.deb \
|
84
|
+
/build/mingw-w64-common_7.0.0-2_all.deb \
|
85
|
+
/build/mingw-w64-x86-64-dev_7.0.0-2_all.deb \
|
86
|
+
/debs/
|
87
|
+
RUN dpkg -i /debs/*.deb
|
88
|
+
|
89
|
+
<% elsif !manylinux %>
|
76
90
|
RUN apt-get -y update && \
|
77
91
|
apt-get install -y <%
|
78
|
-
if platform=~/darwin/
|
92
|
+
if platform=~/darwin/ %> clang python lzma-dev libxml2-dev libssl-dev libc++-10-dev <% end %><%
|
93
|
+
if platform=~/aarch64-linux/ %> gcc-aarch64-linux-gnu g++-aarch64-linux-gnu <% end %><%
|
94
|
+
if platform=~/arm-linux/ %> gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf <% end %><%
|
79
95
|
if platform=~/x86-mingw32/ %> gcc-mingw-w64-i686 g++-mingw-w64-i686 <% end %><%
|
80
|
-
if platform=~/x64-mingw32/
|
96
|
+
if platform=~/x64-mingw32/ %> gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 <% end %> && \
|
81
97
|
rm -rf /var/lib/apt/lists/*
|
82
98
|
<% end %>
|
83
99
|
|
84
100
|
RUN bash -c " \
|
85
|
-
rvm alias create default
|
101
|
+
rvm alias create default 3.1.0 && \
|
86
102
|
rvm use default "
|
87
103
|
|
88
|
-
<% if
|
104
|
+
<% if manylinux %>
|
89
105
|
# Create dev tools x86-linux-*
|
90
106
|
COPY build/mk_i686.rb /root/
|
91
107
|
RUN bash -c " \
|
@@ -102,6 +118,8 @@ RUN git clone -q --depth=1 https://github.com/tpoechtrager/osxcross.git /opt/osx
|
|
102
118
|
tar -cJf MacOSX11.1.sdk.tar.xz MacOSX11.1.sdk && \
|
103
119
|
cd /opt/osxcross && \
|
104
120
|
UNATTENDED=1 SDK_VERSION=11.1 OSX_VERSION_MIN=10.13 USE_CLANG_AS=1 ./build.sh && \
|
121
|
+
ln -s /usr/bin/llvm-config-10 /usr/bin/llvm-config && \
|
122
|
+
ENABLE_COMPILER_RT_INSTALL=1 SDK_VERSION=11.1 ./build_compiler_rt.sh && \
|
105
123
|
rm -rf *~ build tarballs/*
|
106
124
|
|
107
125
|
RUN echo "export PATH=/opt/osxcross/target/bin:\$PATH" >> /etc/rubybashrc && \
|
@@ -124,44 +142,65 @@ USER rvm
|
|
124
142
|
COPY build/patches2 /home/rvm/patches/
|
125
143
|
RUN bash -c " \
|
126
144
|
for v in ${RVM_RUBIES} ; do \
|
127
|
-
cd /usr/local/rvm/gems/ruby-\$v/gems/rake-compiler-1.1.
|
128
|
-
echo applying patches to ruby-\$v /home/rvm/patches/rake-compiler-1.1.
|
129
|
-
( git apply /home/rvm/patches/rake-compiler-1.1.
|
130
|
-
cd /usr/local/rvm/gems/ruby-\$v/gems/hoe-3.20.0 && \
|
131
|
-
echo applying patches to ruby-\$v /home/rvm/patches/hoe-3.20.0/*.patch && \
|
132
|
-
( git apply /home/rvm/patches/hoe-3.20.0/*.patch || true ) \
|
145
|
+
cd /usr/local/rvm/gems/ruby-\$v/gems/rake-compiler-1.1.6 && \
|
146
|
+
echo applying patches to ruby-\$v /home/rvm/patches/rake-compiler-1.1.6/*.patch && \
|
147
|
+
( git apply /home/rvm/patches/rake-compiler-1.1.6/*.patch || true ) \
|
133
148
|
done "
|
134
149
|
|
135
150
|
# Patch rubies for cross build
|
136
|
-
USER root
|
137
|
-
RUN bash -c " \
|
138
|
-
for v in 2.7.0 3.0.0 ; do \
|
139
|
-
curl -SL http://cache.ruby-lang.org/pub/ruby/\${v:0:3}/ruby-\$v.tar.xz | tar -xJC /root/ && \
|
140
|
-
cd /root/ruby-\$v && \
|
141
|
-
git apply /home/rvm/patches/ruby-\$v/*.patch && \
|
142
|
-
cd .. && \
|
143
|
-
mkdir -p /usr/local/rake-compiler/sources/ && \
|
144
|
-
tar cjf /usr/local/rake-compiler/sources/ruby-\$v.tar.bz2 ruby-\$v && \
|
145
|
-
chown rvm /usr/local/rake-compiler -R && \
|
146
|
-
rm -rf /root/ruby-\$v ; \
|
147
|
-
done "
|
148
|
-
USER rvm
|
149
|
-
|
150
|
-
|
151
|
-
|
151
|
+
#USER root
|
152
|
+
#RUN bash -c " \
|
153
|
+
# for v in 2.7.0 3.0.0 3.1.0 ; do \
|
154
|
+
# curl -SL http://cache.ruby-lang.org/pub/ruby/\${v:0:3}/ruby-\$v.tar.xz | tar -xJC /root/ && \
|
155
|
+
# cd /root/ruby-\$v && \
|
156
|
+
# git apply /home/rvm/patches/ruby-\$v/*.patch && \
|
157
|
+
# cd .. && \
|
158
|
+
# mkdir -p /usr/local/rake-compiler/sources/ && \
|
159
|
+
# tar cjf /usr/local/rake-compiler/sources/ruby-\$v.tar.bz2 ruby-\$v && \
|
160
|
+
# chown rvm /usr/local/rake-compiler -R && \
|
161
|
+
# rm -rf /root/ruby-\$v ; \
|
162
|
+
# done "
|
163
|
+
#USER rvm
|
164
|
+
|
165
|
+
<%
|
166
|
+
axrubies = if platform =~ /x64-mingw-ucrt/
|
167
|
+
[
|
168
|
+
# Rubyinstaller-3.1.0+ is platform x64-mingw-ucrt
|
169
|
+
["3.1.0", "3.1.0", true],
|
170
|
+
]
|
171
|
+
elsif platform =~ /x64-mingw32/
|
172
|
+
[
|
173
|
+
# Rubyinstaller prior to 3.1.0 is platform x64-mingw32
|
174
|
+
["2.6.0:2.5.0:2.4.0", "2.5.9", false],
|
175
|
+
["3.0.0:2.7.0", "3.1.0", true],
|
176
|
+
]
|
177
|
+
else
|
178
|
+
[
|
179
|
+
# Build xruby versions prior ruby2_keywords in parallel using ruby-2.5
|
180
|
+
["2.6.0:2.5.0:2.4.0", "2.5.9", false],
|
181
|
+
# Build xruby versions with ruby2_keywords in parallel using ruby-3.x
|
182
|
+
["3.1.0:3.0.0:2.7.0", "3.1.0", true],
|
183
|
+
]
|
184
|
+
end
|
185
|
+
|
186
|
+
axrubies.each do |xrubies, rvm, parallel| %>
|
187
|
+
ENV XRUBIES <%= xrubies %>
|
152
188
|
|
153
189
|
<% strip = '-s' if platform !~ /darwin/ %>
|
154
|
-
# Build
|
190
|
+
# Build xruby versions in parallel
|
155
191
|
# Then cleanup all build artifacts
|
156
192
|
RUN bash -c " \
|
193
|
+
rvm use <%= rvm %> && \
|
194
|
+
export CPPFLAGS='<%= "-D__USE_MINGW_ANSI_STDIO=1" if platform=~/x64-mingw-ucrt/ %>' && \
|
157
195
|
export CFLAGS='-O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong <%= strip %>' && \
|
158
196
|
export LDFLAGS='-pipe <%= strip %>' && \
|
159
197
|
<%= "export LIBS='-l:libssp.a' &&" if platform =~ /mingw/ %> \
|
160
198
|
<%= "export CC=#{target}-clang &&" if platform =~ /darwin/ %> \
|
161
|
-
export MAKE='make V=1' && \
|
199
|
+
export MAKE='make V=1 <%= "-j`nproc`" if parallel %>' && \
|
162
200
|
rake-compiler cross-ruby VERSION=$XRUBIES HOST=<%= target %> && \
|
163
201
|
rm -rf ~/.rake-compiler/builds ~/.rake-compiler/sources && \
|
164
202
|
find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
|
203
|
+
<% end %>
|
165
204
|
|
166
205
|
<% if platform=~/linux/ %>
|
167
206
|
# Avoid linking against libruby shared object.
|
@@ -169,7 +208,7 @@ RUN bash -c " \
|
|
169
208
|
RUN find /usr/local/rake-compiler/ruby/*linux*/ -name libruby.so | xargs rm
|
170
209
|
RUN find /usr/local/rake-compiler/ruby/*linux*/ -name libruby-static.a | while read f ; do cp $f `echo $f | sed s/-static//` ; done
|
171
210
|
RUN find /usr/local/rake-compiler/ruby/*linux*/ -name libruby.a | while read f ; do ar t $f | xargs ar d $f ; done
|
172
|
-
RUN find /usr/local/rake-compiler/ruby/*linux*/ -name mkmf.rb | while read f ; do sed -i ':a;N;$!ba;s/TRY_LINK = [^\n]*\n[^\n]*\n[^\n]*LOCAL_LIBS)/& -lruby-static/' $f ; done
|
211
|
+
RUN find /usr/local/rake-compiler/ruby/*linux*/ -name mkmf.rb | while read f ; do sed -i ':a;N;$!ba;s/TRY_LINK = [^\n]*\n[^\n]*\n[^\n]*LOCAL_LIBS)/& -lruby-static -lpthread -lrt -ldl <% if platform=~/x86/ %> -lcrypt <% end %>/' $f ; done
|
173
212
|
<% end %>
|
174
213
|
|
175
214
|
<% if platform=~/mingw/ %>
|
@@ -178,7 +217,7 @@ RUN find /usr/local/rake-compiler/ruby/*mingw*/ -name rbconfig.rb | while read f
|
|
178
217
|
# Raise Windows-API to Vista (affects ruby < 2.6 only)
|
179
218
|
RUN find /usr/local/rake-compiler/ruby -name rbconfig.rb | while read f ; do sed -i 's/0x0501/0x0600/' $f ; done
|
180
219
|
# Don't link to static libruby
|
181
|
-
RUN find /usr/local/rake-compiler/ruby -name
|
220
|
+
RUN find /usr/local/rake-compiler/ruby -name lib*-ruby*.dll.a | while read f ; do n=`echo $f | sed s/.dll//` ; mv $f $n ; done
|
182
221
|
<% end %>
|
183
222
|
|
184
223
|
USER root
|
@@ -200,7 +239,7 @@ RUN printf "1\n" | update-alternatives --config <%= target %>-gcc && \
|
|
200
239
|
printf "1\n" | update-alternatives --config <%= target %>-g++
|
201
240
|
<% end %>
|
202
241
|
|
203
|
-
<% if
|
242
|
+
<% if manylinux %>
|
204
243
|
# Enable modern compiler toolset of manylinux image
|
205
244
|
RUN echo "export PATH=\$DEVTOOLSET_ROOTPATH/usr/bin:\$PATH" >> /etc/rubybashrc
|
206
245
|
|
@@ -209,6 +248,11 @@ RUN for f in addr2line gcc gcov-tool ranlib ar dwp gcc-ranlib nm readelf as elfe
|
|
209
248
|
|
210
249
|
# ruby-2.5 links to libcrypt, which isn't necessary for extensions
|
211
250
|
RUN find /usr/local/rake-compiler/ruby -name rbconfig.rb | while read f ; do sed -i 's/-lcrypt//' $f ; done
|
251
|
+
|
252
|
+
# Use builtin functions of newer gcc to avoid linker issues on Musl based Linux
|
253
|
+
COPY build/math_h.patch /root/
|
254
|
+
RUN cd /usr/include/ && \
|
255
|
+
patch -p1 < /root/math_h.patch
|
212
256
|
<% end %>
|
213
257
|
|
214
258
|
<% if platform=~/arm64-darwin/ %>
|
@@ -222,10 +266,12 @@ RUN gcc $HOME/sigfw.c -o /usr/bin/sigfw
|
|
222
266
|
|
223
267
|
# Install user mapper
|
224
268
|
COPY build/runas /usr/bin/
|
269
|
+
COPY build/rcd-env.sh /etc/profile.d/
|
270
|
+
RUN echo "source /etc/profile.d/rcd-env.sh" >> /etc/rubybashrc
|
225
271
|
|
226
272
|
# Install sudoers configuration
|
227
273
|
COPY build/sudoers /etc/sudoers.d/rake-compiler-dock
|
228
274
|
|
229
|
-
ENV RUBY_CC_VERSION 3.0.0:2.7.0:2.6.0:2.5.0:2.4.0
|
275
|
+
ENV RUBY_CC_VERSION 3.1.0:3.0.0:2.7.0:2.6.0:2.5.0:2.4.0
|
230
276
|
|
231
277
|
CMD bash
|
data/History.md
CHANGED
@@ -1,4 +1,37 @@
|
|
1
|
-
1.
|
1
|
+
1.2.2 / 2022-06-27
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* Fix ucrt libruby file naming for static build. #69
|
5
|
+
|
6
|
+
|
7
|
+
1.2.1 / 2022-03-17
|
8
|
+
------------------
|
9
|
+
|
10
|
+
* Fix testing for ruby C-API functions in mkmf. #65, #67
|
11
|
+
* Use openjdk 11 to make maven work on ubuntu 20.04. #64
|
12
|
+
* Remove x86_64-w64-mingw32-pkg-config from the x64-mingw-ucrt image. #63
|
13
|
+
* Add a patch for math.h to use gcc builtins and to improve compat with musl based systems. #42
|
14
|
+
|
15
|
+
|
16
|
+
1.2.0 / 2022-01-04
|
17
|
+
------------------
|
18
|
+
|
19
|
+
* Add Ruby-3.1 as native rvm and cross ruby versions.
|
20
|
+
* Remove Ruby-2.2 and 2.3 from RUBY_CC_VERSION and cross rubies.
|
21
|
+
* Add Linux cross build targets "arm-linux" and "aarch64-linux".
|
22
|
+
* Add cross build target "x64-mingw-ucrt" for ruby-3.1 on Windows.
|
23
|
+
* Add `wget` and `git` to Linux image.
|
24
|
+
* Add `maven` to JRuby image.
|
25
|
+
* Update JRuby to 9.3.2.0
|
26
|
+
* Fix default value of platform for JRuby. #50
|
27
|
+
* Update openjdk version from 14 to 17
|
28
|
+
* Add a test gem and build and run it on all supported platforms on Github Actions.
|
29
|
+
* Allow alternative build command like `docker buildx build`
|
30
|
+
* Provide compiler-rt libraries for darwin builds. #60
|
31
|
+
* Extract build environment from `runas` into `rcd-env.sh` and loaded it in non-interactive non-login shells. #57
|
32
|
+
|
33
|
+
|
34
|
+
1.1.0 / 2020-12-29
|
2
35
|
------------------
|
3
36
|
|
4
37
|
* Use ManyLinux2014 as docker base image for linux targets.
|