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 <allan@archlinux.org> --- 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