logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

dh_sameversiondep - generate versioned dependency based on the versioned dependencies of the reference

Author

       Modestas Vainius <modax@debian.org>

perl v5.40.1                                       2025-03-08                               DH_SAMEVERSIONDEP(1)

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]

See Also