diff --git a/abuild.in b/abuild.in
index 443eeaeb7e88420a6fc663c78a258128339bdce4..b2e0197d74d1dde89866208ee5d9b6ce0680d003 100755
--- a/abuild.in
+++ b/abuild.in
@@ -923,7 +923,7 @@ trace_apk_deps() {
 }
 
 find_scanelf_paths() {
-	local controldir="$1" datadir="$2"
+	local datadir="$1"
 	local paths="$datadir/lib:$datadir/usr/lib" i= rpaths=
 	if [ -n "$ldpath" ]; then
 		paths="$paths:$(echo "$ldpath" | sed "s|\(^\|:\)|\1$datadir|g")"
@@ -932,9 +932,12 @@ find_scanelf_paths() {
 	for rpaths in "$pkgbasedir"/.control.*/.rpaths; do
 		[ -f "$rpaths" ] || continue
 		while read i; do
-			if [ -d "$datadir/$i" ]; then
-				paths="$paths:$datadir/$i"
+			local dir="${datadir}${i}"
+			IFS=:
+			if [ -d "$dir" ] && ! list_has "$dir" $paths; then
+				paths="$paths:${dir}"
 			fi
+			unset IFS
 		done < "$rpaths"
 	done
 	echo "$paths"
@@ -946,7 +949,7 @@ scan_shared_objects() {
 
 	# allow spaces in paths
 	IFS=:
-	set -- $(find_scanelf_paths "$controldir" "$datadir")
+	set -- $(find_scanelf_paths "$datadir")
 	unset IFS
 
 	if options_has "ldpath-recursive"; then