---
name: "dh_gnustep"
section: "1"
platform: "linux"
package: "gnustep-make"
version: "2.9.3-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dh_gnustep"
---

# dh\_gnustep(1)

perform various actions for GNUstep packages

## NAME

dh\_gnustep - perform various actions for GNUstep packages

## SYNOPSIS

**dh\_gnustep** \[*debhelper options*\] \[**--app**\] \[**--appsupport**\] \[**--bundle**\] \[**--bundle-dir=***directory*\] \[**--bug-script**\] \[**--game**\] \[**--move-to=***package*\] \[**--no-cleanup**\] \[**--no-move**\]

## DESCRIPTION

**dh\_gnustep** is a program based on [**debhelper**(7)](/debhelper/7.md) that is responsible for doing GNUstep-specific modifications, such as moving files in the GNUstep hierarchy to Filesystem Hierarchy Standard (FHS)-compliant locations.  It also adds bug-script symlinks for GNUstep applications, removes some build system artifacts and adds additional dependendcies to packages that need it.

For brevity and because the GNUstep directories discussed are fairly long and cause readability issues when this manpage is being displayed on a typical terminal, the standard GNUstep variables are used as placeholders as follows:

**GNUSTEP\_SYSTEM\_LIBRARY**\
   */usr/lib/${DEB\_HOST\_MULTIARCH}/GNUstep*

**GNUSTEP\_SYSTEM\_HEADERS**\
   */usr/include/${DEB\_HOST\_MULTIARCH}/GNUstep*

**GNUSTEP\_SYSTEM\_APPS**\
   */usr/lib/${DEB\_HOST\_MULTIARCH}/GNUstep/Applications*

**GNUSTEP\_SYSTEM\_APPLICATION\_SUPPORT**\
   */usr/lib/${DEB\_HOST\_MULTIARCH}/GNUstep/ApplicationSupport*

**GNUSTEP\_SYSTEM\_BUNDLES**\
   */usr/lib/${DEB\_HOST\_MULTIARCH}/GNUstep/Bundles*

**dh\_gnustep** must be run after [**dh\_bugfiles**(1)](/dh_bugfiles/1.md) but before [**dh\_link**(1)](/dh_link/1.md).  Normally you would use an `"override_dh_link"` target but you should remember to invoke [**dh\_link**(1)](/dh_link/1.md) as the last command in the recipe.  This is mandatory so that the created links are made policy-compliant.  Using the `"execute_before_dh_link"` target avoids this extra step.  This program makes the following changes (all move operations can be cancelled with the **--no-move** option):

- arch-indep directories:

  Moves architecture-independent directories in **GNUSTEP\_SYSTEM\_LIBRARY** to */usr/share*.

- library resources:

  Moves library resources (**GNUSTEP\_SYSTEM\_LIBRARY/Libraries**) to */usr/share/GNUstep/Libraries*.

- frameworks:

  Moves framework headers to **GNUSTEP\_SYSTEM\_HEADERS/Frameworks** and framework resources to */usr/share/GNUstep/Frameworks*.

- applications:

  Moves application resource bundles to */usr/share/GNUstep*.  This is not done by default and requires specifying the **--app** option.

- application support:

  Moves application support (**GNUSTEP\_SYSTEM\_APPLICATION\_SUPPORT**) bundles' resources to */usr/share/GNUstep*.  This is not done by default and requires specifying the **--appsupport** option.

- bundles:

  Moves bundles' (by default at **GNUSTEP\_SYSTEM\_BUNDLES**) resources to */usr/share/GNUstep*.  This is not done by default and requires specifying the **--bundle** option.  The **--bundle-dir** option can be used for alternative non-standard directories.

