Skip to content
Merged
Show file tree
Hide file tree
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
36 changes: 26 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,53 +19,63 @@ jobs:
arch: "x86-msvcrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_4_7
runon: windows-latest

- target_ruby: "3.4.7"
arch: "x64-ucrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_4_7
runon: windows-latest

- target_ruby: "3.4.7"
arch: "arm-ucrt"
build_ruby: "3.3.9/x64"
build_ruby: "3.4.7/x64"
run_mri_spec: v3_4_7
runon: windows-11-arm

- target_ruby: "3.3.10"
arch: "x86-msvcrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_3_10
runon: windows-latest

- target_ruby: "3.3.10"
arch: "x64-ucrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_3_10
runon: windows-latest

- target_ruby: "3.2.9"
arch: "x86-msvcrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_2_9
runon: windows-latest

- target_ruby: "3.2.9"
arch: "x64-ucrt"
build_ruby: "3.3.9/x64"
run_mri_spec: v3_2_9
runon: windows-latest

- target_ruby: "head"
arch: "x64-ucrt"
build_ruby: "3.3.9/x64"
run_mri_spec: master
runon: windows-latest

- target_ruby: "head"
arch: "x86-msvcrt"
build_ruby: "3.3.9/x64"
run_mri_spec: master
runon: windows-latest

- target_ruby: "head"
arch: "arm-ucrt"
build_ruby: "3.3.9/x64"
build_ruby: "3.4.7/x64"
run_mri_spec: master
runon: windows-11-arm

runs-on: windows-latest
runs-on: ${{ matrix.runon }}
env:
arch: ${{ matrix.arch }}
target_ruby: ${{ matrix.target_ruby }}
Expand All @@ -85,7 +95,18 @@ jobs:
- name: fetch tag annotations
run: git fetch --force --tags

