exit 0
fi
+ if [ "${cross_arch}" = "arm64" ] && verlt "${kversion}" "3.7"; then
+ echo "ARM64 support was added as of v3.7. Don't try to build it."
+ exit 0
+ fi
+
+ if [ "${cross_arch}" = "arm64" ] && verlt "${kversion}" "3.18"; then
+ echo "lttng-modules requires gcc >= 5.1 for ARM64 due to compiler bugs in gcc."
+ echo "gcc-5 support was added to the kernel as of v3.18. Don't this to build it."
+ exit 0
+ fi
+
if { verlt "$kversion" "4.4"; }; then
# Force gcc-4.8 for kernels before 4.4
selected_cc='gcc-4.8'
+ # Due to compiler bugs in gcc on arm64, lttng-modules disallows
+ # compilation with gcc < 5.1.
+ if [[ "${cross_arch}" == "arm64" ]] ; then
+ selected_cc='gcc-5.5'
+ export PATH="${PATH:-}:/usr/local/gcc5.5/bin"
+ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:/usr/local/gcc5.5/lib"
+ fi
selected_cc_version=$(echo "${selected_cc}" | cut -d'-' -f2)
else
for cc in $(list_gccs) ; do
_KCPPFLAGS=()
_HOSTCFLAGS=()
- if [ "$selected_cc" != "gcc-4.8" ]; then
+ if { vergte "$selected_cc_version" "6"; }; then
# Older kernel Makefiles do not expect the compiler to default to PIE
_KAFLAGS+=(-fno-pie)
_KCFLAGS+=(
exit 0
fi
- fakeroot debian/rules clean KW_DEFCONFIG_DIR=.
+ FAKEROOT_ARGS=(
+ 'KW_DEFCONFIG_DIR=.'
+ )
+ fakeroot debian/rules clean "${FAKEROOT_ARGS[@]}"
# Hack for kernel Ubuntu-hwe-5.8
# The debian/control file is produced by the clean target above, so this
# Ubuntu annotations.
# In any case, the configuration will be updated with any missing values
# later in our build script.
- fakeroot debian/rules genconfigs KW_DEFCONFIG_DIR=. do_skip_checks=true
+ FAKEROOT_ARGS+=('do_skip_checks=true')
+
+ # Some Ubuntu tags default the toolchain using `gcc?=gcc-XX` in
+ # `debian/rules.d/0-common-vars.mk`. This may fail if the gcc version
+ # used as a default isn't available.
+ # For example, Ubuntu-6.8.0-7.7 sets `gcc?=gcc-13`, and that version
+ # of gcc isn't available on the deb12-amd64 ci-nodes.
+ # Work has also already been done in `select_compiler` to make our
+ # own decision of which compiler to use. As a result of both cases,
+ # our compiler choice should be passed into genconfigs.
+ FAKEROOT_ARGS+=("gcc=${selected_cc}")
+
+ fakeroot debian/rules genconfigs "${FAKEROOT_ARGS[@]}"
cp CONFIGS/"${ubuntu_config}" .config
;;