version: ~> 1.0 language: c # Travis wants to see a default for 'os' at top level # even though we override it in every jobs entry. os: linux dist: focal branches: except: - master cache: - ccache git: depth: false notifications: irc: channels: - "ircs://chat.freenode.net:6697/#libxcrypt" skip_join: true install: - build-aux/travis-install before_script: - build-aux/travis-before script: - build-aux/travis-build && build-aux/travis-after-success # Repeated configuration blocks, referred to below by YAML aliases. # Take care not to install packages that aren't needed in some configuration. # Both the Linux and the OSX build workers already have current versions # of autoconf, automake, libtool, pkg-config, and a usable awk installed. _macros: linux_gcc: &linux_gcc os: linux compiler: gcc addons: apt: packages: - lcov linux_gcc_valgrind: &linux_gcc_valgrind os: linux compiler: gcc addons: apt: packages: - lcov - valgrind linux_clang: &linux_clang os: linux compiler: clang addons: apt: packages: - lcov - llvm osx_gcc: &osx_gcc os: osx osx_image: xcode12.3 compiler: gcc addons: homebrew: packages: - gcc - lcov osx_clang: &osx_clang os: osx osx_image: xcode12.3 compiler: clang addons: homebrew: packages: - lcov # The build "matrix." Really more of a list. jobs: fast_finish: true include: - name: "Coverity Scan" if: "tag =~ ^v(\\d+\\.)?(\\d+\\.)?(\\d+)$" <<: *linux_gcc env: - CONF="--disable-werror --enable-obsolete-api --enable-hashes=all" - PERFORM_COVERITY_SCAN="1" - COVERITY_SCAN_PROJECT_NAME="$TRAVIS_REPO_SLUG" - COVERITY_SCAN_BRANCH_PATTERN="^v(\d+\.)?(\d+\.)?(\d+)$" - COVERITY_SCAN_BUILD_COMMAND_PREPEND="./configure $CONF" - COVERITY_SCAN_BUILD_COMMAND="make -j$NPROCS" - name: "Linux, GCC, Distcheck" <<: *linux_gcc env: - CONF="--enable-obsolete-api --enable-hashes=all" - DISTCHECK=1 - name: "Linux, GCC, Unoptimized build for Codecov" <<: *linux_gcc env: - CONF="--enable-obsolete-api --enable-hashes=all" - CODECOV=1 - name: "Linux, Clang, Unoptimized build for Codecov" <<: *linux_clang env: - CONF="--enable-obsolete-api --enable-hashes=all" - CODECOV=1 - name: "Linux, GCC, all hashes, obsolete API, Valgrind" <<: *linux_gcc_valgrind env: - CONF="--enable-obsolete-api --enable-hashes=all --enable-valgrind-memcheck" - VALGRIND=1 - name: "Linux, Clang, all hashes, obsolete API, ASan+UBSan" <<: *linux_clang env: - CONF="--enable-obsolete-api --enable-hashes=all" - SANITIZER=1 - name: "Linux, GCC, all hashes, obsolete API, Perl 5.14" <<: *linux_gcc dist: trusty env: - CONF="--enable-obsolete-api --enable-hashes=all" - OLDEST_SUPPORTED_PERL=1 - name: "Linux, GCC, all hashes, static lib" <<: *linux_gcc env: CONF="--disable-shared --disable-obsolete-api --enable-hashes=all" - name: "Linux, Clang, all hashes, static lib" <<: *linux_clang env: CONF="--disable-shared --disable-obsolete-api --enable-hashes=all" - name: "macOS, GCC (Homebrew), all hashes" <<: *osx_gcc env: CONF="--disable-obsolete-api --enable-hashes=all" - name: "macOS, Clang, all hashes" <<: *osx_clang env: CONF="--disable-obsolete-api --enable-hashes=all" - name: "macOS, GCC (Homebrew), all hashes, static lib" <<: *osx_gcc env: CONF="--disable-shared --disable-obsolete-api --enable-hashes=all" - name: "macOS, Clang, all hashes, static lib" <<: *osx_clang env: CONF="--disable-shared --disable-obsolete-api --enable-hashes=all" - name: "Linux, GCC, all hashes, obsolete API ENOSYS" <<: *linux_gcc env: CONF="--enable-obsolete-api --enable-obsolete-api-enosys --enable-hashes=all" - name: "Linux, Clang, all hashes, obsolete API ENOSYS" <<: *linux_clang env: CONF="--enable-obsolete-api --enable-obsolete-api-enosys --enable-hashes=all" - name: "Linux, GCC, all hashes, obsolete API, no failure-tokens" <<: *linux_gcc env: CONF="--disable-failure-tokens --enable-obsolete-api --enable-hashes=all" - name: "Linux, Clang, all hashes, obsolete API, no failure-tokens" <<: *linux_clang env: CONF="--disable-failure-tokens --enable-obsolete-api --enable-hashes=all" - name: "Linux, GCC, all hashes, obsolete API ENOSYS, no failure-tokens" <<: *linux_gcc env: CONF="--disable-failure-tokens --enable-obsolete-api --enable-obsolete-api-enosys --enable-hashes=all" - name: "Linux, Clang, all hashes, obsolete API ENOSYS, no failure-tokens" <<: *linux_clang env: CONF="--disable-failure-tokens --enable-obsolete-api --enable-obsolete-api-enosys --enable-hashes=all" - name: "Linux, GCC, all hashes, no obsolete API" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=all" - name: "Linux, Clang, all hashes, no obsolete API" <<: *linux_clang env: CONF="--disable-obsolete-api --enable-hashes=all" - name: "Linux, GCC, strong hashes, no obsolete API" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=strong" - name: "Linux, Clang, strong hashes, no obsolete API" <<: *linux_clang env: CONF="--disable-obsolete-api --enable-hashes=strong" - name: "Linux, GCC, glibc hashes, obsolete API" <<: *linux_gcc env: CONF="--enable-obsolete-api --enable-hashes=glibc" - name: "Linux, Clang, glibc hashes, obsolete API" <<: *linux_clang env: CONF="--enable-obsolete-api --enable-hashes=glibc" - name: "Linux, GCC, glibc and strong hashes, obsolete API for glibc" <<: *linux_gcc env: CONF="--enable-obsolete-api=glibc --enable-hashes=strong,glibc" - name: "Linux, Clang, glibc and strong hashes, obsolete API for glibc" <<: *linux_clang env: CONF="--enable-obsolete-api=glibc --enable-hashes=strong,glibc" - name: "Linux, GCC, bcrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bcrypt" - name: "Linux, GCC, bcrypt_a only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bcrypt_a" - name: "Linux, GCC, bcrypt_x only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bcrypt_x" - name: "Linux, GCC, bcrypt_y only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bcrypt_y" - name: "Linux, GCC, bigcrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bigcrypt" - name: "Linux, GCC, bsdicrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=bsdicrypt" - name: "Linux, GCC, descrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=descrypt" - name: "Linux, GCC, gost-yescrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=gost-yescrypt" - name: "Linux, GCC, md5crypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=md5crypt" - name: "Linux, GCC, nt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=nt" - name: "Linux, GCC, scrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=scrypt" - name: "Linux, GCC, sha1crypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=sha1crypt" - name: "Linux, GCC, sha256crypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=sha256crypt" - name: "Linux, GCC, sha512crypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=sha512crypt" - name: "Linux, GCC, sunmd5 only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=sunmd5" - name: "Linux, GCC, yescrypt only" <<: *linux_gcc env: CONF="--disable-obsolete-api --enable-hashes=yescrypt"