Man Linux: Main Page and Category List

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:

       o   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.

       o   All dependencies of the requested type are collected for the
           dependency package based on the dpkg-query --status output.

       o   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.

       o   Both collections are intersected leaving only common packages in
           both collections.

       o   Common package list is filtered by leaving only those which come
           from the same source as dependency package.

       o   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>