[pacman-dev] [PATCH] makepkg: check pkgver validity after updating

Allan McRae allan at archlinux.org
Mon Jul 16 08:01:45 EDT 2012


If a PKGBUILD has a pkgver() function, skip checking the pkgver validity
until it has been updated.

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

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 8f14418..ed14577 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -547,6 +547,7 @@ download_sources() {
 
 	if declare -f pkgver >/dev/null && (( GET_VCS )); then
 		update_pkgver
+		check_pkgver || exit 1
 	fi
 
 	popd &>/dev/null
@@ -1782,7 +1783,7 @@ check_sanity() {
 	# check for no-no's in the build script
 	local i
 	local ret=0
-	for i in 'pkgname' 'pkgrel' 'pkgver'; do
+	for i in 'pkgname' 'pkgrel'; do
 		if [[ -z ${!i} ]]; then
 			error "$(gettext "%s is not allowed to be empty.")" "$i"
 			ret=1
@@ -1806,14 +1807,9 @@ check_sanity() {
 		ret=1
 	fi
 
-	awk -F'=' '$1 ~ /^[[:space:]]*pkgver$/' "$BUILDFILE" | sed "s/[[:space:]]*#.*//" |
-	while IFS='=' read -r _ i; do
-		eval i=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "${i%%+([[:space:]])}")\"
-		if [[ $i = *[[:space:]:-]* ]]; then
-			error "$(gettext "%s is not allowed to contain colons, hyphens or whitespace.")" "pkgver"
-			return 1
-		fi
-	done || ret=1
+	if ! declare -f pkgver >/dev/null; then
+		check_pkgver || ret=1
+	fi
 
 	awk -F'=' '$1 ~ /^[[:space:]]*pkgrel$/' "$BUILDFILE" | sed "s/[[:space:]]*#.*//" |
 	while IFS='=' read -r _ i; do
@@ -1943,6 +1939,26 @@ check_sanity() {
 	return $ret
 }
 
+check_pkgver() {
+	local ret=0
+
+	if [[ -z ${pkgver} ]]; then
+		error "$(gettext "%s is not allowed to be empty.")" "$i"
+		ret=1
+	fi
+
+	awk -F'=' '$1 ~ /^[[:space:]]*pkgver$/' "$BUILDFILE" | sed "s/[[:space:]]*#.*//" |
+	while IFS='=' read -r _ i; do
+		eval i=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "${i%%+([[:space:]])}")\"
+		if [[ $i = *[[:space:]:-]* ]]; then
+			error "$(gettext "%s is not allowed to contain colons, hyphens or whitespace.")" "pkgver"
+			return 1
+		fi
+	done || ret=1
+
+	return $ret
+}
+
 check_software() {
 	# check for needed software
 	local ret=0
-- 
1.7.11.2



More information about the pacman-dev mailing list