From b0b4a02a67acbfc35ab0fca2219c6d4b87a2b286 Mon Sep 17 00:00:00 2001 From: "Tom G. Christensen" Date: Sat, 8 Oct 2005 15:36:20 +0000 Subject: [PATCH] fetch_depends extended to make sure that internal dependencies are not accidentally picked from an already installed revision of the same software. Only list a dependency once in the relnotes. Irix 6.2 ldd is too stupid to be used to extract dependencies since it will just abort if one of the libraries are missing. We use Ariel Faigons perl version of ldd originally written for Irix 5.3 (which lacks ldd) instead. Also we need to use GNU xargs which supports -r (--no-run-if-empty) to avoid running showfiles on empty input since otherwise it will list all installed packages. Exclude patchSG* packages from depends --- buildpkg.packaging.irix | 55 +++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/buildpkg.packaging.irix b/buildpkg.packaging.irix index 6fef345..f47f8b4 100644 --- a/buildpkg.packaging.irix +++ b/buildpkg.packaging.irix @@ -399,21 +399,38 @@ fetch_subsysdesc() # fetch_depends() { + local reqidx=0 + local havedep=0 [ -r ${depends} ] && $CAT ${depends} > ${depends}_all [ -r ${depends}_auto ] && $CAT ${depends}_auto >> ${depends}_all if [ -r ${depends}_all ]; then - reqidx=0 while read ss reqpkg reqvers do - reqs[$reqidx]=$ss + havedep=0 if [ "$reqvers" == "auto" ]; then # auto create depend on $reqpkg (assumed internal) nver=$(fix_ver "$version-$pkgver") req="$pkgname.$reqpkg $nver $nver" + havedep=1 else - req="$reqpkg $reqvers" + # When rebuilding a package we want to avoid the autodeps + # from adding deps on the already installed parts. + # Internal deps must be handled in depends with the auto keyword + # or chaos will ensue. + # We will try to check if the package name in the autodep matches the + # package we're building + if [ ! "${reqpkg%%.*}" == "$pkgname" ]; then + req="$reqpkg $reqvers" + havedep=1 + else + echo "skipping depend: $ss $reqpkg $reqvers" + fi + fi + # Only increment and update arrays if we actually add the dep + if [ $havedep -gt 0 ]; then + reqs[$reqidx]=$ss + reqp[$reqidx]=$req + let "reqidx = $reqidx + 1" fi - reqp[$reqidx]=$req - let "reqidx = $reqidx + 1" done < ${depends}_all fi } @@ -880,7 +897,7 @@ auto_rel() local extracted_env="${temp_extracted_env%\\*}" # FIXME: expensive use of perl if [ -r ${depends}_all ]; then - local temp_deps="$($CAT ${depends}_all | $GREP $pkgprefix | $SED -e "s/.*${pkgprefix}//" | $CUT -d. -f1 | $PERL -i -pe 's/\n/\\\n/')" + local temp_deps="$($CAT ${depends}_all | $GREP $pkgprefix | $SED -e "s/.*${pkgprefix}//" | $CUT -d. -f1 | $PERL -i -pe 's/\n/\\\n/' | $SORT -u)" else local temp_deps="" fi @@ -933,27 +950,33 @@ extract_deps() if [ -n "$exelist" ]; then for f in $exelist; do [ -r $f -a -x $f ] || continue - $LDD $f | $GREP \= | $AWK -F' ' '{ print $3 }' | $CUT -d\ -f2 - done | $SORT -u | $XARGS $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u + # Generic Irix ldd + # $LDD $f | $GREP \= | $AWK -F' ' '{ print $3 }' | $CUT -d\ -f2 + # Ariel Faigons perl5 ldd + $LDD $f | $GREP \= | $GREP -v 'not found' | $SED -e 's/.*=> //g' + done | $SORT -u | $XARGS -r $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u fi # Compute dependencies for dynamic libraries if [ -n "$liblist" ]; then for f in $liblist; do - [ -r $f -a -x $f ] || continue - $LDD $f | $GREP \= | $AWK -F' ' '{ print $3 }' | $CUT -d\ -f2 - done | $SORT -u | $XARGS $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u + [ -r $f ] || continue + # Generic Irix ldd + #$LDD $f | $GREP \= | $AWK -F' ' '{ print $3 }' | $CUT -d\ -f2 + # Ariel Faigon's perl5 ldd + $LDD $f | $GREP \= | $GREP -v 'not found' | $SED -e 's/.*=> //g' + done | $SORT -u | $XARGS -r $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u fi # Compute dependencies for scripts if [ -n "$scriptlist" ]; then for f in $scriptlist; do [ -r $f -a -x $f ] || continue - interp=$HEAD -n 1 $f | $CUT -d\! -f2- - if [ -L $interp ]; then - echo $($FILE -h $interp | $SED -e 's/.* to //') + interp="$($HEAD -n 1 $f | $CUT -d\! -f2-)" + if [ -L "$interp" ]; then + echo $($FILE -h "$interp" | $SED -e 's/.* to //') else echo $interp fi - done | $SORT -u | $XARGS $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u + done | $SORT -u | $XARGS -r $SHOWFILES -- | $AWK '{ print $4 }' | $SORT -u fi } @@ -972,7 +995,7 @@ auto_deps() subsystems="$($AWK '{ print $7 }' < $idbfile | $SORT -u | $GREP sw)" for i in $subsystems do - deps="$(extract_deps $i)" + deps="$(extract_deps $i | $GREP -v patchSG)" for j in $deps do echo "${i#*.} $j $($SHOWPRODS -n $j | $GREP $j | $AWK '{ print $3 }') maxint"