summaryrefslogtreecommitdiff
path: root/sys-kernel/dracut/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-04-12 03:41:30 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-04-12 03:41:30 +0100
commit623ee73d661e5ed8475cb264511f683407d87365 (patch)
tree993eb27c93ec7a2d2d19550300d888fc1fed9e69 /sys-kernel/dracut/files
parentceeeb463cc1eef97fd62eaee8bf2196ba04bc384 (diff)
gentoo Easter resync : 12.04.2020
Diffstat (limited to 'sys-kernel/dracut/files')
-rw-r--r--sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch32
-rw-r--r--sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch24
-rw-r--r--sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch23
-rw-r--r--sys-kernel/dracut/files/045-systemdutildir.patch45
-rw-r--r--sys-kernel/dracut/files/046-amd-microcode.patch30
-rw-r--r--sys-kernel/dracut/files/047-all-fix-issues-found-by-shellcheck.patch77
-rw-r--r--sys-kernel/dracut/files/047-plymouth-fix-detection-of-plymouth-directory.patch31
-rw-r--r--sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch34
-rw-r--r--sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch78
-rw-r--r--sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch75
-rw-r--r--sys-kernel/dracut/files/050-gentoo-ldconfig-paths.patch39
-rw-r--r--sys-kernel/dracut/files/dracut-044-bash-4.4.patch80
-rw-r--r--sys-kernel/dracut/files/dracut-044-preserve-xattrs-when-copying.patch51
13 files changed, 226 insertions, 393 deletions
diff --git a/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch b/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch
deleted file mode 100644
index fd6f11859457..000000000000
--- a/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c41df7e1db1adc51399ab2c22f251b15eb2065b1 Mon Sep 17 00:00:00 2001
-From: Alexander Tsoy <alexander@tsoy.me>
-Date: Tue, 5 Jan 2016 22:11:57 +0300
-Subject: [PATCH] base/dracut-lib.sh:dev_unit_name() guard against $dev
- beginning with "-"
-
-crypt/parse-crypt.sh generate initqueue job which always call
-dev_unit_name() with an argument beginning with "-". This results
-in the following error:
-
-dracut-initqueue[307]: + systemd-escape -p -cfb4aa43-2f02-4c6b-a313-60ea99288087
-dracut-initqueue[307]: systemd-escape: invalid option -- 'c'
----
- modules.d/99base/dracut-lib.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
-index ad03394..0a0b1b9 100755
---- a/modules.d/99base/dracut-lib.sh
-+++ b/modules.d/99base/dracut-lib.sh
-@@ -874,7 +874,7 @@ dev_unit_name()
- local dev="$1"
-
- if command -v systemd-escape >/dev/null; then
-- systemd-escape -p "$dev"
-+ systemd-escape -p -- "$dev"
- return
- fi
-
---
-2.10.2
-
diff --git a/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch b/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch
deleted file mode 100644
index 21cb6792acd2..000000000000
--- a/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From d4efc0aeeecc470d9a267b7f3c130f472488905c Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Wed, 25 May 2016 15:06:29 +0200
-Subject: [PATCH] systemd-initrd: add initrd-root-device.target
-
----
- modules.d/01systemd-initrd/module-setup.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh
-index fb6a9ea..c1ccd2a 100755
---- a/modules.d/01systemd-initrd/module-setup.sh
-+++ b/modules.d/01systemd-initrd/module-setup.sh
-@@ -28,6 +28,7 @@ install() {
- inst_multiple -o \
- $systemdsystemunitdir/initrd.target \
- $systemdsystemunitdir/initrd-fs.target \
-+ $systemdsystemunitdir/initrd-root-device.target \
- $systemdsystemunitdir/initrd-root-fs.target \
- $systemdsystemunitdir/initrd-switch-root.target \
- $systemdsystemunitdir/initrd-switch-root.service \
---
-2.10.2
-
diff --git a/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch b/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch
deleted file mode 100644
index 85ebc7e638f2..000000000000
--- a/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 69395a528aed99ec04b16c14ebacf4c2e10afd26 Mon Sep 17 00:00:00 2001
-From: Mike Gilbert <floppym@gentoo.org>
-Date: Fri, 4 Nov 2016 13:09:28 -0400
-Subject: [PATCH] 50-dracut.install: use /bin/bash shebang
-
-This script utilizes several bash-specific constructs.
----
- 50-dracut.install | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/50-dracut.install b/50-dracut.install
-index 7d081d5..54c71d4 100755
---- a/50-dracut.install
-+++ b/50-dracut.install
-@@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
-
- COMMAND="$1"
- KERNEL_VERSION="$2"
---
-2.10.2
-
diff --git a/sys-kernel/dracut/files/045-systemdutildir.patch b/sys-kernel/dracut/files/045-systemdutildir.patch
deleted file mode 100644
index e56abba35470..000000000000
--- a/sys-kernel/dracut/files/045-systemdutildir.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From ed5cc98864c28eab2c4cb45ec0f67450699aaaa8 Mon Sep 17 00:00:00 2001
-From: Mike Gilbert <floppym@gentoo.org>
-Date: Mon, 3 Jul 2017 22:39:42 -0400
-Subject: [PATCH] dracut.sh: improve udevdir and systemdutildir fallback logic
-
-Check for a common binary in systemdutildir. This resolves an issue on
-split-usr systems, where it is common to have both /lib/systemd[/system]
-and /usr/lib/systemd[/user] present.
-
-Check for systemd-udevd specifically, since some distros (Gentoo) allow
-udev to be installed without the rest of the systemd stack.
-
-Similar logic is applied to udevdir simply for consistency.
----
- dracut.sh | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/dracut.sh b/dracut.sh
-index 64d94201..67c12a72 100755
---- a/dracut.sh
-+++ b/dracut.sh
-@@ -1266,16 +1266,16 @@ done
- [[ -d $udevdir ]] \
- || udevdir="$(pkg-config udev --variable=udevdir 2>/dev/null)"
- if ! [[ -d "$udevdir" ]]; then
-- [[ ! -h /lib ]] && [[ -d /lib/udev ]] && udevdir=/lib/udev
-- [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev
-+ [[ -e /lib/udev/collect ]] && udevdir=/lib/udev
-+ [[ -e /usr/lib/udev/collect ]] && udevdir=/usr/lib/udev
- fi
-
- [[ -d $systemdutildir ]] \
- || systemdutildir=$(pkg-config systemd --variable=systemdutildir 2>/dev/null)
-
- if ! [[ -d "$systemdutildir" ]]; then
-- [[ ! -h /lib ]] && [[ -d /lib/systemd ]] && systemdutildir=/lib/systemd
-- [[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd
-+ [[ -e /lib/systemd/systemd-udevd ]] && systemdutildir=/lib/systemd
-+ [[ -e /usr/lib/systemd/systemd-udevd ]] && systemdutildir=/usr/lib/systemd
- fi
-
- [[ -d $systemdsystemunitdir ]] \
---
-2.13.2
-
diff --git a/sys-kernel/dracut/files/046-amd-microcode.patch b/sys-kernel/dracut/files/046-amd-microcode.patch
deleted file mode 100644
index c351275dbebc..000000000000
--- a/sys-kernel/dracut/files/046-amd-microcode.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From a1250a704e33c59f2395aaad054db1c745a5c98a Mon Sep 17 00:00:00 2001
-From: Daniel Molkentin <dmolkentin@suse.com>
-Date: Tue, 12 Dec 2017 17:48:36 +0100
-Subject: [PATCH] Simplify microcode lookup for for AMD CPUs
-
----
- dracut-functions.sh | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/dracut-functions.sh b/dracut-functions.sh
-index 112b2434..d7fc5303 100755
---- a/dracut-functions.sh
-+++ b/dracut-functions.sh
-@@ -661,11 +661,8 @@ get_ucode_file ()
- local stepping=`grep -E "stepping" /proc/cpuinfo | head -1 | sed s/.*:\ //`
-
- if [[ "$(get_cpu_vendor)" == "AMD" ]]; then
-- # If family greater than or equal to 0x16
-- if [[ $family -ge 22 ]]; then
-- printf "microcode_amd_fam16h.bin"
-- elif [[ $family -eq 21 ]]; then
-- printf "microcode_amd_fam15h.bin"
-+ if [[ $family -ge 21 ]]; then
-+ printf "microcode_amd_fam%xh.bin" $family
- else
- printf "microcode_amd.bin"
- fi
---
-2.16.0.rc0
-
diff --git a/sys-kernel/dracut/files/047-all-fix-issues-found-by-shellcheck.patch b/sys-kernel/dracut/files/047-all-fix-issues-found-by-shellcheck.patch
deleted file mode 100644
index d5cbe042b639..000000000000
--- a/sys-kernel/dracut/files/047-all-fix-issues-found-by-shellcheck.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 3aa37cafde734719f2377600a17459fad30edfbc Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Fri, 2 Mar 2018 12:29:46 +0100
-Subject: [PATCH 06/14] all: fix issues found by shellcheck
-To: <initramfs@vger.kernel.org>
-
-Error: SHELLCHECK_WARNING:
-/usr/lib/dracut/dracut-init.sh:939:20: error: Argument to implicit -n is always true due to literal strings. [SC2157]
- 937| dracut_kernel_post() {
- 938| for _f in modules.builtin.bin modules.builtin modules.order; do
- 939|-> [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
- 940| done
- 941|
-
-Error: SHELLCHECK_WARNING:
-/usr/lib/dracut/modules.d/98syslog/parse-syslog-opts.sh:18:12: error: This expression is constant. Did you forget a $ somewhere? [SC2078]
- 16| elif [ -e /sbin/syslogd ]; then
- 17| syslogtype="syslogd"
- 18|-> elif [ /sbin/syslog-ng ]; then
- 19| syslogtype="syslog-ng"
- 20| else
-
-Error: SHELLCHECK_WARNING:
-/usr/lib/dracut/modules.d/90crypt/crypt-lib.sh:15:29: error: Since you double quoted this, it will not word split, and the loop will only run once. [SC2066]
- 13| strstr "$d" "${luks##luks-}" && return 0
- 14| if [ -n "$dev" ]; then
- 15|-> for _dev in "$(devnames $d)"; do
- 16| [ "$dev" -ef "$_dev" ] && return 0
- 17| done
----
- dracut-init.sh | 2 +-
- modules.d/90crypt/crypt-lib.sh | 2 +-
- modules.d/98syslog/parse-syslog-opts.sh | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/dracut-init.sh b/dracut-init.sh
-index 53e6f13a..1278c638 100644
---- a/dracut-init.sh
-+++ b/dracut-init.sh
-@@ -942,7 +942,7 @@ for_each_kmod_dep() {
-
- dracut_kernel_post() {
- for _f in modules.builtin.bin modules.builtin modules.order; do
-- [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
-+ [[ -e $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f"
- done
-
- # generate module dependencies for the initrd
-diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
-index 532b9a71..bbf485e0 100755
---- a/modules.d/90crypt/crypt-lib.sh
-+++ b/modules.d/90crypt/crypt-lib.sh
-@@ -12,7 +12,7 @@ crypttab_contains() {
- strstr "${l##luks-}" "${luks##luks-}" && return 0
- strstr "$d" "${luks##luks-}" && return 0
- if [ -n "$dev" ]; then
-- for _dev in "$(devnames $d)"; do
-+ for _dev in $(devnames $d); do
- [ "$dev" -ef "$_dev" ] && return 0
- done
- fi
-diff --git a/modules.d/98syslog/parse-syslog-opts.sh b/modules.d/98syslog/parse-syslog-opts.sh
-index 50ec2759..9ec6ad47 100755
---- a/modules.d/98syslog/parse-syslog-opts.sh
-+++ b/modules.d/98syslog/parse-syslog-opts.sh
-@@ -15,7 +15,7 @@ detect_syslog() {
- syslogtype="rsyslogd"
- elif [ -e /sbin/syslogd ]; then
- syslogtype="syslogd"
-- elif [ /sbin/syslog-ng ]; then
-+ elif [ -e /sbin/syslog-ng ]; then
- syslogtype="syslog-ng"
- else
- warn "Could not find any syslog binary although the syslogmodule is selected to be installed. Please check."
---
-2.16.1
-
diff --git a/sys-kernel/dracut/files/047-plymouth-fix-detection-of-plymouth-directory.patch b/sys-kernel/dracut/files/047-plymouth-fix-detection-of-plymouth-directory.patch
deleted file mode 100644
index 42f877292a79..000000000000
--- a/sys-kernel/dracut/files/047-plymouth-fix-detection-of-plymouth-directory.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From fe6c7e0f06cde65effb3503a47c31ac39aceefb6 Mon Sep 17 00:00:00 2001
-From: Alexander Tsoy <alexander@tsoy.me>
-Date: Fri, 23 Mar 2018 11:52:27 +0300
-Subject: [PATCH 14/14] plymouth: fix detection of plymouth directory
-To: <initramfs@vger.kernel.org>
-
-Some distros have both /usr/lib/plymouth and /usr/libexec/plymouth
-directorirs, so we should check the existance of plymouth-populate-initrd
-script.
-
-Fixes: 421b46f8ae89cfe2b62e880a8a5079ee8c1b3aae
----
- modules.d/50plymouth/module-setup.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
-index 5fbca8b0..b51913e8 100755
---- a/modules.d/50plymouth/module-setup.sh
-+++ b/modules.d/50plymouth/module-setup.sh
-@@ -6,7 +6,7 @@ pkglib_dir() {
- _dirs+=" /usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth"
- fi
- for _dir in $_dirs; do
-- if [ -d $_dir ]; then
-+ if [ -x $_dir/plymouth-populate-initrd ]; then
- echo $_dir
- return
- fi
---
-2.16.1
-
diff --git a/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch b/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch
new file mode 100644
index 000000000000..a091e4c9facc
--- /dev/null
+++ b/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch
@@ -0,0 +1,34 @@
+From a76aa8e39016a8564adb0f18f93bbf2e15d3243f Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Sun, 8 Mar 2020 05:47:50 +0300
+Subject: [PATCH] Makefile: fix VERSION again
+
+The variable is not undefined anymore after the first assignment, so
+we should check if variable is empty instead.
+---
+ Makefile | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index c69e2dfc..02e2c4b5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,9 +1,13 @@
+ -include dracut-version.sh
+
+ DRACUT_MAIN_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --abbrev=0 --tags --always 2>/dev/null || :)
+-DRACUT_MAIN_VERSION ?= $(DRACUT_VERSION)
++ifeq ($(DRACUT_MAIN_VERSION),)
++DRACUT_MAIN_VERSION = $(DRACUT_VERSION)
++endif
+ DRACUT_FULL_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --tags --always 2>/dev/null || :)
+-DRACUT_FULL_VERSION ?= $(DRACUT_VERSION)
++ifeq ($(DRACUT_FULL_VERSION),)
++DRACUT_FULL_VERSION = $(DRACUT_VERSION)
++endif
+
+ -include Makefile.inc
+
+--
+2.24.1
+
diff --git a/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch b/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch
new file mode 100644
index 000000000000..49c532b92995
--- /dev/null
+++ b/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch
@@ -0,0 +1,78 @@
+From eb8a7a96351b6e1cfd9dc34f1e854333a8f4a4e0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
+ <congdanhqx@gmail.com>
+Date: Fri, 6 Mar 2020 08:46:36 +0700
+Subject: [PATCH] Makefile: merge main-version and git-version earlier
+
+With GNU Make 4.3 on both ArchLinux, and VoidLinux,
+GITVERION is always empty because of bad substitution.
+Change '\#' to simply '#' can fix it,
+but we don't need that complation.
+
+We can merge DRACUT_MAIN_VERSION and GITVERSION into DRACUT_FULL_VERSION.
+Because, GITVERSION will be attached back to DRACUT_MAIN_VERSION in all
+situation.
+
+While we're at it, detect if we're in git worktree by:
+limiting GIT_CEILING_DIRECTORIES to parent directory of
+dracut's top level directory; instead of checking for .git directory,
+in order to support git-worktree, in such case, .git will be a file, see
+gitrepository-layout(5)
+---
+ Makefile | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 22b584f1..c69e2dfc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,9 @@
+ -include dracut-version.sh
+
+-DRACUT_MAIN_VERSION ?= $(shell [ -d .git ] && git describe --abbrev=0 --tags --always 2>/dev/null || :)
++DRACUT_MAIN_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --abbrev=0 --tags --always 2>/dev/null || :)
+ DRACUT_MAIN_VERSION ?= $(DRACUT_VERSION)
+-GITVERSION ?= $(shell [ -d .git ] && { v=$$(git describe --tags --always 2>/dev/null); [ -n "$$v" ] && [ $${v\#*-} != $$v ] && echo -$${v\#*-}; } )
++DRACUT_FULL_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --tags --always 2>/dev/null || :)
++DRACUT_FULL_VERSION ?= $(DRACUT_VERSION)
+
+ -include Makefile.inc
+
+@@ -92,14 +93,14 @@ endif
+
+ %.xml: %.asc
+ @rm -f -- "$@"
+- asciidoc -a "version=$(DRACUT_MAIN_VERSION)$(GITVERSION)" -d manpage -b docbook -o "$@" $<
++ asciidoc -a "version=$(DRACUT_FULL_VERSION)" -d manpage -b docbook -o "$@" $<
+
+ dracut.8: dracut.usage.asc dracut.8.asc
+
+ dracut.html: dracut.asc $(manpages) dracut.css dracut.usage.asc
+ @rm -f -- dracut.xml
+ asciidoc -a "mainversion=$(DRACUT_MAIN_VERSION)" \
+- -a "version=$(DRACUT_MAIN_VERSION)$(GITVERSION)" \
++ -a "version=$(DRACUT_FULL_VERSION)" \
+ -a numbered \
+ -d book -b docbook -o dracut.xml dracut.asc
+ @rm -f -- dracut.html
+@@ -112,7 +113,7 @@ dracut.html: dracut.asc $(manpages) dracut.css dracut.usage.asc
+ dracut.pc: Makefile.inc Makefile
+ @echo "Name: dracut" > dracut.pc
+ @echo "Description: dracut" >> dracut.pc
+- @echo "Version: $(DRACUT_MAIN_VERSION)$(GITVERSION)" >> dracut.pc
++ @echo "Version: $(DRACUT_FULL_VERSION)" >> dracut.pc
+ @echo "dracutdir=$(pkglibdir)" >> dracut.pc
+ @echo "dracutmodulesdir=$(pkglibdir)/modules.d" >> dracut.pc
+ @echo "dracutconfdir=$(pkglibdir)/dracut.conf.d" >> dracut.pc
+@@ -182,7 +183,7 @@ endif
+
+ dracut-version.sh:
+ @rm -f dracut-version.sh
+- @echo "DRACUT_VERSION=$(DRACUT_MAIN_VERSION)$(GITVERSION)" > dracut-version.sh
++ @echo "DRACUT_VERSION=$(DRACUT_FULL_VERSION)" > dracut-version.sh
+
+ clean:
+ $(RM) *~
+--
+2.24.1
+
diff --git a/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch b/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch
new file mode 100644
index 000000000000..cf54cabb5eb6
--- /dev/null
+++ b/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch
@@ -0,0 +1,75 @@
+From 0386e4627779cb51f4292b3c642d90586d5e71b4 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Wed, 29 Jan 2020 23:53:29 +0100
+Subject: [PATCH] dracut.sh: don't call fsfreeze on subvol of root file system
+
+dracut.sh already doesn't call fsfreeze if the output file is on
+the root file system. For btrfs, however, this is not sufficient.
+Because fsfreeze is a superblock operation, and all btrfs subvolumes
+share the same superblock, fsfreeze may freeze the entire system
+if the subvolume on which the output file is written and / are
+subvolumes of the same file system. Avoid this by comparing file
+system UUIDs for btrfs.
+
+Fixes: de576db3c225 ("call fsfreeze(8) on /boot to flush initramfs data & metadata to media")
+---
+ dracut.sh | 36 +++++++++++++++++++++++++++++++++++-
+ 1 file changed, 35 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index af346f3a..c14f6c0b 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -2075,6 +2075,40 @@ fi
+
+ command -v restorecon &>/dev/null && restorecon -- "$outfile"
+
++btrfs_uuid() {
++ btrfs filesystem show "$1" | sed -n '1s/^.*uuid: //p'
++}
++
++freeze_ok_for_btrfs() {
++ local mnt uuid1 uuid2
++ # If the output file is on btrfs, we need to make sure that it's
++ # not on a subvolume of the same file system as the root FS.
++ # Otherwise, fsfreeze() might freeze the entire system.
++ # This is most conveniently checked by comparing the FS uuid.
++
++ [[ "$(stat -f -c %T -- "/")" == "btrfs" ]] || return 0
++ mnt=$(stat -c %m -- "$1")
++ uuid1=$(btrfs_uuid "$mnt")
++ uuid2=$(btrfs_uuid "/")
++ [[ "$uuid1" && "$uuid2" && "$uuid1" != "$uuid2" ]]
++}
++
++freeze_ok_for_fstype() {
++ local outfile=$1
++ local fstype
++
++ [[ "$(stat -c %m -- "$outfile")" == "/" ]] && return 1
++ fstype=$(stat -f -c %T -- "$outfile")
++ case $fstype in
++ msdos)
++ return 1;;
++ btrfs)
++ freeze_ok_for_btrfs "$outfile";;
++ *)
++ return 0;;
++ esac
++}
++
+ # We sync/fsfreeze only if we're operating on a live booted system.
+ # It's possible for e.g. `kernel` to be installed as an RPM BuildRequires or equivalent,
+ # and there's no reason to sync, and *definitely* no reason to fsfreeze.
+@@ -2087,7 +2121,7 @@ if test -d $dracutsysrootdir/run/systemd/system; then
+ fi
+
+ # use fsfreeze only if we're not writing to /
+- if [[ "$(stat -c %m -- "$outfile")" != "/" && "$(stat -f -c %T -- "$outfile")" != "msdos" ]]; then
++ if [[ "$(stat -c %m -- "$outfile")" != "/" ]] && freeze_ok_for_fstype "$outfile"; then
+ if ! $(fsfreeze -f $(dirname "$outfile") 2>/dev/null && fsfreeze -u $(dirname "$outfile") 2>/dev/null); then
+ dinfo "dracut: warning: could not fsfreeze $(dirname "$outfile")"
+ fi
+--
+2.24.1
+
diff --git a/sys-kernel/dracut/files/050-gentoo-ldconfig-paths.patch b/sys-kernel/dracut/files/050-gentoo-ldconfig-paths.patch
new file mode 100644
index 000000000000..15522ef4fc1e
--- /dev/null
+++ b/sys-kernel/dracut/files/050-gentoo-ldconfig-paths.patch
@@ -0,0 +1,39 @@
+From 0674b9136831b1beb6a7ec91147fd5c280c693a3 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 3cb9c7af..5337ff6c 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -76,7 +76,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.24.1
+
diff --git a/sys-kernel/dracut/files/dracut-044-bash-4.4.patch b/sys-kernel/dracut/files/dracut-044-bash-4.4.patch
deleted file mode 100644
index 3144c8e6b759..000000000000
--- a/sys-kernel/dracut/files/dracut-044-bash-4.4.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff -urN dracut-044.orig/modules.d/50drm/module-setup.sh dracut-044/modules.d/50drm/module-setup.sh
---- dracut-044.orig/modules.d/50drm/module-setup.sh 2015-11-25 16:22:28.000000000 +0300
-+++ dracut-044/modules.d/50drm/module-setup.sh 2016-09-28 02:50:08.914967926 +0300
-@@ -24,9 +24,9 @@
- local _fname _fcont
- while read _fname || [ -n "$_fname" ]; do
- case "$_fname" in
-- *.ko) _fcont="$(< $_fname)" ;;
-- *.ko.gz) _fcont="$(gzip -dc $_fname)" ;;
-- *.ko.xz) _fcont="$(xz -dc $_fname)" ;;
-+ *.ko) _fcont="$(< $_fname tr -d \\0)" ;;
-+ *.ko.gz) _fcont="$(gzip -dc $_fname | tr -d \\0)" ;;
-+ *.ko.xz) _fcont="$(xz -dc $_fname | tr -d \\0)" ;;
- esac
- [[ $_fcont =~ $_drm_drivers
- && ! $_fcont =~ iw_handler_get_spy ]] \
-diff -urN dracut-044.orig/modules.d/90kernel-modules/module-setup.sh dracut-044/modules.d/90kernel-modules/module-setup.sh
---- dracut-044.orig/modules.d/90kernel-modules/module-setup.sh 2015-11-25 16:22:28.000000000 +0300
-+++ dracut-044/modules.d/90kernel-modules/module-setup.sh 2016-09-28 02:49:11.725390294 +0300
-@@ -10,9 +10,9 @@
- function bmf1() {
- local _f
- while read _f || [ -n "$_f" ]; do case "$_f" in
-- *.ko) [[ $(< $_f) =~ $_blockfuncs ]] && echo "$_f" ;;
-- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;;
-- *.ko.xz) [[ $(xz -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;;
-+ *.ko) [[ $(< $_f tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;;
-+ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;;
-+ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;;
- esac
- done
- return 0
-diff -urN dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh dracut-044/modules.d/90kernel-network-modules/module-setup.sh
---- dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh 2015-11-25 16:22:28.000000000 +0300
-+++ dracut-044/modules.d/90kernel-network-modules/module-setup.sh 2016-09-28 02:51:08.202422231 +0300
-@@ -26,9 +26,9 @@
- while read _fname; do
- [[ $_fname =~ $_unwanted_drivers ]] && continue
- case "$_fname" in
-- *.ko) _fcont="$(< $_fname)" ;;
-- *.ko.gz) _fcont="$(gzip -dc $_fname)" ;;
-- *.ko.xz) _fcont="$(xz -dc $_fname)" ;;
-+ *.ko) _fcont="$(< $_fname tr -d \\0)" ;;
-+ *.ko.gz) _fcont="$(gzip -dc $_fname | tr -d \\0)" ;;
-+ *.ko.xz) _fcont="$(xz -dc $_fname | tr -d \\0)" ;;
- esac
- [[ $_fcont =~ $_net_drivers
- && ! $_fcont =~ iw_handler_get_spy ]] \
-diff -urN dracut-044.orig/modules.d/90multipath/module-setup.sh dracut-044/modules.d/90multipath/module-setup.sh
---- dracut-044.orig/modules.d/90multipath/module-setup.sh 2015-11-25 16:22:28.000000000 +0300
-+++ dracut-044/modules.d/90multipath/module-setup.sh 2016-09-28 02:49:11.726390235 +0300
-@@ -58,9 +58,9 @@
- local _f
- while read _f || [ -n "$_f" ]; do
- case "$_f" in
-- *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
-- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
-- *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko) [[ $(< $_f tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
- esac
- done
- return 0
-diff -urN dracut-044.orig/modules.d/95iscsi/module-setup.sh dracut-044/modules.d/95iscsi/module-setup.sh
---- dracut-044.orig/modules.d/95iscsi/module-setup.sh 2015-11-25 16:22:28.000000000 +0300
-+++ dracut-044/modules.d/95iscsi/module-setup.sh 2016-09-28 02:49:11.726390235 +0300
-@@ -168,9 +168,9 @@
- local _f
- while read _f || [ -n "$_f" ]; do
- case "$_f" in
-- *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
-- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
-- *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko) [[ $(< $_f tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
-+ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;;
- esac
- done
- return 0
diff --git a/sys-kernel/dracut/files/dracut-044-preserve-xattrs-when-copying.patch b/sys-kernel/dracut/files/dracut-044-preserve-xattrs-when-copying.patch
deleted file mode 100644
index 3146d8485a9c..000000000000
--- a/sys-kernel/dracut/files/dracut-044-preserve-xattrs-when-copying.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 61c761bc2c35fb244d46fbbde97161f5927071dc Mon Sep 17 00:00:00 2001
-From: Stefan Berger <stefanb@us.ibm.com>
-Date: Tue, 25 Oct 2016 15:09:49 -0400
-Subject: [PATCH] dracut-install: preserve extended attributes when copying
- files
-
-Preserve extended attributes when copying files using dracut-install.
-
-The copying of extended attributes avoids file execution denials when
-the Linux Integrity Measurement's Appraisal mode is active. In that mode
-executables need their file signatures copied. In particular, this patch
-solves the problem that dependent libaries are not included in the
-initramfs since the copied programs could not be executed due to missing
-signatures. The following audit record shows the type of failure that
-is now prevented:
-
-type=INTEGRITY_DATA msg=audit(1477409025.492:30065): pid=922 uid=0
- auid=4294967295 ses=4294967295
- subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- op="appraise_data" cause="IMA-signature-required"
- comm="ld-linux-x86-64"
- name="/var/tmp/dracut.R6ySa4/initramfs/usr/bin/journalctl"
- dev="dm-0" ino=37136 res=0
-
-Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
----
- install/dracut-install.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/install/dracut-install.c b/install/dracut-install.c
-index fe30bba..c0f1c17 100644
---- a/install/dracut-install.c
-+++ b/install/dracut-install.c
-@@ -294,7 +294,7 @@ static int cp(const char *src, const char *dst)
- normal_copy:
- pid = fork();
- if (pid == 0) {
-- execlp("cp", "cp", "--reflink=auto", "--sparse=auto", "--preserve=mode,timestamps", "-fL", src, dst,
-+ execlp("cp", "cp", "--reflink=auto", "--sparse=auto", "--preserve=mode,timestamps,xattr", "-fL", src, dst,
- NULL);
- _exit(EXIT_FAILURE);
- }
-@@ -302,7 +302,7 @@ static int cp(const char *src, const char *dst)
- while (waitpid(pid, &ret, 0) < 0) {
- if (errno != EINTR) {
- ret = -1;
-- log_error("Failed: cp --reflink=auto --sparse=auto --preserve=mode,timestamps -fL %s %s", src,
-+ log_error("Failed: cp --reflink=auto --sparse=auto --preserve=mode,timestamps,xattr -fL %s %s", src,
- dst);
- break;
- }