| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- .\" dpkg manual page - dpkg-architecture(1)
- .\"
- .\" Copyright © 2005 Marcus Brinkmann <brinkmd@debian.org>
- .\" Copyright © 2005 Scott James Remnant <scott@netsplit.com>
- .\" Copyright © 2006-2013 Guillem Jover <guillem@debian.org>
- .\" Copyright © 2009-2012 Raphaël Hertzog <hertzog@debian.org>
- .\"
- .\" This is free software; you can redistribute it and/or modify
- .\" it under the terms of the GNU General Public License as published by
- .\" the Free Software Foundation; either version 2 of the License, or
- .\" (at your option) any later version.
- .\"
- .\" This is distributed in the hope that it will be useful,
- .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
- .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- .\" GNU General Public License for more details.
- .\"
- .\" You should have received a copy of the GNU General Public License
- .\" along with this program. If not, see <https://www.gnu.org/licenses/>.
- .
- .TH dpkg\-architecture 1 "2013-03-28" "Debian Project" "dpkg utilities"
- .SH NAME
- dpkg\-architecture \- set and determine the architecture for package building
- .
- .SH SYNOPSIS
- .B dpkg\-architecture
- .RI [ option "...] [" command ]
- .PP
- .
- .SH DESCRIPTION
- .B dpkg\-architecture
- does provide a facility to determine and set the build and
- host architecture for package building.
- .PP
- The build architecture is always determined by an external call to
- \fBdpkg\fP(1), and can not be set at the command line.
- .PP
- You can specify the host architecture by providing one or both of the options
- \fB\-a\fR and \fB\-t\fR. The default is determined by an external call to
- .BR gcc (1),
- or the same as the build architecture if \fBCC\fP or gcc are both not
- available. One out of \fB\-a\fR and \fB\-t\fR is sufficient, the value of the
- other will be set to a usable default. Indeed, it is often better to only
- specify one, because \fBdpkg\-architecture\fP will warn you if your choice
- does not match the default.
- .
- .SH COMMANDS
- .TP
- .B \-l
- Print the environment variables, one each line, in the format
- \fIVARIABLE=value\fP. This is the default action.
- .TP
- .BI \-e debian-architecture
- Check for equality of architecture (since dpkg 1.13.13). By default
- \fIdebian-architecture\fP is compared against the current Debian architecture,
- being the host. This action will not expand the architecture wildcards.
- Command finishes with an exit status of 0 if matched, 1 if not matched.
- .TP
- .BI \-i architecture-wildcard
- Check for identity of architecture by expanding \fIarchitecture-wildcard\fP
- as an architecture wildcard and comparing against the current Debian
- architecture (since dpkg 1.13.13).
- Command finishes with an exit status of 0 if matched, 1 if not matched.
- .TP
- .BI \-q variable-name
- Print the value of a single variable.
- .TP
- .B \-s
- Print an export command. This can be used to set the environment variables
- using eval.
- .TP
- .B \-u
- Print a similar command to \fB\-s\fP but to unset all variables.
- .TP
- .BI \-c " command"
- Execute a \fIcommand\fP in an environment which has all variables set to
- the determined value.
- .TP
- .B \-L
- Print a list of valid architecture names.
- .TP
- .BR \-? ", " \-\-help
- Show the usage message and exit.
- .TP
- .B \-\-version
- Show the version and exit.
- .
- .SH OPTIONS
- .TP
- .BI \-a debian-architecture
- Set the Debian architecture.
- .TP
- .BI \-t gnu-system-type
- Set the GNU system type.
- .TP
- .B \-f
- Values set by existing environment variables with the same name as used by
- the scripts are honored (i.e. used by \fBdpkg\-architecture\fP), except if
- this force flag is present. This allows the user
- to override a value even when the call to \fBdpkg\-architecture\fP is buried
- in some other script (for example \fBdpkg\-buildpackage\fP(1)).
- .
- .SH TERMS
- .IP "build machine" 4
- The machine the package is built on.
- .IP "host machine" 4
- The machine the package is built for.
- .IP "Debian architecture" 4
- The Debian architecture string, which specifies the binary tree in the
- FTP archive. Examples: i386, sparc, hurd\-i386.
- .IP "architecture wildcard" 4
- An architecture wildcard is a special architecture string that will match
- any real architecture being part of it. The general form is <kernel>\-<cpu>.
- Examples: linux\-any, any\-i386, hurd\-any.
- .IP "GNU system type" 4
- An architecture specification string consisting of two parts separated by
- a hyphen: cpu and system. Examples: i386\-linux\-gnu, sparc\-linux\-gnu,
- i386\-gnu, x86_64\-netbsd.
- .
- .SH VARIABLES
- The following variables are set by \fBdpkg\-architecture\fP:
- .IP "\fBDEB_BUILD_ARCH\fP" 4
- The Debian architecture of the build machine.
- .IP "\fBDEB_BUILD_ARCH_OS\fP" 4
- The Debian system name of the build machine (since dpkg 1.13.2).
- .IP "\fBDEB_BUILD_ARCH_CPU\fP" 4
- The Debian cpu name of the build machine (since dpkg 1.13.2).
- .IP "\fBDEB_BUILD_ARCH_BITS\fP" 4
- The pointer size of the build machine (in bits; since dpkg 1.15.4).
- .IP "\fBDEB_BUILD_ARCH_ENDIAN\fP" 4
- The endianness of the build machine (little / big; since dpkg 1.15.4).
- .IP "\fBDEB_BUILD_GNU_CPU\fP" 4
- The CPU part of \fBDEB_BUILD_GNU_TYPE\fP.
- .IP "\fBDEB_BUILD_GNU_SYSTEM\fP" 4
- The System part of \fBDEB_BUILD_GNU_TYPE\fP.
- .IP "\fBDEB_BUILD_GNU_TYPE\fP" 4
- The GNU system type of the build machine.
- .IP "\fBDEB_BUILD_MULTIARCH\fP" 4
- The clarified GNU system type of the build machine, used for filesystem
- paths (since dpkg 1.16.0).
- .IP "\fBDEB_HOST_ARCH\fP" 4
- The Debian architecture of the host machine.
- .IP "\fBDEB_HOST_ARCH_OS\fP" 4
- The Debian system name of the host machine (since dpkg 1.13.2).
- .IP "\fBDEB_HOST_ARCH_CPU\fP" 4
- The Debian cpu name of the host machine (since dpkg 1.13.2).
- .IP "\fBDEB_HOST_ARCH_BITS\fP" 4
- The pointer size of the host machine (in bits; since dpkg 1.15.4).
- .IP "\fBDEB_HOST_ARCH_ENDIAN\fP" 4
- The endianness of the host machine (little / big; since dpkg 1.15.4).
- .IP "\fBDEB_HOST_GNU_CPU\fP" 4
- The CPU part of \fBDEB_HOST_GNU_TYPE\fP.
- .IP "\fBDEB_HOST_GNU_SYSTEM\fP" 4
- The System part of \fBDEB_HOST_GNU_TYPE\fP.
- .IP "\fBDEB_HOST_GNU_TYPE\fP" 4
- The GNU system type of the host machine.
- .IP "\fBDEB_HOST_MULTIARCH\fP" 4
- The clarified GNU system type of the host machine, used for filesystem
- paths (since dpkg 1.16.0).
- .
- .SH FILES
- .SS Architecture tables
- All these files have to be present for \fBdpkg\-architecture\fP to
- work. Their location can be overridden at runtime with the environment
- variable \fBDPKG_DATADIR\fP.
- .TP
- .I /usr/share/dpkg/cputable
- Table of known CPU names and mapping to their GNU name.
- .TP
- .I /usr/share/dpkg/ostable
- Table of known operating system names and mapping to their GNU name.
- .TP
- .I /usr/share/dpkg/triplettable
- Mapping between Debian architecture triplets and Debian architecture
- names.
- .SS Packaging support
- .TP
- .I /usr/share/dpkg/architecture.mk
- Makefile snippet that properly sets and exports all the variables that
- \fBdpkg\-architecture\fP outputs (since dpkg 1.16.1).
- .
- .SH EXAMPLES
- \fBdpkg\-buildpackage\fP accepts the \fB\-a\fR option and passes it to
- \fBdpkg\-architecture\fP. Other examples:
- .IP
- CC=i386\-gnu\-gcc dpkg\-architecture \-c debian/rules build
- .IP
- eval \`dpkg\-architecture \-u\`
- .PP
- Check if an architecture is equal to the current architecture or a given
- one:
- .IP
- dpkg\-architecture \-elinux\-alpha
- .IP
- dpkg\-architecture \-amips \-elinux\-mips
- .PP
- Check if the current architecture or an architecture provided with \fB\-a\fP
- are Linux systems:
- .IP
- dpkg\-architecture \-ilinux\-any
- .IP
- dpkg\-architecture \-ai386 \-ilinux\-any
- .
- .SS Usage in debian/rules
- The environment variables set by \fBdpkg\-architecture\fP are passed to
- \fIdebian/rules\fP as make variables (see make documentation). However,
- you should not rely on them, as this breaks manual invocation of the
- script. Instead, you should always initialize them using
- \fBdpkg\-architecture\fP with the \fB\-q\fP option. Here are some examples,
- which also show how you can improve the cross compilation support in your
- package:
- .PP
- Retrieving the GNU system type and forwarding it to ./configure:
- .PP
- .RS 4
- .nf
- DEB_BUILD_GNU_TYPE ?= $(shell dpkg\-architecture \-qDEB_BUILD_GNU_TYPE)
- DEB_HOST_GNU_TYPE ?= $(shell dpkg\-architecture \-qDEB_HOST_GNU_TYPE)
- [...]
- ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
- confflags += \-\-build=$(DEB_HOST_GNU_TYPE)
- else
- confflags += \-\-build=$(DEB_BUILD_GNU_TYPE) \\
- \-\-host=$(DEB_HOST_GNU_TYPE)
- endif
- [...]
- \&./configure $(confflags)
- .fi
- .RE
- .PP
- Doing something only for a specific architecture:
- .PP
- .RS 4
- .nf
- DEB_HOST_ARCH ?= $(shell dpkg\-architecture \-qDEB_HOST_ARCH)
- ifeq ($(DEB_HOST_ARCH),alpha)
- [...]
- endif
- .fi
- .RE
- .PP
- or if you only need to check the CPU or OS type, use the
- \fBDEB_HOST_ARCH_CPU\fP or \fBDEB_HOST_ARCH_OS\fP variables.
- .PP
- Note that you can also rely on an external Makefile snippet to properly
- set all the variables that \fBdpkg\-architecture\fP can provide:
- .PP
- .RS 4
- .nf
- include /usr/share/dpkg/architecture.mk
- ifeq ($(DEB_HOST_ARCH),alpha)
- [...]
- endif
- .fi
- .RE
- .PP
- In any case, you should never use \fBdpkg \-\-print\-architecture\fP to get
- architecture information during a package build.
- .
- .SH SEE ALSO
- .BR dpkg\-buildpackage (1),
- .BR dpkg\-cross (1).
|