Subject: Re: [PATCH/RFC 3/3] ci: run a pedantic build as part of the GitHub workflow

From: Junio C Hamano <[email-masked]>
Date: Tue, 10 Aug 2021 11:25:42 -0700

Phillip Wood <[email-masked]> writes:

> I think there is value in running the CI jobs with -Wpedantic
> otherwise we'll continually fixing patches up after they've been
> merged, I just wonder if we need a separate job to do it.

Seeing https://github.com/git/git/actions/runs/1114402527 for
example, I notice that we run three dockerized jobs and this one
takes about 3 minutes to compile everything.  The other two take
about 9 minutes and compile and run tests.

Shouldn't we be running tests in this job, too?  I know the new
comment in ci/run-build-and-tests.sh says "Don't run the tests; we
only care about ...", but I do not see a reason to declare that we
do not care if the resulting binary passes the tests or not.

It also seems that the environment does not have an access to any
working "git" binary and "save_good_tree" helper seems to fail
because of it.

https://github.com/git/git/runs/3284998605?check_suite_focus=true#step:5:692

I wonder if this untested patch on top of the patch under discussion
is sufficient, if we wanted to also run tests on the fedora image?

diff --git c/ci/install-docker-dependencies.sh w/ci/install-docker-dependencies.sh
index 07a8c6b199..f139c0632b 100755
--- c/ci/install-docker-dependencies.sh
+++ w/ci/install-docker-dependencies.sh
@@ -17,6 +17,8 @@ linux-musl)
 	;;
 pedantic)
 	dnf -yq update >/dev/null &&
-	dnf -yq install make gcc findutils diffutils perl python3 gettext zlib-devel expat-devel openssl-devel curl-devel pcre2-devel >/dev/null
+	dnf -yq install git make gcc findutils diffutils perl python3 \
+		gettext zlib-devel expat-devel openssl-devel \
+		curl-devel pcre2-devel >/dev/null
 	;;
 esac
diff --git c/ci/run-build-and-tests.sh w/ci/run-build-and-tests.sh
index f3aba5d6cb..5b2fcf3428 100755
--- c/ci/run-build-and-tests.sh
+++ w/ci/run-build-and-tests.sh
@@ -40,9 +40,10 @@ linux-clang)
 	export GIT_TEST_DEFAULT_HASH=sha256
 	make test
 	;;
-linux-gcc-4.8|pedantic)
+linux-gcc-4.8)
 	# Don't run the tests; we only care about whether Git can be
-	# built with GCC 4.8 or with pedantic
+	# built with GCC 4.8, as it errors out on some undesired (C99)
+	# constructs that newer compilers seem to quietly accept.
 	;;
 *)
 	make test