# [PATCH 1/3] gitlab-ci: switch from Ubuntu 16.04 to 20.04

8 messages from 2024-10-31 to 2024-11-04. Participants: brian m. carlson, Junio C Hamano, Patrick Steinhardt.
Thread: https://gitlist.dev/t/62432

## brian m. carlson, 2024-10-31 23:49

Subject: [PATCH 1/3] gitlab-ci: switch from Ubuntu 16.04 to 20.04
Message-ID: <20241031234934.3451390-2-sandals@crustytoothpaste.net>
URL: https://gitlist.dev/e/20241031234934.3451390-2-sandals%40crustytoothpaste.net
In-Reply-To: <20241031234934.3451390-1-sandals@crustytoothpaste.net>

```
Ubuntu 16.04 is past its normal LTS lifespan, so let's switch to Ubuntu
20.04 instead, which is the latest regular LTS version.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 526ecfe030..a1bc92893f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -35,7 +35,7 @@ test:linux:
   parallel:
     matrix:
       - jobname: linux-old
-        image: ubuntu:16.04
+        image: ubuntu:20.04
         CC: gcc
       - jobname: linux-sha256
         image: ubuntu:latest

```

## brian m. carlson, 2024-10-31 23:49

Subject: [PATCH 3/3] Add additional CI jobs to avoid accidental breakage
Message-ID: <20241031234934.3451390-4-sandals@crustytoothpaste.net>
URL: https://gitlist.dev/e/20241031234934.3451390-4-sandals%40crustytoothpaste.net
In-Reply-To: <20241031234934.3451390-1-sandals@crustytoothpaste.net>

```
In general, we'd like to make sure Git works on the LTS versions of
major Linux distributions.  To do that, let's add CI jobs for the oldest
regular (non-extended) LTS versions of the major distributions: Ubuntu
20.04, Debian 11, and RHEL 8.  Because RHEL isn't available to the
public at no charge, use AlmaLinux, which is binary compatible with it.

Note that Debian does not offer the language-pack packages, but suitable
locale support can be installed with the locales-all package.
Otherwise, use the set of installation instructions which exist and are
most similar to the existing supported distros.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 .github/workflows/main.yml |  9 +++++++++
 ci/install-dependencies.sh | 14 ++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9301a1edd6..808ddc19b8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -342,12 +342,21 @@ jobs:
         - jobname: linux-musl
           image: alpine
           distro: alpine-latest
+        # Supported until 2025-04-02.
         - jobname: linux32
           image: i386/ubuntu:focal
           distro: ubuntu32-20.04
         - jobname: pedantic
           image: fedora
           distro: fedora-latest
+        # A RHEL 8 compatible distro.  Supported until 2029-05-31.
+        - jobname: almalinux-8
+          image: almalinux:8
+          distro: almalinux-8
+        # Supported until 2026-08-31.
+        - jobname: debian-11
+          image: debian:11
+          distro: debian-11
     env:
       jobname: ${{matrix.vector.jobname}}
       distro: ${{matrix.vector.distro}}
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index d30ae53a18..d020cb7aa5 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -29,26 +29,32 @@ alpine-*)
 		apache2 apache2-http2 apache2-proxy apache2-ssl apache2-webdav apr-util-dbd_sqlite3 \
 		bash cvs gnupg perl-cgi perl-dbd-sqlite perl-io-tty >/dev/null
 	;;
-fedora-*)
+fedora-*|almalinux-*)
 	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
 	;;
-ubuntu-*|ubuntu32-*)
+ubuntu-*|ubuntu32-*|debian-*)
 	# Required so that apt doesn't wait for user input on certain packages.
 	export DEBIAN_FRONTEND=noninteractive
 
 	case "$distro" in
 	ubuntu-*)
 		SVN='libsvn-perl subversion'
+		LANGUAGES='language-pack-is'
+		;;
+	ubuntu32-*)
+		SVN=
+		LANGUAGES='language-pack-is'
 		;;
 	*)
-		SVN=
+		SVN='libsvn-perl subversion'
+		LANGUAGES='locales-all'
 		;;
 	esac
 
 	sudo apt-get -q update
 	sudo apt-get -q -y install \
-		language-pack-is apache2 cvs cvsps git gnupg $SVN \
+		$LANGUAGES apache2 cvs cvsps git gnupg $SVN \
 		make libssl-dev libcurl4-openssl-dev libexpat-dev wget sudo default-jre \
 		tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl \
 		libemail-valid-perl libio-pty-perl libio-socket-ssl-perl libnet-smtp-ssl-perl libdbd-sqlite3-perl libcgi-pm-perl \

```

