dpkg-architecture(1) - phpMan

Command: man perldoc info search(apropos)  


dpkg-architecture(1)                      dpkg utilities                     dpkg-architecture(1)



NAME
       dpkg-architecture - set and determine the architecture for package building

SYNOPSIS
       dpkg-architecture [options] [commands]


DESCRIPTION
       dpkg-architecture  does  provide a facility to determine and set the build and host archi-
       tecture for package building.

       The build architecture is always determined by an external call to dpkg(1), and can not be
       set at the command line.

       You  can  specify the host architecture by providing one or both of the options -a and -t.
       The default is determined by an external call to gcc(1), or the same as the  build  archi-
       tecture if CC or gcc are both not available. One out of -a and -t is sufficient, the value
       of the other will be set to a usable default. Indeed, it is often better to  only  specify
       one, because dpkg-architecture will warn you if your choice does not match the default.

COMMANDS
       -l     Print  the environment variables, one each line, in the format VARIABLE=value. This
              is the default action.

       -edebian-architecture
              Check for equality of architecture.  By  default  debian-architecture  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.

       -iarchitecture-wildcard
              Check  for identity of architecture by expanding architecture-wildcard as an archi-
              tecture wildcard and comparing against the  current  Debian  architecture.  Command
              finishes with an exit status of 0 if matched, 1 if not matched.

       -qvariable-name
              Print the value of a single variable.

       -s     Print  an  export  command. This can be used to set the environment variables using
              eval.

       -u     Print a similar command to -s but to unset all variables.

       -c command
              Execute a command in an environment which has all variables set to  the  determined
              value.

       -L     Print a list of valid architecture names.

       --help Show the usage message and exit.

       --version
              Show the version and exit.

OPTIONS
       -adebian-architecture
              Set the Debian architecture.

       -tgnu-system-type
              Set the GNU system type.

       -f     Values  set  by  existing  environment  variables with the same name as used by the
              scripts are honored (i.e. used by dpkg-architecture), except if this force flag  is
              present. This allows the user to override a value even when the call to dpkg-archi-
              tecture is buried in some other script (for example dpkg-buildpackage(1)).

TERMS
       build machine
           The machine the package is built on.

       host machine
           The machine the package is built for.

       Debian architecture
           The Debian architecture string, which specifies the binary tree in  the  FTP  archive.
           Examples: i386, sparc, hurd-i386.

       architecture wildcard
           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.

       GNU system type
           An  architecture specification string consisting of two parts separated by a dash: cpu
           and system. Examples: i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.

VARIABLES
       The following variables are set by dpkg-architecture:

       DEB_BUILD_ARCH
           The Debian architecture of the build machine.

       DEB_BUILD_ARCH_OS
           The Debian system name of the build machine.

       DEB_BUILD_ARCH_CPU
           The Debian cpu name of the build machine.

       DEB_BUILD_GNU_TYPE
           The GNU system type of the build machine.

       DEB_BUILD_GNU_CPU
           The CPU part of DEB_BUILD_GNU_TYPE

       DEB_BUILD_GNU_SYSTEM
           The System part of DEB_BUILD_GNU_TYPE.

       DEB_HOST_ARCH
           The Debian architecture of the host machine.

       DEB_HOST_ARCH_OS
           The Debian system name of the host machine.

       DEB_HOST_ARCH_CPU
           The Debian cpu name of the host machine.

       DEB_HOST_GNU_TYPE
           The GNU system type of the host machine.

       DEB_HOST_GNU_CPU
           The CPU part of DEB_HOST_GNU_TYPE.

       DEB_HOST_GNU_SYSTEM
           The System part of DEB_HOST_GNU_TYPE.

DEBIAN/RULES
       The environment variables set by dpkg-architecture are  passed  to  debian/rules  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
       dpkg-architecture  with the -q option. Here are some examples, which also show how you can
       improve the cross compilation support in your package:


       Instead of:

              ARCH=`dpkg --print-architecture`
              configure $(ARCH)-linux

       please use the following:

              DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
              DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)

              configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)


       Instead of:

              ARCH=`dpkg --print-architecture`
              ifeq ($(ARCH),alpha)
                ...
              endif

       please use:

              DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)

              ifeq ($(DEB_HOST_ARCH),alpha)
                ...
              endif

       or if you  only  need  to  check  the  CPU  or  OS  type,  use  the  DEB_HOST_ARCH_CPU  or
       DEB_HOST_ARCH_OS variables.

       In  general,  calling dpkg in the rules file to get architecture information is deprecated
       (unless  you  want  to  provide  backward  compatibility,  see  below).   Especially   the
       --print-architecture  option  is unreliable since we have Debian architectures which don't
       equal a processor name.

