16. Binary Package Dependencies

Proposal:

Add a binary dependency keyword to be optionally resolved by the shell. eg.

  binary_requires:
    - linux-debian:
      libgif4-dev: 4.1.6
    - linux-ubuntu:
      libgif4-dev: 4.1.6
    - linux-redhat:
      giflib-devel: 4.1.6
    - freebsd-ports:
      giflib: 4.1.6
    - freebsd-pkg:
      giflib4: 4.1.6

The aim is for use by Alien:: namespace modules to declare a
dependency that would allow them to detect their desired non-Perl
dependency without installing a copy of the code involved that isn't
tracked by the system package manager (and hence isn't subject to
security updates.

I don't expect immediate implementation by CPAN/CPANPLUS, but it
provides a structure where extensions to either can find the
information needed to install those packages if the user desires.

If an Alien::* module's configuration (Makefile.PL/Build.PL) were
started without the packages installed, then either the user chose not
to install the packages, or no package was found for the given
platform.  The Alien::* could then install from source (or fail.)

A Makefile.PL or Build.PL doesn't necessarily have the information
needed to know whether to install a package, while CPAN/CPANPLUS may,
especially given the possibility of extra configuration (o conf
binary_requires on|off).

One weakness with the above is the lack of alternatives, a few years ago we
might have been satified by either libgif or libungif (Tonyc)

Comments:

* The biggest challenge with this proposal is the need for a
  target-agnostic specifier. If a truly portable method exists for defining
  "libgif version 4.1.6 or better" then you don't need to say which
  packages are needed, as the resolution of a package from the arbitrary
  identifier can be solved independently. The need for massive amounts of
  consulting with other communities to achieve some useful consensus on
  identifiers is the biggest challenge for this proposal. --Adam K

Reply via email to