#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"
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:"$*"
--- /dev/null
+#! /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"