Subject: Re: CVS commit: pkgsrc/mk/buildlink3
To: Robert Elz <kre@munnari.OZ.AU>
From: Johnny C. Lam <jlam@NetBSD.org>
List: tech-pkg
Date: 01/25/2004 19:11:26
On Mon, Jan 26, 2004 at 01:43:27AM +0700, Robert Elz wrote:
>     Date:        Sun, 25 Jan 2004 16:46:21 +0000 (UTC)
>     From:        "Johnny C. Lam" <jlam@NetBSD.org>
>     Message-ID:  <20040125164621.3C8392DA1D@cvs.netbsd.org>
> 
>   | The new standard for modifying BUILDLINK_DEPENDS.<pkg> is to append to the
>   | value instead of overriding.  The reason is so that the most restrictive
>   | <pkg> dependency will always be a part of the dependency list.
> 
> I don't understand this.   How can a package possibly have more than
> one version of some other package that it depends upon?   That is, if
> A depends upon B, it might need B version x.y, or better, or between
> x.y and x.z or something (or just possibly might not care at all), but
> it cannot rationally require 2 different versions.

It doesn't require two separate versions.  If a package's DEPENDS
contains:

	zlib>=1.1.4nb1:../../devel/zlib
	zlib>=1.2.1:../../devel/zlib

then it simply states that any zlib that is used as a dependency for
the package must satisfy _both_ of the restrictions listed in DEPENDS.
This is merely some bookkeeping issue to make sure that we never
downgrade a dependency by explicitly setting a BUILDLINK_DEPENDS.<pkg>
line in some buildlink3.mk file somewhere.

[snip]
> The buildlinkN.mk files should have no dependency version in them at
> all - how can a package possibly know which version of itself some other
> package requires?   It cannot.   Sure, it might believe that a bug fixed
> in version N is so important that everyone needs that fixed version,
> but that's nonsense - the depending package may have known about the
> bug already, and either know itself to be immune (doesn't use the
> feature in question at all) or have implemented a work around (even to
> the extent of failing to work if the bug in the dependent package gets
> fixed).

No, we do not increase them whenever the package is updated.  The
dependency version in the buildlink*.mk files are only changed whenever
one of the following two criteria are satisfied:

    (1) a security fix is added to a library, or
    (2) the major number of a shared library has increased.

The dependency versions are again bookkeeping issues, this time to ensure
that binary packages with wildcard dependencies will work correctly.

	Cheers,

	-- Johnny Lam <jlam@NetBSD.org>