5.6.8. Architecture

Depending on context and the control file used, the Architecture field can include the following sets of values:

  • A unique single word identifying a Debian machine architecture as described in Architecture specification strings.

  • An architecture wildcard identifying a set of Debian machine architectures, see Architecture wildcards. any matches all Debian machine architectures and is the most frequently used.

  • all, which indicates an architecture-independent package.

  • source, which indicates a source package.

In the main debian/control file in the source package, this field may contain the special value all, the special architecture wildcard any, or a list of specific and wildcard architectures separated by spaces. If all or any appears, that value must be the entire contents of the field. Most packages will use either all or any.

Specifying a specific list of architectures indicates that the source will build an architecture-dependent package only on architectures included in the list. Specifying a list of architecture wildcards indicates that the source will build an architecture-dependent package on only those architectures that match any of the specified architecture wildcards. Specifying a list of architectures or architecture wildcards other than any is for the minority of cases where a program is not portable or is not useful on some architectures. Where possible, the program should be made portable instead.

In the Debian source control file .dsc, this field contains a list of architectures and architecture wildcards separated by spaces. When the list contains the architecture wildcard any, the only other value allowed in the list is all.

The list may include (or consist solely of) the special value all. In other words, in .dsc files unlike the debian/control, all may occur in combination with specific architectures. The Architecture field in the Debian source control file .dsc is generally constructed from the Architecture fields in the debian/control in the source package.

Specifying only any indicates that the source package isn’t dependent on any particular architecture and should compile fine on any one. The produced binary package(s) will be specific to whatever the current build architecture is.

Specifying only all indicates that the source package will only build architecture-independent packages.

Specifying any all indicates that the source package isn’t dependent on any particular architecture. The set of produced binary packages will include at least one architecture-dependent package and one architecture-independent package.

Specifying a list of architectures or architecture wildcards indicates that the source will build an architecture-dependent package, and will only work correctly on the listed or matching architectures. If the source package also builds at least one architecture-independent package, all will also be included in the list.

In a .changes file, the Architecture field lists the architecture(s) of the package(s) currently being uploaded. This will be a list; if the source for the package is also being uploaded, the special entry source is also present. all will be present if any architecture-independent packages are being uploaded. Architecture wildcards such as any must never occur in the Architecture field in the .changes file.

See Main building script: debian/rules for information on how to get the architecture for the build process.