diff options
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 276 |
1 files changed, 66 insertions, 210 deletions
diff --git a/.travis.yml b/.travis.yml index d480307dd6..6d942d1425 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,286 +6,142 @@ # 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. +# When you see Travis CI issues, or you are interested in understanding how to +# manage, please check the link below. +# https://github.com/ruby/ruby/wiki/CI-Servers#travis-ci + +# We enable Travis on the specific branches or forked repositories here. +if: (repo = ruby/ruby AND (branch = master OR branch =~ /^ruby_\d_\d$/)) OR repo != ruby/ruby OR commit_message !~ /\[DOC\]/ language: c os: linux -dist: xenial +dist: jammy git: quiet: true -cache: - ccache: true - directories: - - $HOME/config_2nd - - $HOME/.downloaded-cache - env: global: - # Reset timestamps early - - _=$(touch NEWS && find . -type f -exec touch -r NEWS {} +) - - CONFIGURE_TTY=no - - CCACHE_COMPILERCHECK=none - - CCACHE_NOCOMPRESS=1 - - CCACHE_MAXSIZE=512Mi - - NPROC="`nproc`" - # JOBS and SETARCH are overridden when necessary; see below. - - JOBS=-j$((1+${NPROC})) + - NPROC="$(nproc)" + - JOBS="-j${NPROC}" + # SETARCH are overridden when necessary. See below. - SETARCH= - - 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 # 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" + # -g0 disables backtraces when SEGV. Do not set that. + - debugflags=-ggdb3 + - RUBY_TESTOPTS="$JOBS -q --tty=no" .org.ruby-lang.ci.matrix-definitions: - - - &make-test-only - script: - - $SETARCH make -s test TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}" - - - &gcc-8 - compiler: gcc-8 - # # Not using addon to control retries - # addons: - # apt: - # sources: - # - ubuntu-toolchain-r-test - before_install: - - bash -cx "${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 - ccache - gcc-8 - g++-8 - libffi-dev - libgdbm-dev - libncurses5-dev - libncursesw5-dev - libreadline6-dev - libssl-dev - libyaml-dev - openssl - zlib1g-dev - - - &clang-8 - compiler: clang-8 - addons: - apt: - # Not doing this manually unlike other sources, because it has been stable. - sources: - - llvm-toolchain-xenial-8 - config: - retries: true + - &gcc-11 + compiler: gcc-11 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-8 - llvm-8-tools + gcc-11 + g++-11 libffi-dev - libgdbm-dev - libncurses5-dev + libncurses-dev libncursesw5-dev - libreadline6-dev + libreadline-dev libssl-dev libyaml-dev openssl zlib1g-dev - - # -------- - - - &x86_64-linux - name: x86_64-linux - <<: *gcc-8 - + - gcc-11 --version - &arm64-linux name: arm64-linux arch: arm64 - <<: *gcc-8 - + <<: *gcc-11 + - &ppc64le-linux + name: ppc64le-linux + arch: ppc64le + <<: *gcc-11 - &s390x-linux name: s390x-linux arch: s390x - <<: *gcc-8 - - - &i686-linux - name: i686-linux - compiler: gcc-8 + <<: *gcc-11 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-8-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 - + # Avoid possible test failures with the zlib applying the following patch + # on s390x CPU architecture. + # https://github.com/madler/zlib/pull/410 + - DFLTCC=0 - &arm32-linux name: arm32-linux arch: arm64 - # https://packages.ubuntu.com/xenial/crossbuild-essential-armhf + # https://packages.ubuntu.com/jammy/crossbuild-essential-armhf compiler: arm-linux-gnueabihf-gcc env: - - debugflags=-g0 - SETARCH='setarch linux32 --verbose --32bit' + # Still keep the -O1 for only arm32, while we want to test with the + # default optflags -O3. + # Because bootstraptest/test_ractor.rb fails with segfualt with the + # default -O3. + # https://bugs.ruby-lang.org/issues/19981 + - optflags=-O1 before_install: - sudo dpkg --add-architecture armhf - 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 crossbuild-essential-armhf libc6:armhf - libstdc++-5-dev:armhf + libstdc++-10-dev:armhf libffi-dev:armhf - libffi6:armhf - libgdbm-dev:armhf - libgdbm3:armhf - libncurses5-dev:armhf - libncurses5:armhf + libncurses-dev:armhf libncursesw5-dev:armhf - libreadline6-dev:armhf - libreadline6:armhf + libreadline-dev:armhf libssl-dev:armhf - libssl1.0.0:armhf + libyaml-dev:armhf linux-libc-dev:armhf zlib1g-dev:armhf - zlib1g:armhf matrix: include: - # Build every commit: - - <<: *i686-linux - # Build every commit (Allowed Failures): - - <<: *arm32-linux - <<: *arm64-linux + - <<: *ppc64le-linux - <<: *s390x-linux + # FIXME: lib/rubygems/util.rb:104 glob_files_in_dir - + # <internal:dir>:411:in glob: File name too long - (Errno::ENAMETOOLONG) + # https://github.com/rubygems/rubygems/issues/7132 + - <<: *arm32-linux allow_failures: - - name: arm32-linux - - name: arm64-linux - - name: s390x-linux + # Allow failures for the unstable jobs. + # - name: arm64-linux + # - name: ppc64le-linux + # - name: s390x-linux + # The 2nd arm64 pipeline may be unstable. + # - name: arm32-linux fast_finish: true before_script: - - rm -fr .ext autom4te.cache - - |- - [ -d ~/.downloaded-cache ] || - mkdir ~/.downloaded-cache - - ln -s ~/.downloaded-cache - - "> config.status" - - "> .rbconfig.time" - - sed -f tool/prereq.status template/Makefile.in common.mk > Makefile - - make touch-unicode-files - - make -s $JOBS $UPDATE_UNICODE up - - make -s $JOBS srcs - - rm -f config.status Makefile rbconfig.rb .rbconfig.time - - |- - if [ -d ~/config_2nd ]; then - cp -pr ~/config_2nd build - else - mkdir build - fi - - mkdir config_1st config_2nd - - chmod -R a-w . - - chmod -R u+w build config_1st config_2nd + - ./autogen.sh + - mkdir build - cd build - - |- - case "$CC" in - gcc*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-diagnostics-color";; - clang*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-color-diagnostics";; - esac - - |- - [ ! -f config.cache ] || - [ "$CC" = "`sed -n s/^ac_cv_prog_CC=//p config.cache`" ] || - (set -x; exec rm config.cache) - - $SETARCH ../configure -C --disable-install-doc --prefix=$RUBY_PREFIX $CONFIG_FLAG - - cp -pr config.cache config.status .ext/include ../config_1st - - $SETARCH make reconfig - - cp -pr config.cache config.status .ext/include ../config_2nd - - (cd .. && exec diff -ru config_1st config_2nd) - - chmod u+w .. - - rm -rf ~/config_2nd - - mv ../config_2nd ~ - - chmod u-w .. + - $SETARCH ../configure -C --disable-install-doc --prefix=$(pwd)/install - $SETARCH make -s $JOBS - - make -s install - - |- - [ -z "${GEMS_FOR_TEST}" ] || - $RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST - - echo "raise 'do not load ~/.irbrc in test'" > ~/.irbrc + - make -s $JOBS install + # Useful info to report issues to the Ruby. + - $SETARCH $(pwd)/install/bin/ruby -v + # Useful info To report issues to the RubyGems. + - $SETARCH $(pwd)/install/bin/gem env script: - - $SETARCH make -s test -o showflags TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}" - - travis_wait 50 $SETARCH make -s test-all -o exts TESTOPTS="${TESTOPTS} ${TEST_ALL_OPTS}" RUBYOPT="-w" - - $SETARCH make -s test-spec MSPECOPT=-ff # not using `-j` because sometimes `mspec -j` silently dies - - $SETARCH make -s -o showflags leaked-globals - -# Branch matrix. Not all branches are Travis-ready so we limit branches here. -branches: - only: - - master - - ruby_2_4 - - ruby_2_5 - - ruby_2_6 - - ruby_2_7 + - $SETARCH make -s test + - ../tool/travis_wait.sh $SETARCH make -s test-all RUBYOPT="-w" + - $SETARCH make -s test-spec # We want to be notified when something happens. notifications: - irc: - channels: - - "chat.freenode.net#ruby-core" - on_success: change # [always|never|change] # default: always - on_failure: always # [always|never|change] # default: always - template: - - "%{message} by @%{author}: See %{build_url}" - webhooks: urls: - - secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk= # ruby-lang slack: ruby/simpler-alerts-bot (travis) + # ruby-lang slack: ruby/simpler-alerts-bot (travis) + - secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk= on_success: never on_failure: always - email: - - ko1c-failure@atdot.net + - jaruga@ruby-lang.org |