ruby-changes:66322
From: Jun <ko1@a...>
Date: Tue, 25 May 2021 19:38:29 +0900 (JST)
Subject: [ruby-changes:66322] 9d4266fd55 (master): .travis.yml: Update to use arm64/ppc64le/s390x.
https://git.ruby-lang.org/ruby.git/commit/?id=9d4266fd55 From 9d4266fd5555c9c4388e2e8592008d0e0d8ccf21 Mon Sep 17 00:00:00 2001 From: Jun Aruga <jaruga@r...> Date: Tue, 25 May 2021 10:24:45 +0200 Subject: .travis.yml: Update to use arm64/ppc64le/s390x. * Use only the free pipelines arm64/ppc64le/s390x without credits on Travis. See <https://docs.travis-ci.com/user/billing-overview/#partner-queue-solution>. * Add ppc64le case. * Update the gcc to gcc-11. * Remove unused logic. * Add the `tool/travis_wait.sh` to avoid a command timeout. * Run the tests skipping some failing tests. * Set `TEST_ALL_SKIPPED_TESTS` env to skip the tests. * Run the tests separately returning ok status. The tests are executed if `TEST_ALL_SKIPPED_TESTS` env is set or `TEST_ALL_SEPARATED_TESTS` env is set. * Add `tool/ci_functions.sh` to manage the functions used in CI. * Add arm64 to allow_failures due to the following issue. An arm64 job sometimes does not start right now. https://travis-ci.community/t/11629 --- .travis.yml | 388 ++++++++------------------------------------------- tool/ci_functions.sh | 29 ++++ tool/travis_wait.sh | 18 +++ 3 files changed, 108 insertions(+), 327 deletions(-) create mode 100644 tool/ci_functions.sh create mode 100755 tool/travis_wait.sh diff --git a/.travis.yml b/.travis.yml index a4a21b3..6527116 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,16 +6,8 @@ https://github.com/ruby/ruby/blob/trunk/.travis.yml#L6 # conditions mentioned in the file COPYING are met. Consult the file for # details. -# This is a Travis-CI build configuration file. The list of configurations -# available is located in -# -# http://about.travis-ci.org/docs/user/build-configuration/ -# -# and as Ruby itself is a project written in C language, -# -# http://about.travis-ci.org/docs/user/languages/c/ -# -# is also a good place to look at. +# We only manage non-amd64 free pipelines. +# https://docs.travis-ci.com/user/billing-overview/ language: c @@ -47,29 +39,34 @@ env: https://github.com/ruby/ruby/blob/trunk/.travis.yml#L39 - RUBY_PREFIX=/tmp/ruby-prefix - GEMS_FOR_TEST='timezone tzinfo' - UPDATE_UNICODE="UNICODE_FILES=. UNICODE_PROPERTY_FILES=. UNICODE_AUXILIARY_FILES=. UNICODE_EMOJI_FILES=." - - BEFORE_INSTALL=true + # The tests skipped in `make test-all`. + - TEST_ALL_SKIPPED_TESTS= + # Run the separated tests with allowing failures. + - RUN_SEPARATED_TESTS=true + # The tests executed separately by `make test-all`. + - TEST_ALL_SEPARATED_TESTS= # https://github.com/travis-ci/travis-build/blob/e411371dda21430a60f61b8f3f57943d2fe4d344/lib/travis/build/bash/travis_apt_get_options.bash#L7 - travis_apt_get_options='--allow-downgrades --allow-remove-essential --allow-change-held-packages' - travis_apt_get_options="-yq --no-install-suggests --no-install-recommends $travis_apt_get_options" + # -O1 is faster than -O3 in our tests. + - optflags=-O1 + # -g0 disables backtraces when SEGV. Do not set that. + - debugflags=-ggdb3 .org.ruby-lang.ci.matrix-definitions: - - &make-test-only - script: - - $SETARCH make -s test TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}" - - - &gcc-9 - compiler: gcc-9 + - &gcc-10 + compiler: gcc-10 before_install: - tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq" - >- tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install ccache - gcc-9 - g++-9 + gcc-10 + g++-10 libffi-dev libgdbm-dev - libncurses5-dev + libncurses-dev libncursesw5-dev libreadline-dev libssl-dev @@ -77,215 +74,35 @@ env: https://github.com/ruby/ruby/blob/trunk/.travis.yml#L74 openssl zlib1g-dev - - &clang-10 - compiler: clang-10 - addons: - apt: - # Not doing this manually unlike other sources, because it has been stable. - sources: - - llvm-toolchain-xenial-10 - config: - retries: true - before_install: - - tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq" - - >- - tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install - clang-10 - llvm-10-tools - libffi-dev - libgdbm-dev - libncurses5-dev - libncursesw5-dev - libreadline8-dev - libssl-dev - libyaml-dev - openssl - zlib1g-dev - # -------- - - &x86_64-linux - name: x86_64-linux - <<: *gcc-9 - - &arm64-linux name: arm64-linux arch: arm64 - <<: *gcc-9 + <<: *gcc-10 + + - &ppc64le-linux + name: ppc64le-linux + arch: ppc64le + <<: *gcc-10 + env: + # FIXME: Skip some failing TestGCCompact tests. + # https://bugs.ruby-lang.org/issues/17871 + - TEST_ALL_SKIPPED_TESTS="test_gc_compact_stats test_complex_hash_keys test_ast_compacts test_compact_count" + # The tests crash the process. + - RUN_SEPARATED_TESTS=false - &s390x-linux name: s390x-linux arch: s390x - <<: *gcc-9 - - - &jemalloc - name: --with-jemalloc - <<: *gcc-9 - <<: *cron-only - env: - - CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind' - - - &assertions - name: RUBY_DEBUG=1 - <<: *gcc-9 - #<<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cppflags='-DRUBY_DEBUG -DVM_CHECK_MODE=1 -DTRANSIENT_HEAP_CHECK_MODE -DRGENGC_CHECK_MODE -DENC_DEBUG' - - - &VM_CHECK_MODE - name: VM_CHECK_MODE=3 - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cppflags=-DVM_CHECK_MODE=0x0003 - - - &SUPPORT_JOKE - name: SUPPORT_JOKE - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - BEFORE_INSTALL="sed vm_opts.h -e 's/OPT_SUPPORT_JOKE *0/OPT_SUPPORT_JOKE 1/' -i" - - - &CPDEBUG - name: CPDEBUG - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - cppflags=-DCPDEBUG - - - &WITH_COROUTINE_UCONTEXT - name: COROUTINE=ucontext - <<: *gcc-9 - <<: *cron-only - env: - - CONFIG_FLAG='--with-coroutine=ucontext' - - - &WITH_COROUTINE_COPY - name: COROUTINE=copy - <<: *gcc-9 - <<: *cron-only - env: - - CONFIG_FLAG='--with-coroutine=copy' - - - &TOKEN_THREADED_CODE - name: TOKEN_THREADED_CODE - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cppflags=-DOPT_THREADED_CODE=1 - - - &CALL_THREADED_CODE - name: CALL_THREADED_CODE - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cppflags=-DOPT_THREADED_CODE=2 - - - &NO_THREADED_CODE - name: NO_THREADED_CODE - <<: *gcc-9 - <<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cppflags=-DOPT_THREADED_CODE=3 - - - &ASAN - name: -fsanitize=address - <<: *clang-8 - #<<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - ASAN_OPTIONS=detect_leaks=0 - - cflags='-U_FORTIFY_SOURCE -march=native -fsanitize=address -fno-omit-frame-pointer -fPIC' - - debugflags=-ggdb3 - - optflags=-O1 - - LD=clang-8 - - LDFLAGS='-fsanitize=address -fPIC' - - CONFIG_FLAG='--with-out-ext=openssl --without-gmp --without-jemalloc --without-valgrind' - - - &MSAN - name: -fsanitize=memory - <<: *clang-8 - #<<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cflags='-U_FORTIFY_SOURCE -fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -fPIC' - - optflags=-O1 - - LD=clang-8 - - LDFLAGS='-fsanitize=memory -fPIC' - - CONFIG_FLAG='--with-out-ext=openssl --without-gmp --without-jemalloc --without-valgrind' - - - &UBSAN - name: -fsanitize=undefined - <<: *clang-8 - #<<: *cron-only - <<: *make-test-only - env: - - GEMS_FOR_TEST= - - cflags='-U_FORTIFY_SOURCE -fsanitize=undefined,integer,nullability -fno-sanitize=implicit-integer-sign-change,unsigned-integer-overflow' - - cppflags=-DUNALIGNED_WORD_ACCESS=0 - - debugflags=-ggdb3 - - optflags='-O1 -march=native' - - LD=clang-8 - - LDFLAGS='-fsanitize=undefined,integer,nullability -fno-sanitize=implicit-integer-sign-change,unsigned-integer-overflow' - - - &i686-linux - name: i686-linux - compiler: gcc-9 - env: - - GCC_FLAGS=-m32 - - CXX='g++-8 -m32' - - debugflags=-g0 - - SETARCH='setarch i686 --verbose --3gb' - # # Not using addon to control retries - # addons: - # apt: - # sources: - # - ubuntu-toolchain-r-test - before_install: - - tool/travis_retry.sh sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - - tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq" - - >- - tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install - gcc-9-multilib - g++-8 - g++-8-multilib - libstdc++-8-dev:i386 - libffi-dev:i386 - libffi6:i386 - libgdbm-dev:i386 - libgdbm3:i386 - libncurses5-dev:i386 - libncurses5:i386 - libncursesw5-dev:i386 - libreadline6-dev:i386 - libreadline6:i386 - libssl-dev:i386 - libssl1.0.0:i386 - linux-libc-dev:i386 - zlib1g-dev:i386 - zlib1g:i386 + <<: *gcc-10 - &arm32-linux name: arm32-linux arch: arm64 - # https://packages.ubuntu.com/xenial/crossbuild-essential-armhf + # https://packages.ubuntu.com/focal/crossbuild-essential-armhf compiler: arm-linux-gnueabihf-gcc env: - - debugflags=-g0 - SETARCH='setarch linux32 --verbose --32bit' before_install: - sudo dpkg --add-architecture armhf @@ -295,132 +112,46 @@ en (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/