Subject: Re: make update == make broken
To: Sean Davis <dive-nb@endersgame.net>
From: Greg A. Woods <woods@weird.com>
List: tech-pkg
Date: 06/30/2005 15:20:03
[ On Wednesday, June 22, 2005 at 21:01:32 (-0400), Sean Davis wrote: ]
> Subject: make update == make broken
>
> I don't hear these kinds of complaints from FreeBSD users regarding
> portupgrade.

I do.  Maybe they don't complain online, but they sure as heck do in
person.

Fundamentally though what you and they are both complaining about is
that you don't like paying the cost of properly rebuilding all
dependencies, and what that really boils down to is that either software
has become far too complex and inter-dependent for you to independently
maintain it, or else these systems (pkgsrc, ports, etc.) are all
creating too many interdependencies.

As you know it really is mostly due to DLL hell.  Welcome to the world
of modern applications software.  All your base are belong to us.

I avoid the vast majority of unnecessary interdependencies by static
linking everything that can possibly be static-linked, and also by
avoiding many of the big ugly interdependent messes in the first place.
Not everyone wants to do such things though.  E.g. you seem to want KDE
badly enough that you're quite upset when you're forced to delete it
because it's inter-dependent on something else you need to upgrade, and
then you're left without it when it fails to build again.

Unfortunately even static linking doesn't eliminate some of the biggest
pains to rebuild -- it seems the bigger a package, the more likely it is
to require dynamic loading, usually for some horribly silly reason.

Sadly given the state of libtool (and the fact we're all forced to use
libtool) it's almost impossible to static-link some libraries into some
dynamic-linked applications but not into others and vice versa (i.e. if
you build .so's, libtool will use them despite your best attempts to
prevent it).  This means even more, unncessary, interdpendencies
(repeated builds and total avoidance of pre-built libraries from other
packages, which is basically half-way to what the chroot'ed builds do
already though).

Ultimately I think the solution for these kinds of complaints is to stop
building your own software from source on production machines.

That means either only using binary packages someone else has
built.....

Which is what some of the GNU/Linux crowd have done, and you really
don't hear so many of these kinds of complaints from the majority of
those that have -- they just re-install everything that needs upgrading
all at once (which is _much_ faster and nearly infinitely more reliable
than de-installing it all, rebuilding it all and then installing it all
again);

Or....

Use a separate machine to do the builds on.

It really is best to always and only use binary packages on production
machines.  That still leaves you with the decision of whether or not
you're going to independently dedicate the resources needed to build
your own binaries, or whether you're just going to buy the CDs and thus
pay someone else to do it for you.

-- 
						Greg A. Woods

H:+1 416 218-0098  W:+1 416 489-5852 x122  VE3TCP  RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>          Secrets of the Weird <woods@weird.com>