Package: dpkg-dev
Version: 1.21.15
Severity: normal

dpkg-gencontrol should also simplify OR(|)-ed lists of alternative
Depends (and friends) by eliminating duplicates.

E.g. after applying ${substvars} and [arch1 arch2] limitations currently
a result could be
  Depends: foo | bar | foo | baz
which should be simplified by eliminating the second 'foo'.
If 'foo' contains version constraints, only entries with identical
version constraints should be considered for elimination.

Defining superseding rules for differing versioned constraints might not
be trivial ...
  foo (>> 2) | foo (>> 1)   supersedes
  foo (>> 1) | foo (>> 2)   does not supersede


Practical examples:
1) nvidia-cuda-toolkit has
  Depends: gcc-${cuda-default-gcc-version} | gcc-11 | gcc-10 | ...
where cuda-default-gcc-version is currently one of {10, 11} and set once
in d/rules.defs (and used in several places)
2) libcuda1/libnvidia-tesla-cuda1 in experimental will soon have
  Recommends: ${nvidia}-kernel-dkms (= ${binary:Version}) | 
${nvidia}-kernel-${version} | ${nvidia}-open-kernel-${version} | 
nvidia-open-kernel-${version}
where ${nvidia} either substitutes 'nvidia' or 'nvidia-tesla' resulting
in a duplicate nvidia-open-kernel-${version} for libcuda1.


Andreas

Reply via email to