]> git.ipfire.org Git - thirdparty/git.git/commitdiff
travis-ci: build with the right compiler
authorSZEDER Gábor <szeder.dev@gmail.com>
Thu, 17 Jan 2019 01:29:13 +0000 (02:29 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 17 Jan 2019 19:14:45 +0000 (11:14 -0800)
Our 'Makefile' hardcodes the compiler to build Git as 'CC = cc'.  This
CC variable can be overridden from the command line, i.e. 'make
CC=gcc-X.Y' will build with that particular GCC version, but not from
the environment, i.e. 'CC=gcc-X.Y make' will still build with whatever
'cc' happens to be on the platform.

Our build jobs on Travis CI are badly affected by this.  In the build
matrix we have dedicated build jobs to build Git with GCC and Clang
both on Linux and macOS from the very beginning (522354d70f (Add
Travis CI support, 2015-11-27)).  Alas, this never really worked as
supposed to, because Travis CI specifies the compiler for those build
jobs as 'export CC=gcc' and 'export CC=clang' (which works fine for
projects built with './configure && make').  Consequently, our
'linux-clang' build job has always used GCC, because that's where 'cc'
points at in Travis CI's Linux images, while the 'osx-gcc' build job
has always used Clang.  Furthermore, 37fa4b3c78 (travis-ci: run gcc-8
on linux-gcc jobs, 2018-05-19) added an 'export CC=gcc-8' in an
attempt to build with a more modern compiler, but to no avail.

Set MAKEFLAGS with CC based on the $CC environment variable, so 'make'
will run the "right" compiler.  The Xcode 10.1 macOS image on Travis
CI already contains the gcc@8 package from Homebrew, but we have to
'brew link' it first to be able to use it.

So with this patch our build jobs will build Git with the following
compiler versions:

  linux-clang: clang version 5.0.0 (tags/RELEASE_500/final)
  linux-gcc:   gcc-8 (Ubuntu 8.1.0-5ubuntu1~14.04) 8.1.0

  osx-clang: Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  osx-gcc:   gcc-8 (Homebrew GCC 8.2.0) 8.2.0

  GETTEXT_POISON: gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ci/install-dependencies.sh
ci/lib-travisci.sh

index 06c3546e1ed4e1a78cea4d7a1801145066a895d8..dc719876bb12309c086952d275085d8d3d0690e6 100755 (executable)
@@ -40,6 +40,11 @@ osx-clang|osx-gcc)
        brew install git-lfs gettext
        brew link --force gettext
        brew install caskroom/cask/perforce
+       case "$jobname" in
+       osx-gcc)
+               brew link gcc@8
+               ;;
+       esac
        ;;
 StaticAnalysis)
        sudo apt-get -q update
index 69dff4d1ecb4b21c32f8127d78a87a925e9390c5..a479613a5748858774994f67fdcd29600b95d1ba 100755 (executable)
@@ -99,12 +99,14 @@ export DEFAULT_TEST_TARGET=prove
 export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
 export GIT_TEST_OPTS="--verbose-log -x --immediate"
 export GIT_TEST_CLONE_2GB=YesPlease
-if [ "$jobname" = linux-gcc ]; then
-       export CC=gcc-8
-fi
 
 case "$jobname" in
 linux-clang|linux-gcc)
+       if [ "$jobname" = linux-gcc ]
+       then
+               export CC=gcc-8
+       fi
+
        export GIT_TEST_HTTPD=YesPlease
 
        # The Linux build installs the defined dependency versions below.
@@ -118,6 +120,11 @@ linux-clang|linux-gcc)
        export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
        ;;
 osx-clang|osx-gcc)
+       if [ "$jobname" = osx-gcc ]
+       then
+               export CC=gcc-8
+       fi
+
        # t9810 occasionally fails on Travis CI OS X
        # t9816 occasionally fails with "TAP out of sequence errors" on
        # Travis CI OS X
@@ -127,3 +134,5 @@ GIT_TEST_GETTEXT_POISON)
        export GIT_TEST_GETTEXT_POISON=YesPlease
        ;;
 esac
+
+export MAKEFLAGS="CC=${CC:-cc}"