>From dbe8fc74f4868c8755a14b2ec93171920e3c50df Mon Sep 17 00:00:00 2001 From: Anton Midyukov Date: Sat, 9 Nov 2019 20:44:03 +0700 Subject: [PATCH] build-vm, kernel, uboot: return possibility of changing boot sequence of kernels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since packet sorting is enabled by default, then the order in KFLAVORS has ceased to matter. Kernels are always installed in alphabetical order. Therefore, it makes no sense to sort by buildtime. See-also: https://bugzilla.altlinux.org/show_bug.cgi?id=30806 Also fixed my typo. When creating a symlink, the variable $kver was used, i.e. the entire list of kernels, not the last value $KVER of the list. --- .../build-vm/image-scripts.d/07-kernel | 23 ++++++++++++------- features.in/kernel/config.mk | 1 + .../image-scripts.d/90-uboot-config-install | 17 +++++++++----- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/features.in/build-vm/image-scripts.d/07-kernel b/features.in/build-vm/image-scripts.d/07-kernel index e496a735d9..fd4280825d 100755 --- a/features.in/build-vm/image-scripts.d/07-kernel +++ b/features.in/build-vm/image-scripts.d/07-kernel @@ -2,13 +2,20 @@ # predictable file locations make bootloader configuration simple; # this script relates to features.in/stage2/stage1/scripts.d/81-make-initfs -kver="$(rpm -qa 'kernel-image*' \ - --qf '%{installtime} %{version}-%{name}-%{release}\n' \ - | sort -n \ - | cut -f 2 -d ' ' \ - | sed 's/kernel-image-//')" +[ -n "$GLOBAL_KFLAVOURS" ] || + { echo "** KFLAVOURS is empty" >&2; exit 0; } -[ -n "$kver" ] || { echo "** unable to deduce kernel version" >&2; exit 1; } +kver= +echo $GLOBAL_KFLAVOURS +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done + +[ ! -z "${kver#"${kver%%[! ]*}"}" ] || + { echo "** unable to deduce kernel version" >&2; exit 1; } cd /boot @@ -20,6 +27,6 @@ for KVER in $kver; do done # NB: e2k kernel builds "image" instead of "vmlinuz" -[ -f vmlinuz-$kver ] && ln -s vmlinuz-$kver vmlinuz ||: -ln -s initrd-$kver.img initrd.img # missing at this stage +[ -f vmlinuz-$KVER ] && ln -s vmlinuz-$KVER vmlinuz ||: +ln -s initrd-$KVER.img initrd.img # missing at this stage : diff --git a/features.in/kernel/config.mk b/features.in/kernel/config.mk index 3a00a2d469..c8caff06c0 100644 --- a/features.in/kernel/config.mk +++ b/features.in/kernel/config.mk @@ -20,6 +20,7 @@ else endif endif endif + @$(call xport,KFLAVOURS) # r8168 is a kludge, never install it by default use/kernel/net: diff --git a/features.in/uboot/image-scripts.d/90-uboot-config-install b/features.in/uboot/image-scripts.d/90-uboot-config-install index b52d33d861..5dab7d1628 100755 --- a/features.in/uboot/image-scripts.d/90-uboot-config-install +++ b/features.in/uboot/image-scripts.d/90-uboot-config-install @@ -1,12 +1,17 @@ #!/bin/sh -x -kver="$(rpm -qa 'kernel-image*' \ - --qf '%{installtime} %{version}-%{name}-%{release}\n' \ - | sort -n \ - | cut -f 2 -d ' ' \ - | sed 's/kernel-image-//')" +[ -n "$GLOBAL_KFLAVOURS" ] || + { echo "** KFLAVOURS is empty" >&2; exit 0; } -[ -n "$kver" ] || { echo "** unable to deduce kernel version" >&2; exit 1; } +kver= +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done +[ ! -z "${kver#"${kver%%[! ]*}"}" ] || + { echo "** unable to deduce kernel version" >&2; exit 1; } for KVER in $kver; do /sbin/installkernel --uboot --keep-initrd "$KVER" -- 2.21.0