Subject: Thoughts on dependency information
To: None <tech-pkg@netbsd.org>
From: Masao Uebayashi <uebayasi@soum.co.jp>
List: tech-pkg
Date: 03/05/2002 15:45:30
Now dependency information of an installed package is very limited and
insufficient to describe the real dependency of the package.
IMO, there are three relations of packages in the current Pkgsrc
framework.
1) What package/version is required to use a package. This
information is used while running make(1). The version
information may have range. For example, gdk-pixbuf-gnome
(graphics/gdk-pixbuf-gnome) has a dependency to gdk-pixbuf
(graphics/gdk-pixbuf). The line looks
BUILDLINK_DEPENDS.gdk-pixbuf= gdk-pixbuf>=0.10.1
Meaning the requirement to gdk-pixbuf has version range >=0.10.1.
2) What package/version a binary package is built with. A package is
built with a certain version of another. After build, the version
requirement has no range. For example, if gdk-pixbuf-gnome is
built with gdk-pixbuf-0.10.2, the resulting binary package
`gdk-pixbuf-gnome-X.Y.Z.tgz' is built with gdk-pixbuf-0.10.2.
I think that information described in building procedures
(makefiles) is kind of ``type'' and each binary package is an
instance. If you have an introductory book on object oriented
methodology, you may be able to find some statements that a
relation of types (classes) is called an ``association'' and a
relation of instances a ``link''.
I'm not claiming I'm an expert of OO. The point is, the above two
are distinct.
3) What package a installed package requires. An installed package
may have some links to other installed ones. This is used for
administrative purpose. This is what +REQUIRED_BY holds.
I think current binary package format has poor information, it has
only 3). I guess adding 1) and 2) in binary packages is not so hard
(and not so big), alhough they have no real purpose now.
Regards,
Masao