Subject: Re: [PATCH 1/6] ci: remove GETTEXT_POISON jobs

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Wed, 27 Jan 2021 01:47:27 +0100

On Wed, Jan 20 2021, SZEDER Gábor wrote:

> On Wed, Jan 20, 2021 at 06:59:14PM +0100, Ævar Arnfjörð Bjarmason wrote:
>> 
>> On Tue, Jan 12 2021, SZEDER Gábor wrote:
>> 
>> > On Mon, Jan 11, 2021 at 03:47:35PM +0100, Ævar Arnfjörð Bjarmason wrote:
>> >> A subsequent commit will remove GETTEXT_POISON entirely, let's start
>> >> by removing the CI jobs that enable the option.
>> >> 
>> >> We cannot just remove the job because the CI is implicitly depending
>> >> on the "poison" job being a sort of "default" job.
>> >
>> > I don't understand what you mean here with a "default job" that the CI
>> > is implicitly depending on.  There is certainly no such default job on
>> > Travis CI, and I don't think there is one on the GitHub thing.
>> 
>> I'll reword this. I meant that the poison job was using the default
>> compiler etc., whereas the other ones were setting custom values.
>> 
>> I vaguely remember some list traffic about this in the past, i.e. the
>> reliance on the poison job not just for that, but also as "the default
>> OS image" setup.
>
> Oh, I didn't mean that the commit message should be clarified.  I
> meant that the GETTEXT_POISON job can simply be deleted.  Sorry for
> not being clear enough.

I still don't get it, and my patch still seems fine as it is to me. But
I'm probably missing something.

I'm looking at these, both pointing at e6362826a04 (The fourth batch,
2021-01-25):

    # Currently says "Please be aware travis-ci.org will be shutting
    # down in several weeks"
    https://www.travis-ci.org/github/git/git/builds/756176098

    https://github.com/git/git/actions/runs/510676142

For the GitHub one, there's only two things that are linux && gcc. The
linux-gcc job, and GETTEXT_POISON (renamed to linux-gcc-default in this
series).

In ci/install-dependencies.sh we install GCC 8 for linux-gcc, but also
perforce, apache, git-lfs etc.

Then in ci/lib.sh we set CC=gcc-8 on linux-gcc, but retain the default
on GETTEXT_POISON. We also set GIT_TEST_HTTPD=true.

So hence "linux-gcc-default", we're running as close to a default set of
packages we can get and build/run git at all. I.e. just "apt install
$UBUNTU_COMMON_PKGS".

Then in ci/run-build-and-tests.sh the "linux-gcc" job is also our "let's
turn on every GIT_TEST_* option you've heard of" job. Whereas on the
GETTEXT_POISON job we just ran "make test", well, with
GIT_TEST_GETTEXT_POISON=true before this series, but that was the only
non-default, now we've got no non-defaults.

I can see why we'd want this on top:
    
    diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
    index 50e0b90073f..3071099eaca 100755
    --- a/ci/run-build-and-tests.sh
    +++ b/ci/run-build-and-tests.sh
    @@ -32,11 +32,6 @@ linux-clang)
            export GIT_TEST_DEFAULT_HASH=sha256
            make test
            ;;
    -linux-gcc-4.8)
    -       # Don't run the tests; we only care about whether Git can be
    -       # built with GCC 4.8, as it errors out on some undesired (C99)
    -       # constructs that newer compilers seem to quietly accept.
    -       ;;
     *)
            make test
            ;;

Because there we're skipping tests on linux-gcc-4.8, but on travis it's
the only Ubuntu Trusty image (default is Xenial), so yes we build with
gcc 4.8, but we're also missing out in seeing if our tests are working
on a slightly older Ubuntu.

Also on GitHub's page the GETTEXT_POISON job finishes in ~10m but all
the other ones in ~30m, I see some run "make test" twice, as an aside is
there some limit on jobs but not overall CPU? Otherwise those would
finish faster if that was split up.

But "make test" twice doesn't account for a ~3x increase, so it's got to
be the extra tests we're running, i.e. svn tests, httpd etc.

It seems to me to provide value in itself to run some shorter version of
the CI for people using it as a poor man's edit/push/ci/edit loop.