[pacman-dev] [PATCH] makepkg: fix check for previously built packages with package splitting

Allan McRae allan at archlinux.org
Thu Jul 2 02:22:15 EDT 2009


Checks if some or all packages are built before overwriting/installing.
Adds some new strings for translation.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/makepkg.sh.in |   47 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 2bb7eb9..91e2518 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1646,16 +1646,45 @@ if [ "${#pkgname[@]}" -gt "1" ]; then
 	SPLITPKG=1
 fi
 
-if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
-     -a "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ]; then
-	if [ "$INSTALL" -eq 1 ]; then
-		warning "$(gettext "A package has already been built, installing existing package...")"
-		install_package
-		exit $?
-	else
-		error "$(gettext "A package has already been built. (use -f to overwrite)")"
-		exit 1
+if [ "$SPLITPKG" -eq 0 ]; then
+	if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
+			-a "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ]; then
+		if [ "$INSTALL" -eq 1 ]; then
+			warning "$(gettext "A package has already been built, installing existing package...")"
+			install_package
+			exit $?
+		else
+			error "$(gettext "A package has already been built. (use -f to overwrite)")"
+			exit 1
+		fi
+	fi
+else
+	allpkgbuilt=1
+	somepkgbuilt=0
+	for pkg in ${pkgname[@]}; do
+		if [ -f "$PKGDEST/${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" ]; then
+			somepkgbuilt=1
+		else
+			allpkgbuilt=0
+		fi
+	done
+	if [ "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ]; then
+		if [ "$allpkgbuilt" -eq 1 ]; then
+			if [ "$INSTALL" -eq 1 ]; then
+				warning "$(gettext "The package group has already been built, installing existing packages...")"
+				install_package
+				exit $?
+			else
+				error "$(gettext "The package group has already been built. (use -f to overwrite)")"
+				exit 1
+			fi
+		fi
+		if [ "$somepkgbuilt" -eq 1 ]; then
+			error "$(gettext "Part of the package group has already been built. (use -f to overwrite)")"
+			exit 1
+		fi
 	fi
+	unset allpkgbuilt somepkgbuilt
 fi
 
 # Run the bare minimum in fakeroot
-- 
1.6.3.3



More information about the pacman-dev mailing list