Subject: Re: Marking files for update
To: Martin Husemann <martin@duskware.de>
From: Alistair Crooks <agc@pkgsrc.org>
List: tech-pkg
Date: 05/29/2001 08:59:07
On Sun, May 27, 2001 at 10:20:54AM +0200, Martin Husemann wrote:
> Hi!
>
> I wonder if it would be easy to implement & sensible to add a variant of
> the "show-downlevel" target that marks all pkgs it displays as "need to be
> updated" by creating a tag file in there?
>
> Then, whenever an "update" target checks dependencies for the installed
> version of this pkg, it would make the version comparision fail and descend
> into the marked pkg.
>
> This would be very useable to create a minimal-rebuild-update-all script,
> which then could be similar to this pseudo code:
>
> while true;
> do
> PKG=`make mark-show-downlevel | fgrep -v '===>' | awk '{ print $1}' | sed 1q`
> if [ x$PKG = x ]; then exit 0
> cd into $PKG's dir
> make update
> done
>
> At the moment this would result in multiple builds if somewhere in the
> dependency graph an installed pkg is found that is not up to date but enough
> to match the required dependency. The make update in question would proceed
> without updating that pkg and later the pkg will be seleceted in another
> iteration and be updated - by rebuilding all the things just rebuild again.
>
> An alternative would be an environment variable that makes any version check
> look into the -current version in the refered pkg and only succeed if installed
> version == -current version; which actually may be even simpler to implement.
>
>
> Martin
A couple of points:
"make show-downlevel" is a misnomer, really, quite useful but dumb,
about the best that we could do at the time - it merely flags the
packages where the installed version number is different to the one in
the package's Makefile. Note that packages which have a "-current" or
"-devel" package in addition to the standard package need to be
handled specially. It also only works with standard package
numbering, which is not used universally in pkgsrc. I have something
that does this properly, but I have not had the time to deploy it
properly yet. Once I do, then I think your suggestion would be a very
useful addition, thanks.
And from the nit department:
s/awk { print $1}' | sed 1q/awk '{ print $1; exit }'/
Regards,
Al