set -exu
# Parameters
-arch=${arch:-amd64}
+platforms=${platforms:-}
+# Derive arch from label if it isn't set
+if [ -z "${arch:-}" ] ; then
+ # Labels may be platform specific, eg. jammy-amd64, deb12-armhf
+ regex='[[:alnum:]]+-([[:alnum:]]+)'
+ if [[ "${platforms}" =~ ${regex} ]] ; then
+ arch="${BASH_REMATCH[1]}"
+ else
+ arch="${platforms:-}"
+ fi
+fi
cross_arch=${cross_arch:-}
ktag=${ktag:-}
kgitrepo=${kgitrepo:-}
mversion=${mversion:-}
mgitrepo=${mgitrepo:-}
-
## FUNCTIONS ##
# Kernel version compare functions
# Disable riscv64 config generation, we don't have a toolchain on bionic
sed -i 's/riscv64 //' debian.master/etc/kernelconfig
+ fakeroot debian/rules clean KW_DEFCONFIG_DIR=.
+
# Hack for kernel Ubuntu-hwe-5.8
- if [ ! -f "debian/compat" ]; then
+ # The debian/control file is produced by the clean target above, so this
+ # check needs to happen afterwards.
+ if [ ! -f "debian/compat" ] && ! grep -q debhelper-compat debian/control; then
echo "10" > "debian/compat"
fi
- fakeroot debian/rules clean KW_DEFCONFIG_DIR=.
- fakeroot debian/rules genconfigs KW_DEFCONFIG_DIR=.
+ # genconfigs check can fail in certain cases, eg. when a more recent
+ # compiler exposes kernel configuration flags which aren't set in the
+ # 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
cp CONFIGS/"${ubuntu_config}" .config
;;
obj_name="linux.tar.bz2"
if [ "x${cross_arch}" = "x" ]; then
- obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/$arch/native"
+ obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/platform-${platforms}/$arch/native"
else
- obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/${cross_arch}"
+ obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/platform-${platforms}/${cross_arch}"
fi
obj_url="$obj_url_prefix/$obj_name"
set +e
-s3cmd -c "$WORKSPACE/.s3cfg" get "$obj_url"
+# In s3cmd 2.3, the return code of get when an object does not exist (64)
+# is different than in 2.2 (12). The return codes of 's3cmd info' are
+# consistent between 2.2 and 2.3.
+s3cmd -c "$WORKSPACE/.s3cfg" info "$obj_url"
ret=$?
set -e
case "$ret" in
"0")
+ s3cmd -c "$WORKSPACE/.s3cfg" get "$obj_url"
extract_archive_obj
;;