Subject: Re: make update == make broken
To: Jeremy C. Reed <reed@reedmedia.net>
From: Sean Davis <dive@endersgame.net>
List: tech-pkg
Date: 06/25/2005 01:03:08
On Fri, Jun 24, 2005 at 06:23:15PM -0700, Jeremy C. Reed wrote:
> On Fri, 24 Jun 2005, Geert Hendrickx wrote:
> 
> > And the FreeBSD way, portupgrade, is theoretically broken.  It replaces
> > dependencies without rebuilding some/all of the dependant packages.  In
> > practice, this may work out 90% of the time.  And FreeBSD has manpower to
> > fix the other 10%.  How do they do this?  If e.g. libpng is updated to a
> > version _known to cause binary incompatibilities_ (needs manpower to check
> > this!!), they bump the version of all packages depending on it.  So a
> > portupgrade -r will upgrade them too.  You (with your reasoning) wouldn't
> > mind: you say, oh, KDE has a bumped package version, ok to upgrade it too,
> > whereas the KDE package itself really didn't change.  We (pkgsrc people),
> > don't bump the version of any depending packages, we just assume you to
> > rebuild them anyway, to play safe.
> 
> In fact, pkgsrc does bump the version if needed.
> 
> If the dependency has an ABI change and we rebuild the package depending
> on it, then it is a new package with different functionality (or features)
> in one way or another. We use PKGREVISION to signify that it is a new
> package.
> 
> We attempt (I hope) to not blindly bump every package depending on
> something though.
> 
> As for portupgrade, I have used it many times. Sometimes it works and
> sometimes it doesn't.

That's better than make update. Sometimes it works, usually it doesn't. Or
builds two or three packages before dying and leaving dozens that were
previously installed NOT installed. However, I seem to be one of the only
people who thinks there is anything wrong with that... the attitude I'm
seeing on the list seems to indicate that the consensus is that it's better
to nuke all my packages and leave me with nothing than to only nuke/reinstall
packages that are buildable.

make update is fine on, say, tcsh. or screen. Small packages. Anything with
dependencies that other packages also depend on and it's a disaster waiting
to happen (as evidenced by trying to update mplayer and having KDE and
firefox get nuked, and not reinstalled, because KDE didn't feel like
building that day).

At this point, I'd be satisfied if make update did something like:

*** Warning: this operation will cause the following packages to be
    uninstalled, and they might not rebuild, causing a loss of functionality
    until they are buildable: foo, bar, baz
*** Continue? [y/n] (n):

-Sean