Subject: Re: Proposal: Support for pure runtime dependancies
To: Ty Sarna <tsarna@sarna.org>
From: Greg Troxel <gdt@ir.bbn.com>
List: tech-pkg
Date: 12/22/2003 08:46:18
I'm sympathetic to this notion, and a have a few observations:
1) There are two axes: one is how the program is used. In addition to
normal dynamic linking, there is static linking (which arguably
shouldn't cause RUN_DEPENDS at all). You mentioned netpbm as an
example; this is the case of running other programs. There is also
dynamic loading at runtime (either a plugin sort of thing, or how
guile modules such as guile-gtk load the underlying libs).
With all of these cases (except static linking), there is an
interface definition (even if not really defined properly), and it
can change. I agree that command-line interfaces are less likely
to change, especially for very mature programs.
But, the key issue is whether the author understands how others
depend on it and how careful they are to avoid "bumping the major
number", a concept that makes sense for command-line interfaces
too.
2) The underlying problem common to all this is really the notion
that "make replace/pkg_add -u" is dangerous. This is often true -
I have replaced libs that bumped major numbers of libraries and
broken things. With a way to record the dependencies on not just a
package but the library versions (perhaps all in a pkg if any are
used), and coupling that into declaring "make replace/pkg_add -u"
reasonably safe if the shlib major version requirements are still
met, I'd feel a lot more comfortable doing make replace. (Really,
I just do it and rebuild something if it loses. I just did about
20-30 packages this way, and the only breakeage was gabber because
gnome-- had a shlib version bump.)
We could do the same for program-running dependencies, with the
pkgsrc maintainer assigning a "invocation API major version
number", and bumping that if the calling conventions change
incompatibly.
Such convention changes could be detected by e.g. autoconf, so I
don't agree that in the general case programs can be safely
replaced. I do agree that in practice it is safe enough that I'm
willing to do it and live with the consequences, because it is
almost always safer than the risks of trouble due to a failed build
with make update.
--
Greg Troxel <gdt@ir.bbn.com>