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