## brian m. carlson, 2024-10-31 23:49

Subject: [PATCH 2/3] ci: remove clause for Ubuntu 16.04
Message-ID: <20241031234934.3451390-3-sandals@crustytoothpaste.net>
URL: https://gitlist.dev/e/20241031234934.3451390-3-sandals%40crustytoothpaste.net
In-Reply-To: <20241031234934.3451390-1-sandals@crustytoothpaste.net>

```
We're no longer testing this version and it's well beyond regular LTS
support now, so remove the stanza for it from the case statement in our
CI code.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 ci/install-dependencies.sh | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 126e570eb4..d30ae53a18 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
 		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
 
 	case "$distro" in
-	ubuntu-16.04)
-		# Does not support JGit, but we also don't really care about
-		# the others. We rather care whether Git still compiles and
-		# runs fine overall.
-		;;
 	ubuntu-*)
 		mkdir --parents "$CUSTOM_PATH"
 

```

## brian m. carlson, 2024-10-31 23:49

Subject: [PATCH 0/3] Improve CI testing of older systems
Message-ID: <20241031234934.3451390-1-sandals@crustytoothpaste.net>
URL: https://gitlist.dev/e/20241031234934.3451390-1-sandals%40crustytoothpaste.net

```
In many cases, we're not testing some of the older Linux distributions
that we support.  However, we _are_ testing some old Linux distributions
that we _don't_ support.  That means that it's presently difficult for
us to make sure our code works on all the systems we want it to and that
we're not accidentally requiring newer versions of dependencies than we
claim to support.

The first patch removes Ubuntu 16.04, which is out of regular LTS
support.  The second removes the clause in the CI job for that OS.  The
third adds several new CI jobs to make sure we're adequately supporting
older Debian and RHEL-compatible distros, and documents the dates at
which they lose support (so it's easy to know if we need to update
them).

brian m. carlson (3):
  gitlab-ci: switch from Ubuntu 16.04 to 20.04
  ci: remove clause for Ubuntu 16.04
  Add additional CI jobs to avoid accidental breakage

 .github/workflows/main.yml |  9 +++++++++
 .gitlab-ci.yml             |  2 +-
 ci/install-dependencies.sh | 19 ++++++++++---------
 3 files changed, 20 insertions(+), 10 deletions(-)


```

## Junio C Hamano, 2024-11-01 00:34

Subject: Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04
Message-ID: <xmqqv7x74ws9.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqv7x74ws9.fsf%40gitster.g
In-Reply-To: <20241031234934.3451390-3-sandals@crustytoothpaste.net>

```
"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> We're no longer testing this version and it's well beyond regular LTS
> support now, so remove the stanza for it from the case statement in our
> CI code.

Something like "we replaced it with 20.04 which does not need the
corresponding special casing" would be necessary to explain why this
is a good change, as opposed to an equally plausible-looking patch
that replaces 16.04 with 20.04 and otherwise keeps the "stanza".

> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  ci/install-dependencies.sh | 5 -----
>  1 file changed, 5 deletions(-)
>
> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> index 126e570eb4..d30ae53a18 100755
> --- a/ci/install-dependencies.sh
> +++ b/ci/install-dependencies.sh
> @@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
>  		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
>  
>  	case "$distro" in
> -	ubuntu-16.04)
> -		# Does not support JGit, but we also don't really care about
> -		# the others. We rather care whether Git still compiles and
> -		# runs fine overall.
> -		;;
>  	ubuntu-*)
>  		mkdir --parents "$CUSTOM_PATH"
>  

```

## brian m. carlson, 2024-11-01 00:38

