commit:     292b70740c3eb4516bf99a2cc2d12657a031ab00
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 24 21:24:44 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Thu Mar 24 21:39:33 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=292b7074

sys-apps/kexec-tools: version bump to 2.0.12 #578164

Rework the init script heavily in the process to make it a bit less
"smart" and respect user settings. #577496

 sys-apps/kexec-tools/Manifest                      |   1 +
 sys-apps/kexec-tools/files/kexec.init-2.0.12       | 175 +++++++++++++++++++++
 ...tools-9999.ebuild => kexec-tools-2.0.12.ebuild} |   2 +-
 sys-apps/kexec-tools/kexec-tools-9999.ebuild       |   2 +-
 4 files changed, 178 insertions(+), 2 deletions(-)

diff --git a/sys-apps/kexec-tools/Manifest b/sys-apps/kexec-tools/Manifest
index 6a70245..99653fe 100644
--- a/sys-apps/kexec-tools/Manifest
+++ b/sys-apps/kexec-tools/Manifest
@@ -1,2 +1,3 @@
+DIST kexec-tools-2.0.12.tar.xz 274776 SHA256 
14ce67b6242426a7ded10f58b7d29d3cfef5c1379850e8ba3816bb42053f920d SHA512 
d192f841180daf534f7214b6c7c5dcd9de0e5616e8cb0da164c24e8b5903a2f65bb1fbe6ca29a3b9077fa6f6435cc33fda19a96584e1f393ee7a2fe56f374dab
 WHIRLPOOL 
9895716544987682f4ba9cc0622afa14c7dc844482fedce29ec9780b8ff74f87cf2bd79ef58febe651fa3bc5934b6d54aaae31d2593fb32ea9fffdca1e5f8c91
 DIST kexec-tools-2.0.4.tar.xz 271604 SHA256 
e5f5ab00d746eb15b4714eca6a8ec5a1a86a62ce2bbdad1b3000161138a978c6 SHA512 
2514f407d9150d2615dffc91a525fb28f159bef92b9543f9802e2618746b7d4c04137668ad8a8d8f0b75f68ed9057d09629ce736b6a061b5cf817b9d904f549e
 WHIRLPOOL 
70ad298512e700cd1cdee7698e4fa68a769d91d3080d5d8387b8362ad49126ad68b0b6dbd1f13305958bdc988f805fa610e487682fd0eb5e4e9bcda0a9022627
 DIST kexec-tools-2.0.9.tar.xz 272728 SHA256 
8ae34a9ceb76350954e1e1e3ca9ab51da15862bd5f2fd14392208e60fb454f71 SHA512 
b58f8f0872f1a6a3a93bc67068d7035c4b39e985dafadc573585d92259ff289bf98d5a567293a5286668315ac2158b232919e0c6847fdefc68b7ecbcfab5109e
 WHIRLPOOL 
840d9d17ce9facc131736ef52acabb03bcc6d21f671896ff5603bd8d6bd629519e169ca878a127b863235b236dafd3b29f598424b272f599503bb3f1a5f70050

