runone: .filesize: +sanity check
[massrebuild.git] / debuginfosize
1 #! /bin/bash
2 set -e
3 # build/znc-1.8.1-2.fc33.src.rpm.rpms
4 [ $# -eq 1 ]
5 which readelf >/dev/null
6 srcrpm=$1
7 test -e $srcrpm.rpms
8 test ! -e $srcrpm.rpmsizes
9 test ! -e $srcrpm.rpms.d
10 mkdir $srcrpm.rpms.d
11 pushd $srcrpm.rpms.d >/dev/null
12   rpmsbase=../../`basename $srcrpm`
13   dwzrpms=$rpmsbase.rpms
14   dtrpms=$rpmsbase.dt.rpm.rpms
15   mkdir empty
16   cd empty
17     if [ -z "$(find $dwzrpms $dtrpms -maxdepth 1 -type f)" ];then
18       popd >/dev/null
19       rm -rf $srcrpm.rpms.d
20       echo "0 0" >$srcrpm.rpmsizes
21       exit 0
22     fi
23   cd ..
24   function extract
25   {
26     for i in $1/*-debuginfo*.rpm;do
27       test ! -e $i.tgz
28       rpm2archive $i
29       test -e $i.tgz
30       tar xzf $i.tgz
31       rm -f $i.tgz
32     done
33   }
34   mkdir dwz;(cd dwz;extract $dwzrpms)
35   mkdir  dt;(cd  dt;extract  $dtrpms)
36   dwzcommon="$(find dwz/usr/lib/debug/.dwz/ -type f -printf "%s" 2>/dev/null || :)"
37   if [ -z "$dwzcommon" ];then
38     dwzcommon=0
39   fi
40   dwztot=0
41   dttot=0
42   pushd dwz >/dev/null
43     for i in `find -type f -name "*.debug*"`;do
44       dwz=$(find $i      -maxdepth 0 -printf "%s")
45       dt=$(find ../dt/$i -maxdepth 0 -printf "%s")
46       if readelf -WS $i 2>/dev/null|fgrep -q .gnu_debugaltlink;then
47         if [ $dwzcommon -eq 0 ];then
48           echo >&2 Excessive .gnu_debugaltlink: $i
49           exit 1
50         fi
51         dwz=$[$dwz+$dwzcommon]
52       fi
53       dwztot=$[$dwztot+$dwz]
54       dttot=$[$dttot+$dt]
55     done
56   popd >/dev/null
57 popd >/dev/null
58 rm -rf $srcrpm.rpms.d
59 echo "$dwztot $dttot" >$srcrpm.rpmsizes