From c93836ed2d8834f2d94fc4a52b3e87cd871df02e Mon Sep 17 00:00:00 2001 From: Gleb Chesnokov Date: Fri, 21 Aug 2026 13:39:13 +0300 Subject: [PATCH] scripts/generate-release-archive: Preserve file arguments Keep explicitly listed files as separate array elements instead of joining them into one invalid path. Use pipefail so an input-listing error cannot be hidden by tar. --- scripts/generate-release-archive | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/scripts/generate-release-archive b/scripts/generate-release-archive index 68698ad4e..858abe199 100755 --- a/scripts/generate-release-archive +++ b/scripts/generate-release-archive @@ -1,7 +1,9 @@ #!/bin/bash +set -o pipefail + usage() { - echo "Usage: $(basename "$0") name version" + echo "Usage: $(basename "$0") name version [file ...]" } if [ $# -lt 2 ]; then @@ -12,17 +14,22 @@ fi scriptdir="$(dirname "$0")" name="$1"; shift version="$1"; shift -files="$*" -if [ -z "$files" ]; then - read -d\\n -r -a files < <("$scriptdir/list-source-files") +files=("$@") +if [ "${#files[@]}" -eq 0 ]; then + file_list="$("$scriptdir/list-source-files")" || exit $? + if [ -z "$file_list" ]; then + echo "Error: no source files found." >&2 + exit 1 + fi + mapfile -t files <<< "$file_list" if [ -e build_mode ]; then files+=(build_mode) fi fi -result=../$name-$version.tar.bz2 +result="../$name-$version.tar.bz2" rm -f "${result}" -for f in "${files[@]}"; do echo "$f"; done | \ +printf '%s\n' "${files[@]}" | \ tar --owner=root --group=root --transform="s|^|$name-$version/|;s|^$name-$version/../scst/include/backport.h$|../scst/include/backport.h|;s|^$name-$version/scstadmin.sysfs$|scstadmin.sysfs|" \ -cjf "${result}" -T- && ls -l "${result}"