[sys-kernel/dracut] in-tree is fine now

This commit is contained in:
Robert Förster 2025-07-04 19:40:39 +02:00
parent 92e546c2c6
commit c7d8423e53
8 changed files with 0 additions and 436 deletions

View File

@ -1 +0,0 @@
DIST dracut-105.tar.gz 575857 BLAKE2B 93463e3d1649e6e68accbb4f2480af471e851a54185771cec01e8b7112f5c4158901747bdc1180e08e270d3b3b21afb4d510dae09ca6ef00e309300bede188d1 SHA512 1608fb31d6a53905ea25a279586573db5fc7e084b4f6ff06e52065cbcb4ff503c2d51c0a282345844228232b1b590382b482a224183e0c4ee16c9c9e6932b275

View File

@ -1,239 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CARGO_OPTIONAL=1
inherit cargo flag-o-matic bash-completion-r1 edo optfeature systemd toolchain-funcs
if [[ ${PV} == 9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/dracut-ng/dracut-ng"
else
if [[ "${PV}" != *_rc* ]]; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
SRC_URI="https://github.com/dracut-ng/dracut-ng/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-ng-${PV}"
fi
DESCRIPTION="Generic initramfs generation tool"
HOMEPAGE="https://github.com/dracut-ng/dracut-ng/wiki"
LICENSE="GPL-2"
SLOT="0"
IUSE="+dracut-cpio selinux test"
RESTRICT="test"
PROPERTIES="test? ( test_privileged test_network )"
RDEPEND="
app-alternatives/cpio
>=app-shells/bash-4.0:0
sys-apps/coreutils[xattr(-)]
>=sys-apps/kmod-23[tools]
|| (
>=sys-apps/sysvinit-2.87-r3
sys-apps/openrc[sysv-utils(-),selinux?]
sys-apps/openrc-navi[sysv-utils(-),selinux?]
sys-apps/systemd[sysv-utils]
sys-apps/s6-linux-init[sysv-utils(-)]
)
>=sys-apps/util-linux-2.21
virtual/pkgconfig[native-symlinks(+)]
virtual/udev
elibc_musl? ( sys-libs/fts-standalone )
selinux? (
sec-policy/selinux-dracut
sys-libs/libselinux
sys-libs/libsepol
)
"
DEPEND="
>=sys-apps/kmod-23
elibc_musl? ( sys-libs/fts-standalone )
"
BDEPEND="
app-text/asciidoc
app-text/docbook-xml-dtd:4.5
>=app-text/docbook-xsl-stylesheets-1.75.2
>=dev-libs/libxslt-1.1.26
virtual/pkgconfig
dracut-cpio? ( ${RUST_DEPEND} )
test? (
net-nds/rpcbind
net-fs/nfs-utils
sys-block/open-iscsi
sys-fs/btrfs-progs
sys-fs/dmraid
sys-fs/lvm2[lvm,thin]
sys-fs/mdadm
sys-fs/multipath-tools
alpha? ( app-emulation/qemu[qemu_softmmu_targets_alpha] )
amd64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] )
arm? ( app-emulation/qemu[qemu_softmmu_targets_arm] )
arm64? ( app-emulation/qemu[qemu_softmmu_targets_aarch64] )
hppa? ( app-emulation/qemu[qemu_softmmu_targets_hppa] )
loong? ( app-emulation/qemu[qemu_softmmu_targets_loongarch64] )
mips? ( || (
app-emulation/qemu[qemu_softmmu_targets_mips]
app-emulation/qemu[qemu_softmmu_targets_mips64]
app-emulation/qemu[qemu_softmmu_targets_mips64el]
) )
ppc? ( app-emulation/qemu[qemu_softmmu_targets_ppc] )
ppc64? ( app-emulation/qemu[qemu_softmmu_targets_ppc64] )
riscv? ( || (
app-emulation/qemu[qemu_softmmu_targets_riscv32]
app-emulation/qemu[qemu_softmmu_targets_riscv64]
) )
sparc? ( || (
app-emulation/qemu[qemu_softmmu_targets_sparc]
app-emulation/qemu[qemu_softmmu_targets_sparc64]
) )
x86? ( app-emulation/qemu[qemu_softmmu_targets_i386] )
)
"
QA_MULTILIB_PATHS="usr/lib/dracut/.*"
PATCHES=(
"${FILESDIR}"/gentoo-ldconfig-paths-r1.patch
# Gentoo specific acct-user and acct-group conf adjustments
"${FILESDIR}"/${PN}-103-acct-user-group-gentoo.patch
# https://github.com/dracut-ng/dracut-ng/pull/834
"${FILESDIR}"/${PN}-105-ensure-abs-args-for-objcopy.patch
# https://github.com/dracut-ng/dracut-ng/pull/904
"${FILESDIR}"/${PN}-105-fix-check_kernel_module.patch
# https://github.com/dracut-ng/dracut-ng/pull/921
"${FILESDIR}"/dracut-105-systemd-cryptsetup.patch
)
pkg_setup() {
use dracut-cpio && rust_pkg_setup
}
src_configure() {
local myconf=(
--prefix="${EPREFIX}/usr"
--sysconfdir="${EPREFIX}/etc"
--bashcompletiondir="$(get_bashcompdir)"
--systemdsystemunitdir="$(systemd_get_systemunitdir)"
--disable-dracut-cpio
)
# this emulates what the build system would be doing without us
append-cflags -D_FILE_OFFSET_BITS=64
tc-export CC PKG_CONFIG
edo ./configure "${myconf[@]}"
if use dracut-cpio; then
cargo_gen_config
cargo_src_configure
fi
}
src_compile() {
default
if use dracut-cpio; then
pushd src/dracut-cpio >/dev/null || die
cargo_src_compile
popd >/dev/null || die
fi
}
src_test() {
addwrite /dev/kvm
# Translate ARCH so run-qemu can find the correct qemu-system-ARCH
local qemu_arch
if use amd64; then
qemu_arch=x86_64
elif use arm64; then
qemu_arch=aarch64
elif use loong; then
qemu_arch=loongarch64
elif use x86; then
qemu_arch=i386
else
qemu_arch=$(tc-arch)
fi
ARCH=${qemu_arch} emake -C test check
}
src_install() {
local DOCS=(
AUTHORS
NEWS.md
README.md
)
default
if use dracut-cpio; then
exeinto /usr/lib/dracut
doexe "src/dracut-cpio/$(cargo_target_dir)/dracut-cpio"
fi
}
pkg_preinst() {
# Remove directory/symlink conflicts
# https://bugs.gentoo.org/943007
local save_nullglob=$(shopt -p nullglob)
shopt -s nullglob
local module
for module in "${EROOT}"/usr/lib/dracut/modules.d/{80test,80test-makeroot,80test-root}; do
if [[ ! -L ${module} && -d ${module} ]]; then
rm -rv "${module}" || die
fi
local backups=( "${module}".backup.* )
if [[ ${#backups[@]} -gt 0 ]]; then
rm -v "${backups[@]}" || die
fi
done
eval "${save_nullglob}"
}
pkg_postinst() {
optfeature "Networking support" net-misc/networkmanager
optfeature "Legacy networking support" net-misc/curl "net-misc/dhcp[client]" \
sys-apps/iproute2 "net-misc/iputils[arping]"
optfeature "Scan for Btrfs on block devices" sys-fs/btrfs-progs
optfeature "Load kernel modules and drop this privilege for real init" \
sys-libs/libcap
optfeature "Support CIFS" net-fs/cifs-utils
optfeature "Decrypt devices encrypted with cryptsetup/LUKS" \
"sys-fs/cryptsetup[-static-libs]"
optfeature "Support for GPG-encrypted keys for crypt module" \
app-crypt/gnupg
optfeature \
"Allows use of dash instead of default bash (on your own risk)" \
app-shells/dash
optfeature \
"Allows use of busybox instead of default bash (on your own risk)" \
sys-apps/busybox
optfeature "Support iSCSI" sys-block/open-iscsi
optfeature "Support Logical Volume Manager" sys-fs/lvm2[lvm]
optfeature "Support MD devices, also known as software RAID devices" \
sys-fs/mdadm sys-fs/dmraid
optfeature "Support Device Mapper multipathing" sys-fs/multipath-tools
optfeature "Plymouth boot splash" '>=sys-boot/plymouth-0.8.5-r5'
optfeature "Support network block devices" sys-block/nbd
optfeature "Support NFS" net-fs/nfs-utils net-nds/rpcbind
optfeature \
"Install ssh and scp along with config files and specified keys" \
virtual/openssh
optfeature "Enable logging with rsyslog" app-admin/rsyslog
optfeature "Support Squashfs" sys-fs/squashfs-tools
optfeature "Support TPM 2.0 TSS" app-crypt/tpm2-tools
optfeature "Support Bluetooth (experimental)" net-wireless/bluez
optfeature "Support BIOS-given device names" sys-apps/biosdevname
optfeature "Support network NVMe" sys-apps/nvme-cli app-misc/jq
optfeature \
"Enable rngd service to help generating entropy early during boot" \
sys-apps/rng-tools
optfeature "building Unified Kernel Images with dracut (--uefi)" \
"sys-apps/systemd[boot]" "sys-apps/systemd-utils[boot]"
optfeature "automatically generating an initramfs on each kernel installation" \
"sys-kernel/installkernel[dracut]"
optfeature "automatically generating an UKI on each kernel installation" \
"sys-kernel/installkernel[dracut,uki]"
}

View File

@ -1,30 +0,0 @@
diff --git a/dracut-init.sh b/dracut-init.sh
index 986da96b..bd47bc92 100755
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -711,10 +711,10 @@ inst_libdir_file() {
# install sysusers files
inst_sysusers() {
- inst_multiple -o "$sysusers/$*"
+ inst_multiple -o "$sysusers/acct-*-$*"
if [[ $hostonly ]]; then
- inst_multiple -H -o "$sysusersconfdir/$*"
+ inst_multiple -H -o "$sysusersconfdir/acct-*-$*"
fi
}
diff --git a/modules.d/91tpm2-tss/module-setup.sh b/modules.d/91tpm2-tss/module-setup.sh
index 4441f552..4b5654d5 100755
--- a/modules.d/91tpm2-tss/module-setup.sh
+++ b/modules.d/91tpm2-tss/module-setup.sh
@@ -30,7 +30,7 @@ installkernel() {
# Install the required file(s) and directories for the module in the initramfs.
install() {
- inst_sysusers tpm2-tss.conf
+ inst_sysusers tss.conf
inst_multiple -o \
"$tmpfilesdir"/tpm2-tss-fapi.conf \

View File

@ -1,48 +0,0 @@
From 1579bb0c77d9e1e4599623a165c54a0dccdaf875 Mon Sep 17 00:00:00 2001
From: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
Date: Thu, 31 Oct 2024 11:28:37 +0100
Subject: [PATCH] fix(dracut.sh): ensure abs path for objcopy args
Closes: https://github.com/dracut-ng/dracut-ng/issues/833
Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
---
dracut.sh | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index 90927136e..8b666a1ac 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -35,6 +35,19 @@ readonly dracut_cmd=$(readlink -f "$0")
set -o pipefail
+# below we sometimes cd, which causes problems if we're building an UKI
+# and relative paths are passed on to us. Store the pwd before we do anything.
+pwd=$(pwd)
+path_rel_to_abs() {
+ for var in "$@"; do
+ if [[ $var == /* ]]; then
+ echo "$var"
+ else
+ echo "$pwd/$var"
+ fi
+ done
+}
+
usage() {
[[ $sysroot_l ]] && dracutsysrootdir="$sysroot_l"
[[ $dracutbasedir ]] || dracutbasedir="$dracutsysrootdir"/usr/lib/dracut
@@ -1095,9 +1108,9 @@ drivers_dir="${drivers_dir%"${drivers_dir##*[!/]}"}"
[[ $reproducible_l ]] && reproducible="$reproducible_l"
[[ $loginstall_l ]] && loginstall="$loginstall_l"
[[ $uefi_l ]] && uefi=$uefi_l
-[[ $uefi_stub_l ]] && uefi_stub="$uefi_stub_l"
-[[ $uefi_splash_image_l ]] && uefi_splash_image="$uefi_splash_image_l"
-[[ $kernel_image_l ]] && kernel_image="$kernel_image_l"
+[[ $uefi_stub_l ]] && uefi_stub=$(path_rel_to_abs "$uefi_stub_l")
+[[ $uefi_splash_image_l ]] && uefi_splash_image=$(path_rel_to_abs "$uefi_splash_image_l")
+[[ $kernel_image_l ]] && kernel_image=$(path_rel_to_abs "$kernel_image_l")
[[ $sbat_l ]] && sbat="$sbat_l"
[[ $machine_id_l ]] && machine_id="$machine_id_l"

View File

@ -1,28 +0,0 @@
From b90eda4b431af23d1101f1ea68b656929c6a82b2 Mon Sep 17 00:00:00 2001
From: Nowa Ammerlaan <andrewammerlaan@gentoo.org>
Date: Fri, 8 Nov 2024 20:01:54 +0100
Subject: [PATCH] fix(dracut-functions.sh): check for modules in --kmoddir, not
in --sysroot
Modules are installed from the directory specified by --kmoddir, but currently
the check_kernel_module() function is checking for the module in
--sysroot/lib/modules. This is notably not the same when kernels packages are
being built inside some docker container. We should check for the modules
existence in the directory we are actually going to install it from.
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 865c31290..245c69cb6 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -761,7 +761,7 @@ check_kernel_config() {
# 0 if the kernel module is either built-in or available
# 1 if the kernel module is not enabled
check_kernel_module() {
- modprobe -d "$dracutsysrootdir" -S "$kernel" --dry-run "$1" &> /dev/null || return 1
+ modprobe -d "$drivers_dir/../../../" -S "$kernel" --dry-run "$1" &> /dev/null || return 1
}
# get_cpu_vendor

View File

@ -1,29 +0,0 @@
https://github.com/dracut-ng/dracut-ng/pull/921
https://bugs.gentoo.org/943035
From 2d4b550c71cc79ac7a3f18afc09d8263963d5de2 Mon Sep 17 00:00:00 2001
From: Jo Zzsi <jozzsicsataban@gmail.com>
Date: Sat, 9 Nov 2024 14:06:57 -0500
Subject: [PATCH] fix(dracut-systemd): check systemd-cryptsetup before
including
---
modules.d/98dracut-systemd/module-setup.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/modules.d/98dracut-systemd/module-setup.sh b/modules.d/98dracut-systemd/module-setup.sh
index 0438e40f0..f2502cd78 100755
--- a/modules.d/98dracut-systemd/module-setup.sh
+++ b/modules.d/98dracut-systemd/module-setup.sh
@@ -19,7 +19,10 @@ depends() {
# systemd-cryptsetup is mandatory dependency
# see https://github.com/dracut-ng/dracut-ng/issues/563
if dracut_module_included "crypt"; then
- deps+=" systemd-cryptsetup"
+ module_check systemd-cryptsetup > /dev/null 2>&1
+ if [[ $? == 255 ]]; then
+ deps+=" systemd-cryptsetup"
+ fi
fi
echo "$deps"

View File

@ -1,39 +0,0 @@
From e6a5f02038954ede223cc75901386acf43ec4264 Mon Sep 17 00:00:00 2001
From: Alexander Tsoy <alexander@tsoy.me>
Date: Mon, 9 Mar 2020 02:47:07 +0300
Subject: [PATCH] Remove redundant gcc paths in ldconfig_paths()
Bug: https://bugs.gentoo.org/705728
---
dracut-functions.sh | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 5206bd21..a119fb15 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -81,7 +81,20 @@ find_binary() {
}
ldconfig_paths() {
- $DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2> /dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq
+ local gccpath
+
+ if type -P gcc-config &>/dev/null; then
+ gccpath=$(gcc-config -c)
+ gccpath=/usr/lib/gcc/${gccpath%-*}/${gccpath##*-}
+ fi
+
+ while read -r line; do
+ if [[ ${line} != /usr/lib/gcc/* || -z ${gccpath} ]]; then
+ echo ${line}
+ elif [[ ${line} == ${gccpath} ]]; then
+ echo ${line}
+ fi
+ done < <($DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq)
}
# Version comparision function. Assumes Linux style version scheme.
--
2.32.0

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person" proxied="yes">
<email>alexander@tsoy.me</email>
<name>Alexander Tsoy</name>
</maintainer>
<maintainer type="person">
<email>floppym@gentoo.org</email>
<name>Mike Gilbert</name>
</maintainer>
<maintainer type="person">
<email>nowa@gentoo.org</email>
<name>Nowa Ammerlaan</name>
</maintainer>
<use>
<flag name="dracut-cpio">Build the enhanced 'dracut-cpio' program</flag>
</use>
<upstream>
<remote-id type="github">dracut-ng/dracut-ng</remote-id>
</upstream>
</pkgmetadata>