Home Man
Today's Posts

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Section of Man Page:
Select Man Page Repository:

Linux 2.6 - man page for dpkg-architecture (linux section 1)

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

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

       dpkg-architecture [options] [commands]

       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.

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

	      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.

	      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.

	      Print the value of a single variable.

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

       -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

       -L     Print a list of valid architecture names.

       --help Show the usage message and exit.

	      Show the version and exit.

	      Set the Debian architecture.

	      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)).

       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.

       The following variables are set by dpkg-architecture:

	   The Debian architecture of the build machine.

	   The Debian system name of the build machine.

	   The Debian cpu name of the build machine.

	   The pointer size of the build machine (in bits).

	   The endianness of the build machine (little / big).

	   The CPU part of DEB_BUILD_GNU_TYPE.

	   The System part of DEB_BUILD_GNU_TYPE.

	   The GNU system type of the build machine.

	   The clarified GNU system type of the build machine, used for filesystem paths.

	   The Debian architecture of the host machine.

	   The Debian system name of the host machine.

	   The Debian cpu name of the host machine.

	   The pointer size of the host machine (in bits).

	   The endianness of the host machine (little / big).

	   The CPU part of DEB_HOST_GNU_TYPE.

	   The System part of DEB_HOST_GNU_TYPE.

	   The GNU system type of the host machine.

	   The clarified GNU system type of the host machine, used for filesystem paths.

       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)

       please use:

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

	      ifeq ($(DEB_HOST_ARCH),alpha)

       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.

       The DEB_*_ARCH_BITS and DEB_*_ARCH_ENDIAN variables were introduced  in	dpkg-dev  1.15.4.
       Using them in debian/rules thus requires a build-dependency on dpkg-dev (>= 1.15.4).

       The  DEB_HOST_ARCH_CPU  and DEB_HOST_ARCH_OS variables were introduced in dpkg-dev 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
	      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

       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 := linux-gnu


       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).

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

	      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

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

	      Table of known CPU names and mapping to their GNU name.

	      Table of known operating system names and mapping to their GNU name.

	      Mapping between Debian architecture triplets and Debian architecture names.

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

       dpkg-architecture  and  this  man  page	were  initially  written  by   Marcus	Brinkmann

Debian Project				    2009-08-15			     dpkg-architecture(1)

All times are GMT -4. The time now is 03:29 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
Show Password