]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
install-deps.sh: install proper compiler version on Debian/Ubuntu
authorDan Mick <dan.mick@redhat.com>
Sun, 19 Oct 2025 00:45:31 +0000 (17:45 -0700)
committerDan Mick <dan.mick@redhat.com>
Wed, 22 Oct 2025 02:02:55 +0000 (19:02 -0700)
This code used to run in a pbuilder hook (because it needed to run
inside the build environment chroot).  When building in a container,
you also want the right compiler installed.

This is necessary at least to build reef on ubuntu focal.

Fixes: https://tracker.ceph.com/issues/73585
Signed-off-by: Dan Mick <dan.mick@redhat.com>
(cherry picked from commit fd19a09e02b4506d40b24c5044224747f6a49bf3)

install-deps.sh

index b5813d4d38db1d7de067d5cfab1d6c8f303c64c2..c0117175711894878809a6868b002bb5508bad47 100755 (executable)
@@ -99,6 +99,28 @@ msyaQpNl/m/lNtOLhR64v5ZybofB2EWkMxUzX8D/FQ==
 ENDOFKEY
         $SUDO env DEBIAN_FRONTEND=noninteractive apt-get update -y || true
         $SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y g++-${new}
+
+        # From ceph-build.git:src/scripts/build_utils.sh:setup_gcc_hook.
+        # Do this here instead of in the hook when running in a container
+        # (like build-with-container.py).  Test if pid1 is init or systemd.
+
+        if ! ps -p 1 -o comm= | grep -qE "init|systemd"; then
+            $SUDO update-alternatives --remove-all gcc
+
+            $SUDO update-alternatives \
+              --install /usr/bin/gcc gcc /usr/bin/gcc-${new} 20 \
+              --slave   /usr/bin/g++ g++ /usr/bin/g++-${new}
+
+            $SUDO update-alternatives \
+              --install /usr/bin/gcc gcc /usr/bin/gcc-\${old} 10 \
+              --slave   /usr/bin/g++ g++ /usr/bin/g++-\${old}
+
+            $SUDO update-alternatives --auto gcc
+
+            # cmake uses the latter by default
+            $SUDO ln -nsf /usr/bin/gcc /usr/bin/\${ARCH}-linux-gnu-gcc
+            $SUDO ln -nsf /usr/bin/g++ /usr/bin/\${ARCH}-linux-gnu-g++
+        fi
     fi
 }