Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new platform aarch64-mingw-ucrt aka Windows on ARM #152

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -48,6 +48,7 @@ jobs:
- platform: aarch64-linux-gnu
alias: aarch64-linux
- platform: aarch64-linux-musl
- platform: aarch64-mingw-ucrt
- platform: arm-linux-gnu
alias: arm-linux
- platform: arm-linux-musl
1 change: 1 addition & 0 deletions .github/workflows/publish-images.yml
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ jobs:
platform:
- aarch64-linux-gnu
- aarch64-linux-musl
- aarch64-mingw-ucrt
- arm-linux-gnu
- arm-linux-musl
- arm64-darwin
1 change: 1 addition & 0 deletions .github/workflows/release-images.yml
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ jobs:
platform:
- aarch64-linux-gnu
- aarch64-linux-musl
- aarch64-mingw-ucrt
- arm-linux-gnu
- arm-linux-musl
- arm64-darwin
15 changes: 13 additions & 2 deletions Dockerfile.mri.erb
Original file line number Diff line number Diff line change
@@ -24,6 +24,13 @@ COPY --from=larskanis/mingw64-ucrt:20.04 \
/debs/
RUN dpkg -i /debs/*.deb

<% elsif platform =~ /aarch64-mingw-ucrt/ %>
RUN wget https://github.com/mstorsjo/llvm-mingw/releases/download/20250114/llvm-mingw-20250114-ucrt-ubuntu-20.04-<%= RUBY_PLATFORM[/^\w+/] %>.tar.xz && \
tar xf llvm-mingw*.tar.xz && \
export MINGW_PATH=`ls -d llvm-mingw-*/` && \
echo "export PATH=`pwd`/$MINGW_PATH/bin:\$PATH" >> /etc/rubybashrc && \
rm -r $MINGW_PATH/bin/i686-w64* $MINGW_PATH/bin/armv7-w64* $MINGW_PATH/bin/x86_64-w64* $MINGW_PATH/i686-w64* $MINGW_PATH/armv7-w64* $MINGW_PATH/x86_64-w64*

<% elsif platform =~ /linux-musl/ %>
COPY build/mk_musl_cross.sh /tmp
RUN /tmp/mk_musl_cross.sh <%= target %>
@@ -117,6 +124,10 @@ xrubies_build_plan = if platform =~ /x64-mingw-ucrt/
# Rubyinstaller-3.1+ is platform x64-mingw-ucrt
["3.4.1:3.3.7:3.2.6:3.1.6", "3.4.1"],
]
elsif platform =~ /aarch64-mingw-ucrt/
[
["3.4.1", "3.1.6"],
]
elsif platform =~ /x64-mingw32/
[
# Rubyinstaller prior to 3.1 is platform x64-mingw32
@@ -131,7 +142,7 @@ else
]
end

strip = '-s' if platform !~ /darwin/
strip = '-s' if platform !~ /darwin|aarch64-mingw/

xrubies_build_plan.each do |xrubies, bootstrap_ruby_version| %>
RUN bash -c " \
@@ -187,7 +198,7 @@ RUN find /usr/local/rake-compiler/ruby/*/*/lib/ruby -name rbconfig.rb | while re
##
USER root

<% if platform =~ /mingw/ %>
<% if platform =~ /(x64|x86)-mingw/ %>
# Install wrappers for strip commands as a workaround for "Protocol error" in boot2docker.
COPY build/strip_wrapper_vbox /root/
RUN mv /usr/bin/<%= target %>-strip /usr/bin/<%= target %>-strip.bin && \
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@ The following platforms are supported for cross-compilation by rake-compiler-doc

- `aarch64-linux` and `aarch64-linux-gnu`
- `aarch64-linux-musl`
- `aarch64-mingw-ucrt`
- `arm-linux` and `arm-linux-gnu`
- `arm-linux-musl`
- `arm64-darwin`
@@ -193,6 +194,7 @@ This can be done like this:
PLATFORMS = %w[
aarch64-linux-gnu
aarch64-linux-musl
aarch64-mingw-ucrt
arm-linux-gnu
arm-linux-musl
arm64-darwin
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ platforms = [
# tuple is [platform, target]
["aarch64-linux-gnu", "aarch64-linux-gnu"],
["aarch64-linux-musl", "aarch64-linux-musl"],
["aarch64-mingw-ucrt", "aarch64-w64-mingw32"],
["arm-linux-gnu", "arm-linux-gnueabihf"],
["arm-linux-musl", "arm-linux-musleabihf"],
["arm64-darwin", "aarch64-apple-darwin"],
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@ diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
index 8317a2a3..8ed21718 100644
--- a/tasks/bin/cross-ruby.rake
+++ b/tasks/bin/cross-ruby.rake
@@ -116,11 +116,30 @@
@@ -116,11 +116,31 @@
"--host=#{mingw_host}",
"--target=#{mingw_target}",
"--build=#{RUBY_BUILD}",
@@ -12,6 +12,7 @@ index 8317a2a3..8ed21718 100644
+ 'ac_cv_lib_z_uncompress=no',
+ 'ac_cv_lib_crypt_crypt=no',
+ 'ac_cv_func_crypt_r=no',
+ 'extra_warnflags=-Wno-shorten-64-to-32 -Wno-dll-attribute-on-redeclaration',
'--disable-install-doc',
'--with-ext=',
]
1 change: 1 addition & 0 deletions test/rcd_test/Rakefile
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ else
aarch64-linux
aarch64-linux-gnu
aarch64-linux-musl
aarch64-mingw-ucrt
arm-linux
arm-linux-gnu
arm-linux-musl
2 changes: 2 additions & 0 deletions test/rcd_test/ext/mri/extconf.rb
Original file line number Diff line number Diff line change
@@ -18,6 +18,8 @@
puts "cc --version: #{ %x[#{CONFIG['CC']} --version].lines.first}"
puts "-"*70

$CFLAGS << " -Wall -Werror"

have_func('rb_thread_call_without_gvl', 'ruby/thread.h') ||
raise("rb_thread_call_without_gvl() not found")