On 3/12/19 2:32 AM, Allan McRae wrote:
On 3/8/19 2:32 PM, Eli Schwartz wrote:
Currently the list of supported formats for an archive, is maintained in two places. And repo-add does not actually get updated. :(
In the process, remove some of the logical duplication when calling bsdtar/compress_as.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- scripts/repo-add.sh.in | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 57413df5..0f9628ad 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -44,6 +44,7 @@ CLEAN_LOCK=0 USE_COLOR='y'
# Import libmakepkg +source "$LIBRARY"/util/compress.sh source "$LIBRARY"/util/message.sh
# ensure we have a sane umask set @@ -188,21 +189,12 @@ verify_signature() { }
verify_repo_extension() { - local repofile=$1 - - case $repofile in - *.db.tar.gz) TAR_OPT="z" ;; - *.db.tar.bz2) TAR_OPT="j" ;; - *.db.tar.xz) TAR_OPT="J" ;; - *.db.tar.zst) TAR_OPT="--zstd" ;; - *.db.tar.Z) TAR_OPT="Z" ;; - *.db.tar) TAR_OPT="" ;; + case $1 in + *.db.tar.*|*.db.tar) ;;
repo-add mydb.tar.badext ...
This does no checking at all.
It does. It continues to fail hard if the extension is not .db.tar with an optional additional extension, and instead of failing hard when specifying an unknown compression type, it reuses the existing libmakepkg infrastructure to use "cat" as the compressor, but emit a warning when an invalid archive extension is shown. IMHO it is more reasonable to allow it but warn about it, like makepkg itself does. I can send in a v2 with a modified commit message specifying that (but also I need to fix compress_as slightly).
*) error "$(gettext "'%s' does not have a valid database archive extension.")" \ - "$repofile" + "$1" exit 1 ;; esac - - printf '%s' "$TAR_OPT" }
# write an entry to the pacman database @@ -513,7 +505,6 @@ rotate_db() { }
create_db() { - TAR_OPT=$(verify_repo_extension "$REPO_DB_FILE") # $LOCKFILE is already guaranteed to be absolute so this is safe dirname=${LOCKFILE%/*}
@@ -523,13 +514,13 @@ create_db() { tempname=$dirname/.tmp.$filename
pushd "$tmpdir/$repo" >/dev/null - if ( shopt -s nullglob; files=(*); (( ${#files[*]} )) ); then - bsdtar -c${TAR_OPT}f "$tempname" * - else + local files=(*) + if [[ ${files[*]} = '*' ]]; then # we have no packages remaining? zip up some emptyness warning "$(gettext "No packages remain, creating empty database.")" - bsdtar -c${TAR_OPT}f "$tempname" -T /dev/null + files=(-T /dev/null) fi + bsdtar -cf - "${files[@]}" | compress_as "$REPO_DB_SUFFIX" > "$tempname" popd >/dev/null
create_signature "$tempname" @@ -644,7 +635,7 @@ else LOCKFILE=$PWD/$REPO_DB_FILE.lck fi
-verify_repo_extension "$REPO_DB_FILE" >/dev/null +verify_repo_extension "$REPO_DB_FILE"
REPO_DB_PREFIX=${REPO_DB_FILE##*/} REPO_DB_PREFIX=${REPO_DB_PREFIX%.db.*}
-- Eli Schwartz Bug Wrangler and Trusted User