From 68d0c82b38eb2f31ab8278bb5eae68d20312f15e Mon Sep 17 00:00:00 2001
From: Vitaly Lipatov <lav@etersoft.ru>
Date: Sat, 26 Aug 2023 09:18:31 +0300
Subject: [PATCH] epm repack common.sh: speedup requires retrieving

---
 repack.d/common.sh | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/repack.d/common.sh b/repack.d/common.sh
index ac67ad66..13766bd2 100755
--- a/repack.d/common.sh
+++ b/repack.d/common.sh
@@ -6,6 +6,11 @@ fatal()
     exit 1
 }
 
+info()
+{
+    echo "$*" >&2
+}
+
 # compatibility layer
 
 # check if <arg> is a real command
@@ -348,6 +353,17 @@ add_qt6_deps()
     add_unirequires "libxkbcommon-x11.so.0 libxkbcommon.so.0 libxkbfile.so.1 libxml2.so.2 libxshmfence.so.1 libxslt.so.1 libz.so.1"
 }
 
+__get_binary_requires()
+{
+    local fdir="$1"
+
+    info "  Getting executable requires ..."
+    epm req --short $(find "$fdir" -type f -executable) </dev/null 2>/dev/null | sed -e 's|().*||'
+
+    info "  Getting libs requires ..."
+    epm req --short $(find "$fdir" -type f -name "lib*.so*") </dev/null 2>/dev/null | sed -e 's|().*||'
+}
+
 # fast hack to get all extra soname list
 get_libs_requires()
 {
@@ -355,12 +371,12 @@ get_libs_requires()
     local libpreslist=$(mktemp)
     local fdir="$BUILDROOT/$1"
 
-    find "$fdir" -type f | while read f ; do
-        epm req --short $f </dev/null 2>/dev/null | sed -e 's|().*||'
-    done | LANG=C sort -u >$libreqlist
+    __get_binary_requires "$fdir" | LANG=C sort -u >$libreqlist
 
+    info "  Getting internal provides ..."
     find "$fdir" -name "lib*.so*" | xargs -n1 objdump -p | grep "SONAME" | sed -e 's|.* ||' | LANG=C sort -u >$libpreslist
 
+    # print out result
     LANG=C join -v2 $libpreslist $libreqlist
     rm -f $libreqlist $libpreslist
 }
@@ -368,9 +384,9 @@ get_libs_requires()
 add_libs_requires()
 {
     local ll
-    echo "Scanning for required libs soname ..."
+    info "Scanning for required libs soname ..."
     get_libs_requires | xargs -n6 echo | while read ll ; do
-        echo "Requires: $ll"
+        info "Requires: $ll"
         add_unirequires "$ll" </dev/null
     done
 }
-- 
2.24.1