[arch-commits] Commit in pacman/trunk (3 files)

Jan Steffens heftig at archlinux.org
Thu May 31 16:39:30 UTC 2018


    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.steffens at gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at 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.steffens at gmail.com>
+In-Reply-To: <842bdfbb622db0673d4952812a490e10f61fa3bd.1527784094.git.jan.steffens at gmail.com>
+References: <842bdfbb622db0673d4952812a490e10f61fa3bd.1527784094.git.jan.steffens at gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at 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- at 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 <allan at archlinux.org>
               'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <andrew at 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"
 



More information about the arch-commits mailing list