+dtneededtwo: Speedup.
authorJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 4 Sep 2020 19:57:11 +0000 (21:57 +0200)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 4 Sep 2020 19:57:11 +0000 (21:57 +0200)
dtneeded
dtneededone
dtneededtwo [new file with mode: 0755]

index 998aba7..c6eff8f 100755 (executable)
--- a/dtneeded
+++ b/dtneeded
@@ -4,8 +4,9 @@ all="$(dnf --refresh --disablerepo='*' --enablerepo=$repos repoquery -a --qf '%{
 #all="bash-5.0.17-2.fc33.x86_64"
 set -ex
 d=$PWD/dtneeded.out
-rm -rf $d
-mkdir $d
+rm -rf $d $d-log.d
+mkdir $d $d-log.d
 # 61970/192 = 322
 # -n128 maybe ignored some pkgs
-echo $all|xargs -P192 -n1 ./dtneededone $repos $d
+echo $all|tr ' ' '\n'|shuf|xargs -P192 -n128 ./dtneededone $repos $d
+echo done:"$all"
index f81e70d..1174d09 100755 (executable)
@@ -4,36 +4,14 @@ repos=$1
 shift
 d=$1
 shift
-t=/tmp/dtneeded.$$
+t=/tmp/dtneededone.$$
 rm -rf $t
 mkdir $t
+origpwd="$PWD"
 cd $t
-if ! dnf --disablerepo='*' --enablerepo=$repos download $@;then
-  echo $@ >>$d/error-dnf
+if ! dnf --disablerepo='*' --enablerepo=$repos download "$@";then
+  echo "$@" >>$d/error-dnf
   exit 1
 fi
-mkdir -p dtneeded.log.d
-for pkg in "$@";do
-  exec >>dtneeded.log.d/"$pkg" 2>&1
-  cd $t
-  if ! test -e $pkg.rpm;then
-    echo $pkg >>$d/error-e
-    continue
-  fi
-  rpm2archive $pkg.rpm
-  rm -f $pkg.rpm
-  mkdir x
-  cd x
-  tar xzf ../$pkg.rpm.tgz
-  rm -f $../$pkg.rpm.tgz
-  find -type f|while read -r i;do
-    llvm-readelf --dynamic-table $i >xxx 2>/dev/null || :
-    if test -s xxx;then
-      mkdir -p $d/`dirname $i`
-      mv -f xxx $d/$i
-    fi
-  done
-  cd $t
-  rm -rf x
-done
-rm -rf $t
+for i in "$@";do echo "$t/$i";done|xargs -P192 -n1 "$origpwd"/dtneededtwo "$repos" "$d"
+echo doneone:"$*"
diff --git a/dtneededtwo b/dtneededtwo
new file mode 100755 (executable)
index 0000000..bd2a656
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/bash
+set -ex
+repos=$1
+shift
+d=$1
+shift
+pkg=$1
+shift
+exec >>$d-log.d/"$(basename "$pkg")" 2>&1
+[ $# -eq 0 ]
+t=/tmp/dtneededtwo.$$
+rm -rf $t
+mkdir $t
+cd $t
+if ! test -e "$pkg.rpm";then
+  echo "$pkg" >>$d/error-e
+  exit 1
+fi
+rpm2archive "$pkg.rpm"
+rm -f "$pkg.rpm"
+mkdir x
+cd x
+tar xzf "$pkg.rpm.tgz"
+rm -f "$pkg.rpm.tgz"
+pkg="$(basename "$pkg")"
+find -type f|while read -r i;do
+  llvm-readelf --dynamic-table "$i" >xxx 2>/dev/null || :
+  if test -s xxx;then
+    if test -e "$d/$i";then
+      echo "$pkg:$i" >>$d/error-conflict
+      rm -f xxx
+    else
+      mkdir -p "$(dirname "$d/$i")"
+      mv -f xxx "$d/$i"
+    fi
+  fi
+done
+find -type l|while read -r i;do
+  if test -e "$d/$i";then
+    echo "$pkg:$i" >>$d/error-conflict-l
+  else
+    mkdir -p "$(dirname "$d/$i")"
+    mv -f $i "$d/$i"
+  fi
+done
+cd
+rm -rf $t
+echo donetwo:"$pkg"