[pacman-dev] [PATCH 1/2] makepkg: Add helper to test for functions in build script
Signed-off-by: Allan McRae
Not having a package() function means all building occurs as root
and repackaging can lose permissions. Given the use of package()
functions has been around for years and we deprecated not having
one in pacman-4.1, we can remove support for PKGBUILDs without
package() functions altogether. However, keep PKGBUILDs that have
neither a build() or package() function working.
Signed-off-by: Allan McRae
On May 18, 2013 10:10 AM, "Allan McRae"
Signed-off-by: Allan McRae
--- 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.
+}
+ 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;
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. then
+elif [[ $SPLITPKG -eq 0 ]] && has_function package_${pkgname}; then SPLITPKG=1 fi
-- 1.8.2.3
On 19/05/13 01:37, Dave Reisner wrote:
On May 18, 2013 10:10 AM, "Allan McRae"
wrote: Signed-off-by: Allan McRae
--- 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.
All fixed on my working branch. Allan
participants (2)
-
Allan McRae
-
Dave Reisner