From 0f7e6612226673b8f4e4266fe04b92e64ec9ad5f Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 4 Sep 2020 21:57:11 +0200 Subject: [PATCH 1/1] +dtneededtwo: Speedup. --- dtneeded | 7 ++++--- dtneededone | 34 ++++++---------------------------- dtneededtwo | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 31 deletions(-) create mode 100755 dtneededtwo diff --git a/dtneeded b/dtneeded index 998aba7..c6eff8f 100755 --- 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" diff --git a/dtneededone b/dtneededone index f81e70d..1174d09 100755 --- a/dtneededone +++ b/dtneededone @@ -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 index 0000000..bd2a656 --- /dev/null +++ b/dtneededtwo @@ -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" -- 1.8.3.1