Populate an associative array as we iterate over SRC_URI to collect needed dependencies to avoid recording the same dependencies twice.
This still doesn't handle USE flags, but it's significantly better than before, as we won't repeatedly emit the same dependency if there's more than one distfile
in SRC_URI with the same suffix.
Closes:
https://bugs.gentoo.org/891133
Thanks-to: Ionen Wolkens <
ionen@gentoo.org>
Signed-off-by: Sam James <
sam@gentoo.org>
---
eclass/unpacker.eclass | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/eclass/unpacker.eclass b/eclass/unpacker.eclass
index 326b2fa675249..44ff2af5acf39 100644
--- a/eclass/unpacker.eclass
+++ b/eclass/unpacker.eclass
@@ -596,7 +596,8 @@ unpacker_src_unpack() {
#
# Note: USE flags are not yet handled.
unpacker_src_uri_depends() {
- local uri deps d
+ local uri
+ local -A deps
if [[ $# -eq 0 ]] ; then
# Disable path expansion for USE conditionals. #654960
@@ -606,20 +607,19 @@ unpacker_src_uri_depends() {
fi
for uri in "$@" ; do
- local m=${uri,,}
- case ${m} in
+ case ${uri,,} in
*.cpio.*|*.cpio)
- d="app-arch/cpio" ;;
+ deps[cpio]="app-arch/cpio" ;;
*.rar)
- d="app-arch/unrar" ;;
+ deps[rar]="app-arch/unrar" ;;
*.7z)
- d="app-arch/p7zip" ;;
+ deps[7z]="app-arch/p7zip" ;;
*.xz)
- d="app-arch/xz-utils" ;;
+ deps[xz]="app-arch/xz-utils" ;;
*.zip)
- d="app-arch/unzip"