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

[PATCH 2/4] ci: unify ubuntu and ubuntu32 dependencies

From
Jeff King <peff@peff.net>
Date
Sep 12, 2024, 09:45 UTC
Message-ID
<20240912094537.GB589828@coredump.intra.peff.net>
In-Reply-To
<20240912094238.GA589050@coredump.intra.peff.net>

The script to install dependencies has two separate entries for 32-bit and 64-bit Ubuntu systems. This increases the maintenance burden since both should need roughly the same packages.

That hasn't been too bad so far because we've stayed on the same 32-bit image since 2017. Trying to move to a newer image revealed several problems with the linux32 job:

  - newer images complain about using "linux32 --32bit i386", due to
    seccomp restrictions. We can loosen these with a docker option, but
    I don't think running it is even doing anything. We use it only for
    pretending to "apt" that we're on a 32-bit machine, but inside the
    container image apt is already configured as a 32-bit system (even
    though the kernel outside the container is obviously 64-bit).  Using
    the same apt invocation for both architectures just gets rid of this
    call entirely.
  - we set DEBIAN_FRONTEND to avoid hanging on packages that ask the
    user questions. This wasn't a problem on the old image, but it is on
    newer ones. The 64-bit stanza handles this already.
    As a bonus, the 64-bit stanza uses "apt -q" instead of redirecting
    output to /dev/null. This would have saved me a lot of debugging
    time trying to figure out why it was hanging. :)
  - the old image seems to have zlib-dev installed by default, but newer
    ones do not.

In addition, there were probably many tests being skipped on the 32-bit build because we didn't have support packages installed (e.g., gpg). Now we'll run them.

We do need to keep some parts split off just for 64-bit systems: our p4 and lfs installs reference x86_64/amd64 binaries. The downloaded jgit should work in theory, since it's just a jar file embedded in a shell script that relies on the system java. But the system java in our image is too old, so I've left it as 64-bit only for now.

Signed-off-by: Jeff King <peff@peff.net>
---
Patch is easier to read with "-w".
 ci/install-dependencies.sh | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 4781cd20bb..00cb7df67a 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -33,7 +33,7 @@ fedora-*)
 	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-*)
+ubuntu-*|ubuntu32-*)
 	# Required so that apt doesn't wait for user input on certain packages.
 	export DEBIAN_FRONTEND=noninteractive
 
@@ -45,25 +45,23 @@ ubuntu-*)
 		libemail-valid-perl libio-pty-perl libio-socket-ssl-perl libnet-smtp-ssl-perl libdbd-sqlite3-perl libcgi-pm-perl \
 		${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE
 
-	mkdir --parents "$CUSTOM_PATH"
-	wget --quiet --directory-prefix="$CUSTOM_PATH" \
-		"$P4WHENCE/bin.linux26x86_64/p4d" "$P4WHENCE/bin.linux26x86_64/p4"
-	chmod a+x "$CUSTOM_PATH/p4d" "$CUSTOM_PATH/p4"
+	case "$distro" in
+	ubuntu-*)
+		mkdir --parents "$CUSTOM_PATH"
 
-	wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
-	tar -xzf "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" \
-		-C "$CUSTOM_PATH" --strip-components=1 "git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs"
-	rm "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
+		wget --quiet --directory-prefix="$CUSTOM_PATH" \
+			"$P4WHENCE/bin.linux26x86_64/p4d" "$P4WHENCE/bin.linux26x86_64/p4"
+		chmod a+x "$CUSTOM_PATH/p4d" "$CUSTOM_PATH/p4"
 
-	wget --quiet "$JGITWHENCE" --output-document="$CUSTOM_PATH/jgit"
-	chmod a+x "$CUSTOM_PATH/jgit"
-	;;
-ubuntu32-*)
-	sudo linux32 --32bit i386 sh -c '
-		apt update >/dev/null &&
-		apt install -y build-essential libcurl4-openssl-dev \
-			libssl-dev libexpat-dev gettext python >/dev/null
-	'
+		wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
+		tar -xzf "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" \
+			-C "$CUSTOM_PATH" --strip-components=1 "git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs"
+		rm "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
+
+		wget --quiet "$JGITWHENCE" --output-document="$CUSTOM_PATH/jgit"
+		chmod a+x "$CUSTOM_PATH/jgit"
+		;;
+	esac
 	;;
 macos-*)
 	export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
-- 
2.46.0.918.gab30941bff
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 8 of 24 in “ci: remove 'Upload failed tests' directories' step from linux32 jobs”
  1. ci: remove 'Upload failed tests' directories' step from linux32 jobsJunio C Hamano, Sep 9, 2024
  2. Junio C HamanoSep 11, 2024
  3. Jeff KingSep 12, 2024
  4. Jeff KingSep 12, 2024
  5. 0/4 make linux32 ci job work with recent actionsJeff King, Sep 12, 2024
  6. 1/4 ci: drop run-docker scriptsJeff King, Sep 12, 2024
  7. Patrick SteinhardtSep 12, 2024
  8. 2/4 ci: unify ubuntu and ubuntu32 dependenciesJeff King, Sep 12, 2024
  9. Patrick SteinhardtSep 12, 2024
  10. 3/4 ci: use more recent linux32 imageJeff King, Sep 12, 2024
  11. Patrick SteinhardtSep 12, 2024
  12. Jeff KingSep 12, 2024
  13. Patrick SteinhardtSep 12, 2024
  14. Patrick SteinhardtSep 12, 2024
  15. Jeff KingSep 13, 2024
  16. Patrick SteinhardtSep 13, 2024
  17. 4/4 ci: use regular action versions for linux32 jobJeff King, Sep 12, 2024
  18. Junio C HamanoSep 12, 2024
  19. 5/4 ci: add Ubuntu 16.04 job to GitLab CIPatrick Steinhardt, Sep 13, 2024
  20. Jeff KingSep 13, 2024
  21. Patrick SteinhardtSep 13, 2024
  22. Jeff KingSep 13, 2024
  23. Patrick SteinhardtSep 13, 2024
  24. Junio C HamanoSep 13, 2024

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.