@@ -238,37 +238,24 @@ jobs:
matrix:
vector:
- jobname: linux-clang
- cc: clang
pool: ubuntu-latest
- jobname: linux-sha256
- cc: clang
os: ubuntu
pool: ubuntu-latest
- jobname: linux-gcc
- cc: gcc
- cc_package: gcc-8
pool: ubuntu-latest
- jobname: linux-TEST-vars
- cc: gcc
os: ubuntu
- cc_package: gcc-8
pool: ubuntu-latest
- jobname: osx-clang
- cc: clang
pool: macos-latest
- jobname: osx-gcc
- cc: gcc
- cc_package: gcc-9
pool: macos-latest
- jobname: linux-gcc-default
- cc: gcc
pool: ubuntu-latest
- jobname: linux-leaks
- cc: gcc
pool: ubuntu-latest
env:
- CC: ${{matrix.vector.cc}}
- CC_PACKAGE: ${{matrix.vector.cc_package}}
jobname: ${{matrix.vector.jobname}}
runs_on_pool: ${{matrix.vector.pool}}
runs-on: ${{matrix.vector.pool}}
@@ -9,6 +9,17 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
+CC_PACKAGE=
+BREW_CC_PACKAGE=
+case "$jobname" in
+linux-gcc | linux-TEST-vars)
+ CC_PACKAGE=gcc-8
+ ;;
+osx-gcc)
+ BREW_CC_PACKAGE=gcc@9
+ ;;
+esac
+
case "$runs_on_pool" in
ubuntu-latest)
# The Linux build installs the defined dependency versions below.
@@ -67,11 +78,10 @@ macos-latest)
} ||
brew install homebrew/cask/perforce
- if test -n "$CC_PACKAGE"
+ if test -n "$BREW_CC_PACKAGE"
then
- BREW_PACKAGE=$(echo $CC_PACKAGE | tr '-' '@')
- brew install "$BREW_PACKAGE"
- brew link "$BREW_PACKAGE"
+ brew install "$BREW_CC_PACKAGE"
+ brew link "$BREW_CC_PACKAGE"
fi
;;
esac
@@ -79,6 +79,9 @@ setenv () {
fi
}
+# Clear variables that may come from the outside world.
+CC=
+
# How many jobs to run in parallel?
NPROC=10
@@ -98,8 +101,6 @@ MAKEFLAGS="$MAKEFLAGS SKIP_DASHED_BUILT_INS=$SKIP_DASHED_BUILT_INS"
case "$CI_TYPE" in
github-actions)
- CC="${CC:-gcc}"
-
setenv --test GIT_PROVE_OPTS "--timer --jobs $NPROC"
GIT_TEST_OPTS="--verbose-log -x"
test Windows != "$RUNNER_OS" ||
@@ -171,9 +172,14 @@ vs-test)
setenv --test MAKEFLAGS "$COMMON_MAKEFLAGS"
;;
linux-gcc)
+ CC=gcc
setenv --test GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME main
;;
+linux-gcc-default)
+ CC=gcc
+ ;;
linux-TEST-vars)
+ CC=gcc
setenv --test GIT_TEST_SPLIT_INDEX yes
setenv --test GIT_TEST_MERGE_ALGORITHM recursive
setenv --test GIT_TEST_FULL_IN_PACK_ARRAY true
@@ -188,13 +194,22 @@ linux-TEST-vars)
setenv --test GIT_TEST_WRITE_REV_INDEX 1
setenv --test GIT_TEST_CHECKOUT_WORKERS 2
;;
+osx-gcc)
+ CC=gcc
+ ;;
+osx-clang)
+ CC=clang
+ ;;
linux-clang)
+ CC=clang
setenv --test GIT_TEST_DEFAULT_HASH sha1
;;
linux-sha256)
+ CC=clang
setenv --test GIT_TEST_DEFAULT_HASH sha256
;;
pedantic)
+ CC=gcc
# Don't run the tests; we only care about whether Git can be
# built.
setenv --build DEVOPTS pedantic
@@ -209,9 +224,11 @@ linux-musl)
MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
;;
linux-leaks)
+ CC=gcc
setenv --build SANITIZE leak
setenv --test GIT_TEST_PASSING_SANITIZE_LEAK true
;;
esac
-setenv --build MAKEFLAGS "$MAKEFLAGS CC=${CC:-cc}"
+MAKEFLAGS="$MAKEFLAGS${CC:+ CC=$CC}"
+setenv --build MAKEFLAGS "$MAKEFLAGS"
Rather than pass a "$CC" in the environment to be picked up in ci/lib.sh let's instead have ci/lib.sh itself add it directly to MAKEFLAGS. For "$CC_PACKAGE" its setting and use can stay within ci/install-dependencies.sh. Setting CC=gcc by default made for confusing trace output, and since a preceding change to carry it and others over across "steps" in the GitHub CI it's been even more misleading. E.g. the "win+VS build" job confusingly has CC=gcc set, even though it builds with MSVC. Let's instead rely on the Makefile default of CC=cc, and only override it for those jobs where it's needed. This does mean that we'll need to set it for the "pedantic" job, which previously relied on the default CC=gcc in case "clang" become the default on that platform. This partially reverts my 707d2f2fe86 (CI: use "$runs_on_pool", not "$jobname" to select packages & config, 2021-11-23), i.e. we're now aiming to only set those variables specific jobs need. Since we don't need to make this generic enough to handle "gcc-9" turning into "gcc@9" for "brew install" let's remove what was originally a bash-specific replacement in 707d2f2fe86 (CI: use "$runs_on_pool", not "$jobname" to select packages & config, 2021-11-23), and which a preceding commit changed to a "tr" invocation. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- .github/workflows/main.yml | 13 ------------- ci/install-dependencies.sh | 18 ++++++++++++++---- ci/lib.sh | 23 ++++++++++++++++++++--- 3 files changed, 34 insertions(+), 20 deletions(-)