[pacman-dev] [PATCH 4/7] repo-add: check early for xdelta if it is needed

Allan McRae allan at archlinux.org
Sun Mar 15 10:49:04 UTC 2015


The check for xdelta3 was done as needed (and not in all cases).  Do this
check early so that repo-add does not abort part way through.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/repo-add.sh.in | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index d496354..c16295b 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
-- 
2.3.3


More information about the pacman-dev mailing list