[pacman-dev] [PATCH] [makepkg] fix -r and --needed conflict

William Giokas 1007380 at gmail.com
Sat Feb 9 02:54:42 EST 2013

In makepkg, passing -sr --needed causes there to be a conflict when
pacman goes to remove the dependencies, as the --needed flag is not an
option for pacman -R. This patch sanitizes the PACMAN_OPTS in the
remove_deps() function so that it can still run even with the --needed
option passed to makepkg. (Useful when doing `makepkg -sir --needed` to
get rid of unneeded {make,check}depends automatically). At the end of
the remove_deps() function, PACMAN_OPTS is restored to its original

Signed-off-by: William Giokas <1007380 at gmail.com>

Noticed this today when building a series of git packges on my system.
Sorry for not catching this earlier.

 scripts/makepkg.sh.in | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index c464ec7..fc1976a 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -984,10 +984,23 @@ remove_deps() {
 	msg "Removing installed dependencies..."
 	# exit cleanly on failure to remove deps as package has been built successfully
+	opts_backup="${PACMAN_OPTS[@]}"
+	for i in ${PACMAN_OPTS[@]}; do
+		if [[ $i == "--needed" ]]; then
+			opts2=("${rm_opts[@]}")
+		else
+			opts2=("${rm_opts[@]}" "$i")
+		fi
+	done
+	PACMAN_OPTS="${rm_opts[@]}"
 	if ! run_pacman -Rn ${deplist[@]}; then
 		warning "$(gettext "Failed to remove installed dependencies.")"
 		return 0
+	PACMAN_OPTS="${opts_backup[@]}"
 get_integlist() {

More information about the pacman-dev mailing list