[pacman-dev] [PATCH] makepkg: add packages to pkgdeps list only after successful install

Allan McRae allan at archlinux.org
Wed Jul 23 09:09:45 EDT 2008


This fixed FS#9403.  With this you can use "makepkg -sr", install the
dependencies, Ctrl+c during the makedepends installation and have
makepkg remove the installed packages on the exit.  Previously makepkg
tried to also remove the makedepends which were not installed.

The deplist="" line in remove_deps is due to an obscure bug where local
varaibles from the handle_deps function seem stay in scope because we
never formally exited it.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/makepkg.sh.in |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ae19983..379e9d8 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -362,11 +362,10 @@ resolve_deps() {
 	local deplist="$(check_deps $*)"
 	if [ "$deplist" = "" ]; then
 		return $R_DEPS_SATISFIED
-	else
-		pkgdeps="$pkgdeps $deplist"
 	fi
 
 	if handledeps $deplist; then
+		pkgdeps="$pkgdeps $deplist"
 		# check deps again to make sure they were resolved
 		deplist="$(check_deps $*)"
 		[ "$deplist" = "" ] && return $R_DEPS_SATISFIED
@@ -390,6 +389,7 @@ remove_deps() {
 	[ "$pkgdeps" = "" ] && return
 
 	local dep depstrip deplist
+	deplist=""
 	for dep in $pkgdeps; do
 		depstrip=$(echo $dep | sed -e 's|=.*$||' -e 's|>.*$||' -e 's|<.*$||')
 		deplist="$deplist $depstrip"
-- 
1.5.6.4





More information about the pacman-dev mailing list