diff options
author | Dan McGee <dan@archlinux.org> | 2011-01-10 13:56:27 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-01-14 00:25:16 -0600 |
commit | a88cb03a58909304603a794e42070656fca6b626 (patch) | |
tree | 71e4adb75568f0dd73738fb21a7edde0b2dc5b44 | |
parent | 665528d7bac99228849d1162f78c0817bc619eee (diff) | |
download | 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.in | 37 |
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[@]}") |