From cd45abe68eec0d00e6b51d765db273a424352529 Mon Sep 17 00:00:00 2001 From: Saya Andy Date: Mon, 7 Sep 2026 12:33:58 +0700 Subject: fix: release-split dtb copies --- .../lib/kernel/install.d/60-surface-dtb.install | 31 +++++++++++++--------- .../kernel/install.d/95-surface-dtb-patch.install | 5 ++-- 2 files changed, 22 insertions(+), 14 deletions(-) (limited to 'root') diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install index 2dadac5..7622406 100644 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install +++ b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/60-surface-dtb.install @@ -8,23 +8,30 @@ KVER="$2" DTB_NAME=x1p42100-microsoft-sp12in.dtb DEST="/usr/lib/modules/${KVER}/dtb/qcom/${DTB_NAME}" -# The master copy comes from kernel-surface: it builds the dtb in-tree from the +# The master copies come from kernel-surface: it builds the dtb in-tree from the # patched dts and installs it under /usr/lib/surface-dtb, deliberately outside -# any /usr/lib/modules/, so it can be re-staged into any kernel installed -# alongside it. -SRC="/usr/lib/surface-dtb/${DTB_NAME}" -[ -f "${SRC}" ] || SRC="" +# any /usr/lib/modules/, so it can be re-staged into a kernel that ships +# no device tree of its own -- a stock Fedora one. +# +# One directory per kernel version, because kernel-surface is installonly and +# rpm will not let two installed releases own one unqualified path once the file +# differs. They are all the same board, so the highest version is as good a +# choice as any, and is the one most likely to carry recent fixes. +SRC=$(ls -1 /usr/lib/surface-dtb/*/"${DTB_NAME}" 2>/dev/null | sort -V | tail -n1) case "${COMMAND}" in add) - # No master and no dtb already in this kernel's tree means there is - # nothing this board can boot with, so say so rather than failing - # silently three steps later in the boot loader. + # kernel-surface ships its own dtb through dtbs_install, and that + # one is the release-matched copy. Leave it alone; the master is + # only for kernels that arrived without one. + if [ -f "${DEST}" ]; then + exit 0 + fi + # Neither means there is nothing this board can boot with, so say + # so rather than failing silently three steps later in the boot + # loader. if [ -z "${SRC}" ]; then - if [ -f "${DEST}" ]; then - exit 0 - fi - echo "60-surface-dtb: no ${DTB_NAME} in /usr/lib/surface-dtb" >&2 + echo "60-surface-dtb: no ${DTB_NAME} under /usr/lib/surface-dtb" >&2 exit 1 fi mkdir -p "$(dirname ${DEST})" diff --git a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install index f0314b0..65b8745 100644 --- a/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install +++ b/root/tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/lib/kernel/install.d/95-surface-dtb-patch.install @@ -38,9 +38,10 @@ BOOT_ROOT="${KERNEL_INSTALL_BOOT_ROOT:-/boot}" # (or was removed). DTB_SRC="/usr/lib/modules/${KVER}/dtb/${DTB_REL}" if [ ! -f "$DTB_SRC" ]; then - DTB_SRC="/usr/lib/surface-dtb/$DTB_NAME" + # One directory per kernel version under here; see 60-surface-dtb.install. + DTB_SRC=$(ls -1 /usr/lib/surface-dtb/*/"$DTB_NAME" 2>/dev/null | sort -V | tail -n1) fi -[ -f "$DTB_SRC" ] || exit 0 +[ -n "$DTB_SRC" ] && [ -f "$DTB_SRC" ] || exit 0 # The boot loader reads the dtb from the boot filesystem, not the module tree install -Dm644 "$DTB_SRC" "${BOOT_ROOT}/dtb-${KVER}/${DTB_REL}" -- cgit v1.3.1+17