+dtneededsizerpmsone
[massrebuild.git] / dtneededsizerpmsone
1 #! /bin/bash
2 set -e
3 # build/znc-1.8.1-2.fc33.src.rpm.rpms
4 which readelf >/dev/null
5 for rpms in "$@";do
6   srcrpm="${rpms%.rpms}"
7   if [ "$rpms" = "$srcrpm" ];then
8     echo >&2 "$rpms is not *.rpms"
9     exit 1
10   fi
11   if [ "$srcrpm" != "${srcrpm%.dt5.rpm}" ];then
12     # The non-.dt5.rpm run will handle both.
13     exit 0
14   fi
15   test -e $srcrpm.rpms
16   test -e $srcrpm.dt5.rpm.rpms
17   test ! -e $srcrpm.dtneeded
18   test ! -e $srcrpm.rpms.d
19   t=/tmp/dtneededsizerpms.$$
20   rm -f $t
21   mkdir $srcrpm.rpms.d
22   pushd $srcrpm.rpms.d >/dev/null
23     rpmsbase=../../`basename $srcrpm`
24     dwzrpms=$rpmsbase.rpms
25     dtrpms=$rpmsbase.dt5.rpm.rpms
26     mkdir empty
27     cd empty
28       if [ -z "$(find $dwzrpms $dtrpms -maxdepth 1 -type f)" ];then
29         popd >/dev/null
30         rm -rf $srcrpm.rpms.d
31         exit 0
32       fi
33     cd ..
34     function extract
35     {
36       for i in $1/*-debuginfo*.rpm;do
37         test ! -e $i.tgz
38         rpm2archive $i
39         test -e $i.tgz
40         tar xzf $i.tgz
41         rm -f $i.tgz
42       done
43     }
44     mkdir dwz;(cd dwz;extract $dwzrpms)
45     mkdir  dt;(cd  dt;extract  $dtrpms)
46     dwzcommonname="$(find dwz/usr/lib/debug/.dwz/ -type f 2>/dev/null || :)"
47     if [ -z "$dwzcommonname" ];then
48       dwzcommonname="nodwzcommon"
49       dwzcommon=0
50     else
51       dwzcommon="$(find "$dwzcommonname" -maxdepth 0 -printf "%s")"
52       echo >>$t "$dwzcommonname isdwzcommon $dwzcommon NA"
53     fi
54     pushd dwz >/dev/null
55       for i in `find -type f -name "*.debug*"`;do
56         dwz=$(find $i      -maxdepth 0 -printf "%s")
57         dt=$(find ../dt/$i -maxdepth 0 -printf "%s")
58         if readelf -WS $i 2>/dev/null|fgrep -q .gnu_debugaltlink;then
59           if [ $dwzcommon -eq 0 ];then
60             echo >&2 Excessive .gnu_debugaltlink: $i
61             exit 1
62           fi
63         fi
64         echo >>$t "$(echo "$i"|sed 's/\.debug$//') $dwzcommonname $dwz $dt"
65       done
66     popd >/dev/null
67   popd >/dev/null
68   rm -rf $srcrpm.rpms.d
69   mv $t $srcrpm.dtneeded
70 done