Debian::DpkgCross(3)
Name
Debian::DpkgCross - Package of dpkg-cross commonly used functions
The 2.x series of dpkg-cross is seeking to achieve its own removal by
incorporating as much cross-building support as possible into dpkg
itself. The number, scope and range of functions supported by this
package is therefore only going to decrease. Any newly-written code
using this package will need to keep up with changes in dpkg.
Developers are recommended to join the debian-dpkg and debian-embedded
mailing lists and keep their code under review.
Copyright and License
· Copyright (C) 2004 Nikita Youshchenko <yoush@cs.msu.su>
· Copyright (C) 2004 Raphael Bossek <bossekr@debian.org>
- · Copyright (c) 2007-2008 Neil Williams <codehelp@debian.org> =back
- This program 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 program 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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Bugs
Please report bugs via the Debian Bug Tracking System.
Support
All enquiries to the "<debian-embedded@lists.debian.org"> mailing list.
MAKEFLAGS
- See bug #437507 Even if the other flags are needed CC, GCC and other
compiler names should *NOT* be overridden in $ENV{'MAKEFLAGS'} because this prevents packages compiling and running build tools using
CC_FOR_BUILD. CDBS packages need to declare an empty override variable in debian/rules: - DEB_CONFIGURE_SCRIPT_ENV=
- Depending on progress with dpkg cross-building support, the remaining
overrides may also be removed. Do not rely on these being set. - read_config
Read '$conffile' and save the definition in global variables all
recognised variables. - '$crossroot' will be set by setup(). Until setup() is called all "crossroot-<arch>" settings are stored within '%allcrossroots'.
- All package variables are stored within '%conf'.
- No variables are skipped.
- return: none
- get_config
Return the current configuration from read_config as a hash reference. - get_version
Return the current DpkgCross version string used by all dpkg-cross
scripts. - dump_debug_data
Return a hashtable of assorted debug data collated during the current
run that can be processed using Data::Dumper. - rewrite_pkg_name
Converts a package name into the dpkg-cross package name. - $1 - the package name to check and convert if needed return - the
cross-package name - convert_filename($)
Converts an original .deb filename into the dpkg-cross .deb filename or converts a dpkg-cross .deb filename into the original .deb filename. - returns undef on error
- get_architecture
Returns the current architecture. - return: Current architecture or empty if not set.
- check_arch($arch)
Checks that the supplied $arch is (or can be converted to) a
DEB_HOST_GNU_TYPE that can be supported by dpkg-cross. - returns the DPKG_HOST_GNU_TYPE or undef
- setup
Set global variables '$arch', '$crossbase', '$crossbin', '$crosslib32', '$crossdir', '$crossinc', '$crosslib', '$crosslib64', '$crossprefix',
'$compilerpath' and '$deb_host_gnu_type' to defaults and substitute
them with variables from '%conf' and '$arch'. - return: none
- create_tmpdir($basename)
Safely create a temporary directory
$1: Directory basename (random suffix will be added)- return: Full directory pathname, undef if failed
- convert_path($path)
Convert path, substituting '$crossinc', '$crosslib', '$crosslib64',
'$crosslib32', '$crossdir'. This function will be used while building
foreign binary packages or converting GCC options.
$1: Directory (and file) to convert.- return: Converted path.
- simplify_path($path)
Simplify path. Remove duplicate slashes, "./", "dir/..", etc - $1: Path to simplify.
- return: Simplified path.
- get_endianness
Provide a central function to query the endianness of the current cross building architecture. - Parses /etc/dpkg-cross/cross-config.$arch to convert the autotools
cache value into a general purpose string. - Returns 'big' or 'little' or undefined on error.
- detect_arch
- Detect architecture of a given ELF or AR file using 'file' output. In
general case it seems to be impossible to distinguish between OSes
(e.g. between i386-linux and i386-hurd), so just detect CPU
architecture
$1: Filename to process - return: Detected architecture name on success, empty string on failure
- Note that the table used by this routine is incomplete and may not
always identify the arch. Always check the return value.
Legacy code
- The following functions were part of dpkg-cross.pl <= 1.39 and were
only used by the dpkg-cross diversions of dpkg-buildpackage or dpkgshlibdeps. The functions and the scripts are retained for now as legacy code or for bespoke implementations but may be removed at a later date. It is NOT recommended to use these functions for newly written code.
Scripts that do use these functions must import them explicitly. - get_keepdeps
Array containing the list of dependencies to be kept when building a
cross package. Read from the $conffile. - Largely superceded by the -X support in dpkg-cross itself.
Deprecated: May be removed in future versions.- get_removedeps
- Array containing the list of dependencies to be remove when building a cross package. Read from the $conffile.
- Largely superceded by the -X support in dpkg-cross itself.
Deprecated: May be removed in future versions.- get_tool
- Legacy code - only used by the old version of dpkg-shlibdeps from dpkgcross <= 1.39
Finds appropriate tool for ($arch, $tool, $mode)
$1: architecture wanted
$2: tool wanted
$3: current mode
return: pathname of the tool - setup_cross_env
- Legacy code - only used by the old version of dpkg-shlibdeps from dpkgcross <= 1.39
- This function has since been implemented as a shell "library" buildcross that is called directly by the non-diverted dpkgbuildpackage.
- Set the environment variables MAKEFLAGS, PATH, PKG_CONFIG_LIBDIR and
all variables from '%pkgvars' which are marked for scope "environment". - return: none
- dpkgcross_application
- Legacy code - only used by the old version of dpkg-shlibdeps from dpkgcross <= 1.39
- If not called (indirectly) from 'dpkg-buildpackage -a<arch>', then exec the original.
- This function also initialise '$arch' as set by `dpkg-buildpackage -a'.
- return: none
- convert_ld_library_path
- Legacy code - only used by the old version of dpkg-shlibdeps and strip from dpkg-cross <= 1.39
- Remove from LD_LIBRARY_PATH everything that does not start with
/usr/lib or /usr/share. This is needed to avoid non-native libraries in LD_LIBRARY_PATH. Just unsetting of LD_LIBRARY_PATH does not work
because of usage of LD_LIBRARY_PATH by fakeroot.
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
- Around line 74:
- You forgot a '=back' before '=head1'