Subject: Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04
Message-ID: <ZyQjB8iLM1FIDbGe@tapette.crustytoothpaste.net>
URL: https://gitlist.dev/e/ZyQjB8iLM1FIDbGe%40tapette.crustytoothpaste.net
In-Reply-To: <xmqqv7x74ws9.fsf@gitster.g>

```
On 2024-11-01 at 00:34:14, Junio C Hamano wrote:
> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
> 
> > We're no longer testing this version and it's well beyond regular LTS
> > support now, so remove the stanza for it from the case statement in our
> > CI code.
> 
> Something like "we replaced it with 20.04 which does not need the
> corresponding special casing" would be necessary to explain why this
> is a good change, as opposed to an equally plausible-looking patch
> that replaces 16.04 with 20.04 and otherwise keeps the "stanza".

Sure, I can mention that in v2.
-- 
brian m. carlson (they/them or he/him)
Toronto, Ontario, CA

```

## Junio C Hamano, 2024-11-01 00:41

Subject: Re: [PATCH 2/3] ci: remove clause for Ubuntu 16.04
Message-ID: <xmqqplnf4wgh.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqplnf4wgh.fsf%40gitster.g
In-Reply-To: <xmqqv7x74ws9.fsf@gitster.g>

```
Junio C Hamano <gitster@pobox.com> writes:

> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
>
>> We're no longer testing this version and it's well beyond regular LTS
>> support now, so remove the stanza for it from the case statement in our
>> CI code.
>
> Something like "we replaced it with 20.04 which does not need the
> corresponding special casing" would be necessary to explain why this
> is a good change, as opposed to an equally plausible-looking patch
> that replaces 16.04 with 20.04 and otherwise keeps the "stanza".

Ah, I take it back (or atleast a half of it).  

We have been already using 20.04 on the .github/ side, and 1/3
removed only from .gitlab-ci removing the last user of 16.04, so
presumably this has already tested well for 20.04 and there is no
need to add "corresponding special casing".

I'll keep reading the list backwards, this time resisting my
temptation to utter nonsense without thinking much, attempting to
catch up.

Thanks.


>> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
>> ---
>>  ci/install-dependencies.sh | 5 -----
>>  1 file changed, 5 deletions(-)
>>
>> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
>> index 126e570eb4..d30ae53a18 100755
>> --- a/ci/install-dependencies.sh
>> +++ b/ci/install-dependencies.sh
>> @@ -55,11 +55,6 @@ ubuntu-*|ubuntu32-*)
>>  		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
>>  
>>  	case "$distro" in
>> -	ubuntu-16.04)
>> -		# Does not support JGit, but we also don't really care about
>> -		# the others. We rather care whether Git still compiles and
>> -		# runs fine overall.
>> -		;;
>>  	ubuntu-*)
>>  		mkdir --parents "$CUSTOM_PATH"
>>  

```

## Patrick Steinhardt, 2024-11-04 11:36

Subject: Re: [PATCH 0/3] Improve CI testing of older systems
Message-ID: <ZyixnuBY5TcyrHEj@pks.im>
URL: https://gitlist.dev/e/ZyixnuBY5TcyrHEj%40pks.im
In-Reply-To: <20241031234934.3451390-1-sandals@crustytoothpaste.net>

```
On Thu, Oct 31, 2024 at 11:49:31PM +0000, brian m. carlson wrote:
> In many cases, we're not testing some of the older Linux distributions
> that we support.  However, we _are_ testing some old Linux distributions
> that we _don't_ support.  That means that it's presently difficult for
> us to make sure our code works on all the systems we want it to and that
> we're not accidentally requiring newer versions of dependencies than we
> claim to support.
> 
> The first patch removes Ubuntu 16.04, which is out of regular LTS
> support.  The second removes the clause in the CI job for that OS.  The
> third adds several new CI jobs to make sure we're adequately supporting
> older Debian and RHEL-compatible distros, and documents the dates at
> which they lose support (so it's easy to know if we need to update
> them).

The GitLab CI-related changes all look good to me, thanks! The GitHub
ones do, too, but I feel less qualified to comment on them.

Patrick

```
