2 ################################################################################
3 # This file is based on a template used by zproject, but isn't auto-generated. #
4 ################################################################################
17 # Tests for cppunit require C++11 which requires gcc-4.8 or newer.
18 # This is available in either "trusty" or newer distros (e.g. "xenial"
19 # which we also reference explicitly for additional repositories below),
20 # or in "docker" envs.
26 # Common required packages for all common scenarios
27 # Note that YAML lists may be named with & and referenced with * characters;
28 # but without such links, every list is complete and unique (meaning that
29 # matrix special cases define their own settings, not append to common ones).
30 # See https://github.com/travis-ci/travis-ci/issues/3505
33 packages: &deps_driverlibs
37 - libcppunit-subunit-dev
47 - libipmimonitoring-dev
63 # NOTE: Keep the list above in sync with replicas like deps_driverlibs_cross_i386 below
65 # Common settings for jobs in the matrix built below
70 - CI_DEFAULT_HOMEBREW_NO_AUTO_UPDATE=1
71 # By default, avoid updating (including cleaning) osx worker beside what
72 # we require to install, compared to what Travis provides. Technically
73 # we can call master branch builds sometimes to update the workers cache
74 # of packages by manual or timer-driven runs with explicit setting like
75 # HOMEBREW_NO_AUTO_UPDATE=0
77 # Builds with customized setups
78 # Note that doc-related builds take the longest, and Travis CI cloud
79 # runs only a few sub-jobs in parallel, so we want the withdoc and
80 # perhaps spellcheck jobs to start first, and while they are still in
81 # progress, others are spawned and finished - reducing overall job TTL.
82 # Note that the nut-driver-enumerator tests should be tried in at least
83 # the shell interpreters reasonable for default setups of Solaris/illumos
84 # (ksh) and Linux (bash, dash, etc.) common distros.
86 # First pass is a few default compilations that normally happen
87 # early in Travis CI build chain
88 _matrix_required_linux_pass1_quick:
89 include: &_matrix_required_linux_pass1_quick
90 - env: BUILD_TYPE=default-nodoc
97 - env: BUILD_TYPE=default-spellcheck
101 packages: &deps_aspell
105 - env: BUILD_TYPE=default
112 - env: BUILD_TYPE=default-tgt:distcheck-light
119 # Second pass is a number of shell script syntax checks in standard env:
120 _matrix_required_linux_pass2_shell:
121 include: &_matrix_required_linux_pass2_shell
122 - env: BUILD_TYPE=default-shellcheck
131 - env: BUILD_TYPE=nut-driver-enumerator-test SHELL_PROGS=bash
139 - env: BUILD_TYPE=nut-driver-enumerator-test SHELL_PROGS=ksh
147 - env: BUILD_TYPE=nut-driver-enumerator-test SHELL_PROGS=dash
155 - env: BUILD_TYPE=nut-driver-enumerator-test SHELL_PROGS=ash
164 # Third pass is a number of larger builds that confirm non-core code is clean:
165 _matrix_required_linux_pass3_large:
166 include: &_matrix_required_linux_pass3_large
167 - env: BUILD_TYPE=default-tgt:distcheck-valgrind
178 - env: BUILD_TYPE=default-withdoc
182 packages: &deps_gendocs
191 - env: BUILD_TYPE=default-alldrv
202 - BUILD_TYPE=default-tgt:distcheck-light
211 # Re-run the build of all binaries we can make, with
212 # varied compiler and C/C++ standard implementations
213 # and different lenience against warnings. Many of
214 # these blocks look similar and all should have unique
215 # "env" field to use some with allowed_failure below.
216 # For a list of standards supported, see:
217 # https://gcc.gnu.org/onlinedocs/gcc/Standards.html
218 # https://gcc.gnu.org/projects/cxx-status.html
219 # https://clang.llvm.org/cxx_status.html
220 # Note that while there is C++14 there is no C14:
221 # https://en.wikipedia.org/wiki/C_(programming_language)#History
223 # The leading NUT_MATRIX_TAG allows humans to understand
224 # what a test case is about in Travis CI dashboard table
225 # of jobs, but otherwise it is not used by script code.
227 # Note that passing multi-token C*FLAGS may be problematic
228 # for sub-makes like distcheck; verify thoroughly before
229 # trying to enable those if that would make sense anytime.
231 # Ordered by variants expected to succeed to run first,
232 # although with current Travis CI implementation, the env
233 # blocks listed in allowed_failures only run after all
234 # those not listed. Jobs which currently fail until code
235 # gets fixed are conditional with "if: branch =~ fightwarn"
236 # so users (and NUT upstream) can define a branch with a
237 # name containing this keyword to work on bug fixes, but by
238 # default the main development would not bother Travis CI
239 # to waste resources in vain.
242 _matrix_linux_gnustd_nowarn:
243 include: &_matrix_linux_gnustd_nowarn
244 - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
255 - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7
264 - ubuntu-toolchain-r-test
270 - env: NUT_MATRIX_TAG="gnu11-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu11" CXXFLAGS="-std=gnu++11" CC=gcc-7 CXX=g++-7
279 - ubuntu-toolchain-r-test
285 - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
294 - ubuntu-toolchain-r-test
300 - env: NUT_MATRIX_TAG="gnu99-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang-5.0 CXX=clang++-5.0
310 - llvm-toolchain-xenial-5.0
316 - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
326 - llvm-toolchain-xenial-8
332 # Note: some of the warnings that are hidden in this case seem to be serious
333 # issues that may impact viability of binaries built by C89 mode compilers!
334 - env: NUT_MATRIX_TAG="gnu89-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu89" CXXFLAGS="-std=gnu++89"
345 # Make sure we don't assume "long int" is a "int64_t" and so on
346 # Seems we'd have to use tricks like 32-bit docker in 64-bit VM per
347 # https://stackoverflow.com/questions/29361465/request-for-32bit-travis-build-machine
348 # https://github.com/travis-ci/travis-ci/issues/5770#issuecomment-197771661
350 # script: "docker run -i -v \"${PWD}:/MyProgram\" toopher/centos-i386:centos6 /bin/bash -c \"linux32 --32bit i386 /MyProgram/build.sh\""
351 _matrix_linux_gnustd_nowarn_x86_32bit:
352 include: &_matrix_linux_gnustd_nowarn_x86_32bit
353 - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-x86-32bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99 -m32" CXXFLAGS="-std=gnu++99 -m32" CPPFLAGS="-m32" LDFLAGS="-m32"
357 # Perl is packaged poorly for multiarch, across several distro releases:
358 # https://bugs.launchpad.net/ubuntu/+source/pkgbinarymangler/+bug/1574351
359 # NOTE: According to https://docs.travis-ci.com/user/job-lifecycle/ the
360 # before_install phase happens AFTER addons/apt processing! So we install
361 # that big list first (except pkg's that pull perl) and add them later.
363 # - sudo dpkg --add-architecture i386 && sudo apt-get update ; yes | sudo apt-get install -y --force-yes libperl5.22:i386 || true ; sudo rm -f /usr/share/doc/libperl5.22/changelog.Debian.gz ; yes | sudo apt-get install -y --force-yes libperl5.22
369 packages: &deps_driverlibs_cross_i386
374 - libcppunit-dev:i386
375 - libcppunit-subunit-dev:i386
380 #MISSING:i386? hdr only?# - libi2c-dev:i386
383 - liblua5.1-0-dev:i386
384 #PULLSPERL# - libsnmp-dev:i386
385 - libfreeipmi-dev:i386
386 - libipmimonitoring-dev:i386
388 - linux-libc-dev:i386
389 - libpowerman0-dev:i386
390 - libavahi-common-dev:i386
391 - libavahi-core-dev:i386
392 - libavahi-client-dev:i386
393 - libgd2-xpm-dev:i386
396 - libfreetype6-dev:i386
402 # See comments above about perl
403 before_install: &before_install_x86_32bit
404 - sudo dpkg --add-architecture i386 && sudo apt-get update
405 - yes | sudo apt-get install -y --force-yes libperl5.22 || true
406 - sudo rm -f /usr/share/doc/libperl5.22/changelog.Debian.gz
407 - yes | sudo apt-get install -f
408 - yes | sudo apt-get install -y --force-yes libperl5.22:i386
409 - yes | sudo apt-get install -y --force-yes libsnmp-dev:i386
410 - yes | sudo apt-get remove -y --force-yes libfreetype6:amd64 || true
411 - yes | sudo apt-get remove -y --force-yes libltdl7:amd64 || true
413 - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-x86-32bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17 -m32" CXXFLAGS="-std=gnu++17 -m32" CPPFLAGS="-m32" LDFLAGS="-m32" CC=clang-8 CXX=clang++-8
419 - *before_install_x86_32bit
420 # - sudo dpkg --add-architecture i386 && sudo apt-get update
421 # - yes | sudo apt-get install -y --force-yes libperl5.22 || true
422 # - sudo rm -f /usr/share/doc/libperl5.22/changelog.Debian.gz
423 # - sudo apt-get install -f
424 # - yes | apt-get install -y --force-yes libperl5.22:i386
431 - llvm-toolchain-xenial-8
435 - *deps_driverlibs_cross_i386
437 # Try s390x builds to check for issues with endianness
438 # (it is one current Travis offer with BigEndian CPUs)
439 _matrix_linux_gnustd_nowarn_s390x_64bit_viable:
440 include: &_matrix_linux_gnustd_nowarn_s390x_64bit_viable
441 - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
454 - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
464 - ubuntu-toolchain-r-test
471 - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
479 if: branch =~ fightwarn
483 - llvm-toolchain-xenial-8
490 _matrix_linux_gnustd_nowarn_s390x_64bit_fatal:
491 include: &_matrix_linux_gnustd_nowarn_s390x_64bit_fatal
492 - env: NUT_MATRIX_TAG="gnu17-clang-8-warn-s390x-64bit" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
500 if: branch =~ fightwarn
504 - llvm-toolchain-xenial-8
511 # Try ARM builds to check for issues with non-x86 CPUs
512 _matrix_linux_gnustd_nowarn_arm_64bit_viable:
513 include: &_matrix_linux_gnustd_nowarn_arm_64bit_viable
514 - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
526 - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
536 - ubuntu-toolchain-r-test
542 _matrix_linux_gnustd_nowarn_arm_64bit_fatal:
543 include: &_matrix_linux_gnustd_nowarn_arm_64bit_fatal
544 - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
552 if: branch =~ fightwarn
556 - llvm-toolchain-xenial-8
562 # At this time, anything with strict C standard fails on Linux, even "nowarn" cases:
563 _matrix_linux_cstd_nowarn:
564 include: &_matrix_linux_cstd_nowarn
565 - env: NUT_MATRIX_TAG="c99-clang-3.5-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-3.5 CXX=clang++-3.5
572 if: branch =~ fightwarn
576 - llvm-toolchain-xenial-3.5
582 - env: NUT_MATRIX_TAG="c99-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-5.0 CXX=clang++-5.0
589 if: branch =~ fightwarn
593 - llvm-toolchain-xenial-5.0
599 - env: NUT_MATRIX_TAG="c11-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang-5.0 CXX=clang++-5.0
606 if: branch =~ fightwarn
610 - llvm-toolchain-xenial-5.0
616 - env: NUT_MATRIX_TAG="c17-clang-8-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang-8 CXX=clang++-8
623 if: branch =~ fightwarn
627 - llvm-toolchain-xenial-8
633 # Stuff with warnings made fatal... and codebase got good enough to survive!
634 _matrix_linux_gnustd_warn_viable:
635 include: &_matrix_linux_gnustd_warn_viable
636 - env: NUT_MATRIX_TAG="cDefault-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard
642 if: branch =~ fightwarn
648 - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
654 if: branch =~ fightwarn
660 - env: NUT_MATRIX_TAG="gnu11-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu11" CXXFLAGS="-std=gnu++11"
666 if: branch =~ fightwarn
672 - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7
678 if: branch =~ fightwarn
682 - ubuntu-toolchain-r-test
688 - env: NUT_MATRIX_TAG="gnu17-gcc-9-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
694 if: branch =~ fightwarn
698 - ubuntu-toolchain-r-test
704 # Stuff with warnings made fatal... well, is usually fatal so far:
705 _matrix_linux_gnustd_warn_fatal:
706 include: &_matrix_linux_gnustd_warn_fatal
707 # Note: Fixing these would make NUT viable again on platforms with only ANSI C!
708 - env: NUT_MATRIX_TAG="gnu89-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu89" CXXFLAGS="-std=gnu++89"
714 if: branch =~ fightwarn
720 # The hardest of two worlds: both strict C standards on Linux and fatal warnings:
721 _matrix_linux_cstd_warn:
722 include: &_matrix_linux_cstd_warn
723 - env: NUT_MATRIX_TAG="c99-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++98"
729 if: branch =~ fightwarn
735 - env: NUT_MATRIX_TAG="c99-clang-5.0-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-5.0 CXX=clang++-5.0
742 if: branch =~ fightwarn
746 - llvm-toolchain-xenial-5.0
752 - env: NUT_MATRIX_TAG="c11-clang-5.0-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang-5.0 CXX=clang++-5.0
759 if: branch =~ fightwarn
763 - llvm-toolchain-xenial-5.0
769 - env: NUT_MATRIX_TAG="c17-clang-8-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang-8 CXX=clang++-8
776 if: branch =~ fightwarn
780 - llvm-toolchain-xenial-8
786 - env: NUT_MATRIX_TAG="c11-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11"
792 if: branch =~ fightwarn
798 - env: NUT_MATRIX_TAG="c89-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c89" CXXFLAGS="-std=c++89"
804 if: branch =~ fightwarn
810 _matrix_freebsd_gnustd_nowarn:
811 include: &_matrix_freebsd_gnustd_nowarn
812 - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc CXX=g++
820 - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
828 - env: NUT_MATRIX_TAG="gnu17-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++
836 - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
844 _matrix_freebsd_gnustd_warn_viable:
845 include: &_matrix_freebsd_gnustd_warn_viable
846 - env: NUT_MATRIX_TAG="gnu99-gcc-default-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc CXX=g++
850 if: branch =~ fightwarn
855 - env: NUT_MATRIX_TAG="gnu17-gcc-default-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++
859 if: branch =~ fightwarn
864 _matrix_freebsd_gnustd_warn_fatal:
865 include: &_matrix_freebsd_gnustd_warn_fatal
866 - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
870 if: branch =~ fightwarn
875 - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
879 if: branch =~ fightwarn
885 # Try also a range of platforms for MacOS X builds
886 # Inspired by https://github.com/taocpp/operators/blob/master/.travis.yml
887 _matrix_osx_gnustd_nowarn:
888 include: &_matrix_osx_gnustd_nowarn
889 - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
895 - $HOME/Library/Caches/Homebrew
898 - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
904 - $HOME/Library/Caches/Homebrew
907 - env: NUT_MATRIX_TAG="gnu99-clang-xcode7.3-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
913 - $HOME/Library/Caches/Homebrew
916 _matrix_osx_gnustd_warn:
917 include: &_matrix_osx_gnustd_warn
918 - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
922 if: branch =~ fightwarn
925 - $HOME/Library/Caches/Homebrew
928 - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
932 if: branch =~ fightwarn
935 - $HOME/Library/Caches/Homebrew
938 _matrix_osx_cstd_nowarn:
939 include: &_matrix_osx_cstd_nowarn
940 - env: NUT_MATRIX_TAG="c99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
944 if: branch =~ fightwarn
947 - $HOME/Library/Caches/Homebrew
950 - env: NUT_MATRIX_TAG="c17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang CXX=clang++
954 if: branch =~ fightwarn
957 - $HOME/Library/Caches/Homebrew
960 _matrix_osx_cstd_warn:
961 include: &_matrix_osx_cstd_warn
962 - env: NUT_MATRIX_TAG="c99-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
966 if: branch =~ fightwarn
969 - $HOME/Library/Caches/Homebrew
972 - env: NUT_MATRIX_TAG="c17-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang CXX=clang++
976 if: branch =~ fightwarn
979 - $HOME/Library/Caches/Homebrew
982 - env: NUT_MATRIX_TAG="c11-clang-xcode7.3-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang CXX=clang++
986 if: branch =~ fightwarn
989 - $HOME/Library/Caches/Homebrew
992 # Try also a build on Windows to see our horizons
993 # https://docs.travis-ci.com/user/reference/windows/
994 # says we have clang-9 there by default (and there is
995 # a complex routine to add gcc if we'd need that)
996 # and a Git Bash as default shell, but no ccache.
997 # TODO: Eventually try native visualstudio compilers?
998 _matrix_windows_gnustd_nowarn:
999 include: &_matrix_windows_gnustd_nowarn
1000 - env: NUT_MATRIX_TAG="gnu99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1003 if: branch =~ fightwarn
1006 - $HOME/AppData/Local/Temp/chocolatey
1010 _matrix_windows_gnustd_warn:
1011 include: &_matrix_windows_gnustd_warn
1012 - env: NUT_MATRIX_TAG="gnu99-clang-win-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1015 if: branch =~ fightwarn
1018 - $HOME/AppData/Local/Temp/chocolatey
1022 _matrix_windows_cstd_nowarn:
1023 include: &_matrix_windows_cstd_nowarn
1024 - env: NUT_MATRIX_TAG="c99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1027 if: branch =~ fightwarn
1030 - $HOME/AppData/Local/Temp/chocolatey
1034 _matrix_windows_cstd_warn:
1035 include: &_matrix_windows_cstd_warn
1036 - env: NUT_MATRIX_TAG="c99-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1039 if: branch =~ fightwarn
1042 - $HOME/AppData/Local/Temp/chocolatey
1046 # Incidentally, this is one platform we know to have clang-9,
1047 # the version which has (at least partial) C++20 support
1048 - env: NUT_MATRIX_TAG="c20-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c20" CXXFLAGS="-std=c++20" CC=clang CXX=clang++
1051 if: branch =~ fightwarn
1054 - $HOME/AppData/Local/Temp/chocolatey
1058 ###################################################################################
1059 # Summarize the matrix blocks above to quickly enable/disable subsets
1060 # of tests in development (e.g. to focus on fixing bugs and not wasting
1061 # resources on rebuilding green codebase over and over)
1063 # The original set of tests that are required for master branch CI
1064 # ...and also the set of builds with various compilers and C standards
1065 # that should survive at least without warnings made fatal...
1066 _matrix_required_linux:
1067 include: &_matrix_required_linux
1068 - *_matrix_required_linux_pass1_quick
1069 - *_matrix_required_linux_pass2_shell
1070 - *_matrix_required_linux_pass3_large
1071 - *_matrix_linux_gnustd_warn_viable
1072 - *_matrix_linux_gnustd_nowarn
1073 - *_matrix_linux_gnustd_nowarn_x86_32bit
1074 - *_matrix_linux_gnustd_nowarn_arm_64bit_viable
1075 - *_matrix_linux_gnustd_nowarn_s390x_64bit_viable
1077 _matrix_linux_gnustd_warn:
1078 include: &_matrix_linux_gnustd_warn
1079 - *_matrix_linux_gnustd_warn_viable
1080 - *_matrix_linux_gnustd_warn_fatal
1082 _matrix_allowfail_linux:
1083 include: &_matrix_allowfail_linux
1084 - *_matrix_linux_cstd_nowarn
1085 - *_matrix_linux_gnustd_warn_fatal
1086 - *_matrix_linux_cstd_warn
1087 - *_matrix_linux_gnustd_nowarn_arm_64bit_fatal
1088 - *_matrix_linux_gnustd_nowarn_s390x_64bit_fatal
1090 _matrix_linux_gnustd_nowarn_arm_64bit:
1091 include: &_matrix_linux_gnustd_nowarn_arm_64bit
1092 - *_matrix_linux_gnustd_nowarn_arm_64bit_viable
1093 - *_matrix_linux_gnustd_nowarn_arm_64bit_fatal
1096 include: &_matrix_linux_arm
1097 - *_matrix_linux_gnustd_nowarn_arm_64bit
1099 _matrix_linux_gnustd_nowarn_s390x_64bit:
1100 include: &_matrix_linux_gnustd_nowarn_s390x_64bit
1101 - *_matrix_linux_gnustd_nowarn_s390x_64bit_viable
1102 - *_matrix_linux_gnustd_nowarn_s390x_64bit_fatal
1104 _matrix_linux_s390x:
1105 include: &_matrix_linux_s390x
1106 - *_matrix_linux_gnustd_nowarn_s390x_64bit
1109 include: &_matrix_linux
1110 - *_matrix_required_linux
1111 - *_matrix_allowfail_linux
1114 include: &_matrix_freebsd
1115 - *_matrix_freebsd_gnustd_nowarn
1116 - *_matrix_freebsd_gnustd_warn
1118 _matrix_freebsd_gnustd_warn:
1119 include: &_matrix_freebsd_gnustd_warn
1120 - *_matrix_freebsd_gnustd_warn_viable
1121 - *_matrix_freebsd_gnustd_warn_fatal
1123 _matrix_required_freebsd:
1124 include: &_matrix_required_freebsd
1125 - *_matrix_freebsd_gnustd_nowarn
1126 - *_matrix_freebsd_gnustd_warn_viable
1128 _matrix_allowfail_freebsd:
1129 include: &_matrix_allowfail_freebsd
1130 - *_matrix_freebsd_gnustd_warn_fatal
1132 _matrix_allowfail_osx:
1133 include: &_matrix_allowfail_osx
1134 - *_matrix_osx_cstd_nowarn
1135 - *_matrix_osx_gnustd_warn
1136 - *_matrix_osx_cstd_warn
1138 _matrix_required_osx:
1139 include: &_matrix_required_osx
1140 - *_matrix_osx_gnustd_nowarn
1143 include: &_matrix_osx
1144 - *_matrix_required_osx
1145 - *_matrix_allowfail_osx
1147 # Nothing this good yet
1148 #_matrix_required_windows:
1149 # include: &_matrix_required_windows
1151 _matrix_allowfail_windows:
1152 include: &_matrix_allowfail_windows
1153 - *_matrix_windows_gnustd_nowarn
1154 - *_matrix_windows_gnustd_warn
1155 - *_matrix_windows_cstd_nowarn
1156 - *_matrix_windows_cstd_warn
1159 include: &_matrix_windows
1160 # - *_matrix_required_windows
1161 - *_matrix_allowfail_windows
1163 # Different dissections of interest to fixers:
1164 _matrix_cstd_nowarn:
1165 include: &_matrix_cstd_nowarn
1166 - *_matrix_linux_cstd_nowarn
1167 - *_matrix_osx_cstd_nowarn
1168 - *_matrix_windows_cstd_nowarn
1170 _matrix_gnustd_nowarn:
1171 include: &_matrix_gnustd_nowarn
1172 - *_matrix_osx_gnustd_nowarn
1173 - *_matrix_linux_gnustd_nowarn
1174 - *_matrix_freebsd_gnustd_nowarn
1175 # -*_matrix_windows_gnustd_nowarn
1176 - *_matrix_linux_gnustd_nowarn_x86_32bit
1177 - *_matrix_linux_gnustd_nowarn_arm_64bit_viable
1178 - *_matrix_linux_gnustd_nowarn_arm_64bit_fatal
1179 - *_matrix_linux_gnustd_nowarn_s390x_64bit_viable
1180 - *_matrix_linux_gnustd_nowarn_s390x_64bit_fatal
1183 include: &_matrix_warn
1184 - *_matrix_linux_gnustd_warn
1185 - *_matrix_linux_cstd_warn
1186 - *_matrix_freebsd_gnustd_warn
1187 - *_matrix_osx_gnustd_warn
1188 - *_matrix_osx_cstd_warn
1189 - *_matrix_windows_gnustd_warn
1190 - *_matrix_windows_cstd_warn
1192 # Default "jobs:" matrix should reference at least this for master branches
1194 include: &_matrix_required
1195 - *_matrix_required_linux
1196 - *_matrix_required_freebsd
1197 - *_matrix_required_osx
1198 # - *_matrix_required_windows
1201 include: &_matrix_all
1208 include: &_matrix_master
1210 ### Enabled for branches with names containing "fightwarn" to perform
1211 ### builds that intend to actively fix the issues which preclude the
1212 ### following items from becoming green:
1213 - *_matrix_allowfail_linux
1214 - *_matrix_allowfail_osx
1215 - *_matrix_allowfail_freebsd
1219 include: &_matrix_fixbugs
1220 - *_matrix_cstd_nowarn
1223 ###################################################################################
1224 # Developers can import some of the definitions above (e.g. _matrix-fixbugs
1225 # instead of _matrix-master) to get more relevant runs of Travis CI against
1226 # their branches for their iterations trying to fix stuff.
1228 # DO NOT COMMIT TO MASTER BRANCH TEST-MATRICES THAT ARE NOT _matrix-master!
1230 # These days, "jobs" and "matrix" (Travis keywords) are same thing... at least,
1231 # ours is an explicit list.
1232 # By "fast_finish" we allow to assign a verdict based on completion of required
1233 # test cases. The "allow_failures" will proceed to run for our information
1234 # but should not block nor delay PR considerations etc.
1240 ###################################################################################
1241 # Note: "env" lines below must exactly describe a matrix option defined above
1245 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
1246 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7
1247 #OK# - env: NUT_MATRIX_TAG="gnu11-gcc-7-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu11" CXXFLAGS="-std=gnu++11" CC=gcc-7 CXX=g++-7
1248 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
1249 #OK# - env: NUT_MATRIX_TAG="gnu99-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang-5.0 CXX=clang++-5.0
1250 #OK# - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
1251 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-9-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
1252 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-x86-32bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99 -m32" CXXFLAGS="-std=gnu++99 -m32" CPPFLAGS="-m32" LDFLAGS="-m32"
1253 #OK# - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-x86-32bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17 -m32" CXXFLAGS="-std=gnu++17 -m32" CPPFLAGS="-m32" LDFLAGS="-m32" CC=clang-8 CXX=clang++-8
1254 - env: NUT_MATRIX_TAG="c99-clang-3.5-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-3.5 CXX=clang++-3.5
1255 - env: NUT_MATRIX_TAG="c99-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-5.0 CXX=clang++-5.0
1256 - env: NUT_MATRIX_TAG="c11-clang-5.0-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang-5.0 CXX=clang++-5.0
1257 - env: NUT_MATRIX_TAG="c17-clang-8-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang-8 CXX=clang++-8
1258 - env: NUT_MATRIX_TAG="c17-clang-8-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang-8 CXX=clang++-8
1259 #OK# - env: NUT_MATRIX_TAG="cDefault-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard
1260 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
1261 - env: NUT_MATRIX_TAG="c99-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++98"
1262 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-7-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc-7 CXX=g++-7
1263 - env: NUT_MATRIX_TAG="c99-clang-5.0-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang-5.0 CXX=clang++-5.0
1264 - env: NUT_MATRIX_TAG="c11-clang-5.0-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang-5.0 CXX=clang++-5.0
1265 - env: NUT_MATRIX_TAG="c11-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11"
1266 #OK# - env: NUT_MATRIX_TAG="gnu11-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu11" CXXFLAGS="-std=gnu++11"
1267 #OK# - env: NUT_MATRIX_TAG="gnu89-gcc-default-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu89" CXXFLAGS="-std=gnu++89"
1268 - env: NUT_MATRIX_TAG="c89-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c89" CXXFLAGS="-std=c++89"
1269 - env: NUT_MATRIX_TAG="gnu89-gcc-default-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu89" CXXFLAGS="-std=gnu++89"
1271 ### Linux on s390x (BigEndian)
1272 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
1273 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
1274 #OK# - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-s390x-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
1275 - env: NUT_MATRIX_TAG="gnu17-clang-8-warn-s390x-64bit" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
1278 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98"
1279 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-9-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc-9 CXX=g++-9
1280 - env: NUT_MATRIX_TAG="gnu17-clang-8-nowarn-ARM-64bit" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang-8 CXX=clang++-8
1282 ### FreeBSD on x86_64
1283 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc CXX=g++
1284 #OK# - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1285 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++
1286 #OK# - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
1287 #OK# - env: NUT_MATRIX_TAG="gnu99-gcc-default-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++98" CC=gcc CXX=g++
1288 #OK# - env: NUT_MATRIX_TAG="gnu17-gcc-default-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=gcc CXX=g++
1289 - env: NUT_MATRIX_TAG="gnu99-clang-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1290 - env: NUT_MATRIX_TAG="gnu17-clang-freebsd-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
1293 #OK# - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1294 #OK# - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
1295 #OK# - env: NUT_MATRIX_TAG="gnu99-clang-xcode7.3-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1296 - env: NUT_MATRIX_TAG="gnu99-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1297 - env: NUT_MATRIX_TAG="gnu17-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=gnu17" CXXFLAGS="-std=gnu++17" CC=clang CXX=clang++
1298 - env: NUT_MATRIX_TAG="c99-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1299 - env: NUT_MATRIX_TAG="c99-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1300 - env: NUT_MATRIX_TAG="c17-clang-xcode10.2-nowarn" BUILD_TYPE=default-all-errors CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang CXX=clang++
1301 - env: NUT_MATRIX_TAG="c17-clang-xcode10.2-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c17" CXXFLAGS="-std=c++17" CC=clang CXX=clang++
1302 - env: NUT_MATRIX_TAG="c11-clang-xcode7.3-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c11" CXXFLAGS="-std=c++11" CC=clang CXX=clang++
1304 ### windows on x86_64
1305 - env: NUT_MATRIX_TAG="gnu99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=gnu99" CXXFLAGS="-std=gnu++99" CC=clang CXX=clang++
1306 - env: NUT_MATRIX_TAG="gnu99-clang-win-warn" BUILD_TYPE=default-all-errors BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1307 - env: NUT_MATRIX_TAG="c99-clang-win-nowarn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1308 - env: NUT_MATRIX_TAG="c99-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c99" CXXFLAGS="-std=c++99" CC=clang CXX=clang++
1309 - env: NUT_MATRIX_TAG="c20-clang-win-warn" BUILD_TYPE=default-all-errors CPPFLAGS="-fms-extensions" BUILD_WARNFATAL=yes BUILD_WARNOPT=hard CFLAGS="-std=c20" CXXFLAGS="-std=c++20" CC=clang CXX=clang++
1313 if [ $TRAVIS_OS_NAME = "osx" ] ; then
1314 [ -n "$HOMEBREW_NO_AUTO_UPDATE" ] || HOMEBREW_NO_AUTO_UPDATE="$CI_DEFAULT_HOMEBREW_NO_AUTO_UPDATE"
1315 if [ "$HOMEBREW_NO_AUTO_UPDATE" = 1 ] ; then
1316 echo "NOT CALLING 'brew update' as it takes too long and cleans up preinstalled env"
1317 export HOMEBREW_NO_AUTO_UPDATE
1319 unset HOMEBREW_NO_AUTO_UPDATE
1322 brew install binutils ccache gd
1323 if [ "$BUILD_TYPE" = default-withdoc ] ; then
1324 brew install asciidoc docbook-xsl
1325 XML_CATALOG_FILES=/usr/local/etc/xml/catalog
1326 export XML_CATALOG_FILES
1330 # Please forgive the funny syntax below to dance around
1331 # both YAML escaping and windows-acceptable shell syntax
1333 if [[ $TRAVIS_OS_NAME == "windows" ]] ; then
1334 if [[ ! -s C:/tools/cygwin/bin/autoreconf.exe ]] ; then
1335 if [[ ! -s C:/tools/cygwin/bin/autoreconf ]] ; then
1336 choco install cygwin
1337 C:\\tools\\cygwin\\cygwinsetup.exe -q -P make,unzip,automake,autoconf,zip
1340 if [[ ! -s C:/tools/bin/ccache.exe ]] ; then
1341 mkdir -p C:/tools/bin/
1342 pushd C:/tools/bin/ || exit
1343 wget https://github.com/ccache/ccache/releases/download/v3.7.12/ccache-3.7.12-windows-64.zip || exit
1344 7z e -y ccache-3.7.12-windows-64.zip || exit
1345 rm -f ccache-3.7.12-windows-64.zip
1348 export PATH=/C/tools/bin:/cygdrive/c/tools/bin:$PATH:/C/tools/cygwin/bin:/cygdrive/c/tools/cygwin/bin
1356 if ! setfacl -f /tmp/faclx /cygdrive/c/tools/cygwin/*bin/* ; then
1357 setfacl -f /tmp/faclx /C/tools/cygwin/*bin/*
1360 - if [ "$TRAVIS_OS_NAME" = "freebsd" ] ; then sudo pkg install -y libgd ; fi
1361 - if [ -n "${NUT_MATRIX_TAG}" ] ; then export CFLAGS CXXFLAGS ; [ -z "$CC" ] || export CC ; [ -z "$CXX" ] || export CXX ; fi
1363 # Hand off to generated script for each BUILD_TYPE
1364 script: ./ci_build.sh