From 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf Mon Sep 17 00:00:00 2001 From: takeshi_hoshina Date: Mon, 2 Nov 2020 11:07:33 +0900 Subject: basesystem-jj recipes --- .../dracut/0001-set-viriable-_drv-not-local.patch | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch (limited to 'external/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-set-viriable-_drv-not-local.patch') 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 +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 <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 +--- + 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 + -- cgit 1.2.3-korg