[pacman-dev] [PATCH] makepkg: always build when pkgver function used

Allan McRae allan at archlinux.org
Mon Jul 16 08:30:34 EDT 2012


If a pkgver() function is specified, always build the package even
if a package with the current pkgver is found as this pkgver may
change.

The only exception is when installing with -i.  If a new build is
required then, -f must be used.

Signed-off-by: Allan McRae <allan at archlinux.org>
---

I thought this was a reasonable compromise in terms of complexity
and what I would expect makepkg to do. Having makepkg download
all the sources, update pkgver, then check if a package with the same
pkgver is already built did not seem the right approach to me.

 scripts/makepkg.sh.in | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ed14577..d7d40de 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -74,6 +74,7 @@ IGNOREARCH=0
 BUILDFUNC=0
 CHECKFUNC=0
 PKGFUNC=0
+PKGVERFUNC=0
 SPLITPKG=0
 PKGLIST=()
 SIGNPKG=''
@@ -545,7 +546,7 @@ download_sources() {
 		esac
 	done
 
-	if declare -f pkgver >/dev/null && (( GET_VCS )); then
+	if (( PKGVERFUNC && GET_VCS )); then
 		update_pkgver
 		check_pkgver || exit 1
 	fi
@@ -1807,7 +1808,7 @@ check_sanity() {
 		ret=1
 	fi
 
-	if ! declare -f pkgver >/dev/null; then
+	if (( ! PKGVERFUNC )) ; then
 		check_pkgver || ret=1
 	fi
 
@@ -2406,6 +2407,10 @@ if (( GENINTEG )); then
 	exit 0 # $E_OK
 fi
 
+if declare -f pkgver >/dev/null; then
+	PKGVERFUNC=1
+fi
+
 # check the PKGBUILD for some basic requirements
 check_sanity || exit 1
 
@@ -2482,12 +2487,12 @@ else
 				warning "$(gettext "The package group has already been built, installing existing packages...")"
 				install_package
 				exit $?
-			else
+			elif (( ! PKGVERFUNC )); then
 				error "$(gettext "The package group has already been built. (use %s to overwrite)")" "-f"
 				exit 1
 			fi
 		fi
-		if (( somepkgbuilt )); then
+		if (( somepkgbuilt && ! PKGVERFUNC )); then
 			error "$(gettext "Part of the package group has already been built. (use %s to overwrite)")" "-f"
 			exit 1
 		fi
-- 
1.7.11.2



More information about the pacman-dev mailing list