dh_sameversiondep - generate versioned dependency based on the versioned dependencies of the reference
Contents
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 dependencypackage
name, referencepackage name and dependencytype (either Depends or Recommends etc.) are determined.
• All dependencies of the requested type are collected for the dependencypackage 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 referencepackage 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 dependencypackage.
• Whatever packages are left (most likely only one), their names are replaced with dependencypackage
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 dependencypackage or the referencepackage
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.
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}
Assuming 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.
Name
dh_sameversiondep - generate versioned dependency based on the versioned dependencies of the reference
package.
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 dependencytype for
that substvar. sameVersionDep should be formatted as follows (everything is case sensitive):
${sameVersionDep:dependency[[:reference]-dependencytype]}
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 omitted.
dependencytype (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.
See Also
debhelper(7)
Synopsis
dh_sameversiondep [debhelperoptions]
