summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-01-10 20:56:27 +0100
committerDan McGee <dan@archlinux.org>2011-01-14 07:25:16 +0100
commita88cb03a58909304603a794e42070656fca6b626 (patch)
tree71e4adb75568f0dd73738fb21a7edde0b2dc5b44
parent665528d7bac99228849d1162f78c0817bc619eee (diff)
downloadpacman-a88cb03a58909304603a794e42070656fca6b626.tar.gz
pacman-a88cb03a58909304603a794e42070656fca6b626.tar.xz
makepkg: perform all sanity checks before erroring out
It is pretty annoying to get one, fix it, and then get another. We should be able to continue on through most of the sanity checks in one go so the user gets all the error messages at once. Also ensure $pkgbase is defined by the time we call this function; previously we printed nothing where a package name should have been due to this oversight. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--scripts/makepkg.sh.in37
1 files changed, 19 insertions, 18 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 6ebfac0e..a2d9c837 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1194,36 +1194,37 @@ install_package() {
check_sanity() {
# check for no-no's in the build script
local i
+ local ret=0
for i in 'pkgname' 'pkgrel' 'pkgver'; do
if [[ -z ${!i} ]]; then
error "$(gettext "%s is not allowed to be empty.")" "$i"
- return 1
+ ret=1
fi
done
for i in "${pkgname[@]}"; do
if [[ ${i:0:1} = "-" ]]; then
error "$(gettext "%s is not allowed to start with a hyphen.")" "pkgname"
- return 1
+ ret=1
fi
done
if [[ ${pkgbase:0:1} = "-" ]]; then
error "$(gettext "%s is not allowed to start with a hyphen.")" "pkgbase"
- return 1
+ ret=1
fi
- if [[ $pkgver != ${pkgver//-/} ]]; then
- error "$(gettext "%s is not allowed to contain hyphens.")" "pkgver"
- return 1
+ if [[ $pkgver =~ [:-] ]]; then
+ error "$(gettext "%s is not allowed to contain colons or hyphens.")" "pkgver"
+ ret=1
fi
if [[ $pkgrel != ${pkgrel//-/} ]]; then
error "$(gettext "%s is not allowed to contain hyphens.")" "pkgrel"
- return 1
+ ret=1
fi
if [[ ! $epoch =~ ^[0-9]*$ ]]; then
error "$(gettext "%s must be an integer.")" "epoch"
- return 1
+ ret=1
fi
if [[ $arch != 'any' ]]; then
@@ -1232,7 +1233,7 @@ check_sanity() {
error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgbase" "$CARCH"
plain "$(gettext "Note that many packages may need a line added to their %s")" "$BUILDSCRIPT"
plain "$(gettext "such as arch=('%s').")" "$CARCH"
- return 1
+ ret=1
fi
fi
fi
@@ -1242,7 +1243,7 @@ check_sanity() {
for i in ${provides_list[@]}; do
if [[ $i != ${i//</} || $i != ${i//>/} ]]; then
error "$(gettext "Provides array cannot contain comparison (< or >) operators.")"
- return 1
+ ret=1
fi
done
@@ -1251,7 +1252,7 @@ check_sanity() {
for i in "${backup_list[@]}"; do
if [[ ${i:0:1} = "/" ]]; then
error "$(gettext "Backup entry should not contain leading slash : %s")" "$i"
- return 1
+ ret=1
fi
done
@@ -1272,7 +1273,7 @@ check_sanity() {
eval file=${file}
if [[ ! -f $file ]]; then
error "$(gettext "%s file (%s) does not exist.")" "$i" "$file"
- return 1
+ ret=1
fi
done
done
@@ -1294,14 +1295,14 @@ check_sanity() {
fi
done
if (( ! valid_options )); then
- return 1
+ ret=1
fi
if (( ${#pkgname[@]} > 1 )); then
for i in ${pkgname[@]}; do
if ! declare -f package_${i} >/dev/null; then
error "$(gettext "missing package function for split package '%s'")" "$i"
- return 1
+ ret=1
fi
done
fi
@@ -1309,11 +1310,11 @@ check_sanity() {
for i in ${PKGLIST[@]}; do
if ! in_array $i ${pkgname[@]}; then
error "$(gettext "requested package %s is not provided in %s")" "$i" "$BUILDFILE"
- return 1
+ ret=1
fi
done
- return 0
+ return $ret
}
devel_check() {
@@ -1838,6 +1839,8 @@ if (( GENINTEG )); then
exit 0 # $E_OK
fi
+pkgbase=${pkgbase:-${pkgname[0]}}
+
# check the PKGBUILD for some basic requirements
check_sanity || exit 1
@@ -1868,8 +1871,6 @@ elif [[ $SPLITPKG -eq 0 ]] && declare -f package_${pkgname} >/dev/null; then
SPLITPKG=1
fi
-pkgbase=${pkgbase:-${pkgname[0]}}
-
if [[ -n "${PKGLIST[@]}" ]]; then
unset pkgname
pkgname=("${PKGLIST[@]}")