# HG changeset patch # User Pascal Bellard # Date 1253687310 -7200 # Node ID 8b114a32b85fbc49fc76461fb46083fd814b5c2e # Parent 9fca80ea1eb6d4a2b2d1e77a0fd20b58398b01e1 tazbb: fix sort cook list diff -r 9fca80ea1eb6 -r 8b114a32b85f tazbb/stuff/tazbb --- a/tazbb/stuff/tazbb Wed Sep 23 05:48:11 2009 +0000 +++ b/tazbb/stuff/tazbb Wed Sep 23 08:28:30 2009 +0200 @@ -281,30 +281,43 @@ WANTED="" BUILD_DEPENDS="" . $BUILD_WOK/$pkg/receipt + MISSING="" for i in $WANTED $BUILD_DEPENDS ; do if [ ! -f $BUILD_WOK/$i/taz/*/receipt ]; then - echo -n " $i" + case " $MISSING " in + *\ $i\ *);; + *) echo -n " $i";; + esac + MISSING="$MISSING $i" fi done echo "" - done | awk '{ - if ($2 == "") print; - else { - depcnt[$1] = NF - 1; - unres = unres " " $1; - for (i = 2; i <= NF; i++) { - revdepcnt[$i]++; - revdep[$i] = revdep[$i] " " $1; - } + done | awk ' +function show(name) +{ + print name; + got[name]++; + if (revdepcnt[name] > 0) + for (i = split(revdep[name], pkg, " "); i > 0; i--) + if (--depcnt[pkg[i]] == 0) show(pkg[i]); +} + +{ + if ($2 == "") show($1); + else { + depcnt[$1] = NF - 1; + unres = unres " " $1; + for (i = 2; i <= NF; i++) { + if (got[$i] > 0) continue; + revdepcnt[$i]++; + revdep[$i] = revdep[$i] " " $1; } - if (revdepcnt[$1] > 0) - for (i = split(revdep[$1], pkg, " "); i > 0; i--) - if (--depcnt[pkg[i]] == 0) print pkg[i]; } - END { - for (i = split(unres, pkg, " "); i > 0; i--) - if (depcnt[pkg[i]] > 0) print pkg[i]; - } +} +END { + for (i = split(unres, pkg, " "); i > 0; i--) + if (depcnt[pkg[i]] > 0) print pkg[i]; +} ' }