diff options
Diffstat (limited to 'scripts/repo-add.sh.in')
-rw-r--r-- | scripts/repo-add.sh.in | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index d4963543..c16295be 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -212,6 +212,28 @@ check_gpg() { fi } +check_xdelta() { + local need_xdelta=0 + + if (( DELTA )); then + need_xdelta=1 + else + if [[ $cmd == "repo-add" ]]; + for f in ${args[@]:1}; do + case $f in + *.delta) need_xdelta=1 ;; + *) ;; + done + fi + + if (( need_xdelta )); then + if ! type xdelta3 &>/dev/null; then + error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")" + exit 1 + fi + fi +} + # sign the package database once repackaged create_signature() { (( ! SIGN )) && return @@ -525,10 +547,6 @@ add() { if [[ ${1##*.} == "delta" ]]; then deltafile=$1 msg "$(gettext "Adding delta '%s'")" "$deltafile" - if ! type xdelta3 &>/dev/null; then - error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")" - exit 1 - fi if db_write_delta "$deltafile"; then return 0 else @@ -736,6 +754,8 @@ if (( SIGN || KEY || VERIFY )); then check_gpg fi +check_xdelta + fail=0 for arg in "${args[@]:1}"; do case $cmd in |