- run: ruby --version
- name: Install base ruby
if: matrix.arch == 'arm-ucrt'
shell: powershell
run: |
$(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.7-1/rubyinstaller-devkit-3.4.7-1-x64.exe", "$pwd/ruby-setup.exe")
cmd /c ruby-setup.exe /verysilent /currentuser /dir=C:/hostedtoolcache/windows/Ruby/${{ matrix.build_ruby }}
New-Item -Path c:/msys64 -ItemType Junction -Value C:/hostedtoolcache/windows/Ruby/${{ matrix.build_ruby }}/msys64
ridk install 1 3

- run: |
dir C:/hostedtoolcache/windows/Ruby/
ruby --version
- name: extract GIT_REF_TAG
shell: cmd
run: ruby -e 'ENV["GITHUB_REF"].sub(/refs\/tags\/(.*)/){ puts "GIT_REF_TAG="+$1 }' >>%GITHUB_ENV%
Expand Down Expand Up @@ -113,7 +134,7 @@ jobs:
run: gem install bundler --conservative --no-doc

- name: Install alternative ruby
if: matrix.arch == 'x64-msvcrt' || matrix.arch == 'x64-ucrt'
if: matrix.arch == 'x64-msvcrt' || matrix.arch == 'x64-ucrt' || matrix.arch == 'arm-ucrt'
shell: powershell
run: |
$(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x86.exe", "$pwd/ruby-setup.exe")
Expand Down Expand Up @@ -173,7 +194,6 @@ jobs:

- name: Activate the environment variables set by the installer
# but exclude git's /usr/bin, because it conflicts with one RubyInstaller test.
if: matrix.arch != 'arm-ucrt'
shell: powershell
run: |
$env:PATH = [Environment]::GetEnvironmentVariable("PATH","Machine") -replace ";C:\\Program Files\\Git\\usr\\bin" -replace ";C:\\Ruby193\\bin"
Expand All @@ -199,7 +219,6 @@ jobs:
run: ridk exec sh -c "mkdir -pv ~"

- name: Install dependent gems
if: matrix.arch != 'arm-ucrt'
shell: cmd
run: |
IF "%target_ruby%" LSS "2.6" ( gem update --system && gem install bundler --force )
Expand All @@ -216,7 +235,6 @@ jobs:
run: ridk exec sh -c "pacman --noconfirm --sync --needed ${MINGW_PACKAGE_PREFIX}-gcc-libs"

- name: Run all tests against the new installed Ruby
if: matrix.arch != 'arm-ucrt'
shell: cmd
run: |
chcp 437
Expand All @@ -235,7 +253,6 @@ jobs:
rake release:appveyor_upload -- packages/ri/recipes/installer-inno/%DEPLOY_TAG%*.exe packages/ri/recipes/archive-7z/%DEPLOY_TAG%*.7z packages/ri-msys/recipes/installer-inno/ruby*-%target_ruby%*.exe

- name: Run the Ruby Spec Suite
if: matrix.arch != 'arm-ucrt'
shell: pwsh
run: |
# Actions uses UTF8, causes test failures, similar to normal OS setup
Expand All @@ -250,7 +267,6 @@ jobs:
}

- name: Run the MRI copy of Ruby Spec Suite
if: matrix.arch != 'arm-ucrt'
shell: pwsh
run: |
# Actions uses UTF8, causes test failures, similar to normal OS setup
Expand Down
4 changes: 2 additions & 2 deletions packages/ri-msys/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class RubyPackage < RubyInstaller::Build::Openstruct

self.rubyver, self.pkgrel = packagever.split("-", 2)
self.packagename = "rubyinstaller-devkit"
self.rubyver2 = packagever=='head' ? "3.5" : rubyver[ /^\d+\.\d+/ ]
self.rubylibver = packagever=='head' ? "#{rubyver2}.0+4" : "#{rubyver2}.0"
self.rubyver2 = packagever=='head' ? "4.0" : rubyver[ /^\d+\.\d+/ ]
self.rubylibver = packagever=='head' ? "#{rubyver2}.0+0" : "#{rubyver2}.0"

case arch
when 'x64-ucrt'
Expand Down
4 changes: 2 additions & 2 deletions packages/ri/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class RubyPackage < RubyInstaller::Build::Openstruct

self.rubyver, self.pkgrel = packagever.split("-", 2)
self.packagename = "rubyinstaller"
self.rubyver2 = packagever=='head' ? "3.5" : rubyver[ /^\d+\.\d+/ ]
self.rubylibver = packagever=='head' ? "#{rubyver2}.0+4" : "#{rubyver2}.0"
self.rubyver2 = packagever=='head' ? "4.0" : rubyver[ /^\d+\.\d+/ ]
self.rubylibver = packagever=='head' ? "#{rubyver2}.0+0" : "#{rubyver2}.0"

case arch
when 'x64-ucrt'
Expand Down
2 changes: 1 addition & 1 deletion recipes/sandbox/10-define-variables.rake
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ end
self.fiddle_so_path = case
when package.rubyver2 == "3.4"
"lib/ruby/#{package.rubylibver}/#{package.ruby_arch}/fiddle.so"
when package.rubyver2 == "3.5"
when package.rubyver2 == "4.0"
"lib/ruby/gems/#{package.rubylibver}/extensions/#{package.ruby_arch.sub(/i.86-mingw/, "x86-mingw")}/#{package.rubylibver}/fiddle-1.1.8/fiddle.so"
end
4 changes: 2 additions & 2 deletions recipes/sandbox/rubyinstaller-head-arm-ucrt.files
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
bin/libcrypto-3.dll
bin/libssl-3.dll
bin/aarch64-ucrt-ruby350.dll
lib/libaarch64-ucrt-ruby350.dll.a
bin/aarch64-ucrt-ruby400.dll
lib/libaarch64-ucrt-ruby400.dll.a
4 changes: 2 additions & 2 deletions recipes/sandbox/rubyinstaller-head-x64-msvcrt.files
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
bin/libcrypto-3-x64.dll
bin/libgcc_s_seh-1.dll
bin/libssl-3-x64.dll
bin/x64-msvcrt-ruby350.dll
lib/libx64-msvcrt-ruby350.dll.a
bin/x64-msvcrt-ruby400.dll
lib/libx64-msvcrt-ruby400.dll.a
4 changes: 2 additions & 2 deletions recipes/sandbox/rubyinstaller-head-x64-ucrt.files
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
bin/libcrypto-3-x64.dll
bin/libgcc_s_seh-1.dll
bin/libssl-3-x64.dll
bin/x64-ucrt-ruby350.dll
lib/libx64-ucrt-ruby350.dll.a
bin/x64-ucrt-ruby400.dll
lib/libx64-ucrt-ruby400.dll.a
4 changes: 2 additions & 2 deletions recipes/sandbox/rubyinstaller-head-x86-msvcrt.files
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
bin/libcrypto-3.dll
bin/libgcc_s_dw2-1.dll
bin/libssl-3.dll
bin/msvcrt-ruby350.dll
lib/libmsvcrt-ruby350.dll.a
bin/msvcrt-ruby400.dll
lib/libmsvcrt-ruby400.dll.a
12 changes: 6 additions & 6 deletions recipes/sandbox/rubyinstaller-head.files
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ bin/libyaml-0-2.dll
bin/ruby.exe
bin/rubyw.exe
bin/zlib1.dll
include/ruby-3.5.0+4
lib/pkgconfig/ruby-3.5.pc
lib/ruby/3.5.0+4
lib/ruby/gems/3.5.0+4
lib/ruby/site_ruby/3.5.0+4
lib/ruby/vendor_ruby/3.5.0+4
include/ruby-4.0.0+0
lib/pkgconfig/ruby-4.0.pc
lib/ruby/4.0.0+0
lib/ruby/gems/4.0.0+0
lib/ruby/site_ruby/4.0.0+0
lib/ruby/vendor_ruby/4.0.0+0
share/doc/ruby/html/
share/ri/
6 changes: 5 additions & 1 deletion recipes/unpack/50-install-msys-packages.rake
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,9 @@ file ruby_exe => [self.repo_added] do
rescue => err
$stderr.puts "ignoring error while adjusting permissions: #{err} (#{err.class})"
end
touch ruby_exe
# Fails on Windows-on-Arm on Github with:
# Errno::EACCES: Permission denied @ utime_failed - recipes/unpack/ruby-head-arm-ucrt/clangarm64/bin/ruby.exe (Errno::EACCES)
unless ENV["GITHUB_ACTIONS"] == "true" && ENV["RUNNER_ARCH"] == "ARM64"
touch ruby_exe
end
end
2 changes: 1 addition & 1 deletion test/helper/testgem/testgem.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ Gem::Specification.new do |s|
s.executables = ["testgem-exe"]
s.required_ruby_version = '>= 2.1.0'
s.metadata['msys2_dependencies'] = 'ed>=1.0'
s.metadata['msys2_mingw_dependencies'] = 'libguess>=1.0 gcc>=8.0'
s.metadata['msys2_mingw_dependencies'] = 'libguess>=1.0'
end
2 changes: 1 addition & 1 deletion test/helper/testgem/testgem2.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ Gem::Specification.new do |s|
s.license = 'BSD-3-Clause'
s.require_paths << 'lib'
s.required_ruby_version = '>= 2.1.0'
s.metadata['msys2_mingw_dependencies'] = 'libidn2 gcc>=8.0'
s.metadata['msys2_mingw_dependencies'] = 'libidn2'
end
9 changes: 6 additions & 3 deletions test/ruby_installer/test_module.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def test_enable_msys_apps_with_msys_installed
when "x64-mingw32" then "MINGW64"
when "x64-mingw-ucrt" then "UCRT64"
when "i386-mingw32" then "MINGW32"
when "aarch64-mingw-ucrt" then "CLANGARM64"
end
assert_equal msystem, ENV['MSYSTEM'], "enable_msys_apps should set MSYSTEM according to RUBY_PLATFORM"
assert_match(/./, ENV['LANG'], "enable_msys_apps should set LANG")
Expand Down Expand Up @@ -135,6 +136,8 @@ def test_iterate_msys_paths
assert_equal( min_paths, paths & min_paths )
end

LIBCPP_DLL = RUBY_PLATFORM =~ /aarch64/ ? "libc++" : "libstdc++-6"

def test_enable_dll_search_paths_with_msys_installed
skip unless File.directory?(msys_path)
remove_mingwdir
Expand All @@ -143,12 +146,12 @@ def test_enable_dll_search_paths_with_msys_installed
# Double calling shouldn't matter
RubyInstaller::Runtime.enable_dll_search_paths
RubyInstaller::Runtime.enable_dll_search_paths
Fiddle.dlopen("libstdc++-6").close
Fiddle.dlopen(LIBCPP_DLL).close
remove_mingwdir
# PATH based DLL search makes reliable anti-pattern impossible
unless ENV['RI_FORCE_PATH_FOR_DLL'] == '1'
assert_raises(Fiddle::DLError) do
Fiddle.dlopen("libstdc++-6").close
Fiddle.dlopen(LIBCPP_DLL).close
end
end

Expand All @@ -162,7 +165,7 @@ def test_enable_dll_search_paths_without_msys_installed
RubyInstaller::Runtime.enable_dll_search_paths
unless ENV['RI_FORCE_PATH_FOR_DLL'] == '1' # PATH based DLL search makes reliable anti-pattern impossible
assert_raises(Fiddle::DLError, "enable_dll_search_paths should succeed, but without effect") do
Fiddle.dlopen("libstdc++-6").close
Fiddle.dlopen(LIBCPP_DLL).close
end
end
end
Expand Down