From 4d5448fd40949e9581ebc52b2dcaeee6ef7d1e95 Mon Sep 17 00:00:00 2001 From: David Michael Date: Sun, 7 Jan 2018 11:43:36 -0500 Subject: [PATCH] sys-apps/kexec-tools: Import from portage-stable --- .../sys-apps/kexec-tools/Manifest | 1 + .../sys-apps/kexec-tools/files/90_kexec | 9 + .../sys-apps/kexec-tools/files/README.Gentoo | 33 ++++ ...kexec-tools-2.0.4-disable-kexec-test.patch | 17 ++ .../kexec-tools-2.0.4-out-of-source.patch | 24 +++ .../sys-apps/kexec-tools/files/kexec.conf | 16 ++ .../kexec-tools/files/kexec.conf-2.0.4 | 34 ++++ .../kexec-tools/files/kexec.init-2.0.13-r1 | 186 ++++++++++++++++++ .../sys-apps/kexec-tools/files/kexec.service | 16 ++ .../kexec-tools/kexec-tools-2.0.16.ebuild | 81 ++++++++ .../sys-apps/kexec-tools/metadata.xml | 13 ++ 11 files changed, 430 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/Manifest create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/90_kexec create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/README.Gentoo create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-disable-kexec-test.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-out-of-source.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf-2.0.4 create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.init-2.0.13-r1 create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.service create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/kexec-tools-2.0.16.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/metadata.xml diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/Manifest new file mode 100644 index 0000000000..63776aab10 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/Manifest @@ -0,0 +1 @@ +DIST kexec-tools-2.0.16.tar.xz 287888 BLAKE2B 7e7bbe11dc2792be3cab6318c12b6866bf6b373fb7bf2d7601ef68a39dd5882aceab7c8905ce0d9b0af1da2072b3f3d2677bd9e006676c484e1d6506ac7036fa SHA512 f2f06e7702fef20c8d7d6aabe1b264e2e2689e5c38cc00dbc2186dd7fa0479edb2dc9e307dd2ad7f03db47015e966e577f11576172604ef01c1bcca471fe2c24 diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/90_kexec b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/90_kexec new file mode 100644 index 0000000000..40bad42395 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/90_kexec @@ -0,0 +1,9 @@ +#!/bin/sh + +version="$1" ; shift +image="$1" ; shift + +exec sed \ + -e "s:\"vmlinuz-.*\":\"vmlinuz-${version}\":" \ + -e "s:/boot/initramfs-.*\.img:/boot/initramfs-${version}\.img:" \ + -i /etc/kexec.conf diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/README.Gentoo b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/README.Gentoo new file mode 100644 index 0000000000..7735e3275b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/README.Gentoo @@ -0,0 +1,33 @@ +Usage +===== + +Do + $ man 8 kexec +for full understanding of the underlying kexec command. +Gentoo offers a wrapper to the bare kexec command through +/etc/init.d/kexec. + +Configuration +------------- + +Configuration is done in /etc/conf.d/kexec, which is self-documented. + +Usage +----- + +In Gentoo, kexec is invoked, i.e., the new kernel will be booted when +rebooting, by reboot (8) command or by pressing Ctrl+Alt+Del. + +If you want to use kexec once, just run + $ /etc/init.d/kexec start + +It'll reserve kexec call at reboot. Later on, you can reboot anytime, +letting kexec starts another (or the same) kernel. When all is done in +the runlevel 6 - killing processes, unmounting volumes, etc - kexec +starts the new kernel instead of doing the normal hardware reboot. + +If you want kexec to be run every time you reboot, add it to a runlevel: + $ rc-update add kexec + +If you want to reboot in the normal way this time, do: + $ touch /nokexec diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-disable-kexec-test.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-disable-kexec-test.patch new file mode 100644 index 0000000000..6fc73f2db1 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-disable-kexec-test.patch @@ -0,0 +1,17 @@ +diff --git kexec-tools-2.0.3/kexec_test/Makefile kexec-tools-2.0.3/kexec_test/Makefile +index fec6210..2ed4d51 100644 +--- kexec-tools-2.0.3/kexec_test/Makefile ++++ kexec-tools-2.0.3/kexec_test/Makefile +@@ -8,12 +8,6 @@ dist += kexec_test/Makefile $(KEXEC_TEST_SRCS) \ + kexec_test/x86-setup-legacy-pic.S + + BUILD_KEXEC_TEST = no +-ifeq ($(ARCH),i386) +-BUILD_KEXEC_TEST = yes +-endif +-ifeq ($(ARCH),x86_64) +-BUILD_KEXEC_TEST = yes +-endif + + ifeq ($(BUILD_KEXEC_TEST),yes) + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-out-of-source.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-out-of-source.patch new file mode 100644 index 0000000000..64c6cd8ab4 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec-tools-2.0.4-out-of-source.patch @@ -0,0 +1,24 @@ + Makefile.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index c1859d1..1aa8559 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -44,7 +44,7 @@ TARGET_CFLAGS = @TARGET_CFLAGS@ + + # Base compiler flags. These are extended by the subcomponent-Makefiles + # where necessary. +-CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \ ++CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/include -I$(srcdir)/include -I$(srcdir)/util_lib/include \ + -Iinclude/ $($(ARCH)_CPPFLAGS) + CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes + PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@ +@@ -77,6 +77,7 @@ pkgincludedir = $(includedir)/$(PACKAGE_NAME) + DESTDIR = + + srcdir = @srcdir@ ++top_builddir = @top_builddir@ + VPATH = .:$(srcdir) + + # install paths diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf new file mode 100644 index 0000000000..aa829b9c23 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf @@ -0,0 +1,16 @@ +# Kernel image pathname, relative from /boot. +KNAME="bzimage" + +# Additional arguments passed to kexec (8) +# Following arguments are support: +# +# --reuse-cmdline +# Use the current boot command line +# +# --command-line=string +# Use a different command line +# +# --initrd=file +# Specify an initrd to use +# +KEXEC_OPT_ARGS="--reuse-cmdline" diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf-2.0.4 b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf-2.0.4 new file mode 100644 index 0000000000..b71ea2bae9 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.conf-2.0.4 @@ -0,0 +1,34 @@ +# Load kexec kernel image into memory during shutdown instead of bootup +# (default: yes) +#LOAD_DURING_SHUTDOWN="yes" + +# Additional arguments passed to kexec (8) +#KEXEC_OPT_ARGS="" + +# Kernel image partition. Mounted automatically if not. +# (default: /boot) +#BOOTPART="/boot" + +# Root partition (should be autodetected) +#ROOTPART="/dev/hda3" + +# Kernel image pathname, relative from BOOTPART. +# If it's one of +# {kernel-genkernel,bzImage,vmlinuz,kernel}-, +# or bzImage, vmlinuz (without suffix), +# then it's automaticaly detected. +# Setting it to "-" will disable kexec. +#KNAME="vmlinuz-3.9.0" + +# Initrd +# Same automatic detection restriction as for KNAME apply. +# initramfs-genkernel-, +# initrd{,.img}-{,.img} +# will be detected. +#INITRD="/boot/fbsplash-emergence-1024x768" + +# Kernel parameters (should be autodetected) +#KPARAM="splash=silent,theme:emergence" + +# Do not try to mount /boot +# DONT_MOUNT_BOOT="yes" diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.init-2.0.13-r1 b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.init-2.0.13-r1 new file mode 100644 index 0000000000..5415b3bc85 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.init-2.0.13-r1 @@ -0,0 +1,186 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# 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 +} + +get_genkernel_arch() { + case $1 in + x86_64) echo "amd64" ;; + i[3456]86) echo "x86" ;; + *) echo "$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)" + local gkarch="$(get_genkernel_arch $karch)" + for x in \ + "bzImage" \ + "vmlinuz" \ + "bzImage-${kver}" \ + "vmlinuz-${kver}" \ + "kernel-genkernel-${karch}-${kver}" \ + "kernel-genkernel-${gkarch}-${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)" + local gkarch="$(get_genkernel_arch $karch)" + for x in \ + "initrd" \ + "initrd.img-${kver}" \ + "initrd-${kver}.img" \ + "initrd-${kver}" \ + "initramfs-${kver}.img" \ + "initramfs-genkernel-${karch}-${kver}" \ + "initramfs-genkernel-${gkarch}-${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/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.service b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.service new file mode 100644 index 0000000000..289aae0df0 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/files/kexec.service @@ -0,0 +1,16 @@ +[Unit] +Description=Gracefully restart the box +Documentation=man:kexec(8) +After=boot.mount +Before=shutdown.target umount.target final.target +ConditionPathExists=!/nokexec + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile=/etc/kexec.conf +ExecStart=/usr/sbin/kexec -l /boot/${KNAME} ${KEXEC_OPT_ARGS} +ExecStop=/usr/sbin/kexec -l /boot/${KNAME} ${KEXEC_OPT_ARGS} + +[Install] +WantedBy=multi-user.target diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/kexec-tools-2.0.16.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/kexec-tools-2.0.16.ebuild new file mode 100644 index 0000000000..f3f01574c0 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/kexec-tools-2.0.16.ebuild @@ -0,0 +1,81 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +if [[ ${PV} == "9999" ]] ; then + inherit git-r3 + EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git" + AUTOTOOLS_AUTORECONF=true +else + SRC_URI="mirror://kernel/linux/utils/kernel/kexec/${P}.tar.xz" + KEYWORDS="~amd64 ~arm64 ~x86" +fi + +inherit libtool linux-info systemd + +DESCRIPTION="Load another kernel from the currently executing Linux kernel" +HOMEPAGE="https://kernel.org/pub/linux/utils/kernel/kexec/" + +LICENSE="GPL-2" +SLOT="0" +IUSE="booke lzma xen zlib" + +REQUIRED_USE="lzma? ( zlib )" + +DEPEND=" + lzma? ( app-arch/xz-utils ) + zlib? ( sys-libs/zlib )" +RDEPEND="${DEPEND}" + +CONFIG_CHECK="~KEXEC" + +PATCHES=( + "${FILESDIR}"/${PN}-2.0.4-disable-kexec-test.patch + "${FILESDIR}"/${PN}-2.0.4-out-of-source.patch +) + +pkg_setup() { + # GNU Make's $(COMPILE.S) passes ASFLAGS to $(CCAS), CCAS=$(CC) + export ASFLAGS="${CCASFLAGS}" +} + +src_prepare() { + default + elibtoolize +} + +src_configure() { + local myeconfargs=( + $(use_with booke) + $(use_with lzma) + $(use_with xen) + $(use_with zlib) + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + dodoc "${FILESDIR}"/README.Gentoo + + newinitd "${FILESDIR}"/kexec.init-2.0.13-r1 kexec + newconfd "${FILESDIR}"/kexec.conf-2.0.4 kexec + + insinto /etc + doins "${FILESDIR}"/kexec.conf + + insinto /etc/kernel/postinst.d + doins "${FILESDIR}"/90_kexec + + systemd_dounit "${FILESDIR}"/kexec.service +} + +pkg_postinst() { + if systemd_is_booted || has_version sys-apps/systemd; then + elog "For systemd support the new config file is" + elog " /etc/kexec.conf" + elog "Please adopt it to your needs as there is no autoconfig anymore" + fi +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/metadata.xml b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/metadata.xml new file mode 100644 index 0000000000..2ea57db782 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/kexec-tools/metadata.xml @@ -0,0 +1,13 @@ + + + + + base-system@gentoo.org + Gentoo Base System + + + Enables support for LZMA compressed kernel images + Include support for Book-E memory management + Enable extended xen support + +