- bug-script symlinks:

  By default, **dh\_gnustep** will install a bug-script symlink for any package with a name ending with `".app"`, pointing to */usr/share/bug/gnustep-back-common*, so that the system and user GNUstep backends are reported as package-specific information to the BTS when submitting bugs.  It will also add the appropriate dependency (via the *${misc:Depends}* substitution variable).

  Note that **dh\_gnustep** will not handle any other bug files and it expects [**dh\_bugfiles**(1)](/dh_bugfiles/1.md) to have completed its job in order to handle the case when the bug-script symlink must be installed as */usr/share/bug/package/script* (when there are *bug-control* or *bug-presubj* files).  If an existing bug script is detected, **dh\_gnustep** will emit a warning as a package can have only one bug-script file.  In such situations the only solution is to integrate the contents of */usr/share/bug/gnustep-back-common* into the existing script.

- build system artifacts:

  By default, **dh\_gnustep** will delete *stamp.make* files which are created and (unfortunately) installed by *gnustep-make* for many project types.  Likewise, it will delete *dependencies* files created and installed for GNUstep documentation projects.  The number and type of the deleted files are recorded in the build log if **DH\_QUIET** is not set.

- additional dependencies:

  For packages providing files in either **GNUSTEP\_SYSTEM\_LIBRARY** or **GNUSTEP\_SYSTEM\_HEADERS**, **dh\_gnustep** will automatically add the necessary dependency for the multiarch layout (via the *${misc:Depends}* substitution variable).

## OPTIONS

**dh\_gnustep** accepts the common [**debhelper**(7)](/debhelper/7.md) options, and some specific ones.  If you use any of the options below, make sure to build-depend on gnustep-make (\>= 2.9.2-2) if that version is not already satisfied in the current stable/oldstable release.  Some options are implemented in subsequent releases, as documented below.

- **--app**

  Move `"Resources"`, i.e. the resource bundle of a GNUstep application (**GNUSTEP\_SYSTEM\_APPS/Foo.app/Resources**) to the architecture-independent */usr/share/GNUstep/Foo.app* and make the necessary symlink.  The automatically generated *.desktop* file is deleted.  If the binary package contains more than one app, they are processed independently.

  Care shhould be taken when using this option because some apps contain architecture-dependent files in their resource bundle.  Another important point to pay attention to: if this is an existing package which does not have its resources moved to */usr/share*, a *maintscript* is required because dpkg will not switch a directory to a symlink (and vice-versa).  **dh\_gnustep** does not handle this, see [**dpkg-maintscript-helper**(1)](/dpkg-maintscript-helper/1.md).

  This option is incompatible with **--no-move** and for multi-binary packages sometimes should be used with the appropriate **-p** option.

- **--appsupport**

  Move the `"Resources"` directories of all bundles found in **GNUSTEP\_SYSTEM\_APPLICATION\_SUPPORT** to */usr/share*, as subdirectories to the parent directory.  If the package ships several bundles under **GNUSTEP\_SYSTEM\_APPLICATION\_SUPPORT/Palettes**, they are moved as subdirectories to */usr/share/GNUstep/Palettes*.

  Note that bundles' resources sometimes contain architecture-dependent files in which case the best approach is to move the architecture-independent files manually.

  This option was introduced in gnustep-make/2.9.2-3 and like **--app** it is incompatible with **--no-move**.

- **--bundle**

  - **--bundle-dir=***directory*

  Move the `"Resources"` directory of all bundles found in **GNUSTEP\_SYSTEM\_BUNDLES** (or an alternative directory under **GNUSTEP\_SYSTEM\_LIBRARY** if the **--bundle-dir** option is specified) to */usr/share*.  If the package installs bundles in a subdirectory, the same subdirectory will be created under */usr/share/GNUstep*.

  This option was introduced in gnustep-make/2.9.2-4 and it is incompatible with **--no-move**.  Furthermore, **--bundle** and **--bundle-dir** are mutually exclusive.  If the package installs bundles in the standard Bundles directory and in another non-standard directory, you'll have to run **dh\_gnustep** twice with different arguments if you need to move all of the resource bundles.

- **--bug-script**

  Install bug-script symlink for the package even if its name does not end with `".app"`.  Typically this should be done for apps which are installed for some reason with tools or other stuff in a package with a different name (such as *gnustep-examples* or *gnustep-dl2*).  It can also be done for GUI bundles, themes, palettes, etc.  You probably want to use the **-p** option as well, otherwise **dh\_gnustep** will add bug script symlinks for all binary packages.

