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