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.