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 <[email protected]>
---
 scripts/makepkg.sh.in | 41 +++++++++++------------------------------
 1 file changed, 11 insertions(+), 30 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 8b222da..1bbd561 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -2240,7 +2240,12 @@ check_sanity() {
                ret=1
        fi
 
-       if (( ${#pkgname[@]} > 1 )); then
+       if (( ${#pkgname[@]} == 1 )); then
+               if has_function build && ! ( has_function package || 
has_function package_${pkgname}); then
+                       error "$(gettext "Missing %s function in %s")" 
"package()" "$BUILDFILE"
+                       ret=1
+               fi
+       else
                for i in ${pkgname[@]}; do
                        if ! has_function package_${i}; then
                                error "$(gettext "Missing %s function for split 
package '%s'")" "package_$i()" "$i"
@@ -2873,17 +2878,7 @@ if (( INFAKEROOT )); then
        if (( ! SPLITPKG )); then
                pkgdir="$pkgdirbase/$pkgname"
                mkdir "$pkgdir"
-               if (( ! PKGFUNC )); then
-                       if (( ! REPKG )); then
-                               if (( BUILDFUNC )); then
-                                       run_build
-                                       (( CHECKFUNC )) && run_check
-                               fi
-                       else
-                               warning "$(gettext "Repackaging without the use 
of a %s function is deprecated.")" "package()"
-                               plain "$(gettext "File permissions may not be 
preserved.")"
-                       fi
-               else
+               if (( PKGFUNC )); then
                        run_package
                fi
                tidy_install
@@ -2900,10 +2895,6 @@ fi
 fullver=$(get_full_version)
 msg "$(gettext "Making package: %s")" "$pkgbase $fullver ($(date))"
 
-if (( !PKGFUNC && !SPLITPKG )); then
-       warning "$(gettext "Using a %s without a %s function is deprecated.")" 
"$BUILDSCRIPT" "package()"
-fi
-
 # if we are creating a source-only package, go no further
 if (( SOURCEONLY )); then
        if [[ -f $SRCPKGDEST/${pkgbase}-${fullver}${SRCEXT} ]] \
@@ -2981,14 +2972,7 @@ cd_safe "$srcdir"
 
 if (( NOEXTRACT && ! VERIFYSOURCE )); then
        warning "$(gettext "Using existing %s tree")" "src/"
-elif (( REPKG )); then
-       if (( ! PKGFUNC && ! SPLITPKG )) \
-            && { [[ ! -d $pkgdirbase ]] || dir_is_empty "$pkgdirbase"; }; then
-               error "$(gettext "The package directory is empty, there is 
nothing to repackage!")"
-               plain "$(gettext "Aborting...")"
-               exit 1
-       fi
-else
+elif (( !REPKG )); then
        download_sources
        check_source_integrity
        (( VERIFYSOURCE )) && exit 0 # $E_OK
@@ -3002,8 +2986,8 @@ if (( NOBUILD )); then
        msg "$(gettext "Sources are ready.")"
        exit 0 #E_OK
 else
-       # check for existing pkg directory; don't remove if we are repackaging
-       if [[ -d $pkgdirbase ]] && (( ! REPKG || PKGFUNC || SPLITPKG )); then
+       # clean existing pkg directory
+       if [[ -d $pkgdirbase ]]; then
                msg "$(gettext "Removing existing %s directory...")" "pkg/"
                rm -rf "$pkgdirbase"
        fi
@@ -3027,9 +3011,6 @@ else
                        mkdir -p "$pkgdir"
                        if (( PKGFUNC )); then
                                run_package
-                       elif (( REPKG )); then
-                                       warning "$(gettext "Repackaging without 
the use of a %s function is deprecated.")" "package()"
-                                       plain "$(gettext "File permissions may 
not be preserved.")"
                        fi
                        tidy_install
                        create_package
@@ -3038,7 +3019,7 @@ else
                        run_split_packaging
                fi
        else
-               if (( ! REPKG && ( PKGFUNC || SPLITPKG ) )); then
+               if (( ! REPKG )); then
                        (( BUILDFUNC )) && run_build
                        (( CHECKFUNC )) && run_check
                        cd_safe "$startdir"
-- 
1.8.2.3


Reply via email to