Date: Thursday, May 31, 2018 @ 16:39:30 Author: heftig Revision: 325449
5.1.0-2: Fix for devtools Added: pacman/trunk/0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch pacman/trunk/0002-makepkg-Don-t-use-parameterless-return.patch Modified: pacman/trunk/PKGBUILD ---------------------------------------------------------------+ 0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch | 27 ++ 0002-makepkg-Don-t-use-parameterless-return.patch | 93 ++++++++++ PKGBUILD | 13 + 3 files changed, 132 insertions(+), 1 deletion(-) Added: 0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch =================================================================== --- 0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch (rev 0) +++ 0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch 2018-05-31 16:39:30 UTC (rev 325449) @@ -0,0 +1,27 @@ +From 842bdfbb622db0673d4952812a490e10f61fa3bd Mon Sep 17 00:00:00 2001 +Message-Id: <842bdfbb622db0673d4952812a490e10f61fa3bd.1527784094.git.jan.steff...@gmail.com> +From: "Jan Alexander Steffens (heftig)" <jan.steff...@gmail.com> +Date: Thu, 31 May 2018 17:01:16 +0200 +Subject: [PATCH 1/2] makepkg: Clear ERR trap before trying to restore it + +$restoretrap is empty if the trap was not set. This caused the trap +handler to remain and override later exit codes. +--- + scripts/makepkg.sh.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in +index e9080a70..d67fd853 100644 +--- a/scripts/makepkg.sh.in ++++ b/scripts/makepkg.sh.in +@@ -432,6 +432,7 @@ run_function_safe() { + + run_function "$1" + ++ trap - ERR + eval "$restoretrap" + eval "$restoreset" + eval "$restoreshopt" +-- +2.17.0 + Added: 0002-makepkg-Don-t-use-parameterless-return.patch =================================================================== --- 0002-makepkg-Don-t-use-parameterless-return.patch (rev 0) +++ 0002-makepkg-Don-t-use-parameterless-return.patch 2018-05-31 16:39:30 UTC (rev 325449) @@ -0,0 +1,93 @@ +From bd164585f1a815a9f57b0c5bd2365d251500bc9f Mon Sep 17 00:00:00 2001 +Message-Id: <bd164585f1a815a9f57b0c5bd2365d251500bc9f.1527784094.git.jan.steff...@gmail.com> +In-Reply-To: <842bdfbb622db0673d4952812a490e10f61fa3bd.1527784094.git.jan.steff...@gmail.com> +References: <842bdfbb622db0673d4952812a490e10f61fa3bd.1527784094.git.jan.steff...@gmail.com> +From: "Jan Alexander Steffens (heftig)" <jan.steff...@gmail.com> +Date: Thu, 31 May 2018 17:46:51 +0200 +Subject: [PATCH 2/2] makepkg: Don't use parameterless return + +It's especially dangerous in trap handlers since the return value of the +function becomes the return value of the last command before the trap, +not the last command in the current function. This applies to any +function executed in a trap handler, nested functions included. + +In one case, install_packages failed (via return 14), which was inside a +conditional that then ran exit 14, which triggered the EXIT handler, +which called clean_up, which called remove_deps, which had !RMDEPS and +thus returned. The return value of remove_deps became the return value +of install_packages, triggering the ERR handler, which (due to another +problem) was still the user function handler, which then printed a +misleading error message and overrode the exit code with 4. +--- + scripts/makepkg.sh.in | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in +index d67fd853..15524dc0 100644 +--- a/scripts/makepkg.sh.in ++++ b/scripts/makepkg.sh.in +@@ -133,7 +133,7 @@ clean_up() { + + if (( INFAKEROOT )); then + # Don't clean up when leaving fakeroot, we're not done yet. +- return ++ return 0 + fi + + if (( (EXIT_CODE == E_OK || EXIT_CODE == E_INSTALL_FAILED) && CLEANUP )); then +@@ -313,7 +313,7 @@ resolve_deps() { + } + + remove_deps() { +- (( ! RMDEPS )) && return ++ (( ! RMDEPS )) && return 0 + + # check for packages removed during dependency install (e.g. due to conflicts) + # removing all installed packages is risky in this case +@@ -519,7 +519,7 @@ find_libdepends() { + + if (( sodepends == 0 )); then + (( ${#depends[@]} )) && printf '%s\n' "${depends[@]}" +- return; ++ return 0; + fi + + local libdeps filename soarch sofile soname soversion; +@@ -721,7 +721,7 @@ list_package_files() { + } + + create_package() { +- (( NOARCHIVE )) && return ++ (( NOARCHIVE )) && return 0 + + if [[ ! -d $pkgdir ]]; then + error "$(gettext "Missing %s directory.")" "\$pkgdir/" +@@ -784,14 +784,14 @@ create_package() { + create_debug_package() { + # check if a debug package was requested + if ! check_option "debug" "y" || ! check_option "strip" "y"; then +- return ++ return 0 + fi + + pkgdir="$pkgdirbase/$pkgbase-@DEBUGSUFFIX@" + + # check if we have any debug symbols to package + if dir_is_empty "$pkgdir/usr/lib/debug"; then +- return ++ return 0 + fi + + unset groups depends optdepends provides conflicts replaces backup install changelog +@@ -875,7 +875,7 @@ create_srcpackage() { + } + + install_package() { +- (( ! INSTALL )) && return ++ (( ! INSTALL )) && return 0 + + if (( ! SPLITPKG )); then + msg "$(gettext "Installing package %s with %s...")" "$pkgname" "$PACMAN -U" +-- +2.17.0 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2018-05-31 16:17:01 UTC (rev 325448) +++ PKGBUILD 2018-05-31 16:39:30 UTC (rev 325449) @@ -5,7 +5,7 @@ pkgname=pacman pkgver=5.1.0 -pkgrel=1 +pkgrel=2 pkgdesc="A library-based package manager with dependency support" arch=('x86_64') url="http://www.archlinux.org/pacman/" @@ -20,13 +20,24 @@ validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD' # Allan McRae <al...@archlinux.org> 'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <and...@archlinux.org> source=(https://sources.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig} + 0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch + 0002-makepkg-Don-t-use-parameterless-return.patch pacman.conf makepkg.conf) sha256sums=('9f5993fc8923530713742f15df284677f297b3eca15ed7a24758c98ac7399bd3' 'SKIP' + '9b2304141582a421e812c76760a74f360a3cbd780472cbb60cf023a34d6fcb3d' + '2a31d4db5f6e19e0148d4892de14317514f2b2dfb5369c7972a641ca8be89e5a' '95b3b2416402059cf6acf3e046082e7ce261e2b88629231dbf579a4200d8a63b' '650ddad24cad6afc4aecb4829cb8f06b9acb70c10a44f756fe8bd279949b518e') +prepare() { + cd "$pkgname-$pkgver" + # Fix install_packages failure exit code, required by makechrootpkg + patch -Np1 -i ../0001-makepkg-Clear-ERR-trap-before-trying-to-restore-it.patch + patch -Np1 -i ../0002-makepkg-Don-t-use-parameterless-return.patch +} + build() { cd "$pkgname-$pkgver"