rake-compiler-dock 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Dockerfile.jruby +5 -5
- data/Dockerfile.mri.erb +115 -64
- data/History.md +15 -0
- data/Rakefile +12 -4
- data/build/patches/{ruby-2.5.7 → ruby-2.5.8}/no_sendfile.patch +0 -0
- data/build/patches/{ruby-2.7.0 → ruby-3.0.0}/no_sendfile.patch +6 -6
- data/build/patches2/{rake-compiler-1.1.0 → rake-compiler-1.1.1}/0001-Fix-determining-of-ruby-versions-in-rake-native-gem.patch +0 -0
- data/build/patches2/rake-compiler-1.1.1/0003-Allow-building-of-cross-rubies-in-parallel.patch +214 -0
- data/build/patches2/rake-compiler-1.1.1/0004-Enable-build-of-static-libruby.patch +29 -0
- data/build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch +30 -0
- data/build/patches2/rake-compiler-1.1.1/0006-Use-RAKE_EXTENSION_TASK_NO_NATIVE-env-var-as-the-def.patch +26 -0
- data/build/patches2/ruby-3.0.0/ruby2_keywords.patch +15 -0
- data/build/runas +2 -1
- data/build/sudoers +1 -1
- data/lib/rake_compiler_dock/version.rb +2 -2
- metadata +33 -11
- metadata.gz.sig +2 -0
- data/build/patches2/rake-compiler-1.1.0/0001-Allow-parallel-builds-of-cross-rubies.patch +0 -119
- data/build/patches2/rake-compiler-1.1.0/0001-Enable-build-of-static-libruby.patch +0 -28
- data/build/patches2/rake-compiler-1.1.0/0002-Extend-mingw-search-pattern-to-find-x86_64-gcc.patch +0 -26
- data/build/patches2/rake-compiler-1.1.0/0002-Strip-cross-built-shared-library-files-while-linking.patch +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7bbe8d21de2a30484e2ec2d877bf6e2e2538c7f02d207e924716d9bb99609fbf
|
4
|
+
data.tar.gz: 2069a049a2a9974a98f13bfd704f60f8e07dc5741f2e0f5d18a6c4f122358875
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 197abac03aa2262d6893e4f79dcb9fa63bbf7018afa70d6ea7c189abc390074a36c7892b6745e8399ffbe4309686b5310c382d5227dfe9906d6bd875a561b5af
|
7
|
+
data.tar.gz: 184393bac4b1890e1c19567c7c80ecc3a015e78e8789232c4f00a28d7c2a6ba0209ae94e9c1ffa2dcbd58bcd9eb8a1875732c32263cdbd47499437bc0e3617aa
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/Dockerfile.jruby
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
FROM ubuntu:
|
1
|
+
FROM ubuntu:20.04
|
2
2
|
|
3
3
|
RUN apt-get -y update && \
|
4
|
-
apt-get install -y curl git-core xz-utils wget unzip sudo gpg dirmngr openjdk-
|
4
|
+
apt-get install -y curl git-core xz-utils wget unzip sudo gpg dirmngr openjdk-14-jdk-headless && \
|
5
5
|
rm -rf /var/lib/apt/lists/*
|
6
6
|
|
7
7
|
# Add "rvm" as system group, to avoid conflicts with host GIDs typically starting with 1000
|
@@ -26,7 +26,7 @@ ENV BASH_ENV /etc/rubybashrc
|
|
26
26
|
# install rubies and fix permissions on
|
27
27
|
RUN bash -c " \
|
28
28
|
export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
|
29
|
-
for v in jruby-9.2.
|
29
|
+
for v in jruby-9.2.14.0 ; do \
|
30
30
|
rvm install --binary \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
|
31
31
|
done && \
|
32
32
|
rvm cleanup all && \
|
@@ -46,8 +46,8 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
|
|
46
46
|
|
47
47
|
USER root
|
48
48
|
|
49
|
-
RUN bash -c "rvm alias create default jruby-9.2.
|
50
|
-
RUN echo "rvm use jruby-9.2.
|
49
|
+
RUN bash -c "rvm alias create default jruby-9.2.14.0"
|
50
|
+
RUN echo "rvm use jruby-9.2.14.0 > /dev/null" >> /etc/rubybashrc
|
51
51
|
|
52
52
|
# Add rvm to the global bashrc
|
53
53
|
RUN echo "source /etc/profile.d/rvm.sh" >> /etc/bash.bashrc
|
data/Dockerfile.mri.erb
CHANGED
@@ -1,12 +1,34 @@
|
|
1
|
-
FROM
|
1
|
+
FROM <%=
|
2
|
+
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 %>
|
2
7
|
|
8
|
+
<% if platform=~/linux/ %>
|
9
|
+
# 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
|
11
|
+
|
12
|
+
# Prepare sudo and delete sudo as alias to gosu
|
13
|
+
RUN rm -f /usr/local/bin/sudo && \
|
14
|
+
groupadd -r sudo && \
|
15
|
+
echo "%sudo ALL=(ALL) ALL" >> /etc/sudoers
|
16
|
+
<% else %>
|
17
|
+
ENV DEBIAN_FRONTEND noninteractive
|
3
18
|
RUN apt-get -y update && \
|
4
|
-
apt-get install -y curl git-core xz-utils build-essential wget unzip sudo gnupg2 dirmngr && \
|
19
|
+
apt-get install -y curl git-core xz-utils build-essential zlib1g-dev libreadline-dev libssl-dev wget unzip sudo gnupg2 dirmngr cmake pkg-config && \
|
5
20
|
rm -rf /var/lib/apt/lists/*
|
21
|
+
<% end %>
|
6
22
|
|
7
23
|
# Add "rvm" as system group, to avoid conflicts with host GIDs typically starting with 1000
|
8
|
-
RUN groupadd -r rvm && useradd -r -g rvm -G sudo -p "" --create-home rvm
|
9
|
-
|
24
|
+
RUN groupadd -r rvm && useradd -r -g rvm -G sudo -p "" --create-home rvm
|
25
|
+
|
26
|
+
# Make sure rvm and later settings are available in interactive and non-interactive shells
|
27
|
+
RUN echo "source /etc/profile.d/rvm.sh" >> /etc/rubybashrc && \
|
28
|
+
echo "source /etc/rubybashrc" >> /etc/bashrc && \
|
29
|
+
echo "source /etc/rubybashrc" >> /etc/bash.bashrc
|
30
|
+
ENV BASH_ENV /etc/rubybashrc
|
31
|
+
|
10
32
|
USER rvm
|
11
33
|
|
12
34
|
RUN mkdir ~/.gnupg && \
|
@@ -18,16 +40,17 @@ RUN gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A
|
|
18
40
|
(curl -L http://get.rvm.io | sudo bash) && \
|
19
41
|
bash -c " \
|
20
42
|
source /etc/rubybashrc && \
|
43
|
+
rvm autolibs disable && \
|
21
44
|
rvmsudo rvm cleanup all "
|
22
45
|
|
23
46
|
# Import patch files for ruby and gems
|
24
47
|
COPY build/patches /home/rvm/patches/
|
25
|
-
ENV BASH_ENV /etc/rubybashrc
|
26
48
|
|
27
49
|
# install rubies and fix permissions on
|
50
|
+
ENV RVM_RUBIES 2.5.8 3.0.0
|
28
51
|
RUN bash -c " \
|
29
52
|
export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
|
30
|
-
for v in
|
53
|
+
for v in ${RVM_RUBIES} ; do \
|
31
54
|
rvm install \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
|
32
55
|
done && \
|
33
56
|
rvm cleanup all && \
|
@@ -38,7 +61,7 @@ RUN bash -c " \
|
|
38
61
|
RUN echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
|
39
62
|
bash -c " \
|
40
63
|
rvm all do gem update --system --no-document && \
|
41
|
-
rvm all do gem install --no-document bundler 'bundler:~>1.16' rake-compiler hoe mini_portile rubygems-tasks mini_portile2 && \
|
64
|
+
rvm all do gem install --no-document bundler 'bundler:~>1.16' 'rake-compiler:1.1.1' 'hoe:3.20.0' mini_portile rubygems-tasks mini_portile2 && \
|
42
65
|
find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
|
43
66
|
|
44
67
|
# Install rake-compiler's cross rubies in global dir instead of /root
|
@@ -48,15 +71,18 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
|
|
48
71
|
|
49
72
|
# Add cross compilers for Windows and Linux
|
50
73
|
USER root
|
74
|
+
|
75
|
+
<% if platform !~ /linux/ %>
|
51
76
|
RUN apt-get -y update && \
|
52
|
-
apt-get install -y
|
77
|
+
apt-get install -y <%
|
78
|
+
if platform=~/darwin/ %> clang python lzma-dev libxml2-dev libssl-dev libc++-10-dev <% end %><%
|
53
79
|
if platform=~/x86-mingw32/ %> gcc-mingw-w64-i686 g++-mingw-w64-i686 <% end %><%
|
54
|
-
if platform=~/x64-mingw32/ %> gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 <% end
|
55
|
-
if platform=~/x86-linux/ %> gcc-multilib g++-multilib <% end %> && \
|
80
|
+
if platform=~/x64-mingw32/ %> gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 <% end %> && \
|
56
81
|
rm -rf /var/lib/apt/lists/*
|
82
|
+
<% end %>
|
57
83
|
|
58
84
|
RUN bash -c " \
|
59
|
-
rvm alias create default 2.5.
|
85
|
+
rvm alias create default 2.5.8 && \
|
60
86
|
rvm use default "
|
61
87
|
|
62
88
|
<% if platform=~/linux/ %>
|
@@ -66,46 +92,74 @@ RUN bash -c " \
|
|
66
92
|
ruby /root/mk_i686.rb "
|
67
93
|
<% end %>
|
68
94
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
95
|
+
<% if platform=~/darwin/ %>
|
96
|
+
RUN git clone -q --depth=1 https://github.com/tpoechtrager/osxcross.git /opt/osxcross && rm -rf /opt/osxcross/.git && \
|
97
|
+
cd /opt/osxcross/tarballs && \
|
98
|
+
curl -L -o MacOSX11.1.sdk.tar.xz https://github.com/larskanis/MacOSX-SDKs/releases/download/11.1/MacOSX11.1.sdk.tar.xz && \
|
99
|
+
tar -xf MacOSX11.1.sdk.tar.xz -C . && \
|
100
|
+
cp -rf /usr/lib/llvm-10/include/c++ MacOSX11.1.sdk/usr/include/c++ && \
|
101
|
+
cp -rf /usr/include/x86_64-linux-gnu/c++/9/bits/ MacOSX11.1.sdk/usr/include/c++/v1/bits && \
|
102
|
+
tar -cJf MacOSX11.1.sdk.tar.xz MacOSX11.1.sdk && \
|
103
|
+
cd /opt/osxcross && \
|
104
|
+
UNATTENDED=1 SDK_VERSION=11.1 OSX_VERSION_MIN=10.13 USE_CLANG_AS=1 ./build.sh && \
|
105
|
+
rm -rf *~ build tarballs/*
|
106
|
+
|
107
|
+
RUN echo "export PATH=/opt/osxcross/target/bin:\$PATH" >> /etc/rubybashrc && \
|
108
|
+
echo "export MACOSX_DEPLOYMENT_TARGET=10.13" >> /etc/rubybashrc && \
|
109
|
+
echo "export OSXCROSS_MP_INC=1" >> /etc/rubybashrc
|
110
|
+
|
111
|
+
# Add links to build tools without target version kind of:
|
112
|
+
# arm64-apple-darwin-clang => arm64-apple-darwin20.1-clang
|
113
|
+
RUN rm /opt/osxcross/target/bin/*-apple-darwin-* ; \
|
114
|
+
find /opt/osxcross/target/bin/ -name '*-apple-darwin[0-9]*' | sort | while read f ; do d=`echo $f | sed s/darwin[0-9\.]*/darwin/`; echo $f '"$@"' | tee $d && chmod +x $d ; done
|
115
|
+
|
116
|
+
# There's no objdump in osxcross but we can use llvm's
|
117
|
+
RUN ln -s /usr/lib/llvm-10/bin/llvm-objdump /opt/osxcross/target/bin/x86_64-apple-darwin-objdump && \
|
118
|
+
ln -s /usr/lib/llvm-10/bin/llvm-objdump /opt/osxcross/target/bin/aarch64-apple-darwin-objdump
|
77
119
|
|
120
|
+
<% end %>
|
78
121
|
|
79
|
-
# Patch
|
122
|
+
# Patch rake-compiler to build and install static libraries for Linux rubies
|
123
|
+
USER rvm
|
124
|
+
COPY build/patches2 /home/rvm/patches/
|
125
|
+
RUN bash -c " \
|
126
|
+
for v in ${RVM_RUBIES} ; do \
|
127
|
+
cd /usr/local/rvm/gems/ruby-\$v/gems/rake-compiler-1.1.1 && \
|
128
|
+
echo applying patches to ruby-\$v /home/rvm/patches/rake-compiler-1.1.1/*.patch && \
|
129
|
+
( git apply /home/rvm/patches/rake-compiler-1.1.1/*.patch || true ) && \
|
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 ) \
|
133
|
+
done "
|
134
|
+
|
135
|
+
# Patch rubies for cross build
|
80
136
|
USER root
|
81
|
-
RUN
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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 "
|
89
148
|
USER rvm
|
90
149
|
|
91
150
|
|
92
|
-
ENV XRUBIES 2.7.0
|
151
|
+
ENV XRUBIES 3.0.0:2.7.0:2.6.0:2.5.0:2.4.0:2.3.0
|
93
152
|
|
94
|
-
|
95
|
-
#
|
153
|
+
<% strip = '-s' if platform !~ /darwin/ %>
|
154
|
+
# Build all xruby versions in parallel
|
96
155
|
# Then cleanup all build artifacts
|
97
|
-
RUN
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
done && \
|
105
|
-
cat ~/xbuild_rubies; \
|
106
|
-
bash -c " \
|
107
|
-
export CFLAGS='-s -O1 -fno-omit-frame-pointer -fno-fast-math' && \
|
108
|
-
parallel -- $( cat ~/xbuild_rubies ) && \
|
156
|
+
RUN bash -c " \
|
157
|
+
export CFLAGS='-O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong <%= strip %>' && \
|
158
|
+
export LDFLAGS='-pipe <%= strip %>' && \
|
159
|
+
<%= "export LIBS='-l:libssp.a' &&" if platform =~ /mingw/ %> \
|
160
|
+
<%= "export CC=#{target}-clang &&" if platform =~ /darwin/ %> \
|
161
|
+
export MAKE='make V=1' && \
|
162
|
+
rake-compiler cross-ruby VERSION=$XRUBIES HOST=<%= target %> && \
|
109
163
|
rm -rf ~/.rake-compiler/builds ~/.rake-compiler/sources && \
|
110
164
|
find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
|
111
165
|
|
@@ -129,18 +183,9 @@ RUN find /usr/local/rake-compiler/ruby -name *msvcrt-ruby*.dll.a | while read f
|
|
129
183
|
|
130
184
|
USER root
|
131
185
|
|
132
|
-
#
|
133
|
-
RUN
|
134
|
-
if platform=~/x86-linux/ %> dpkg --add-architecture i386 && <% end %> \
|
135
|
-
apt-get -y update && \
|
136
|
-
apt-get install -y cmake <%
|
137
|
-
if platform=~/x86-linux/ %> libc6-dev:i386 libudev-dev:i386 <% end %><%
|
138
|
-
if platform=~/x86_64-linux/ %> libudev-dev <% end %> && \
|
139
|
-
rm -rf /var/lib/apt/lists/*
|
186
|
+
# Fix paths in rake-compiler/config.yml
|
187
|
+
RUN sed -i -- "s:/root/.rake-compiler:/usr/local/rake-compiler:g" /usr/local/rake-compiler/config.yml
|
140
188
|
|
141
|
-
# Fix paths in rake-compiler/config.yml and add rvm and mingw-tools to the global bashrc
|
142
|
-
RUN sed -i -- "s:/root/.rake-compiler:/usr/local/rake-compiler:g" /usr/local/rake-compiler/config.yml && \
|
143
|
-
echo "source /etc/profile.d/rvm.sh" >> /etc/bash.bashrc
|
144
189
|
|
145
190
|
<% if platform=~/mingw/ %>
|
146
191
|
# Install wrappers for strip commands as a workaround for "Protocol error" in boot2docker.
|
@@ -148,10 +193,6 @@ COPY build/strip_wrapper /root/
|
|
148
193
|
RUN mv /usr/bin/<%= target %>-strip /usr/bin/<%= target %>-strip.bin && \
|
149
194
|
ln /root/strip_wrapper /usr/bin/<%= target %>-strip
|
150
195
|
|
151
|
-
# Don't link to winpthread.dll but link static, since the DLL is not distributed with RubyInstaller
|
152
|
-
RUN find / -name libwinpthread.dll.a | xargs rm
|
153
|
-
RUN find / -name libwinpthread-1.dll | xargs rm
|
154
|
-
|
155
196
|
# Use posix pthread for mingw so that C++ standard library for thread could be
|
156
197
|
# available such as std::thread, std::mutex, so on.
|
157
198
|
# https://sourceware.org/pthreads-win32/
|
@@ -160,21 +201,31 @@ RUN printf "1\n" | update-alternatives --config <%= target %>-gcc && \
|
|
160
201
|
<% end %>
|
161
202
|
|
162
203
|
<% if platform=~/linux/ %>
|
163
|
-
#
|
164
|
-
|
165
|
-
|
204
|
+
# Enable modern compiler toolset of manylinux image
|
205
|
+
RUN echo "export PATH=\$DEVTOOLSET_ROOTPATH/usr/bin:\$PATH" >> /etc/rubybashrc
|
206
|
+
|
207
|
+
# Add prefixed versions of compiler tools
|
208
|
+
RUN for f in addr2line gcc gcov-tool ranlib ar dwp gcc-ranlib nm readelf as elfedit gcc-ar gprof objcopy size c++filt g++ gcov ld objdump strings cpp gcc-nm pkg-config strip ; do ln -sf $DEVTOOLSET_ROOTPATH/usr/bin/$f $DEVTOOLSET_ROOTPATH/usr/bin/<%= target %>-$f ; done
|
209
|
+
|
210
|
+
# ruby-2.5 links to libcrypt, which isn't necessary for extensions
|
211
|
+
RUN find /usr/local/rake-compiler/ruby -name rbconfig.rb | while read f ; do sed -i 's/-lcrypt//' $f ; done
|
212
|
+
<% end %>
|
213
|
+
|
214
|
+
<% if platform=~/arm64-darwin/ %>
|
215
|
+
# Add a arm64 darwin target as alternative to aarch64
|
216
|
+
RUN grep -E 'rbconfig-aarch64-darwin' /usr/local/rake-compiler/config.yml | sed 's/rbconfig-[a-z0-9_]*-darwin/rbconfig-<%= platform %>/' >> /usr/local/rake-compiler/config.yml
|
166
217
|
<% end %>
|
167
218
|
|
168
219
|
# Install SIGINT forwarder
|
169
220
|
COPY build/sigfw.c /root/
|
170
|
-
RUN gcc $HOME/sigfw.c -o /usr/
|
221
|
+
RUN gcc $HOME/sigfw.c -o /usr/bin/sigfw
|
171
222
|
|
172
223
|
# Install user mapper
|
173
|
-
COPY build/runas /usr/
|
224
|
+
COPY build/runas /usr/bin/
|
174
225
|
|
175
226
|
# Install sudoers configuration
|
176
227
|
COPY build/sudoers /etc/sudoers.d/rake-compiler-dock
|
177
228
|
|
178
|
-
ENV RUBY_CC_VERSION 2.7.0:2.6.0:2.5.0:2.4.0:2.3.0
|
229
|
+
ENV RUBY_CC_VERSION 3.0.0:2.7.0:2.6.0:2.5.0:2.4.0:2.3.0
|
179
230
|
|
180
231
|
CMD bash
|
data/History.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
1.1.0 / 2020-12-28
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* Use ManyLinux2014 as docker base image for linux targets.
|
5
|
+
That way compatibility to very old linux dists can be provided, while still using modern compilers.
|
6
|
+
* Add macOS cross build targets "x86_64-darwin" and "arm64-darwin".
|
7
|
+
They are based on MacOSX-SDK-11.1
|
8
|
+
* Add Ruby-3.0 as native rvm and cross ruby version.
|
9
|
+
* Remove Ruby-2.2 from RUBY_CC_VERSION and cross rubies.
|
10
|
+
* Update to Ubuntu-20.04 for Mingw and JRuby targets.
|
11
|
+
* Set `ExtensionTask#no_native=true` to fix issues with cross_compiling callback not being called.
|
12
|
+
See discussion here: https://github.com/rake-compiler/rake-compiler/pull/171
|
13
|
+
* Allow setting an alternative dockerhub user per `DOCKERHUB_USER`.
|
14
|
+
|
15
|
+
|
1
16
|
1.0.1 / 2020-01-13
|
2
17
|
------------------
|
3
18
|
|
data/Rakefile
CHANGED
@@ -6,19 +6,24 @@ require_relative "build/parallel_docker_build"
|
|
6
6
|
|
7
7
|
RakeCompilerDock::GemHelper.install_tasks
|
8
8
|
|
9
|
+
DOCKERHUB_USER = ENV['DOCKERHUB_USER'] || "larskanis"
|
10
|
+
|
9
11
|
namespace :build do
|
10
12
|
platforms = [
|
11
13
|
["x86-mingw32", "i686-w64-mingw32"],
|
12
14
|
["x64-mingw32", "x86_64-w64-mingw32"],
|
13
|
-
["x86-linux", "i686-linux
|
14
|
-
["x86_64-linux", "x86_64-linux
|
15
|
+
["x86-linux", "i686-redhat-linux"],
|
16
|
+
["x86_64-linux", "x86_64-redhat-linux"],
|
17
|
+
["x86_64-darwin", "x86_64-apple-darwin"],
|
18
|
+
["arm64-darwin", "aarch64-apple-darwin"],
|
15
19
|
]
|
16
20
|
platforms.each do |platform, target|
|
17
21
|
sdf = "Dockerfile.mri.#{platform}"
|
22
|
+
|
18
23
|
desc "Build image for platform #{platform}"
|
19
24
|
task platform => sdf
|
20
25
|
task sdf do
|
21
|
-
sh "docker build -t
|
26
|
+
sh "docker build -t #{DOCKERHUB_USER}/rake-compiler-dock-mri-#{platform}:#{RakeCompilerDock::IMAGE_VERSION} -f Dockerfile.mri.#{platform} ."
|
22
27
|
end
|
23
28
|
|
24
29
|
df = ERB.new(File.read("Dockerfile.mri.erb")).result(binding)
|
@@ -29,11 +34,14 @@ namespace :build do
|
|
29
34
|
desc "Build image for JRuby"
|
30
35
|
task :jruby => "Dockerfile.jruby"
|
31
36
|
task "Dockerfile.jruby" do
|
32
|
-
sh "docker build -t
|
37
|
+
sh "docker build -t #{DOCKERHUB_USER}/rake-compiler-dock-jruby:#{RakeCompilerDock::IMAGE_VERSION} -f Dockerfile.jruby ."
|
33
38
|
end
|
34
39
|
|
35
40
|
RakeCompilerDock::ParallelDockerBuild.new(platforms.map{|pl, _| "Dockerfile.mri.#{pl}" } + ["Dockerfile.jruby"], workdir: "tmp/docker")
|
36
41
|
|
42
|
+
desc "Build images for all MRI platforms in parallel"
|
43
|
+
multitask :mri => platforms.map(&:first)
|
44
|
+
|
37
45
|
desc "Build images for all platforms in parallel"
|
38
46
|
multitask :all => platforms.map(&:first) + ["jruby"]
|
39
47
|
end
|
File without changes
|
@@ -11,14 +11,14 @@ index ebe3d8c..a336b73 100755
|
|
11
11
|
|
12
12
|
fi
|
13
13
|
diff --git a/io.c b/io.c
|
14
|
-
index
|
14
|
+
index 48592ac51a..2635ac8ec6 100644
|
15
15
|
--- a/io.c
|
16
16
|
+++ b/io.c
|
17
|
-
@@ -
|
17
|
+
@@ -11111,6 +11111,7 @@ nogvl_copy_stream_wait_write(struct copy_stream_struct *stp)
|
18
|
+
return 0;
|
18
19
|
}
|
19
20
|
|
20
|
-
|
21
|
-
-# define USE_COPY_FILE_RANGE
|
22
|
-
#endif
|
23
|
-
|
21
|
+
+#undef USE_COPY_FILE_RANGE
|
24
22
|
#ifdef USE_COPY_FILE_RANGE
|
23
|
+
|
24
|
+
static ssize_t
|
File without changes
|
@@ -0,0 +1,214 @@
|
|
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
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
|
2
|
+
index 8edf5cd..5d25b82 100644
|
3
|
+
--- a/tasks/bin/cross-ruby.rake
|
4
|
+
+++ b/tasks/bin/cross-ruby.rake
|
5
|
+
@@ -116,11 +116,22 @@ RUBY_CC_VERSIONS.split(":").each do |ruby_cc_version|
|
6
|
+
"--host=#{mingw_host}",
|
7
|
+
"--target=#{mingw_target}",
|
8
|
+
"--build=#{RUBY_BUILD}",
|
9
|
+
- '--enable-shared',
|
10
|
+
+ '--enable-install-static-library',
|
11
|
+
+ '--disable-jit-support',
|
12
|
+
'--disable-install-doc',
|
13
|
+
'--with-ext=',
|
14
|
+
- 'LDFLAGS=-pipe -s',
|
15
|
+
]
|
16
|
+
+ if mingw_host=~/darwin/
|
17
|
+
+ options += [
|
18
|
+
+ '--enable-static',
|
19
|
+
+ '--disable-shared',
|
20
|
+
+ ]
|
21
|
+
+ else
|
22
|
+
+ options += [
|
23
|
+
+ '--enable-static',
|
24
|
+
+ '--enable-shared',
|
25
|
+
+ ]
|
26
|
+
+ end
|
27
|
+
|
28
|
+
# Force Winsock2 for Ruby 1.8, 1.9 defaults to it
|
29
|
+
options << "--with-winsock2" if major == "1.8"
|
data/build/patches2/rake-compiler-1.1.1/0005-Don-t-mask-out-build-env-vars-for-cross-ruby.patch
ADDED
@@ -0,0 +1,30 @@
|
|
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
|
+
|
@@ -0,0 +1,26 @@
|
|
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
|
+
|
@@ -0,0 +1,15 @@
|
|
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
|
data/build/runas
CHANGED
data/build/sudoers
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Defaults env_keep += "http_proxy https_proxy ftp_proxy GEM_PRIVATE_KEY_PASSPHRASE RCD_HOST_RUBY_PLATFORM RCD_HOST_RUBY_VERSION RCD_IMAGE RUBY_CC_VERSION"
|
1
|
+
Defaults env_keep += "http_proxy https_proxy ftp_proxy GEM_PRIVATE_KEY_PASSPHRASE RCD_HOST_RUBY_PLATFORM RCD_HOST_RUBY_VERSION RCD_IMAGE RUBY_CC_VERSION LD_LIBRARY_PATH DEVTOOLSET_ROOTPATH"
|
metadata
CHANGED
@@ -1,14 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake-compiler-dock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Kanis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
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==
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2020-12-29 00:00:00.000000000 Z
|
12
33
|
dependencies:
|
13
34
|
- !ruby/object:Gem::Dependency
|
14
35
|
name: bundler
|
@@ -74,15 +95,16 @@ files:
|
|
74
95
|
- build/gem_helper.rb
|
75
96
|
- build/mk_i686.rb
|
76
97
|
- build/parallel_docker_build.rb
|
77
|
-
- build/patches/ruby-2.5.
|
78
|
-
- build/patches/ruby-
|
98
|
+
- build/patches/ruby-2.5.8/no_sendfile.patch
|
99
|
+
- build/patches/ruby-3.0.0/no_sendfile.patch
|
79
100
|
- build/patches2/hoe-3.20.0/0001-Load-encrypted-private-key-using-ENV-GEM_PRIVATE_KEY.patch
|
80
|
-
- build/patches2/rake-compiler-1.1.
|
81
|
-
- build/patches2/rake-compiler-1.1.
|
82
|
-
- build/patches2/rake-compiler-1.1.
|
83
|
-
- build/patches2/rake-compiler-1.1.
|
84
|
-
- build/patches2/rake-compiler-1.1.
|
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
|
85
106
|
- build/patches2/ruby-2.7.0/ruby2_keywords.patch
|
107
|
+
- build/patches2/ruby-3.0.0/ruby2_keywords.patch
|
86
108
|
- build/runas
|
87
109
|
- build/sigfw.c
|
88
110
|
- build/strip_wrapper
|
@@ -116,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
138
|
- !ruby/object:Gem::Version
|
117
139
|
version: '0'
|
118
140
|
requirements: []
|
119
|
-
rubygems_version: 3.
|
141
|
+
rubygems_version: 3.1.4
|
120
142
|
signing_key:
|
121
143
|
specification_version: 4
|
122
144
|
summary: Easy to use and reliable cross compiler environment for building Windows
|
metadata.gz.sig
ADDED
@@ -1,119 +0,0 @@
|
|
1
|
-
From e0be66410b32a41591d27c34e2163ed587ae427b Mon Sep 17 00:00:00 2001
|
2
|
-
From: Lars Kanis <lars@greiz-reinsdorf.de>
|
3
|
-
Date: Sun, 22 Dec 2019 21:37:07 +0100
|
4
|
-
Subject: [PATCH] Allow parallel builds of cross rubies
|
5
|
-
|
6
|
-
Download and extraction of sources can not run in parallel, since the sources are used for multiple targets.
|
7
|
-
Therefore this part can now be separately executed by
|
8
|
-
rake-compiler prepare-sources RUBY_CC_VERSION=...
|
9
|
-
|
10
|
-
Afterwards multiple cross rubies can be built in parallel by
|
11
|
-
rake-compiler cross-ruby RUBY_CC_VERSION=... HOST=...
|
12
|
-
|
13
|
-
Access to config.yml must be synchronized, when running in parallel, which is done per File#flock .
|
14
|
-
---
|
15
|
-
lib/rake/extensiontask.rb | 5 +++-
|
16
|
-
tasks/bin/cross-ruby.rake | 56 +++++++++++++++++++++------------------
|
17
|
-
2 files changed, 34 insertions(+), 27 deletions(-)
|
18
|
-
|
19
|
-
diff --git a/lib/rake/extensiontask.rb b/lib/rake/extensiontask.rb
|
20
|
-
index d85b1a3..89f2198 100644
|
21
|
-
--- a/lib/rake/extensiontask.rb
|
22
|
-
+++ b/lib/rake/extensiontask.rb
|
23
|
-
@@ -376,7 +376,10 @@ Java extension should be preferred.
|
24
|
-
return
|
25
|
-
end
|
26
|
-
|
27
|
-
- config_file = YAML.load_file(config_path)
|
28
|
-
+ config_file = File.open(config_path) do |fd|
|
29
|
-
+ fd.flock(File::LOCK_SH)
|
30
|
-
+ YAML.load(fd.read)
|
31
|
-
+ end
|
32
|
-
|
33
|
-
# tmp_path
|
34
|
-
tmp_path = "#{@tmp_dir}/#{for_platform}/#{@name}/#{ruby_ver}"
|
35
|
-
diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
|
36
|
-
index 37dd220..3fcfe1d 100644
|
37
|
-
--- a/tasks/bin/cross-ruby.rake
|
38
|
-
+++ b/tasks/bin/cross-ruby.rake
|
39
|
-
@@ -126,6 +126,8 @@ file makefile_in => [makefile_in_bak] do |t|
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
+task "prepare-sources" => makefile_in
|
44
|
-
+
|
45
|
-
task :mingw32 do
|
46
|
-
unless MINGW_HOST then
|
47
|
-
warn "You need to install mingw32 cross compile functionality to be able to continue."
|
48
|
-
@@ -174,40 +176,42 @@ task :install => ["#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}/bin/ruby.e
|
49
|
-
desc "Update rake-compiler list of installed Ruby versions"
|
50
|
-
task 'update-config' do
|
51
|
-
config_file = "#{USER_HOME}/config.yml"
|
52
|
-
- if File.exist?(config_file) then
|
53
|
-
- puts "Updating #{config_file}"
|
54
|
-
- config = YAML.load_file(config_file)
|
55
|
-
- else
|
56
|
-
- puts "Generating #{config_file}"
|
57
|
-
- config = {}
|
58
|
-
- end
|
59
|
-
+ File.open(config_file, File::RDWR|File::CREAT) do |config_fd|
|
60
|
-
+ config_fd.flock(File::LOCK_EX)
|
61
|
-
+ config = YAML.load(config_fd.read)
|
62
|
-
+ if config
|
63
|
-
+ puts "Updating #{config_file}"
|
64
|
-
+ else
|
65
|
-
+ puts "Generating #{config_file}"
|
66
|
-
+ config = {}
|
67
|
-
+ end
|
68
|
-
|
69
|
-
- files = Dir.glob("#{USER_HOME}/ruby/*/*/**/rbconfig.rb").sort
|
70
|
-
+ files = Dir.glob("#{USER_HOME}/ruby/*/*/**/rbconfig.rb").sort
|
71
|
-
|
72
|
-
- files.each do |rbconfig|
|
73
|
-
- version, platform = rbconfig.match(/.*-(\d.\d.\d).*\/([-\w]+)\/rbconfig/)[1,2]
|
74
|
-
- platforms = [platform]
|
75
|
-
+ files.each do |rbconfig|
|
76
|
-
+ version, platform = rbconfig.match(/.*-(\d.\d.\d).*\/([-\w]+)\/rbconfig/)[1,2]
|
77
|
-
+ platforms = [platform]
|
78
|
-
|
79
|
-
- # fake alternate (binary compatible) i386-mswin32-60 platform
|
80
|
-
- platform == "i386-mingw32" and
|
81
|
-
- platforms.push "i386-mswin32-60"
|
82
|
-
+ # fake alternate (binary compatible) i386-mswin32-60 platform
|
83
|
-
+ platform == "i386-mingw32" and
|
84
|
-
+ platforms.push "i386-mswin32-60"
|
85
|
-
|
86
|
-
- platforms.each do |plat|
|
87
|
-
- config["rbconfig-#{plat}-#{version}"] = rbconfig
|
88
|
-
+ platforms.each do |plat|
|
89
|
-
+ config["rbconfig-#{plat}-#{version}"] = rbconfig
|
90
|
-
|
91
|
-
- # also store RubyGems-compatible version
|
92
|
-
- gem_platform = Gem::Platform.new(plat)
|
93
|
-
- config["rbconfig-#{gem_platform}-#{version}"] = rbconfig
|
94
|
-
+ # also store RubyGems-compatible version
|
95
|
-
+ gem_platform = Gem::Platform.new(plat)
|
96
|
-
+ config["rbconfig-#{gem_platform}-#{version}"] = rbconfig
|
97
|
-
+ end
|
98
|
-
+
|
99
|
-
+ puts "Found Ruby version #{version} for platform #{platform} (#{rbconfig})"
|
100
|
-
end
|
101
|
-
|
102
|
-
- puts "Found Ruby version #{version} for platform #{platform} (#{rbconfig})"
|
103
|
-
+ when_writing("Saving changes into #{config_file}") {
|
104
|
-
+ config_fd.rewind
|
105
|
-
+ config_fd.puts config.to_yaml
|
106
|
-
+ }
|
107
|
-
end
|
108
|
-
-
|
109
|
-
- when_writing("Saving changes into #{config_file}") {
|
110
|
-
- File.open(config_file, 'w') do |f|
|
111
|
-
- f.puts config.to_yaml
|
112
|
-
- end
|
113
|
-
- }
|
114
|
-
end
|
115
|
-
|
116
|
-
task :default do
|
117
|
-
--
|
118
|
-
2.20.1
|
119
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
From 0b929b7027eb592c0971a400184f1dfa5a0bce7c Mon Sep 17 00:00:00 2001
|
2
|
-
From: Lars Kanis <lars@greiz-reinsdorf.de>
|
3
|
-
Date: Thu, 26 Dec 2019 19:13:48 +0100
|
4
|
-
Subject: [PATCH 1/2] Enable build of static libruby
|
5
|
-
|
6
|
-
This is used in rake-compiler-dock for linux targets.
|
7
|
-
The static libruby is postprocessed in a special way.
|
8
|
-
See rake-compiler-dock's Dockerfile.
|
9
|
-
---
|
10
|
-
tasks/bin/cross-ruby.rake | 2 ++
|
11
|
-
1 file changed, 2 insertions(+)
|
12
|
-
|
13
|
-
diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
|
14
|
-
index c9b0bbb..2a73be7 100644
|
15
|
-
--- a/tasks/bin/cross-ruby.rake
|
16
|
-
+++ b/tasks/bin/cross-ruby.rake
|
17
|
-
@@ -108,6 +108,8 @@ end
|
18
|
-
file "#{build_dir}/Makefile" => [build_dir, makefile_in] do |t|
|
19
|
-
|
20
|
-
options = [
|
21
|
-
+ '--enable-static',
|
22
|
-
+ '--enable-install-static-library',
|
23
|
-
"--host=#{MINGW_HOST}",
|
24
|
-
"--target=#{MINGW_TARGET}",
|
25
|
-
"--build=#{RUBY_BUILD}",
|
26
|
-
--
|
27
|
-
2.20.1
|
28
|
-
|
data/build/patches2/rake-compiler-1.1.0/0002-Extend-mingw-search-pattern-to-find-x86_64-gcc.patch
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
From 07b1a4909fa59324d309bb8a46867cacba97cafd Mon Sep 17 00:00:00 2001
|
2
|
-
From: Lars Kanis <lars@greiz-reinsdorf.de>
|
3
|
-
Date: Thu, 26 Dec 2019 18:31:25 +0100
|
4
|
-
Subject: [PATCH] Extend mingw search pattern to find x86_64 gcc
|
5
|
-
|
6
|
-
The previous pattern only recognized 32 bit compiler versions.
|
7
|
-
---
|
8
|
-
lib/rake/extensioncompiler.rb | 2 +-
|
9
|
-
1 file changed, 1 insertion(+), 1 deletion(-)
|
10
|
-
|
11
|
-
diff --git a/lib/rake/extensioncompiler.rb b/lib/rake/extensioncompiler.rb
|
12
|
-
index b3d336b..75f4694 100644
|
13
|
-
--- a/lib/rake/extensioncompiler.rb
|
14
|
-
+++ b/lib/rake/extensioncompiler.rb
|
15
|
-
@@ -37,7 +37,7 @@ module Rake
|
16
|
-
paths = ENV['PATH'].split(File::PATH_SEPARATOR)
|
17
|
-
|
18
|
-
# the pattern to look into (captures *nix and windows executables)
|
19
|
-
- pattern = "{mingw32-,i?86*mingw*}gcc{,.*}"
|
20
|
-
+ pattern = "{mingw32-,i?86*mingw*,x86*mingw*}gcc{,.*}"
|
21
|
-
|
22
|
-
@mingw_gcc_executable = paths.find do |path|
|
23
|
-
# cleanup paths before globbing
|
24
|
-
--
|
25
|
-
2.20.1
|
26
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
From 13e33405d4e51a52402e1e37e7e2df7f1f32892d Mon Sep 17 00:00:00 2001
|
2
|
-
From: Lars Kanis <lars@greiz-reinsdorf.de>
|
3
|
-
Date: Thu, 26 Dec 2019 19:18:02 +0100
|
4
|
-
Subject: [PATCH 2/2] Strip cross built shared library files while linking
|
5
|
-
|
6
|
-
The .so files of extensions are often stripped after compilation per task in a Rakefile.
|
7
|
-
However this can be omitted, if the cross ruby version is built with stripping enabled.
|
8
|
-
Stripping the files a second time doesn't make a difference then.
|
9
|
-
---
|
10
|
-
tasks/bin/cross-ruby.rake | 3 ++-
|
11
|
-
1 file changed, 2 insertions(+), 1 deletion(-)
|
12
|
-
|
13
|
-
diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
|
14
|
-
index 2a73be7..a9eb16b 100644
|
15
|
-
--- a/tasks/bin/cross-ruby.rake
|
16
|
-
+++ b/tasks/bin/cross-ruby.rake
|
17
|
-
@@ -115,7 +115,8 @@ file "#{build_dir}/Makefile" => [build_dir, source_dir] do |t|
|
18
|
-
"--build=#{RUBY_BUILD}",
|
19
|
-
'--enable-shared',
|
20
|
-
'--disable-install-doc',
|
21
|
-
- '--with-ext='
|
22
|
-
+ '--with-ext=',
|
23
|
-
+ 'LDFLAGS=-pipe -s',
|
24
|
-
]
|
25
|
-
|
26
|
-
# Force Winsock2 for Ruby 1.8, 1.9 defaults to it
|
27
|
-
--
|
28
|
-
2.20.1
|
29
|
-
|