2021-09-14 19:20:01 +03:00
|
|
|
# This CI is used to test Arm cases. We can set the maximum 16 tasks.
|
|
|
|
# The entire testing design is inspired from .github/workflows/compilers.yml.
|
|
|
|
|
|
|
|
# By default, Cirrus mounts an empty volume to `/tmp`
|
|
|
|
# which triggers all sorts of warnings like "system temporary path is world-writable: /tmp".
|
|
|
|
# Lets workaround it by specifying a custom volume mount point.
|
|
|
|
env:
|
|
|
|
CIRRUS_VOLUME: /cirrus-ci-volume
|
2021-09-27 10:18:16 +03:00
|
|
|
LANG: C.UTF-8
|
2021-09-14 19:20:01 +03:00
|
|
|
|
|
|
|
task:
|
|
|
|
name: Arm64 Graviton2 / $CC
|
2022-08-22 12:08:05 +03:00
|
|
|
skip: "changesIncludeOnly('doc/**', '**.{md,rdoc}', '.document')"
|
2021-09-14 19:20:01 +03:00
|
|
|
arm_container:
|
2022-03-30 06:14:17 +03:00
|
|
|
# We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image .
|
2021-09-14 19:20:01 +03:00
|
|
|
image: ghcr.io/ruby/ruby-ci-image:$CC
|
|
|
|
# Define the used cpu core in each matrix task. We can use total 16 cpu
|
|
|
|
# cores in entire matrix. [cpu] = [total cpu: 16] / [number of tasks]
|
|
|
|
cpu: 8
|
|
|
|
# We can request maximum 4 GB per cpu.
|
|
|
|
# [memory per task] = [memory per cpu: 4 GB] * [cpu]
|
|
|
|
memory: 32G
|
|
|
|
env:
|
|
|
|
CIRRUS_CLONE_DEPTH: 50
|
|
|
|
optflags: '-O1'
|
|
|
|
debugflags: '-ggdb3'
|
|
|
|
RUBY_PREFIX: /tmp/ruby-prefix
|
|
|
|
RUBY_DEBUG: ci rgengc
|
|
|
|
RUBY_TESTOPTS: >-
|
|
|
|
-q
|
|
|
|
--color=always
|
|
|
|
--tty=no
|
|
|
|
matrix:
|
|
|
|
CC: clang-12
|
|
|
|
CC: gcc-11
|
|
|
|
id_script: id
|
|
|
|
set_env_script:
|
|
|
|
# Set `GNUMAKEFLAGS`, because the flags are GNU make specific. Note using
|
|
|
|
# the `make` environment variable used in compilers.yml causes some rubygems
|
|
|
|
# tests to fail.
|
|
|
|
# https://github.com/rubygems/rubygems/issues/4921
|
|
|
|
- echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> $CIRRUS_ENV
|
|
|
|
print_env_script:
|
|
|
|
- echo "GNUMAKEFLAGS=$GNUMAKEFLAGS"
|
|
|
|
# Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6
|
|
|
|
# See https://github.com/aws/containers-roadmap/issues/835
|
|
|
|
disable_ipv6_script: sudo ./tool/disable_ipv6.sh
|
|
|
|
autogen_script: ./autogen.sh
|
|
|
|
configure_script: >-
|
|
|
|
./configure -C
|
|
|
|
--enable-debug-env
|
|
|
|
--disable-install-doc
|
|
|
|
--with-ext=-test-/cxxanyargs,+
|
|
|
|
--prefix="$RUBY_PREFIX"
|
|
|
|
make_extract-extlibs_script: make extract-extlibs
|
|
|
|
make_incs_script: make incs
|
|
|
|
make_script: make
|
|
|
|
make_leaked-globals_script: make leaked-globals
|
|
|
|
make_test_script: make test
|
|
|
|
make_install_script: make install
|
|
|
|
install_gems_for_test_script: $RUBY_PREFIX/bin/gem install --no-doc timezone tzinfo
|
|
|
|
make_test-tool_script: make test-tool
|
2021-09-27 18:40:31 +03:00
|
|
|
make_test-all_script: make test-all
|
2021-09-14 19:20:01 +03:00
|
|
|
make_test-spec_script: make test-spec
|
2022-07-12 20:40:59 +03:00
|
|
|
|
|
|
|
|
|
|
|
# The following is to test YJIT on ARM64 CPUs available on Cirrus CI
|
|
|
|
yjit_task:
|
|
|
|
name: Arm64 Graviton2 / $CC YJIT New Backend Temp Checks
|
|
|
|
auto_cancellation: $CIRRUS_BRANCH != 'master'
|
|
|
|
skip: "changesIncludeOnly('doc/**', '**.{md,rdoc}')"
|
|
|
|
arm_container:
|
|
|
|
# We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image .
|
|
|
|
image: ghcr.io/ruby/ruby-ci-image:$CC
|
|
|
|
# Define the used cpu core in each matrix task. We can use total 16 cpu
|
|
|
|
# cores in entire matrix. [cpu] = [total cpu: 16] / [number of tasks]
|
|
|
|
cpu: 8
|
|
|
|
# We can request maximum 4 GB per cpu.
|
|
|
|
# [memory per task] = [memory per cpu: 4 GB] * [cpu]
|
|
|
|
memory: 32G
|
|
|
|
env:
|
|
|
|
CIRRUS_CLONE_DEPTH: 50
|
|
|
|
optflags: '-O1'
|
|
|
|
debugflags: '-ggdb3'
|
|
|
|
RUBY_PREFIX: /tmp/ruby-prefix
|
|
|
|
RUBY_DEBUG: ci rgengc
|
|
|
|
RUBY_TESTOPTS: >-
|
|
|
|
-q
|
|
|
|
--color=always
|
|
|
|
--tty=no
|
|
|
|
matrix:
|
|
|
|
CC: clang-12
|
|
|
|
CC: gcc-11
|
|
|
|
id_script: id
|
|
|
|
set_env_script:
|
|
|
|
# Set `GNUMAKEFLAGS`, because the flags are GNU make specific. Note using
|
|
|
|
# the `make` environment variable used in compilers.yml causes some rubygems
|
|
|
|
# tests to fail.
|
|
|
|
# https://github.com/rubygems/rubygems/issues/4921
|
|
|
|
- echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> $CIRRUS_ENV
|
|
|
|
print_env_script:
|
|
|
|
- echo "GNUMAKEFLAGS=$GNUMAKEFLAGS"
|
|
|
|
# Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6
|
|
|
|
# See https://github.com/aws/containers-roadmap/issues/835
|
|
|
|
disable_ipv6_script: sudo ./tool/disable_ipv6.sh
|
|
|
|
install_rust_script:
|
|
|
|
- sudo apt-get update -y
|
|
|
|
- sudo apt-get install -y curl
|
|
|
|
- "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"
|
|
|
|
autogen_script: ./autogen.sh
|
|
|
|
configure_script: >-
|
|
|
|
source $HOME/.cargo/env && ./configure -C
|
|
|
|
--enable-debug-env
|
|
|
|
--disable-install-doc
|
|
|
|
--with-ext=-test-/cxxanyargs,+
|
|
|
|
--prefix="$RUBY_PREFIX"
|
|
|
|
--enable-yjit=dev
|
|
|
|
make_miniruby_script: source $HOME/.cargo/env && make -j miniruby
|
2022-07-20 17:43:14 +03:00
|
|
|
make_bindgen_script: |
|
|
|
|
if [[ "$CC" = "clang-12" ]]; then
|
|
|
|
source $HOME/.cargo/env && make -j yjit-bindgen
|
|
|
|
else
|
|
|
|
echo "only running bindgen on clang image"
|
|
|
|
fi
|
2022-07-12 20:40:59 +03:00
|
|
|
boot_miniruby_script: RUST_BACKTRACE=1 ./miniruby --yjit-call-threshold=1 -e0
|
2022-07-15 23:21:35 +03:00
|
|
|
test_dump_insns_script: RUST_BACKTRACE=1 ./miniruby --yjit-call-threshold=1 --yjit-dump-insns -e0
|
2022-07-22 23:25:37 +03:00
|
|
|
output_stats_script: RUST_BACKTRACE=1 ./miniruby --yjit-call-threshold=1 --yjit-stats -e0
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstrap_tests_script: |
|
|
|
|
RUST_BACKTRACE=1 ruby --disable=gems bootstraptest/runner.rb --ruby="./miniruby -I./lib -I. -I.ext/common --disable-gems --yjit-call-threshold=1 --yjit-verify-ctx" \
|
|
|
|
bootstraptest/test_attr.rb \
|
|
|
|
bootstraptest/test_autoload.rb \
|
2022-08-06 00:09:22 +03:00
|
|
|
bootstraptest/test_block.rb \
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstraptest/test_class.rb \
|
|
|
|
bootstraptest/test_constant_cache.rb \
|
|
|
|
bootstraptest/test_env.rb \
|
|
|
|
bootstraptest/test_eval.rb \
|
|
|
|
bootstraptest/test_exception.rb \
|
|
|
|
bootstraptest/test_fiber.rb \
|
|
|
|
bootstraptest/test_finalizer.rb \
|
|
|
|
bootstraptest/test_flip.rb \
|
|
|
|
bootstraptest/test_flow.rb \
|
|
|
|
bootstraptest/test_fork.rb \
|
|
|
|
bootstraptest/test_gc.rb \
|
2022-08-09 01:42:42 +03:00
|
|
|
bootstraptest/test_insns.rb \
|
2022-07-22 21:01:21 +03:00
|
|
|
bootstraptest/test_io.rb \
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstraptest/test_jump.rb \
|
2022-08-09 17:32:24 +03:00
|
|
|
bootstraptest/test_literal.rb \
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstraptest/test_literal_suffix.rb \
|
|
|
|
bootstraptest/test_load.rb \
|
2022-07-22 19:26:59 +03:00
|
|
|
bootstraptest/test_marshal.rb \
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstraptest/test_massign.rb \
|
2022-07-22 19:26:59 +03:00
|
|
|
bootstraptest/test_method.rb \
|
|
|
|
bootstraptest/test_objectspace.rb \
|
2022-08-09 17:32:24 +03:00
|
|
|
bootstraptest/test_ractor.rb \
|
2022-07-22 21:01:21 +03:00
|
|
|
bootstraptest/test_proc.rb \
|
2022-07-21 21:53:33 +03:00
|
|
|
bootstraptest/test_string.rb \
|
2022-07-22 19:26:59 +03:00
|
|
|
bootstraptest/test_struct.rb \
|
2022-08-06 00:09:22 +03:00
|
|
|
bootstraptest/test_syntax.rb \
|
2022-08-04 23:47:35 +03:00
|
|
|
bootstraptest/test_thread.rb \
|
2022-08-09 19:16:27 +03:00
|
|
|
bootstraptest/test_yjit_30k_ifelse.rb \
|
|
|
|
bootstraptest/test_yjit_30k_methods.rb \
|
2022-07-22 23:13:29 +03:00
|
|
|
bootstraptest/test_yjit_new_backend.rb \
|
2022-08-10 23:38:42 +03:00
|
|
|
bootstraptest/test_yjit_rust_port.rb \
|
|
|
|
bootstraptest/test_yjit.rb
|
2022-08-02 22:36:27 +03:00
|
|
|
|
2022-08-09 23:03:39 +03:00
|
|
|
# Check that we can do a full ruby build
|
2022-08-16 19:00:35 +03:00
|
|
|
full_build_script: source $HOME/.cargo/env && make -j
|
|
|
|
|
|
|
|
# Check that we can build rdoc successfully
|
|
|
|
make_rdoc_script: source $HOME/.cargo/env && make -j rdoc
|
|
|
|
|
|
|
|
# Run John's YJIT instruction tests, and make sure we can load the test-all runner
|
2022-08-18 17:49:27 +03:00
|
|
|
test_yjit_script: source $HOME/.cargo/env && make -j test-all TESTS='test/ruby/test_method.rb test/ruby/test_yjit.rb' RUN_OPTS="--yjit-call-threshold=1"
|
2022-08-16 19:00:35 +03:00
|
|
|
|
2022-08-18 23:00:54 +03:00
|
|
|
# Run test-all with the default call threshold
|
|
|
|
test_yjit_script: source $HOME/.cargo/env && RUBY_YJIT_ENABLE=1 make -j test-all
|