# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved. # # This file is a part of the programming language Ruby. Permission is hereby # granted, to either redistribute or modify this file, provided that the # 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. language: c dist: trusty sudo: false addons: apt: config: retries: true update: true sources: - ubuntu-toolchain-r-test packages: - gcc-8 - libffi-dev - libgdbm-dev - libgmp-dev - libjemalloc-dev - libncurses5-dev - libncursesw5-dev - libreadline6-dev - libssl-dev - libyaml-dev - openssl - valgrind - zlib1g-dev homebrew: packages: - gdbm - gmp - libffi - openssl@1.1 - zlib matrix: include: # to reduce time for finishing all jobs, run the slowest osx build first. - name: x86_64-darwin17 os: osx compiler: clang env: - "CONFIG_FLAG='--with-opt-dir=/usr/local/opt/openssl@1.1:/usr/local/opt/zlib'" - "JOBS=" # osx build randomly fails with `-j` # `-v` prints too long outputs, but sometimes it osx build hangs and we can't know which test is bad without `-v`. - "TEST_ALL_TESTOPTS='-v --color=never --job-status=normal --excludes=$(TESTSDIR)/excludes/_travis'" before_install: # Bare "brew update" nukes everything. # These steps are very carefully chosen to avoid breaking things. - brew_core_dir=/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/ - git -C $brew_core_dir fetch -q origin - git -C $brew_core_dir checkout -q 25590710e3f7af9cfa173c5cd3eb41a0532107b6 - HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade openssl@1.1 - /usr/local/opt/openssl@1.1/bin/openssl version - name: x86_64-linux --with-jemalloc os: linux compiler: gcc env: - "CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind'" - "JOBS=-j`nproc`" - name: x86_64-linux os: linux compiler: gcc-8 env: - "JOBS=-j`nproc`" # - name: uinversal.i386-darwin17 # os: osx # compiler: clang # env: # - "CONFIG_FLAG='--with-arch=i386'" # - "JOBS=\"-j`sysctl -n hw.activecpu`\"" # - name: uinversal.x86_64h-darwin17 # os: osx # compiler: clang # env: # - "CONFIG_FLAG='--with-arch=x86_64h'" # - "JOBS=\"-j`sysctl -n hw.activecpu`\"" - name: i686-linux os: linux sudo: required compiler: "'gcc-8 -m32'" env: - "CONFIG_FLAG='debugflags=-g0'" - "JOBS=-j`nproc`" - "SETARCH='setarch i686 --verbose --3gb'" addons: apt: config: retries: true update: true sources: - ubuntu-toolchain-r-test packages: - gcc-8-multilib - 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 - name: pedanticism os: linux compiler: "'clang -ansi -Werror=pedantic -pedantic-errors -std=iso9899:1990'" env: - "CONFIG_FLAG=" - "JOBS=" # construct warnflags (using bashism...) before_install: | warnflags_array=( -Wall -Wextra -Werror=declaration-after-statement -Werror=deprecated-declarations -Werror=division-by-zero -Werror=extra-tokens -Werror=implicit-function-declaration -Werror=implicit-int -Werror=long-long -Werror=pointer-arith -Werror=shorten-64-to-32 -Werror=write-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-extended-offsetof -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-local-typedef -Wno-unused-parameter -Wunused-variable ) CONFIG_FLAG_ARRAY=( warnflags="${warnflags_array[*]}" LDFLAGS=-Wno-unused-command-line-argument) - os: linux language: ruby rvm: 2.3.8 name: Running ruby/spec on 2.3 to ensure version guards are correctly added addons: apt: packages: before_install: install: before_script: chmod -R u+w spec/ruby # -j randomly hangs. Using -fs to make sure we can know problematic spec on failure. script: ruby -C spec/ruby ../mspec/bin/mspec -fs . allow_failures: - name: pedanticism fast_finish: true before_script: - "echo JOBS=$JOBS SETARCH=${SETARCH=}" - "$SETARCH uname -a" - "$SETARCH uname -r" - "rm -fr .ext autom4te.cache" - "echo $TERM" - "> config.status" - "sed -f tool/prereq.status Makefile.in common.mk > Makefile" - "make update-config_files" - "make touch-unicode-files" - "make -s $JOBS srcs UNICODE_FILES=." - "rm config.status Makefile rbconfig.rb .rbconfig.time" - "mkdir build config_1st config_2nd" - "chmod -R a-w ." - "chmod u+w build config_1st config_2nd" - "cd build" - "$SETARCH ../configure -C --disable-install-doc --prefix=/tmp/ruby-prefix --with-gcc=\"$CC\" $CONFIG_FLAG \"${CONFIG_FLAG_ARRAY[@]}\"" - "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)" - "$SETARCH make -s $JOBS && make install" script: - "$SETARCH make -s test TESTOPTS=--color=never" - "export TEST_ALL_TESTOPTS=\"${TEST_ALL_TESTOPTS:- -q --color=never --job-status=normal}\"" - "$SETARCH make -s $JOBS test-all -o exts TESTOPTS=\"$TEST_ALL_TESTOPTS\"" - "$SETARCH make -s $JOBS test-spec MSPECOPT=-fs" # not using `-j` because sometimes `mspec -j` silently dies # Branch matrix. Not all branches are Travis-ready so we limit branches here. branches: only: - trunk - ruby_2_3 - ruby_2_4 - ruby_2_5 - /^feature\// - /^bug\// - /^travis-/ # We want to be notified when something happens. notifications: irc: channels: - "chat.freenode.net#ruby-core" - "chat.freenode.net#ruby-ja" on_success: change # [always|never|change] # default: always on_failure: always # [always|never|change] # default: always template: - "%{message} by @%{author}: See %{build_url}" slack: rooms: - secure: i1GLETSKye85ea6dGNA3MxI/5myChmMFiZtBd5C69xK+s1sBFqEgOSbaSf9KHc0CYrHVyNhQMaZRruieV7xS+6Pfs0Zvxf1DO6QQTWC2KhkqwFDLvZncAzjoyASdR90hbr+iRPOngQ+HJuE94zemALAwEqNAinzA74PMiJXktqY= # ruby:#commits - secure: ah7UEHBvncXT7bM5mvYIQAO+tIyV/wl7nXLb7wQD16dO2v8Gragy0mWjB79Q09hrrMGmp6H9bCDpdGS80boIA5EHaHoG4QaP0i9bsSt8U2AMWgZtfyIgQKJ4H2kXkGlrjO+AXTgnIkP7LNjdgAVUUTGQPb26T3QmoN2Splt+fIQ= # ruby:#alerts on_pull_requests: false on_success: change on_failure: always email: - ko1c-failure@atdot.net # Local Variables: # mode: YAML # coding: utf-8-unix # indent-tabs-mode: nil # tab-width: 4 # fill-column: 79 # default-justification: full # End: