#! /bin/bash set -e # build/znc-1.8.1-2.fc33.src.rpm.rpms which readelf >/dev/null for rpms in "$@";do srcrpm="${rpms%.rpms}" if [ "$rpms" = "$srcrpm" ];then echo >&2 "$rpms is not *.rpms" exit 1 fi if [ "$srcrpm" != "${srcrpm%.dt5.rpm}" ];then # The non-.dt5.rpm run will handle both. continue fi if [ "$srcrpm" != "${srcrpm%.dt.rpm}" ];then # Ignore. continue fi if [ ! -e $srcrpm.rpms ];then echo >&2 "! $srcrpm.rpms" continue fi if [ ! -e $srcrpm.dt5.rpm.rpms ];then echo >&2 "! $srcrpm.dt5.rpm.rpms" continue fi if [ -e $srcrpm.dtneeded ];then continue fi if [ -e $srcrpm.rpms.d ];then echo >&2 "! $srcrpm.rpms.d" continue fi t=/tmp/dtneededsizerpms.$$ rm -f $t mkdir $srcrpm.rpms.d pushd $srcrpm.rpms.d >/dev/null rpmsbase=../../`basename $srcrpm` dwzrpms=$rpmsbase.rpms dtrpms=$rpmsbase.dt5.rpm.rpms mkdir empty cd empty if [ -z "$(find $dwzrpms $dtrpms -maxdepth 1 -type f)" ];then popd >/dev/null rm -rf $srcrpm.rpms.d continue 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) dwzcommonname="$(find dwz/usr/lib/debug/.dwz/ -type f 2>/dev/null || :)" if [ -z "$dwzcommonname" ];then dwzcommonname="nodwzcommon" dwzcommon=0 else dwzcommon="$(find "$dwzcommonname" -maxdepth 0 -printf "%s")" dwzcommonname="/${dwzcommonname#dwz/}" dwzcommonname2="$(echo "$dwzcommonname"|sed 's/-[^-]*-[^-]*$//')" if [ "$dwzcommonname2" = "$dwzcommonname" ];then echo >&2 "No VR dwzcommon suffix: $dwzcommonname" exit 1 fi dwzcommonname="$dwzcommonname2" echo >>$t "$dwzcommonname isdwzcommon $dwzcommon NA" fi 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 fi i="${i#.}" i2="${i#/usr/lib/debug/}" if [ "$i" = "$i2" ];then echo >&2 "No /usr/lib/debug/ prefix: $i" i="$i2" else i="/$i2" fi i2="$(echo "$i"|sed 's/-[^-]*-[^-]*$//')" if [ "$i2" = "$i" ];then echo >&2 "No VR suffix: $i" fi i="$i2" echo "${i%.debug} $dwzcommonname $dwz $dt"|sed 's#^\./#/#' >>$t done popd >/dev/null popd >/dev/null rm -rf $srcrpm.rpms.d mv $t $srcrpm.dtneeded done