[pacman-dev] [PATCH 1/2] makepkg: Add helper to test for functions in build script

Dave Reisner d at falconindy.com
Sat May 18 11:37:52 EDT 2013


On May 18, 2013 10:10 AM, "Allan McRae" <allan at archlinux.org> wrote:
>
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>  scripts/makepkg.sh.in | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index c311c30..8b222da 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -2095,6 +2095,10 @@ install_package() {
>         fi
>  }
>
> +has_function() {
> +       return $(declare -f $1 >/dev/null)

Quotes on $1 please.

> +}

If this works, its only by chance. Just call declare and the return value
will work itself out.

Would also prefer have_ instead of has_ but that's a minor point.

> +
>  check_sanity() {
>         # check for no-no's in the build script
>         local i
> @@ -2238,7 +2242,7 @@ check_sanity() {
>
>         if (( ${#pkgname[@]} > 1 )); then
>                 for i in ${pkgname[@]}; do
> -                       if ! declare -f package_${i} >/dev/null; then
> +                       if ! has_function package_${i}; then
>                                 error "$(gettext "Missing %s function for
split package '%s'")" "package_$i()" "$i"
>                                 ret=1
>                         fi
> @@ -2799,7 +2803,7 @@ if (( GENINTEG )); then
>         exit 0 # $E_OK
>  fi
>
> -if declare -f pkgver >/dev/null; then
> +if has_function pkgver; then
>         PKGVERFUNC=1
>  fi
>
> @@ -2814,24 +2818,24 @@ if (( ${#pkgname[@]} > 1 )); then
>  fi
>
>  # test for available PKGBUILD functions
> -if declare -f prepare >/dev/null; then
> +if has_function prepare; then
>         # "Hide" prepare() function if not going to be run
>         if [[ $RUN_PREPARE != "n" ]]; then
>                 PREPAREFUNC=1
>         fi
>  fi
> -if declare -f build >/dev/null; then
> +if has_function build; then
>         BUILDFUNC=1
>  fi
> -if declare -f check >/dev/null; then
> +if has_function check; then
>         # "Hide" check() function if not going to be run
>         if [[ $RUN_CHECK = 'y' ]] || { ! check_buildenv "check" "n" && [[
$RUN_CHECK != "n" ]]; }; then
>                 CHECKFUNC=1
>         fi
>  fi
> -if declare -f package >/dev/null; then
> +if has_function package; then
>         PKGFUNC=1
> -elif [[ $SPLITPKG -eq 0 ]] && declare -f package_${pkgname} >/dev/null;
then
> +elif [[ $SPLITPKG -eq 0 ]] && has_function package_${pkgname}; then
>         SPLITPKG=1
>  fi
>
> --
> 1.8.2.3
>
>


More information about the pacman-dev mailing list