If you have not played with Expac yet, you should! It is a brilliant program. Here is a small example of it in action. Feel free to tease me for the overuse of pipes.
find /var/abs -name 'PKGBUILD' | wc -l 3976
grep -rc '|| return 1$' /var/abs | cut -d ':' -f 2 | awk '{s+=$1} END {print s}' 5929
find /var/abs -name 'PKGBUILD' | xargs -n 1 -I '{}' grep -l '|| return 1$' '{}' | cut -d '/' -f 5 | sort > return_one
wc -l return_one 1923 return_one
Half of the repo is littered with '|| return 1'. We've been assured it will be phased out as packages are updated. Sometimes this happens, sometimes not. Makepkg was fixed in 0.3.4, released on 2010-06-16. What packages have been updated since then?
expac -S -t '%F' '%b %n' $(pacman -Ssq) | sort > releases
awk '/2010-06-16/,EOF' < releases | cut -d ' ' -f 2 > updated
wc -l updated 3276 updated
This is really depressing. Out of 3973 packages, 3276 have been updated in the last six months. No matter how you draw the Venn diagram, there is a large set of packages in the middle that must both contain '|| return 1' and have been recently updated. So which packages are they?
comm -12 return_one updated > lazy_packages
wc -l lazy_packages 590 lazy_packages
Let's make a graph to show how bad it continues to be.
expac -S -t '%Y-%m' '%b' $(cat return_one) | sort | uniq -c | sed 's/^ *//' > return_one_releases http://kmkeen.com/tmp/return-one-releases.png
If packages were actually cleaned up when updated, the red line would be flat on zero. Instead, 50-100 packages with 'return 1' are released every month. (And yes, the oldest surviving package is almost three years old. Happy birthday perl-passwd-md5, if you make it another month.) And finally
expac -S "%p" $(cat lazy_packages) | sort | uniq
-Kyle http://kmkeen.com