[pacman-dev] [PATCH] makepkg: refactor sanity checking into a function
Dan McGee
dan at archlinux.org
Sat Jun 6 13:50:19 EDT 2009
No new checks, just move it into a function and return 1 rather than exit
directly. This also allows the use of local variables.
Signed-off-by: Dan McGee <dan at archlinux.org>
---
scripts/makepkg.sh.in | 142 ++++++++++++++++++++++++++-----------------------
1 files changed, 76 insertions(+), 66 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index cb63f9a..f46b7f8 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1103,6 +1103,79 @@ install_package() {
fi
}
+check_sanity() {
+ # check for no-no's in the build script
+ if [ -z "$pkgname" ]; then
+ error "$(gettext "%s is not allowed to be empty.")" "pkgname"
+ return 1
+ fi
+ if [ -z "$pkgver" ]; then
+ error "$(gettext "%s is not allowed to be empty.")" "pkgver"
+ return 1
+ fi
+ if [ -z "$pkgrel" ]; then
+ error "$(gettext "%s is not allowed to be empty.")" "pkgrel"
+ return 1
+ fi
+ if [ "$pkgver" != "${pkgver//-/}" ]; then
+ error "$(gettext "%s is not allowed to contain hyphens.")" "pkgver"
+ return 1
+ fi
+ if [ "$pkgrel" != "${pkgrel//-/}" ]; then
+ error "$(gettext "%s is not allowed to contain hyphens.")" "pkgrel"
+ return 1
+ fi
+
+ if [ "$arch" = 'any' ]; then
+ CARCH='any'
+ fi
+
+ pkgbase=${pkgbase:-${pkgname[0]}}
+
+ if ! in_array $CARCH ${arch[@]}; then
+ if [ "$IGNOREARCH" -eq 0 ]; then
+ 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
+ fi
+ fi
+
+ local provide
+ for provide in ${provides[@]}; do
+ if [ $provide != ${provide//</} -o $provide != ${provide//>/} ]; then
+ error "$(gettext "Provides array cannot contain comparison (< or >) operators.")"
+ return 1
+ fi
+ done
+
+ if [ "$install" -a ! -f "$install" ]; then
+ error "$(gettext "Install scriptlet (%s) does not exist.")" "$install"
+ return 1
+ fi
+
+ local valid_options=1
+ local opt known kopt
+ for opt in ${options[@]}; do
+ known=0
+ # check if option matches a known option or its inverse
+ for kopt in ${packaging_options[@]} ${other_options[@]}; do
+ if [ "${opt}" = "${kopt}" -o "${opt}" = "!${kopt}" ]; then
+ known=1
+ fi
+ done
+ if [ $known -eq 0 ]; then
+ error "$(gettext "options array contains unknown option '%s'")" "$opt"
+ valid_options=0
+ fi
+ done
+ if [ $valid_options -eq 0 ]; then
+ return 1
+ fi
+
+ return 0
+}
+
devel_check() {
newpkgver=""
@@ -1556,74 +1629,11 @@ if [ "$(type -t package)" = "function" ]; then
PKGFUNC=1
fi
-# check for no-no's in the build script
-if [ -z "$pkgname" ]; then
- error "$(gettext "%s is not allowed to be empty.")" "pkgname"
- exit 1
-fi
-if [ -z "$pkgver" ]; then
- error "$(gettext "%s is not allowed to be empty.")" "pkgver"
- exit 1
-fi
-if [ -z "$pkgrel" ]; then
- error "$(gettext "%s is not allowed to be empty.")" "pkgrel"
- exit 1
-fi
-if [ "$pkgver" != "${pkgver//-/}" ]; then
- error "$(gettext "%s is not allowed to contain hyphens.")" "pkgver"
- exit 1
-fi
-if [ "$pkgrel" != "${pkgrel//-/}" ]; then
- error "$(gettext "%s is not allowed to contain hyphens.")" "pkgrel"
- exit 1
-fi
-
-if [ "$arch" = 'any' ]; then
- CARCH='any'
-fi
-
-pkgbase=${pkgbase:-${pkgname[0]}}
-
-if ! in_array $CARCH ${arch[@]}; then
- if [ "$IGNOREARCH" -eq 0 ]; then
- 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"
- exit 1
- fi
-fi
-
-for provide in ${provides[@]}; do
- if [ $provide != ${provide//</} -o $provide != ${provide//>/} ]; then
- error "$(gettext "Provides array cannot contain comparison (< or >) operators.")"
- exit 1
- fi
-done
-unset provide
-
-if [ "$install" -a ! -f "$install" ]; then
- error "$(gettext "Install scriptlet (%s) does not exist.")" "$install"
- exit 1
-fi
-
-valid_options=1
-for opt in ${options[@]}; do
- known=0
- # check if option matches a known option or its inverse
- for kopt in ${packaging_options[@]} ${other_options[@]}; do
- if [ "${opt}" = "${kopt}" -o "${opt}" = "!${kopt}" ]; then
- known=1
- fi
- done
- if [ $known -eq 0 ]; then
- error "$(gettext "options array contains unknown option '%s'")" "$opt"
- valid_options=0
- fi
-done
-if [ $valid_options -eq 0 ]; then
+# check the PKGBUILD for some basic requirements
+check_sanity || insane=1
+if [ $insane -eq 1 ]; then
exit 1
fi
-unset valid_options opt known kopt
# We need to run devel_update regardless of whether we are in the fakeroot
# build process so that if the user runs makepkg --forcever manually, we
--
1.6.3.2
More information about the pacman-dev
mailing list