07. Enhance granularity of prerequisites

Proposal:

Add "test_requires" distinct from "build_requires".  (Adam Kennedy)

This proposal is driven by the needs of the downstream distribution
packagers. At Oslo, they requested this separation to allow them to more
accurately package modules. I forget, however, the EXACT mechanism that
this change was driving downstream, and this MUST be clarified before we
add it. Adding a new dependency type simply because it looks like a good
idea isn't sufficient, we need to be absolutely sure that it does what the
downstream wants before we add it.

Comments:

* Should we go all the way towards making prerequisites phase-specific and
  have "configure_requires", "build_requires", "test_requires", and
  "runtime_requires" (i.e. deprecate the old "requires" entry) (Dagolden) I
  see no obvious benefit to changing requires -> runtime, just more change,
  breakages and work ([[User:AdamKennedy|AdamKennedy]])

* Prerequisites are combined in usage during toolchain phases.  E.g.
  "requires" are expected to be available after the configure stage before
  the build stage.  This needs to be clearer in the spec and may have
  implications for CPAN/CPANPLUS. (Dagolden)

* Do distribution packages really need test_requires? I cannot think of a
  use case. (SlavenRezic)

* They generally don't. That's the reason to have it: test_requires would
  be a list of modules the CPAN version needs for testing, but downstream
  could filter out. (JosBoumans)

* Source Based distros ''can'' use it. The users can elect whether or not
  to perform test phase. Most chose not to, but for those who want
  assurance, its handy.(kentnl)

* Speaking from a Debian perspective, whether it is required for testing or
  for building, we include it as a Build dependency. We try to run as many
  tests as possible (including author tests, though we prefer
  AUTOMATED_TESTING to RELEASE_TESTING now). We would really consider
  test_requires and build_requires equivalent. (jawnsy)

Reply via email to