@@ -90,25 +90,18 @@ in_container() {
9090}
9191
9292host_install () {
93- local kernel_release kernel_version gcc_major=" "
94- local -a compiler_packages=()
93+ local kernel_release kernel_gcc default_gcc
9594 kernel_release=$( uname -r)
96- # Compare the Ubuntu ABI version without the flavor (e.g. -generic).
97- kernel_version=$( echo " $kernel_release " | sed -E ' s/-[^0-9].*$//' )
98- if dpkg --compare-versions " $kernel_version " gt 6.8.0-142; then
99- # Newer runner kernels may require flags missing from build-essential's GCC.
100- gcc_major=$( sed -nE ' s/.*gcc(-[0-9]+)? (\([^)]*\) )?([0-9]+)\..*/\3/p' /proc/version)
101- if [ -z " $gcc_major " ]; then
102- echo " ::error::cannot detect the kernel GCC version from /proc/version" >&2
103- return 1
104- fi
105- compiler_packages=(" gcc-${gcc_major} " " g++-${gcc_major} " )
106- fi
107- apt-get -y install build-essential " ${compiler_packages[@]} " dkms " linux-headers-${kernel_release} " psmisc kmod
108-
109- if [ -n " $gcc_major " ]; then
95+ apt-get -y install build-essential dkms " linux-headers-${kernel_release} " psmisc kmod
96+
97+ # Match the kernel's GCC major only when the default compiler differs.
98+ kernel_gcc=$( sed -nE ' s/.*gcc(-[0-9]+)? (\([^)]*\) )?([0-9]+)\..*/\3/p' /proc/version)
99+ default_gcc=$( gcc -dumpversion | cut -d. -f1)
100+ echo " Kernel ${kernel_release} : GCC major=${kernel_gcc:- unknown} , default GCC major=${default_gcc} " >&2
101+ if [ -n " $kernel_gcc " ] && [ " $kernel_gcc " != " $default_gcc " ]; then
102+ apt-get -y install " gcc-${kernel_gcc} " " g++-${kernel_gcc} "
110103 # Installing a versioned compiler does not change the default; select it for DKMS.
111- export CC=" gcc-${gcc_major } " CXX=" g++-${gcc_major } "
104+ export CC=" gcc-${kernel_gcc } " CXX=" g++-${kernel_gcc } "
112105 echo " Kernel ${kernel_release} : using CC=${CC} CXX=${CXX} " >&2
113106 fi
114107
0 commit comments