1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-08-13 17:03:46 -04:00

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>
This commit is contained in:
Dan McGee 2011-01-10 13:56:27 -06:00
parent 665528d7ba
commit a88cb03a58

View File

@ -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[@]}")