mirror of
https://github.com/ruby/ruby.git
synced 2026-01-26 20:19:19 +00:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v6.0.1...v6.0.2) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
244 lines
7.7 KiB
YAML
244 lines
7.7 KiB
YAML
name: MinGW
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- '**/man/*'
|
|
- '**.md'
|
|
- '**.rdoc'
|
|
- '**/.document'
|
|
- '.*.yml'
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- '**/man/*'
|
|
- '**.md'
|
|
- '**.rdoc'
|
|
- '**/.document'
|
|
- '.*.yml'
|
|
merge_group:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
|
|
cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
# Notes:
|
|
# Actions console encoding causes issues, see test-all & test-spec steps
|
|
#
|
|
jobs:
|
|
make:
|
|
runs-on: windows-${{ matrix.os }}
|
|
|
|
name: ${{ github.workflow }} (${{ matrix.msystem }})
|
|
|
|
env:
|
|
MSYSTEM: ${{ matrix.msystem }}
|
|
MSYS2_ARCH: >-
|
|
${{
|
|
contains(matrix.msystem, 'arm64') && 'aarch64' ||
|
|
contains(matrix.msystem, '64') && 'x86_64' || 'i686'
|
|
}}
|
|
MINGW_PACKAGE_PREFIX: >-
|
|
mingw-w${{
|
|
endsWith(matrix.msystem, '64') && '64' || '32'
|
|
}}-${{
|
|
startsWith(matrix.msystem, 'clang') && 'clang' ||
|
|
startsWith(matrix.msystem, 'ucrt') && 'ucrt' ||
|
|
'mingw'
|
|
}}-${{
|
|
contains(matrix.msystem, 'arm64') && 'aarch64' ||
|
|
endsWith(matrix.msystem, '64') && 'x86_64' || 'i686'
|
|
}}
|
|
CFLAGS: '-mtune=generic -O3 -pipe'
|
|
CXXFLAGS: '-mtune=generic -O3 -pipe'
|
|
CPPFLAGS: '-D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048'
|
|
LDFLAGS: '-pipe'
|
|
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
|
|
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
# To mitigate flakiness of MinGW CI, we test only one runtime that newer MSYS2 uses.
|
|
# Ruby 3.2 is the first Windows Ruby to use OpenSSL 3.x
|
|
- msystem: 'UCRT64'
|
|
os: 2022
|
|
test_task: 'check'
|
|
test-all-opts: '--name=!/TestObjSpace#test_reachable_objects_during_iteration/'
|
|
- msystem: 'CLANGARM64'
|
|
os: 11-arm
|
|
test_task: 'check'
|
|
fail-fast: false
|
|
|
|
if: >-
|
|
${{!(false
|
|
|| contains(github.event.head_commit.message, '[DOC]')
|
|
|| contains(github.event.pull_request.title, '[DOC]')
|
|
|| contains(github.event.pull_request.labels.*.name, 'Documentation')
|
|
|| (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
|
|
)}}
|
|
|
|
steps:
|
|
- uses: msys2/setup-msys2@4f806de0a5a7294ffabaff804b38a9b435a73bda # v2.30.0
|
|
id: msys2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
update: true
|
|
install: >-
|
|
git
|
|
make
|
|
ruby
|
|
autoconf
|
|
${{ env.MINGW_PACKAGE_PREFIX }}-gcc
|
|
${{ env.MINGW_PACKAGE_PREFIX }}-ragel
|
|
${{ env.MINGW_PACKAGE_PREFIX }}-openssl
|
|
${{ env.MINGW_PACKAGE_PREFIX }}-libyaml
|
|
${{ env.MINGW_PACKAGE_PREFIX }}-libffi
|
|
|
|
- name: Set up env
|
|
id: setup-env
|
|
working-directory:
|
|
run: |
|
|
$msys2 = ${env:MSYS2_LOCATION}
|
|
$msystem = ${env:MSYSTEM}.ToLower()
|
|
echo $msys2\usr\bin $msys2\$msystem\bin |
|
|
Tee-Object ${env:GITHUB_PATH} -Append -Encoding utf-8
|
|
|
|
# Use the fast device for the temporary directory.
|
|
# %TEMP% is inconsistent with %TMP% and test-all expects they are consistent.
|
|
# https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302
|
|
$tmp = ${env:RUNNER_TEMP}
|
|
echo HOME=$home TMP=$tmp TEMP=$tmp TMPDIR=$tmp |
|
|
Tee-Object ${env:GITHUB_ENV} -Append -Encoding utf-8
|
|
shell: pwsh # cmd.exe does not strip spaces before `|`.
|
|
env:
|
|
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
|
|
MSYSTEM: ${{ matrix.msystem }}
|
|
|
|
- name: Remove Strawberry Perl pkg-config
|
|
working-directory:
|
|
# `pkg-config.bat` included in Strawberry Perl is written in
|
|
# Perl and doesn't work when another msys2 `perl` precede its
|
|
# own `perl`.
|
|
#
|
|
# ```
|
|
# Can't find C:\Strawberry\perl\bin\pkg-config.bat on PATH, '.' not in PATH.
|
|
# ```
|
|
run: |
|
|
Get-Command pkg-config.bat | % { ren $_.path ($_.path + "~") }
|
|
shell: pwsh
|
|
|
|
- name: Misc system & package info
|
|
working-directory:
|
|
run: |
|
|
group() { echo ::group::$'\e[94;1m'"$*"$'\e[m'; }
|
|
endgroup() { echo ::endgroup::; }
|
|
|
|
group Path
|
|
cygpath -wa / . $(type -p cygpath bash sh)
|
|
endgroup
|
|
|
|
I() {
|
|
group $1
|
|
run Where type -pa $1 && { [ $# -eq 1 ] || run Version "$@"; } ||
|
|
failed+=($1)
|
|
endgroup
|
|
}
|
|
run() { local w m=$1; shift; w="$("$@")" && show "$m" && indent "$w"; }
|
|
indent() { [ -z "$1" ] || echo "$1" | /bin/sed '/^$/!s/^/ /'; }
|
|
show() { echo $'\e[96m'"$*"$'\e[m'; }
|
|
|
|
failed=()
|
|
|
|
I gcc.exe --version
|
|
I ragel.exe --version
|
|
I make.exe --version
|
|
I openssl.exe version
|
|
I libcrypto-3-x64.dll
|
|
I libssl-3-x64.dll
|
|
|
|
group Packages
|
|
pacman -Qs $MINGW_PACKAGE_PREFIX-* | /bin/sed -n "s,local/$MINGW_PACKAGE_PREFIX-,,p"
|
|
endgroup
|
|
|
|
[ ${#failed[@]} -eq 0 ]
|
|
shell: sh
|
|
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
sparse-checkout-cone-mode: false
|
|
sparse-checkout: /.github
|
|
|
|
- uses: ./.github/actions/setup/directories
|
|
with:
|
|
srcdir: src
|
|
builddir: build
|
|
makeup: true
|
|
# Set fetch-depth: 10 so that Launchable can receive commits information.
|
|
fetch-depth: 10
|
|
|
|
- name: configure
|
|
run: >
|
|
../src/configure --disable-install-doc --prefix=/.
|
|
--build=$CHOST --host=$CHOST --target=$CHOST
|
|
shell: sh
|
|
env:
|
|
CHOST: ${{ env.MSYS2_ARCH }}-w64-mingw32
|
|
|
|
- name: make all
|
|
timeout-minutes: 30
|
|
run: make -j4
|
|
|
|
- name: make install
|
|
run: make DESTDIR=../install install-nodoc
|
|
|
|
- name: Set up Launchable
|
|
uses: ./.github/actions/launchable/setup
|
|
with:
|
|
os: windows-2022
|
|
launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }}
|
|
builddir: build
|
|
srcdir: src
|
|
test-tasks: '["test", "test-all", "test-spec"]'
|
|
continue-on-error: true
|
|
timeout-minutes: 3
|
|
|
|
- name: test
|
|
timeout-minutes: 30
|
|
run: make test test-tool
|
|
env:
|
|
GNUMAKEFLAGS: ''
|
|
RUBY_TESTOPTS: '-v --tty=no'
|
|
if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test' }}
|
|
|
|
- name: test-all
|
|
timeout-minutes: 45
|
|
run: |
|
|
make ${{ StartsWith(matrix.test_task, 'test/') && matrix.test_task || 'test-all' }}
|
|
env:
|
|
RUBY_TESTOPTS: >-
|
|
--retry --job-status=normal --show-skip --timeout-scale=1.5 -j4
|
|
${{ matrix.test-all-opts }}
|
|
${{ env.TESTS }}
|
|
BUNDLER_VERSION:
|
|
if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test-all' || StartsWith(matrix.test_task, 'test/') }}
|
|
|
|
- name: test-spec
|
|
timeout-minutes: 10
|
|
run: |
|
|
make ${{ StartsWith(matrix.test_task, 'spec/') && matrix.test_task || 'test-spec' }}
|
|
if: ${{ matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/') }}
|
|
|
|
- uses: ./src/.github/actions/slack
|
|
with:
|
|
label: ${{ matrix.msystem }} / ${{ matrix.test_task }}
|
|
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
|
|
if: ${{ failure() }}
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: build
|
|
shell: cmd
|