dcavalca / rpms / systemd

Forked from rpms/systemd 3 months ago
Clone
Blob Blame History Raw
From 860be9427dff48efc5e486b039be932094572047 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 14 Jan 2014 17:48:08 -0500
Subject: [PATCH] kernel-install: add fedora specific callouts to
 new-kernel-pkg

---
 src/kernel-install/kernel-install | 44 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 mode change 100644 => 100755 src/kernel-install/kernel-install

diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
old mode 100644
new mode 100755
index 3ae1d77..5c1e4fc
--- a/src/kernel-install/kernel-install
+++ b/src/kernel-install/kernel-install
@@ -71,6 +71,50 @@ fi
 KERNEL_VERSION="$1"
 KERNEL_IMAGE="$2"
 
+if [[ -x /sbin/new-kernel-pkg ]]; then
+    KERNEL_DIR="${KERNEL_IMAGE%/*}"
+    if [[ "${KERNEL_DIR}" != "/boot" ]]; then
+        for i in \
+            "$KERNEL_IMAGE" \
+            "$KERNEL_DIR"/System.map \
+            "$KERNEL_DIR"/config \
+            "$KERNEL_DIR"/zImage.stub \
+            "$KERNEL_DIR"/dtb \
+            ; do
+            [[ -e "$i" ]] || continue
+            cp -a "$i" "/boot/${i##*/}-${KERNEL_VERSION}"
+            command -v restorecon &>/dev/null && \
+                restorecon "/boot/${i##*/}-${KERNEL_VERSION}"
+        done
+        # hmac is .vmlinuz-<version>.hmac so needs a special treatment
+        i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac"
+        if [[ -e "$i" ]]; then
+            cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
+            command -v restorecon &>/dev/null && \
+                restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
+        fi
+    fi
+
+    [[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}"
+    case "$COMMAND" in
+        add)
+            /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $?
+            /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $?
+            /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $?
+            ;;
+        remove)
+            /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $?
+            ;;
+        *)
+            ;;
+    esac
+
+    # exit, if we can't find a boot loader spec conforming setup
+    if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
+        exit 0
+    fi
+fi
+
 if [[ -f /etc/machine-id ]]; then
     read MACHINE_ID < /etc/machine-id
 fi
-- 
2.6.0