NAME¶
dh_sameversiondep - generate versioned dependency based on the versioned
dependencies of the reference package.
SYNOPSIS¶
dh_sameversiondep [
debhelper options]
DESCRIPTION¶
dh_sameversiondep is a helper tool which is able to generate a dependency
that is versioned the same way as a dependency (coming from the same source)
of another reference package.
dh_sameversiondep scans debian/control
for the specially formatted substvar (see "sameVersionDep substvar
SPECIFICATION" section below), determines its value and writes it to
debian/package.substvars file.
The most common use case for
dh_sameversiondep tool is to keep your
liba-dev package dependency on the external
libb-dev package as
tight as your
liba package depends on the respective external
libb package (see "EXAMPLE" section for more information
about this use case).
dh_sameversiondep works as follows:
- •
- Searches for the sameVersionDep substvar in the
Depends, Recommends, Suggests, Enhances and Pre-Depends fields of the
requested packages. When one is found, it is parsed and the dependency
package name, reference package name and dependency type
(either Depends or Recommends etc.) are determined.
- •
- All dependencies of the requested type are collected
for the dependency package based on the dpkg-query
--status output. If a multi-arch aware dpkg is detected, this query is
architecture-qualified as needed.
- •
- All dependencies of the requested type are collected
for the reference package either from debian/control
(substvars are expanded) or from dpkg-query --status output if the
package was not found in debian/control.
- •
- Both collections are intersected leaving only common
packages in both collections.
- •
- Common package list is filtered by leaving only those which
come from the same source as dependency package.
- •
- Whatever packages are left (most likely only one), their
names are replaced with dependency package name preserving all
versioning information. This result is written to
debian/package.substvars file as a value of the
sameVersionDep substvar being processed.
dh_sameversiondep is very strict about errors. If either
dependency package or the
reference package cannot be
found or the resulting dependency set is empty, it will fail with an error.
dh_sameversiondep MUST be run before dh_gencontrol. However, it is
recommended to run
dh_sameversiondep after dh_shlibdeps.
sameVersionDep substvar SPECIFICATION¶
sameVersionDep substvar can appear in either Depends, Recommends,
Suggests, Enhances or Pre-Depends field of any binary package. The field,
which the substvar appears in, becomes the default
dependency type for
that substvar.
sameVersionDep should be formatted as follows
(everything is case sensitive):
${
sameVersionDep:
dependency[[:
reference]-
dependency type]}
- dependency (mandatory)
- The name of the package which you want to add as a
dependency.
- reference (optional)
- The name of the package which dependencies are to be
intersected with the dependencies of the dependency package.
Defaults to the first package in debian/control if ommited.
- dependency type (optional)
- Can be either Depends, Recommends, Suggests, Enhances or
Pre-Depends. Defaults to the name of the field which the substvar was
found in. Specifies which type of dependencies to consider when analyzing
dependency package and reference package.
EXAMPLE¶
Assume we have the following in
debian/control:
Package: liba
Depends: libc (>= 0.1), depa, depb, depc
Package: libb
Depends: libd (>= 0.2), depd, depe, depf
Package: libab-dev
Depends: ${sameVersionDep:libc-dev}, ${sameVersionDep:libd-dev:libb}
Assumming that libc and libc-dev (both from the same source), as well as libd
and libd-dev (both from the same source) are installed, the value of
"sameVersionDep:libc-dev" will be
libc-dev (>= 0.1) and
the value of "sameVersionDep:libd-dev:libb" will be
libd-dev
(>= 0.2).
"sameVersionDep:libc-dev" could also be written as
"sameVersionDep:libc-dev:liba-Depends" and
"sameVersionDep:libd-dev:libb" as
"sameVersionDep:libd-dev:libb-Depends" but it is not necessary
because defaults are sufficient.
SEE ALSO¶
debhelper(7)
AUTHOR¶
Modestas Vainius <modax@debian.org>