BACKWARD COMPATIBILITY
       The DEB_HOST_ARCH_CPU and DEB_HOST_ARCH_OS variables were only  introduced  in  relatively
       recent  versions  of dpkg-architecture (since dpkg 1.13.2), before this debian/rules files
       tended to check the values of the DEB_HOST_GNU_CPU or  DEB_HOST_GNU_TYPE  variables  which
       have been subject to change.

       Where  debian/rules  files  check  these  variables to decide how or what to compile, this
       should be updated to use the new variables and values.  You may wish to  retain  backwards
       compatibility with older version of dpkg-dev by using the following code:

              DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
              DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)

              # Take account of old dpkg-architecture output.
              ifeq ($(DEB_HOST_ARCH_CPU),)
                DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
                ifeq ($(DEB_HOST_ARCH_CPU),x86_64)
                  DEB_HOST_ARCH_CPU := amd64
                endif
              endif
              ifeq ($(DEB_HOST_ARCH_OS),)
                DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM))
                ifeq ($(DEB_HOST_ARCH_OS),gnu)
                  DEB_HOST_ARCH_OS := hurd
                endif
              endif

       And similarly for DEB_BUILD_ARCH_CPU and DEB_BUILD_ARCH_OS.

       If  you still wish to support versions of dpkg-dev that did not include dpkg-architecture,
       the following does the job:

              DEB_BUILD_ARCH := $(shell dpkg --print-architecture)
              DEB_BUILD_GNU_CPU := $(patsubst hurd-%,%,$(DEB_BUILD_ARCH))
              ifeq ($(filter-out hurd-%,$(DEB_BUILD_ARCH)),)
                DEB_BUILD_GNU_SYSTEM := gnu
              else
                DEB_BUILD_GNU_SYSTEM := linux-gnu
              endif
              DEB_BUILD_GNU_TYPE=$(DEB_BUILD_GNU_CPU)-$(DEB_BUILD_GNU_SYSTEM)

              DEB_HOST_ARCH := $(DEB_BUILD_ARCH)
              DEB_HOST_GNU_CPU := $(DEB_BUILD_GNU_CPU)
              DEB_HOST_GNU_SYSTEM := $(DEB_BUILD_GNU_SYSTEM)
              DEB_HOST_GNU_TYPE := $(DEB_BUILD_GNU_TYPE)

       Put a subset of these lines at the top of your debian/rules  file;  these  default  values
       will be overwritten if dpkg-architecture is used.

       You  don't need the full set. Choose a consistent set which contains the values you use in
       the  rules  file.  For  example,  if  you  only  need  the   host   Debian   architecture,
       `DEB_HOST_ARCH=`dpkg  --print-architecture`'  is  sufficient  (this  is  indeed the Debian
       architecture of the build machine, but remember that we are only  trying  to  be  backward
       compatible with native compilation).

       The -e and -i options were only introduced in relatively recent versions of dpkg-architec-
       ture (since dpkg 1.13.13).

EXAMPLES
       dpkg-buildpackage accepts the -a option and passes it to  dpkg-architecture.  Other  exam-
       ples:

              CC=i386-gnu-gcc dpkg-architecture -c debian/rules build

              eval `dpkg-architecture -u`

       Check if an architecture is equal to the current architecture or a given one:

              dpkg-architecture -elinux-alpha

              dpkg-architecture -amips -elinux-mips

       Check if the current architecture or an architecture provided with -a are Linux systems:

              dpkg-architecture -ilinux-any

              dpkg-architecture -ai386 -ilinux-any

FILES
       All  these  files  have to be present for dpkg-architecture to work. Their location can be
       overriden at runtime with the environment variable DPKG_DATADIR.

       /usr/share/dpkg/cputable
              Table of known CPU names and mapping to their GNU name.

       /usr/share/dpkg/ostable
              Table of known operating system names and mapping to their GNU name.

       /usr/share/dpkg/triplettable
              Mapping between Debian architecture triplets and Debian architecture names.

SEE ALSO
       dpkg-buildpackage(1), dpkg-cross(1).

AUTHOR
       dpkg-architecture  and  this  man  page  were  initially  written  by   Marcus   Brinkmann
       <brinkmd AT debian.org>.




Debian Project                              2007-03-06                       dpkg-architecture(1)

Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2012-05-25 20:35 @38.107.179.238 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!