summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-initramfs/recipes-devtools/dracut')
-rw-r--r--external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch39
-rw-r--r--external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch69
-rw-r--r--external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb2
3 files changed, 110 insertions, 0 deletions
diff --git a/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch
new file mode 100644
index 00000000..06e0a094
--- /dev/null
+++ b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch
@@ -0,0 +1,39 @@
+From 974f728410052bc8fa18d93dc0c1a991bcdb96e6 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 3 Apr 2019 15:24:47 +0800
+Subject: [PATCH] dracut.sh: improve udevdir
+
+In commit [9d1b81c dracut.sh: improve udevdir and systemdutildir
+fallback logic], it checked a common binary `collect' to localte
+udevdir.
+
+But upstream systemd drop binary `collect'.
+[https://github.com/systemd/systemd/commit/a168792c2d95695fd30c0371d4b3890a9df1eafb]
+
+So check binary `ata_id' to instead.
+
+Upstream-Status: Submitted [https://github.com/dracutdevs/dracut/pull/558]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ dracut.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 3dc2adc..cc8b01a 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1311,8 +1311,8 @@ done
+ [[ -d $udevdir ]] \
+ || udevdir="$(pkg-config udev --variable=udevdir 2>/dev/null)"
+ if ! [[ -d "$udevdir" ]]; then
+- [[ -e /lib/udev/collect ]] && udevdir=/lib/udev
+- [[ -e /usr/lib/udev/collect ]] && udevdir=/usr/lib/udev
++ [[ -e /lib/udev/ata_id ]] && udevdir=/lib/udev
++ [[ -e /usr/lib/udev/ata_id ]] && udevdir=/usr/lib/udev
+ fi
+
+ [[ -d $systemdutildir ]] \
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch
new file mode 100644
index 00000000..13d2cfa8
--- /dev/null
+++ b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch
@@ -0,0 +1,69 @@
+From 6e0da103effe64832eea52fad5c44a328f7141b7 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 20 Jun 2019 17:31:11 +0800
+Subject: [PATCH] set viriable _drv not local
+
+If shebang is set to /bin/sh and /bin/sh is a symlink to /bin/bash,
+bash turn on posix mode.
+
+Since bash is upgraded to 5.0, it follows 'IEEE 1003.2 POSIX Shell
+Standard', to implement 'functions do not have local traps or options,
+and it is not possible to define local variables'
+
+For more detail, see variables.c:push_posix_temp_var in the following commit
+http://git.savannah.gnu.org/cgit/bash.git/commit/?id=d233b485e83c3a784b803fb894280773f16f2deb
+
+The IEEE 1003.2 POSIX Shell Standard:
+https://www.cs.ait.ac.th/~on/O/oreilly/unix/ksh/appa_02.htm
+
+While /bin/sh points to bash 5.0, it caused the following issue:
+
+$ cat <<ENDOF>case.sh
+fsck_drv_com(){
+ echo "issuing \$_drv"
+}
+
+fsck_able() {
+ _drv="_drv=e2fsck fsck_drv_com"
+}
+
+fsck_single() {
+ local _drv
+ fsck_able
+ eval "\$_drv"
+}
+fsck_single
+ENDOF
+$ chmod a+x case.sh
+
+Unexpected:
+$ ./cash.sh
+issuing _drv=e2fsck fsck_drv_com
+
+Set viriable _drv not local, get expected result:
+$ ./case.sh
+issuing e2fsck
+
+Upstream-Status: Submitted [https://github.com/dracutdevs/dracut/pull/587]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ modules.d/99fs-lib/fs-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
+index d39ca1b..60877ee 100755
+--- a/modules.d/99fs-lib/fs-lib.sh
++++ b/modules.d/99fs-lib/fs-lib.sh
+@@ -142,7 +142,7 @@ fsck_single() {
+ local _fs="${2:-auto}"
+ local _fsopts="$3"
+ local _fop="$4"
+- local _drv
++ _drv=""
+
+ [ $# -lt 2 ] && return 255
+ # if UUID= marks more than one device, take only the first one
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
index dd2e8bbb..13cf5f6d 100644
--- a/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
+++ b/external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
@@ -12,6 +12,8 @@ PV = "049"
SRCREV = "225e4b94cbdb702cf512490dcd2ad9ca5f5b22c1"
SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http \
file://0001-util.h-include-sys-reg.h-when-libc-glibc.patch \
+ file://0001-dracut.sh-improve-udevdir.patch \
+ file://0001-set-viriable-_drv-not-local.patch \
"
DEPENDS += "kmod"