Skip to content

Commit 2c8921d

Browse files
szedergitster
authored andcommitted
travis-ci: build with the right compiler
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 (522354d (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, 37fa4b3 (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>
1 parent 2000ac9 commit 2c8921d

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

ci/install-dependencies.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ osx-clang|osx-gcc)
4040
brew install git-lfs gettext
4141
brew link --force gettext
4242
brew install caskroom/cask/perforce
43+
case "$jobname" in
44+
osx-gcc)
45+
brew link gcc@8
46+
;;
47+
esac
4348
;;
4449
StaticAnalysis)
4550
sudo apt-get -q update

ci/lib-travisci.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,14 @@ export DEFAULT_TEST_TARGET=prove
9999
export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
100100
export GIT_TEST_OPTS="--verbose-log -x --immediate"
101101
export GIT_TEST_CLONE_2GB=YesPlease
102-
if [ "$jobname" = linux-gcc ]; then
103-
export CC=gcc-8
104-
fi
105102

106103
case "$jobname" in
107104
linux-clang|linux-gcc)
105+
if [ "$jobname" = linux-gcc ]
106+
then
107+
export CC=gcc-8
108+
fi
109+
108110
export GIT_TEST_HTTPD=YesPlease
109111

110112
# The Linux build installs the defined dependency versions below.
@@ -118,6 +120,11 @@ linux-clang|linux-gcc)
118120
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
119121
;;
120122
osx-clang|osx-gcc)
123+
if [ "$jobname" = osx-gcc ]
124+
then
125+
export CC=gcc-8
126+
fi
127+
121128
# t9810 occasionally fails on Travis CI OS X
122129
# t9816 occasionally fails with "TAP out of sequence errors" on
123130
# Travis CI OS X
@@ -127,3 +134,5 @@ GIT_TEST_GETTEXT_POISON)
127134
export GIT_TEST_GETTEXT_POISON=YesPlease
128135
;;
129136
esac
137+
138+
export MAKEFLAGS="CC=${CC:-cc}"

0 commit comments

Comments
 (0)