- **--game**

  This option must be used together with **--app**.  It does everything that **--app** does as described above, and additionally moves the symlink to the executable from */usr/bin* to */usr/games*.  If */usr/bin* is found empty afterwards, the directory is deleted.

- **--move-to=***package*

  This option must be used together with **--app**, **--appsupport** or **--bundle**/**--bundle-dir** (or any kind of combination of these options).  If **--app** is specified, move the resource bundle of an application to another architecture-independent *package*.  If **--appsupport** is given, move the `"Resources"` directories of all bundles found in **GNUSTEP\_SYSTEM\_APPLICATION\_SUPPORT** to */usr/share/GNUstep* in the specified *package*.  If **--bundle** is specified, move the `"Resources"` directories of all bundles in **GNUSTEP\_SYSTEM\_BUNDLES** (or an alternative directory if **--bundle-dir** is used) to */usr/share/GNUstep* in the specified *package*.

  If **--app**, **--appsupport** and **--bundle** are used together, all resource bundles are moved to the package specified by the option's argument, there is no way to split them in different packages.  The current implementation will handle more than one app per binary package but it will fail with a multi-binary source package containing more than one `".app"` binary package.  Likewise, if the package contains more than one ApplicationSupport directory, they will be processed independently as expected but the build is likely to fail if they are in different binary packages.

  Use with caution; see the EXAMPLES section for working examples.

- **--no-cleanup**

  Do not delete *stamp.make* and *dependencies* files.

- **--no-move**

  Do not perform any move operations.  Setting the DEB\_GNUSTEP\_NO\_MOVE environment variable to a non-empty, non-zero value has the same effect.

## EXAMPLES

```
  execute_before_dh_link:
          dh_gnustep -pgnustep-dl2 --no-move --bug-script
          dh_gnustep --remaining-packages
```

Do not move any files for the *gnustep-dl2* package (as that's already handled manually) but install a bug-script symlink because the package contains an application and a Gorm palette.

```
  execute_before_dh_link:
          dh_gnustep --app --move-to=lynkeos.app-common
```

Move the *lynkeos.app* resource bundle to the architecture-independent package *lynkeos.app-common*.

```
  override_dh_link:
          dh_gnustep --app --game
          dh_link
```

Move the app's resource bundle to */usr/share* and the symlink to the executable from */usr/bin* to */user/games*.  Additionally, assuming the binary package name ends with `".app"`, create a bug-script symlink pointing to */usr/share/bug/gnustep-back-common*.  Finally, delete the *stamp.make* file from the app bundle.

```
  execute_before_dh_link:
  ifneq (,$(filter gnustep-gui-runtime,$(shell dh_listpackages)))
          dh_gnustep -pgnustep-gui-runtime --app \
            --bundle-dir=ColorPickers --move-to=gnustep-gui-common
          dh_gnustep --remaining-packages
  else
          dh_gnustep --app --bundle-dir=ColorPickers \
            --move-to=gnustep-gui-common
  endif
```

Move the resource bundles of two apps and the resources of all ColorPickers' bundles to */usr/share* in the *gnustep-gui-common* package.  Note that **dh\_gnustep** will automatically figure out that the package they are being moved from is *gnustep-gui-runtime* and there is no need to use debhelper's **-p** option.  The conditional is only necessary to support full builds so that the symlinks are created in the *gnustep-gui-runtime* package.

## BUGS

Should implement **-X** option.

Should do something with Java classes -- make a jar file and move from Library/Libraries/Java to /usr/share/java -- to comply with Java policy.

## CONFORMS TO

Debian Policy, version 4.7.0

FHS, version 3.0

Multiarch specification, \<https://wiki.ubuntu.com/MultiarchSpec\>

## SEE ALSO

[**debhelper**(7)](/debhelper/7.md), [**dh\_link**(1)](/dh_link/1.md), [**dh\_bugfiles**(1)](/dh_bugfiles/1.md)

This program is not part of debhelper.

## AUTHORS

Hubert Chan \<uhoreg@debian.org\>

Yavor Doganov \<yavor@gnu.org\>
