#! /bin/bash set -e # build/znc-1.8.1-2.fc33.src.rpm.rpms [ $# -eq 1 ] which readelf >/dev/null srcrpm=$1 test -e $srcrpm.rpms test ! -e $srcrpm.rpmsizes test ! -e $srcrpm.rpms.d mkdir $srcrpm.rpms.d pushd $srcrpm.rpms.d >/dev/null rpmsbase=../../`basename $srcrpm` dwzrpms=$rpmsbase.rpms dtrpms=$rpmsbase.dt.rpm.rpms mkdir empty cd empty if [ -z "$(find $dwzrpms $dtrpms -maxdepth 1 -type f)" ];then popd >/dev/null rm -rf $srcrpm.rpms.d echo "0 0" >$srcrpm.rpmsizes exit 0 fi cd .. function extract { for i in $1/*-debuginfo*.rpm;do test ! -e $i.tgz rpm2archive $i test -e $i.tgz tar xzf $i.tgz rm -f $i.tgz done } mkdir dwz;(cd dwz;extract $dwzrpms) mkdir dt;(cd dt;extract $dtrpms) dwzcommon="$(find dwz/usr/lib/debug/.dwz/ -type f -printf "%s" 2>/dev/null || :)" if [ -z "$dwzcommon" ];then dwzcommon=0 fi dwztot=0 dttot=0 pushd dwz >/dev/null for i in `find -type f -name "*.debug*"`;do dwz=$(find $i -maxdepth 0 -printf "%s") dt=$(find ../dt/$i -maxdepth 0 -printf "%s") if readelf -WS $i 2>/dev/null|fgrep -q .gnu_debugaltlink;then if [ $dwzcommon -eq 0 ];then echo >&2 Excessive .gnu_debugaltlink: $i exit 1 fi dwz=$[$dwz+$dwzcommon] fi dwztot=$[$dwztot+$dwz] dttot=$[$dttot+$dt] done popd >/dev/null popd >/dev/null rm -rf $srcrpm.rpms.d echo "$dwztot $dttot" >$srcrpm.rpmsizes