|
10 | 10 |
|
11 | 11 | task: |
12 | 12 | name: Arm64 Graviton2 / $CC |
13 | | - skip: "changesIncludeOnly('doc/**', '**.{md,rdoc}')" |
| 13 | + skip: "changesIncludeOnly('doc/**', '**.{md,rdoc,ronn,[1-8]}', '.document')" |
14 | 14 | arm_container: |
15 | 15 | # We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image . |
16 | 16 | image: ghcr.io/ruby/ruby-ci-image:$CC |
|
39 | 39 | # the `make` environment variable used in compilers.yml causes some rubygems |
40 | 40 | # tests to fail. |
41 | 41 | # https://github.com/rubygems/rubygems/issues/4921 |
42 | | - - echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> $CIRRUS_ENV |
43 | | - print_env_script: |
44 | | - - echo "GNUMAKEFLAGS=$GNUMAKEFLAGS" |
| 42 | + - echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> "$CIRRUS_ENV" |
| 43 | + - cat "$CIRRUS_ENV" |
45 | 44 | # Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6 |
46 | 45 | # See https://github.com/aws/containers-roadmap/issues/835 |
47 | 46 | disable_ipv6_script: sudo ./tool/disable_ipv6.sh |
|
62 | 61 | make_test-tool_script: make test-tool |
63 | 62 | make_test-all_script: make test-all |
64 | 63 | make_test-spec_script: make test-spec |
| 64 | + |
| 65 | +# The following is to test YJIT on ARM64 CPUs available on Cirrus CI |
| 66 | +yjit_task: |
| 67 | + name: Arm64 Graviton2 / $CC YJIT |
| 68 | + auto_cancellation: $CIRRUS_BRANCH != 'master' |
| 69 | + skip: "changesIncludeOnly('doc/**', '**.{md,rdoc,ronn,[1-8]}', '.document')" |
| 70 | + arm_container: |
| 71 | + # We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image . |
| 72 | + image: ghcr.io/ruby/ruby-ci-image:$CC |
| 73 | + # Define the used cpu core in each matrix task. We can use total 16 cpu |
| 74 | + # cores in entire matrix. [cpu] = [total cpu: 16] / [number of tasks] |
| 75 | + cpu: 8 |
| 76 | + # We can request maximum 4 GB per cpu. |
| 77 | + # [memory per task] = [memory per cpu: 4 GB] * [cpu] |
| 78 | + memory: 32G |
| 79 | + env: |
| 80 | + CIRRUS_CLONE_DEPTH: 50 |
| 81 | + optflags: '-O1' |
| 82 | + debugflags: '-ggdb3' |
| 83 | + RUBY_PREFIX: /tmp/ruby-prefix |
| 84 | + RUBY_DEBUG: ci rgengc |
| 85 | + RUBY_TESTOPTS: >- |
| 86 | + -q |
| 87 | + --color=always |
| 88 | + --tty=no |
| 89 | + matrix: |
| 90 | + - CC: clang-12 |
| 91 | + configure: --enable-yjit=dev |
| 92 | + rustup_init: --default-toolchain=1.58.1 |
| 93 | + - CC: gcc-11 |
| 94 | + configure: --enable-yjit |
| 95 | + id_script: id |
| 96 | + set_env_script: |
| 97 | + # Set `GNUMAKEFLAGS`, because the flags are GNU make specific. Note using |
| 98 | + # the `make` environment variable used in compilers.yml causes some rubygems |
| 99 | + # tests to fail. |
| 100 | + # https://github.com/rubygems/rubygems/issues/4921 |
| 101 | + - echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> "$CIRRUS_ENV" |
| 102 | + - echo RUST_BACKTRACE=1 >> "$CIRRUS_ENV" |
| 103 | + - cat "$CIRRUS_ENV" |
| 104 | + # Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6 |
| 105 | + # See https://github.com/aws/containers-roadmap/issues/835 |
| 106 | + disable_ipv6_script: sudo ./tool/disable_ipv6.sh |
| 107 | + install_rust_script: |
| 108 | + - sudo apt-get update -y |
| 109 | + - sudo apt-get install -y curl |
| 110 | + - "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y $rustup_init" |
| 111 | + autogen_script: ./autogen.sh |
| 112 | + configure_script: >- |
| 113 | + source $HOME/.cargo/env && ./configure -C |
| 114 | + --enable-debug-env |
| 115 | + --disable-install-doc |
| 116 | + --with-ext=-test-/cxxanyargs,+ |
| 117 | + --prefix="$RUBY_PREFIX" |
| 118 | + $configure |
| 119 | + make_miniruby_script: source $HOME/.cargo/env && make miniruby |
| 120 | + make_bindgen_script: | |
| 121 | + if [[ "$CC" = "clang-12" ]]; then |
| 122 | + source $HOME/.cargo/env && make yjit-bindgen |
| 123 | + else |
| 124 | + echo "only running bindgen on clang image" |
| 125 | + fi |
| 126 | + boot_miniruby_script: ./miniruby --yjit-call-threshold=1 -e0 |
| 127 | + test_dump_insns_script: ./miniruby --yjit-call-threshold=1 --yjit-dump-insns -e0 |
| 128 | + output_stats_script: ./miniruby --yjit-call-threshold=1 --yjit-stats -e0 |
| 129 | + full_build_script: source $HOME/.cargo/env && make |
| 130 | + cargo_test_script: source $HOME/.cargo/env && cd yjit && cargo test |
| 131 | + make_test_script: source $HOME/.cargo/env && make test RUN_OPTS="--yjit-call-threshold=1 --yjit-verify-ctx" |
| 132 | + make_test_all_script: source $HOME/.cargo/env && make test-all RUN_OPTS="--yjit-call-threshold=1" TESTOPTS="$RUBY_TESTOPTS" |
| 133 | + make_test_spec_script: source $HOME/.cargo/env && make test-spec RUN_OPTS="--yjit-call-threshold=1" |
0 commit comments