Subject: Re: make show-needs-update
To: Andrew Brown <atatat@atatdot.net>
From: Greg Troxel <gdt@ir.bbn.com>
List: tech-pkg
Date: 06/03/2003 07:24:40
I like this, and I think it's quite useful.  I often do 'make package'
and have it lose due to needing to update some way down package to
nb(n+1).

I like that the directory is printed first.  (I would like pkgchk to
print the directory.)  Someday, I'd like to write code that does 'make
replace' in various directories, and keeps track of depending packages
on such 'unsafe upgrades'.  make show-needs-update provides an easy
way to find out which packages need such treatment.

So, the output format should be designed for awk/perl/etc. reading as
well as humans.  The use of '>' is a bit awkward (since it needs
escaping in sh), as is '(none)', and 'needs update to' vs 'needs
install' are multiple tokens.  But, the way it is is nice for humans
to read, and that's arguably more important.

I could think of

textproc/docbook docbook-4.2nb2 NEEDS_UPDATE_TO docbook-4.2nb3
devel/guile-gtk NOT_INSTALLED NEEDS_INSTALL guile-gtk-0.24

which may or may not be easier for people, and is trivial to awk.

It might be nice to show the version that would be installed for
things that are 'needs install'.  If you use 'needs install of' then
it has the same number of words as 'needs update to'.

It might also be nice to show (optionally) dependent packages that are
up to date in addition.

It would be really nice to show what packages are sufficiently
downlevel to cause the build to break.  For example, p5-MIME-Digest is
at 2.20 instead of 2.22 but almost certainly gnucash would build.  But
some packages are below the level that is required, and that's a
different matter.

        Greg Troxel <gdt@ir.bbn.com>

For those that didn't install this, here is some sample output:

gdt 109 /usr/pkgsrc/finance/gnucash > make show-needs-update
textproc/docbook => docbook-4.2nb2 => needs update to docbook-4.2nb3
graphics/MesaLib => MesaLib-5.0nb1 => needs update to MesaLib-5.0.1
security/p5-Net-SSLeay => p5-Net-SSLeay-1.20 => needs update to p5-Net-SSLeay-1.21
textproc/jade => jade-1.2.1nb4 => needs update to jade-1.2.1nb6
graphics/glut => glut-5.0 => needs update to glut-5.0.1
textproc/libxslt => libxslt-1.0.29nb1 => needs update to libxslt-1.0.30
converters/p5-MIME-Base64 => p5-MIME-Base64-2.12 => needs update to p5-MIME-Base64-2.18
security/p5-IO-Socket-SSL => p5-IO-Socket-SSL-0.91 => needs update to p5-IO-Socket-SSL-0.92
www/p5-URI => p5-URI-1.22 => needs update to p5-URI-1.23
net/p5-Net => p5-Net-1.12 => needs update to p5-Net-1.13
security/p5-Digest-MD5 => p5-Digest-MD5-2.20 => needs update to p5-Digest-MD5-2.22
www/p5-HTML-Parser => p5-HTML-Parser-3.26 => needs update to p5-HTML-Parser-3.27
x11/xscreensaver-gnome => xscreensaver-gnome-4.09nb1 => needs update to xscreensaver-gnome-4.10
devel/guile-gtk => (none) => needs install
databases/gnome-mime-data => gnome-mime-data-2.0.1nb2 => needs update to gnome-mime-data-2.2.0nb1
print/ghostscript-gnu => (none) => needs install
www/p5-libwww => p5-libwww-5.64 => needs update to p5-libwww-5.69nb1
www/libwww => libwww-5.3.2nb3 => needs update to libwww-5.4.0
devel/libtool-base => libtool-base-1.4.20010614nb13 => needs update to libtool-base-1.4.20010614nb14
devel/g-wrap => (none) => needs install
textproc/libxml => libxml-1.8.17 => needs update to libxml-1.8.17nb1
graphics/netpbm => netpbm-10.11.6nb1 => needs update to netpbm-10.11.8
audio/esound => esound-0.2.29 => needs update to esound-0.2.29nb1
converters/libiconv => libiconv-1.8 => needs update to libiconv-1.8nb1
finance/gnucash => (none) => needs install