From 003c81b26c65bb960b595ccad783d9994326178e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sat, 14 May 2022 15:07:04 +0200 Subject: [PATCH 1/3] kernel-install: 90-loaderentry: remove shopt Fixes: #23374 Fixes: 367165a4069ac0c04882a05a8a80f6afb1e42760 --- src/kernel-install/90-loaderentry.install | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install index 0e57df775f..9faf19814a 100644 --- a/src/kernel-install/90-loaderentry.install +++ b/src/kernel-install/90-loaderentry.install @@ -18,8 +18,6 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . -shopt -s nullglob - COMMAND="$1" KERNEL_VERSION="$2" ENTRY_DIR_ABS="$3" @@ -105,9 +103,10 @@ install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || { } shift "$INITRD_OPTIONS_SHIFT" -# All files listed as arguments, and staged files called "initrd*" are installed as initrds. +# All files listed as arguments, and staged files starting with "initrd" are installed as initrds. for initrd in "$@" "${KERNEL_INSTALL_STAGING_AREA}"/initrd*; do [ -f "$initrd" ] || { + [ "$initrd" = "${KERNEL_INSTALL_STAGING_AREA}/initrd*" ] && continue echo "Error: initrd '$initrd' not a file." >&2 exit 1 } @@ -139,6 +138,7 @@ mkdir -p "${LOADER_ENTRY%/*}" || { have_initrd= for initrd in "${@}" "${KERNEL_INSTALL_STAGING_AREA}"/initrd*; do + [ -f "$initrd" ] || continue echo "initrd $ENTRY_DIR/${initrd##*/}" have_initrd=yes done From b0bf2a802f2bf4cf11bc9390f7b1b36bc829c460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sat, 14 May 2022 15:10:30 +0200 Subject: [PATCH 2/3] kernel-install: respect $TMPDIR --- src/kernel-install/kernel-install.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in index 293ed044d1..b596d0c33e 100755 --- a/src/kernel-install/kernel-install.in +++ b/src/kernel-install/kernel-install.in @@ -204,7 +204,7 @@ cleanup() { trap cleanup EXIT -KERNEL_INSTALL_STAGING_AREA="$(mktemp -d -t -p /tmp kernel-install.staging.XXXXXXX)" +KERNEL_INSTALL_STAGING_AREA="$(mktemp -d -t kernel-install.staging.XXXXXXX)" export KERNEL_INSTALL_MACHINE_ID="$MACHINE_ID" export KERNEL_INSTALL_ENTRY_TOKEN="$ENTRY_TOKEN" From b32217e8d0536a9d8942d99813dcd5edb4d73fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sat, 14 May 2022 15:12:14 +0200 Subject: [PATCH 3/3] Don't not lint kernel-install --- .github/workflows/linter.yml | 4 +--- src/kernel-install/90-loaderentry.install | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 0956661512..ecdd7970d2 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -36,11 +36,9 @@ jobs: # Excludes: # - man/.* - all snippets in man pages (false positives due to # missing shebangs) - # - kernel-install/.* - false-positives for dropins (and I'm afraid - # to touch kernel-install) # - .*\.(in|SKELETON) - all template/skeleton files # - tools/coverity\.sh - external file (with some modifications) - FILTER_REGEX_EXCLUDE: .*/(man/.*|src/kernel-install/.*|.*\.(in|SKELETON)|tools/coverity\.sh)$ + FILTER_REGEX_EXCLUDE: .*/(man/.*|.*\.(in|SKELETON)|tools/coverity\.sh)$ VALIDATE_ALL_CODEBASE: false VALIDATE_BASH: true VALIDATE_GITHUB_ACTIONS: true diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install index 9faf19814a..d26766accc 100644 --- a/src/kernel-install/90-loaderentry.install +++ b/src/kernel-install/90-loaderentry.install @@ -34,7 +34,7 @@ BOOT_MNT="$(stat -c %m "$BOOT_ROOT")" if [ "$BOOT_MNT" = '/' ]; then ENTRY_DIR="$ENTRY_DIR_ABS" else - ENTRY_DIR="${ENTRY_DIR_ABS#$BOOT_MNT}" + ENTRY_DIR="${ENTRY_DIR_ABS#"$BOOT_MNT"}" fi case "$COMMAND" in @@ -53,8 +53,10 @@ case "$COMMAND" in esac if [ -r /etc/os-release ]; then + # shellcheck source=/dev/null . /etc/os-release elif [ -r /usr/lib/os-release ]; then + # shellcheck source=/dev/null . /usr/lib/os-release fi