diff --git a/sys-kernel/dracut/dracut-060_pre20231030.ebuild b/sys-kernel/dracut/dracut-060_pre20231030-r2.ebuild similarity index 93% rename from sys-kernel/dracut/dracut-060_pre20231030.ebuild rename to sys-kernel/dracut/dracut-060_pre20231030-r2.ebuild index 4bd0cf0..20c4e40 100644 --- a/sys-kernel/dracut/dracut-060_pre20231030.ebuild +++ b/sys-kernel/dracut/dracut-060_pre20231030-r2.ebuild @@ -1,11 +1,12 @@ # Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 CARGO_OPTIONAL=1 inherit bash-completion-r1 cargo edo optfeature systemd toolchain-funcs + if [[ ${PV} == 9999 ]] ; then inherit git-r3 EGIT_REPO_URI="https://github.com/dracutdevs/dracut" @@ -25,13 +26,12 @@ HOMEPAGE="https://github.com/dracutdevs/dracut/wiki" LICENSE="GPL-2" SLOT="0" if [[ "${PV}" != *_rc* ]]; then - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" fi IUSE="dracut-cpio selinux test" RESTRICT="!test? ( test )" RDEPEND=" - app-arch/cpio >=app-shells/bash-4.0:0 sys-apps/coreutils[xattr(-)] >=sys-apps/kmod-23[tools] @@ -51,6 +51,7 @@ RDEPEND=" sys-libs/libselinux sys-libs/libsepol ) + !dracut-cpio? ( app-arch/cpio ) " DEPEND=" >=sys-apps/kmod-23 @@ -70,6 +71,9 @@ QA_MULTILIB_PATHS="usr/lib/dracut/.*" PATCHES=( "${FILESDIR}"/gentoo-ldconfig-paths-r1.patch + "${FILESDIR}"/dracut-060-fix-resume-hostonly.patch + "${FILESDIR}"/dracut-060-systemd-255.patch + "${FILESDIR}"/dracut-059-install-new-systemd-hibernate-resume.service.patch ) src_configure() { @@ -84,11 +88,6 @@ src_configure() { tc-export CC PKG_CONFIG edo ./configure "${myconf[@]}" - - if [[ ${PV} != 9999 && ! -f dracut-version.sh ]] ; then - # Source tarball from github doesn't include this file - echo "DRACUT_VERSION=${PV}" > dracut-version.sh || die - fi } src_test() { diff --git a/sys-kernel/dracut/dracut-9999.ebuild b/sys-kernel/dracut/dracut-9999.ebuild index 76a2ff3..7fd96d6 100644 --- a/sys-kernel/dracut/dracut-9999.ebuild +++ b/sys-kernel/dracut/dracut-9999.ebuild @@ -1,11 +1,12 @@ # Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 CARGO_OPTIONAL=1 inherit bash-completion-r1 cargo edo optfeature systemd toolchain-funcs + if [[ ${PV} == 9999 ]] ; then inherit git-r3 EGIT_REPO_URI="https://github.com/dracutdevs/dracut" @@ -31,7 +32,6 @@ IUSE="dracut-cpio selinux test" RESTRICT="!test? ( test )" RDEPEND=" - app-arch/cpio >=app-shells/bash-4.0:0 sys-apps/coreutils[xattr(-)] >=sys-apps/kmod-23[tools] @@ -51,6 +51,7 @@ RDEPEND=" sys-libs/libselinux sys-libs/libsepol ) + !dracut-cpio? ( app-arch/cpio ) " DEPEND=" >=sys-apps/kmod-23 @@ -84,11 +85,6 @@ src_configure() { tc-export CC PKG_CONFIG edo ./configure "${myconf[@]}" - - if [[ ${PV} != 9999 && ! -f dracut-version.sh ]] ; then - # Source tarball from github doesn't include this file - echo "DRACUT_VERSION=${PV}" > dracut-version.sh || die - fi } src_test() { diff --git a/sys-kernel/dracut/files/dracut-059-install-new-systemd-hibernate-resume.service.patch b/sys-kernel/dracut/files/dracut-059-install-new-systemd-hibernate-resume.service.patch new file mode 100644 index 0000000..124bd6a --- /dev/null +++ b/sys-kernel/dracut/files/dracut-059-install-new-systemd-hibernate-resume.service.patch @@ -0,0 +1,21 @@ +From https://github.com/dracutdevs/dracut/pull/2527 +From a2fe89116db4b286fbf515f26bd1773b5e6ee8ad Mon Sep 17 00:00:00 2001 +From: Antonio Alvarez Feijoo +Date: Tue, 26 Sep 2023 09:43:37 +0200 +Subject: [PATCH] fix(resume): add new systemd-hibernate-resume.service + +Since https://github.com/systemd/systemd/commit/a628d933, the generator only +does the initial validation of the system info and then enables the new +`systemd-hibernate-resume.service`. + +Fixes #2513 +--- a/modules.d/95resume/module-setup.sh ++++ b/modules.d/95resume/module-setup.sh +@@ -44,6 +44,7 @@ install() { + if dracut_module_included "systemd" && [[ -x $dracutsysrootdir$systemdutildir/systemd-hibernate-resume ]]; then + inst_multiple -o \ + "$systemdutildir"/system-generators/systemd-hibernate-resume-generator \ ++ "$systemdsystemunitdir"/systemd-hibernate-resume.service \ + "$systemdsystemunitdir"/systemd-hibernate-resume@.service \ + "$systemdutildir"/systemd-hibernate-resume + return 0 diff --git a/sys-kernel/dracut/files/dracut-060-fix-resume-hostonly.patch b/sys-kernel/dracut/files/dracut-060-fix-resume-hostonly.patch new file mode 100644 index 0000000..3563f85 --- /dev/null +++ b/sys-kernel/dracut/files/dracut-060-fix-resume-hostonly.patch @@ -0,0 +1,65 @@ +https://bugs.gentoo.org/917000 +https://github.com/dracutdevs/dracut/pull/2494 + +From b88d0bab791bdc4ca75d13802f0391caf537650d Mon Sep 17 00:00:00 2001 +From: Andrew Ammerlaan +Date: Sun, 20 Aug 2023 11:47:22 +0200 +Subject: [PATCH] fix(resume): include in hostonly mode if resume= on cmdline + +The grep introduced in commit e3a7112bef794e2f2dd741ec2c74fa9cb9117651 +does not work as intended. The resume module is always excluded in hostonly +mode. + +Made this a bit more explicit with if/else so it is more clear what is going +on. The in-line ||/&& makes the line really long and makes it more difficult +to understand what is going on. + +Bug: https://github.com/dracutdevs/dracut/issues/924 +Signed-off-by: Andrew Ammerlaan +--- + modules.d/95resume/module-setup.sh | 32 +++++++++++++++++++++++------- + 1 file changed, 25 insertions(+), 7 deletions(-) + +diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh +index d255103366..2d48043827 100755 +--- a/modules.d/95resume/module-setup.sh ++++ b/modules.d/95resume/module-setup.sh +@@ -10,13 +10,31 @@ check() { + return 1 + } + +- # Only support resume if hibernation is currently on +- # and no swap is mounted on a net device +- [[ $hostonly ]] || [[ $mount_needs ]] && { +- swap_on_netdevice || [[ -f /sys/power/resume && "$(< /sys/power/resume)" == "0:0" ]] || grep -rq '^\|[[:space:]]resume=' /proc/cmdline /etc/cmdline /etc/cmdline.d /etc/kernel/cmdline /usr/lib/kernel/cmdline 2> /dev/null && return 255 +- } +- +- return 0 ++ # If hostonly check if we want to include the resume module ++ if [[ $hostonly ]] || [[ $mount_needs ]]; then ++ # Resuming won't work if swap is on a netdevice ++ swap_on_netdevice && return 255 ++ if grep -rq 'resume=' /proc/cmdline /etc/cmdline /etc/cmdline.d /etc/kernel/cmdline /usr/lib/kernel/cmdline 2> /dev/null; then ++ # hibernation support requested on kernel command line ++ return 0 ++ else ++ # resume= not set on kernel command line ++ if [[ -f /sys/power/resume ]]; then ++ if [[ "$(< /sys/power/resume)" == "0:0" ]]; then ++ # hibernation supported by the kernel, but not enabled ++ return 255 ++ else ++ # hibernation supported by the kernel and enabled ++ return 0 ++ fi ++ else ++ # resume file doesn't exist, hibernation not supported by kernel ++ return 255 ++ fi ++ fi ++ else ++ return 0 ++ fi + } + + # called by dracut diff --git a/sys-kernel/dracut/files/dracut-060-systemd-255.patch b/sys-kernel/dracut/files/dracut-060-systemd-255.patch new file mode 100644 index 0000000..9d577e9 --- /dev/null +++ b/sys-kernel/dracut/files/dracut-060-systemd-255.patch @@ -0,0 +1,26 @@ +https://github.com/dracutdevs/dracut/pull/2586/files +diff --git a/modules.d/01systemd-pcrphase/module-setup.sh b/modules.d/01systemd-pcrphase/module-setup.sh +index fa960a42c1..87efd0c1a6 100755 +--- a/modules.d/01systemd-pcrphase/module-setup.sh ++++ b/modules.d/01systemd-pcrphase/module-setup.sh +@@ -6,7 +6,11 @@ + check() { + + # If the binary(s) requirements are not fulfilled the module can't be installed. +- require_binaries "$systemdutildir"/systemd-pcrphase || return 1 ++ # systemd-255 renamed the binary, check for old and new location. ++ if ! require_binaries "$systemdutildir"/systemd-pcrphase && \ ++ ! require_binaries "$systemdutildir"/systemd-pcrextend; then ++ return 1 ++ fi + + # Return 255 to only include the module, if another module requires it. + return 255 +@@ -28,6 +32,7 @@ install() { + + inst_multiple -o \ + "$systemdutildir"/systemd-pcrphase \ ++ "$systemdutildir"/systemd-pcrextend \ + "$systemdsystemunitdir"/systemd-pcrphase-initrd.service \ + "$systemdsystemunitdir/systemd-pcrphase-initrd.service.d/*.conf" \ + "$systemdsystemunitdir"/initrd.target.wants/systemd-pcrphase-initrd.service diff --git a/sys-kernel/dracut/metadata.xml b/sys-kernel/dracut/metadata.xml index 9f7e1ef..611cdd9 100644 --- a/sys-kernel/dracut/metadata.xml +++ b/sys-kernel/dracut/metadata.xml @@ -1,10 +1,6 @@ - - chutzpah@gentoo.org - Patrick McLean - alexander@tsoy.me Alexander Tsoy @@ -13,4 +9,7 @@ floppym@gentoo.org Mike Gilbert + + dracutdevs/dracut +