diff --git a/sys-apps/kexec-tools/files/kexec.init-2.0.12 
b/sys-apps/kexec-tools/files/kexec.init-2.0.12
new file mode 100755
index 0000000..7a202cc
--- /dev/null
+++ b/sys-apps/kexec-tools/files/kexec.init-2.0.12
@@ -0,0 +1,175 @@
+#!/sbin/runscript
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# Set up some defaults.
+: "${LOAD_DURING_SHUTDOWN:=yes}"
+: "${BOOTPART:=/boot}"
+: "${DONT_MOUNT_BOOT:=no}"
+
+depend() {
+       need localmount
+}
+
+auto_prefix_bootpath() {
+       # Only auto-add prefix to relative paths.
+       case $1 in
+       */*) echo "$1";;
+       *)   echo "${BOOTPART}/$1" ;;
+       esac
+}
+
+image_path() {
+       # Do no sanity checking if the user has set a value.
+       if [ -n "${KNAME}" ]; then
+               auto_prefix_bootpath "${KNAME}"
+               return
+       fi
+
+       local x kver="$(uname -r)" karch="$(uname -m)"
+       for x in \
+               "bzImage" \
+               "vmlinuz" \
+               "bzImage-${kver}" \
+               "vmlinuz-${kver}" \
+               "kernel-genkernel-${karch}-${kver}" \
+               "kernel-${kver}" \
+               "kernel-${karch}"; do
+               if [ -e "${BOOTPART}/${x}" ]; then
+                       echo "${BOOTPART}/${x}"
+                       return
+               fi
+       done
+
+       return 1
+}
+
+initrd_path() {
+       # Do no sanity checking if the user has set a value.
+       if [ -n "${INITRD}" ]; then
+               auto_prefix_bootpath "${INITRD}"
+               return 0
+       fi
+
+       local x kver="$(uname -r)" karch="$(uname -m)"
+       for x in \
+               "initrd" \
+               "initrd.img-${kver}" \
+               "initrd-${kver}.img" \
+               "initrd-${kver}" \
+               "initramfs-${kver}.img" \
+               "initramfs-genkernel-${karch}-${kver}"; do
+               if [ -e "${BOOTPART}/${x}" ]; then
+                       echo "${BOOTPART}/${x}"
+                       return 0
+               fi
+       done
+
+       return 1
+}
+
+mount_boot() {
+       [ "${DONT_MOUNT_BOOT}" != "no" ] && return 1
+       mountinfo -q "${BOOTPART}" && return 1
+
+       ebegin "Mounting ${BOOTPART}"
+       mount "${BOOTPART}"
+       eend $?
+}
+
+load_image() {
+       if [ "${KNAME}" = "-" ]; then
+               ebegin "Disabling kexec"
+               kexec -u
+               eend $?
+               return  # eend preserved $? for us.
+       fi
+
+       local img initrd="$(initrd_path)" mounted=false kparamopt initrdopt
+
+       if ! img="$(image_path)"; then
+               if mount_boot; then
+                       if img="$(image_path)"; then
+                               mounted=true
+                               initrd="$(initrd_path)"
+                       else
+                               eerror "No kernel image found in ${BOOTPART}!"
+                               umount "${BOOTPART}"
+                               return 1
+                       fi
+               else
+                       eerror "No kernel image found in ${BOOTPART}!"
+                       return 1
+               fi
+       fi
+
+       if [ -z "${ROOTPART}" ]; then
+               ROOTPART="$(readlink -f "$(sed -n '/^\/[^ ]* \/ / s,^\([^ 
]*\).*,\1,p' /proc/mounts)")"
+       fi
+
+       if [ -z "${KPARAM}" ]; then
+               kparamopt="--reuse-cmdline"
+       fi
+
+       if [ -n "${initrd}" ]; then
+               initrdopt="--initrd=${initrd}"
+       fi
+
+       local msg
+       [ -n "${initrd}" ] && \
+               msg=" (with ${initrd})"
+       ebegin "Using kernel image ${img}${msg} for kexec"
+
+       kexec ${KEXEC_OPT_ARGS} ${kparamopt} \
+               -l "${img}" --append="root=${ROOTPART} ${KPARAM}" ${initrdopt}
+       local ret=$?
+
+       ${mounted} && umount "${BOOTPART}"
+       eend ${ret}
+       return ${ret}
+}
+
+start() {
+       if [ "${LOAD_DURING_SHUTDOWN}" = "yes" ]; then
+               local mounted
+               if mount_boot; then
+                       mounted=true
+               fi
+               if ! image_path >/dev/null; then
+                       ewarn "Cannot find kernel image!"
+                       ewarn "Please make sure a valid kernel image is present 
before reboot."
+                       return 0
+               fi
+               if [ -n "${mounted}" ]; then
+                       ebegin "Unmounting ${BOOTPART}"
+                       umount "${BOOTPART}"
+                       eend $?
+               fi
+               # $? is already set to the previous calls.
+               return
+       else
+               load_image
+       fi
+}
+
+stop() {
+       if ! yesno ${RC_REBOOT}; then
+               ebegin "Not rebooting; disabling kexec"
+               kexec -u
+               eend $?
+               return
+       fi
+
+       if [ -f /nokexec ]; then
+               ebegin "Rebooting; disabling kexec due to /nokexec"
+               rm -f /nokexec
+               kexec -u
+               eend $?
+               return
+       fi
+
+       if [ "${LOAD_DURING_SHUTDOWN}" = "yes" ]; then
+               load_image
+       fi
+}

diff --git a/sys-apps/kexec-tools/kexec-tools-9999.ebuild 
b/sys-apps/kexec-tools/kexec-tools-2.0.12.ebuild
similarity index 97%
copy from sys-apps/kexec-tools/kexec-tools-9999.ebuild
copy to sys-apps/kexec-tools/kexec-tools-2.0.12.ebuild
index 8e66b4e..2a2d160 100644
--- a/sys-apps/kexec-tools/kexec-tools-9999.ebuild
+++ b/sys-apps/kexec-tools/kexec-tools-2.0.12.ebuild
@@ -56,7 +56,7 @@ src_install() {
 
        dodoc "${FILESDIR}"/README.Gentoo
 
-       newinitd "${FILESDIR}"/kexec.init-2.0.4-r3 kexec
+       newinitd "${FILESDIR}"/kexec.init-2.0.12 kexec
        newconfd "${FILESDIR}"/kexec.conf-2.0.4 kexec
 
        insinto /etc

diff --git a/sys-apps/kexec-tools/kexec-tools-9999.ebuild 
b/sys-apps/kexec-tools/kexec-tools-9999.ebuild
index 8e66b4e..2a2d160 100644
--- a/sys-apps/kexec-tools/kexec-tools-9999.ebuild
+++ b/sys-apps/kexec-tools/kexec-tools-9999.ebuild
@@ -56,7 +56,7 @@ src_install() {
 
        dodoc "${FILESDIR}"/README.Gentoo
 
-       newinitd "${FILESDIR}"/kexec.init-2.0.4-r3 kexec
+       newinitd "${FILESDIR}"/kexec.init-2.0.12 kexec
        newconfd "${FILESDIR}"/kexec.conf-2.0.4 kexec
 
        insinto /etc

Reply via email to