Subject: Re: buildlink.mk should maybe be installed with libraries?
To: NetBSD Packages Technical Discussion List <tech-pkg@NetBSD.ORG>
From: Greg A. Woods <woods@weird.com>
List: tech-pkg
Date: 11/23/2001 14:03:33
[[ this is a tech-pkg topic I think, even though it deals primarily only
with pkgsrc-current, so I've redirected replies there ]]
[ On Friday, November 23, 2001 at 16:13:52 (+0100), Olaf Seibert wrote: ]
> Subject: buildlink.mk should maybe be installed with libraries?
>
> I see a potential for version skew with the current buildlink.mk system.
>
> If you build a program P which depends on installed library L, then
> L/buildlink.mk is used.
>
> But this version of L/buildlink.mk is the version for the most recent
> version in pkgsrc. Program P may not require the most recent version but
> may be happy with an older version that was installed earlier.
This isn't just a potential problem -- it's very real. I've tripped
over it several times already myself!
> In this case, the L/buildlink.mk does not belong to the installed
> version of L. To make sure that this can never be a problem, we must
> install L/buildlink.mk with L, so that when linking with L the
> buildlink.mk from that time is used.
Yes, I believe this is the correct solution, but with one possible
caveat: I think The overloading of (BUILD_)DEPENDS with a default
BUILDLINK_DEPENDS.foo in the buillink.mk files needs to be removed.
Each package module should always explicitly list the dependencies it
uses. With the default (BUILD_)DEPENDS lines in the buildlink.mk files
it's very difficult, and perhaps even impossible, to know when a custom
override is necessary. For example when 'P' does need a newer version
of 'L' it is necessary to add an override setting of BUILDLINK_DEPENDS.L
to the 'P' Makefile so that any out-of-date installed version of 'L' is
rejected as too old (and/or updated I guess if 'make update' was used).
However once that override has been added it can never be removed --
it's best to just always require it in the first place and to never
slide down the slippery slope of defaulting the dependencies.
There are other graver implications for the static-linking support I'm
working on for pkgsrc too....
> Alternatively, each buildlink.mk needs to be backward-compatible to
> *all* possibly previously installed versions.
I don't think that's pragmatic (or desirable)....
--
Greg A. Woods
+1 416 218-0098 VE3TCP <gwoods@acm.org> <woods@robohack.ca>
Planix, Inc. <woods@planix.com>; Secrets of the Weird <woods@weird.com>