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"
 

Reply via email to