56e6a4451cfe12a7594fd6628b7894f10eff5ac2
[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     continue
14   fi
15   if [ "$srcrpm" != "${srcrpm%.dt.rpm}" ];then
16     # Ignore.
17     continue
18   fi
19   test -e $srcrpm.rpms || (echo >&2 "! $srcrpm.rpms";exit 1)
20   test -e $srcrpm.dt5.rpm.rpms || (echo >&2 "! $srcrpm.dt5.rpm.rpms";exit 1)
21   if [ -e $srcrpm.dtneeded ];then
22     continue
23   fi
24   test ! -e $srcrpm.rpms.d || (echo >&2 "$srcrpm.rpms.d";exit 1)
25   t=/tmp/dtneededsizerpms.$$
26   rm -f $t
27   mkdir $srcrpm.rpms.d
28   pushd $srcrpm.rpms.d >/dev/null
29     rpmsbase=../../`basename $srcrpm`
30     dwzrpms=$rpmsbase.rpms
31     dtrpms=$rpmsbase.dt5.rpm.rpms
32     mkdir empty
33     cd empty
34       if [ -z "$(find $dwzrpms $dtrpms -maxdepth 1 -type f)" ];then
35         popd >/dev/null
36         rm -rf $srcrpm.rpms.d
37         continue
38       fi
39     cd ..
40     function extract
41     {
42       for i in $1/*-debuginfo*.rpm;do
43         test ! -e $i.tgz
44         rpm2archive $i
45         test -e $i.tgz
46         tar xzf $i.tgz
47         rm -f $i.tgz
48       done
49     }
50     mkdir dwz;(cd dwz;extract $dwzrpms)
51     mkdir  dt;(cd  dt;extract  $dtrpms)
52     dwzcommonname="$(find dwz/usr/lib/debug/.dwz/ -type f 2>/dev/null || :)"
53     if [ -z "$dwzcommonname" ];then
54       dwzcommonname="nodwzcommon"
55       dwzcommon=0
56     else
57       dwzcommon="$(find "$dwzcommonname" -maxdepth 0 -printf "%s")"
58       dwzcommonname="/${dwzcommonname#dwz/}"
59       dwzcommonname2="$(echo "$dwzcommonname"|sed 's/-[^-]*-[^-]*$//')"
60       if [ "$dwzcommonname2" = "$dwzcommonname" ];then
61         echo >&2 "No VR dwzcommon suffix: $dwzcommonname"
62         exit 1
63       fi
64       dwzcommonname="$dwzcommonname2"
65       echo >>$t "$dwzcommonname isdwzcommon $dwzcommon NA"
66     fi
67     pushd dwz >/dev/null
68       for i in `find -type f -name "*.debug*"`;do
69         dwz=$(find $i      -maxdepth 0 -printf "%s")
70         dt=$(find ../dt/$i -maxdepth 0 -printf "%s")
71         if readelf -WS $i 2>/dev/null|fgrep -q .gnu_debugaltlink;then
72           if [ $dwzcommon -eq 0 ];then
73             echo >&2 "Excessive .gnu_debugaltlink: $i"
74             exit 1
75           fi
76         fi
77         i2="${i#./usr/lib/debug/}"
78         if [ "$i" = "$i2" ];then
79           echo >&2 "No ./usr/lib/debug/ prefix: $i"
80         fi
81         i="/$i2"
82         i2="$(echo "$i"|sed 's/-[^-]*-[^-]*$//')"
83         if [ "$i2" = "$i" ];then
84           echo >&2" No VR suffix: $i"
85           exit 1
86         fi
87         i="$i2"
88         echo "${i%.debug} $dwzcommonname $dwz $dt"|sed 's#^\./#/#' >>$t
89       done
90     popd >/dev/null
91   popd >/dev/null
92   rm -rf $srcrpm.rpms.d
93   mv $t $srcrpm.dtneeded
94 done