From cf5208979d9c2e826991034da007822eceff595a Mon Sep 17 00:00:00 2001 From: Alex Benya Denisov Date: Fri, 31 Jul 2026 11:34:45 +0300 Subject: [PATCH] fix: read IPK control metadata reliably --- scripts/prepare-package-repository.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/prepare-package-repository.sh b/scripts/prepare-package-repository.sh index 222ca19..a07c745 100644 --- a/scripts/prepare-package-repository.sh +++ b/scripts/prepare-package-repository.sh @@ -59,7 +59,12 @@ for artifact_dir in "$source_dir"/openwrt-*; do package_file="$(find "$artifact_dir" -maxdepth 1 -type f \( -name 'rmm-agent-go-production_*.ipk' -o -name 'rmm-agent-go-production-*.apk' \) -print -quit)" case "$package_file" in *.ipk) - package_version="$(ar p "$package_file" control.tar.gz | tar -xzO ./control | sed -n 's/^Version: //p' | head -n 1)" + control_path="$(ar p "$package_file" control.tar.gz | tar -tzf - | sed -n '/^\.\?\/\?control$/p' | head -n 1)" + if [ -z "$control_path" ]; then + echo "IPK control archive has no control file: $package_file" >&2 + exit 1 + fi + package_version="$(ar p "$package_file" control.tar.gz | tar -xzO -f - "$control_path" | sed -n 's/^Version: //p' | head -n 1)" ;; *.apk) package_version="$(tar -xzO -f "$package_file" .PKGINFO | sed -n 's/^pkgver = //p' | head -n 1)"