git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 5/5] travis-ci: build with the right compiler

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jan 17, 2019, 13:44 UTC
Message-ID
<nycvar.QRO.7.76.6.1901171439280.41@tvgsbejvaqbjf.bet>
In-Reply-To
<20190117012913.30562-6-szeder.dev@gmail.com>
Hi Gábor,
On Thu, 17 Jan 2019, SZEDER Gábor wrote:
Show 36 quoted lines
> 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>
Nicely explained and implemented. Thank you!

Apart from the single typo I stumbled over (quite honestly, I do not really care about typos, I just point them out when I see them to beat Eric to it), I have just one more wish: I would *love* to see a Travis run.

Surely you opened a PR at https://github.com/git/git. Oh wait, I can look for it! But no, there does not seem to be one. So probably in your fork, https://github.com/szeder/git. No PRs. Ah, but there are branches! 60 of them. And yes, I guess I found a Travis build:

	https://travis-ci.org/szeder/git/builds/480654256

But no, the associated branch does not look like it reflects this patch series...

In any case, this series is:
	Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Ciao, Dscho

Show 65 quoted lines
> ---
>  ci/install-dependencies.sh |  5 +++++
>  ci/lib-travisci.sh         | 15 ++++++++++++---
>  2 files changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> index 06c3546e1e..dc719876bb 100755
> --- a/ci/install-dependencies.sh
> +++ b/ci/install-dependencies.sh
> @@ -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
> diff --git a/ci/lib-travisci.sh b/ci/lib-travisci.sh
> index 69dff4d1ec..a479613a57 100755
> --- a/ci/lib-travisci.sh
> +++ b/ci/lib-travisci.sh
> @@ -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}"
> -- 
> 2.20.1.499.gf60de1223c
> 
> 
Previous: SZEDER GáborNext: SZEDER Gábor
Message 31 of 33 in “On overriding make variables from the environment...”
  1. SZEDER GáborOct 16, 2018
  2. Jonathan NiederOct 16, 2018
  3. SZEDER GáborOct 16, 2018
  4. Jonathan NiederOct 16, 2018
  5. SZEDER GáborOct 17, 2018
  6. Johannes SchindelinOct 18, 2018
  7. Junio C HamanoOct 18, 2018
  8. 0/5 travis-ci: build with the right compilerSZEDER Gábor, Dec 20, 2018
  9. 1/5 compat/obstack: fix -Wcast-function-type warningsSZEDER Gábor, Dec 20, 2018
  10. Ævar Arnfjörð BjarmasonDec 20, 2018
  11. Junio C HamanoJan 10, 2019
  12. SZEDER GáborJan 11, 2019
  13. Junio C HamanoJan 11, 2019
  14. SZEDER GáborJan 11, 2019
  15. SZEDER GáborJan 15, 2019
  16. Jonathan NiederJan 16, 2019
  17. SZEDER GáborJan 17, 2019
  18. Junio C HamanoJan 16, 2019
  19. 2/5 .gitignore: ignore external debug symbols from GCC on macOSSZEDER Gábor, Dec 20, 2018
  20. 3/5 travis-ci: don't be '--quiet' when running the testsSZEDER Gábor, Dec 20, 2018
  21. 5/5 travis-ci: build with the right compilerSZEDER Gábor, Dec 20, 2018
  22. Johannes SchindelinJan 3, 2019
  23. 4/5 travis-ci: switch to Xcode 10.1 macOS imageSZEDER Gábor, Dec 20, 2018
  24. 0/5 travis-ci: build with the right compilerSZEDER Gábor, Jan 17, 2019
  25. 1/5 compat/obstack: fix -Wcast-function-type warningsSZEDER Gábor, Jan 17, 2019
  26. 2/5 .gitignore: ignore external debug symbols from GCC on macOSSZEDER Gábor, Jan 17, 2019
  27. 3/5 travis-ci: don't be '--quiet' when running the testsSZEDER Gábor, Jan 17, 2019
  28. Johannes SchindelinJan 17, 2019
  29. 4/5 travis-ci: switch to Xcode 10.1 macOS imageSZEDER Gábor, Jan 17, 2019
  30. 5/5 travis-ci: build with the right compilerSZEDER Gábor, Jan 17, 2019
  31. Johannes SchindelinJan 17, 2019
  32. SZEDER GáborJan 17, 2019
  33. Johannes SchindelinJan 18, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.