---
name: "dh_sameversiondep"
section: "1"
platform: "linux"
package: "pkg-kde-tools"
version: "0.18.12"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dh_sameversiondep"
---

# dh\_sameversiondep(1)

generate versioned dependency based on the versioned dependencies of the reference package.

## 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 omitted.

- *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}
```

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.

## SEE ALSO

[**debhelper**(7)](/debhelper/7.md)

## AUTHOR

Modestas Vainius \<modax@debian.org\>
