Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Dec 2010 08:41:49 -0600
From:      Ade Lovett <ade@FreeBSD.org>
To:        M K <ibdmbk@yahoo.com>
Cc:        freebsd-ports Ports <freebsd-ports@freebsd.org>
Subject:   Re: Port updating instructions and portmaster -a
Message-ID:  <0C9CF395-EFA7-464A-8EC5-9B2EF549AACD@FreeBSD.org>
In-Reply-To: <137508.95194.qm@web45304.mail.sp1.yahoo.com>
References:  <137508.95194.qm@web45304.mail.sp1.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Dec 01, 2010, at 00:53 , M K wrote:

> [major snippage to get to the point]
>=20
> Given the time, the users could pick and choose which ports to update.

Herein lies the fundamental problem with upgrading ports, particularly =
those which affect a large number of other ports, of which I, amongst =
others, have a certain degree of understanding.

When it comes to testing such updates, they are done in a "clean room" =
environment, whether it is a local tinderbox, or a full -exp package =
build run.  Ports, and those that depend upon them, are built in natural =
order (ie: if A depends on B which depends on C, then the build order is =
C->B->A)

The ports tree contains bugs, naturally.  Implicit dependencies where =
explicit ones are needed are the most obvious.  "Oh, cool, configure =
script found <libfoo> so I shall link against it even though you didn't =
ask" is a little less common, but prevalent enough.  And so the list =
continues.

As such, the deeper down inside the chain a port is that has been =
updated, so the number of combinations and edge cases increases =
exponentially to the point where given that cpu time (compiling) is =
vastly cheaper than human time (answering "A didn't rebuild because I =
had Q, W, but not X"), it is simply easier to pull out the compilation =
sledgehammer and say "rebuild everything depending on updated port =
<bar>" or, in extreme cases, "rebuild _everything_" (I don't think this =
has happened yet, but most gettext upgrades, fortunately relatively few =
and far between, are pretty close contenders for this).

One should also note that whilst the capability exists, via =
${LOCALBASE}/lib/compat/pkg, for old shared libraries to be kept, if you =
have ports Q and R, both depending on port V, and via the =
pick-and-choose method you choose to update V and one of Q or R, then =
Really Bad Things [tm] will start to happen.

In an isolated case of >one< end-user picking-and-choosing, then your =
approach would be viable with the caveats above.  Regretfully, we have =
many tens of thousands of end-users, with differing environments, and =
thus out of pure simplicity and saving of overall time, =
portmaster/portupgrade instructions occasionally come down via UPDATING =
in the shape of a really BIG hammer.

If someone[tm] could _provably_solve_ this upgrading problem, I'll make =
you famous (and take a 2% cut, I'm not greedy)

-aDe




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0C9CF395-EFA7-464A-8EC5-9B2EF549AACD>