PERL-CROSS-DEBIAN(1) | perl-cross-debian User Manual | PERL-CROSS-DEBIAN(1) |
NAME¶
perl-cross-debian - Long term maintenance of cross-build support for the Debian configuration of perlSYNOPSIS¶
perl-cross-debian [--rootdir=DIRECTORY]
--variant= STRING
perl-cross-debian --clean
perl-cross-debian
[{-h | --help} | {
-v | --version}]
DESCRIPTION¶
perl-cross-debian supports the long term maintenance of cross-build support for the Debian configuration of perl. perl-cross-debian is not expected to be run directly on the command line, it is executed by the modified debian/rules of a Debian source package of perl, within the constraints of a cross-build. perl-cross-debian uses the cross-building environment set by dpkg-architecture -aARCH to provide essential configuration values for the requested architecture to avoid executing cross-built binaries within the cross-build. Full support is limited to specific versions of perl already packaged in Debian and only for selected architectures. perl-cross-debian copies pre-produced config files into the current perl build tree to prevent the build from needing to execute test binaries during the configuration stage by providing the values of the tests in advance. perl-cross-debian then extracts values from the cached files to update the build information and package Makefiles. perl-cross-debian then relies on a patched Makefile.SH to call the host perl interpreter instead of the perl interpreter being built internally. See Running the cross build for details of how to prepare the Debian packages of perl for cross-building for the one of the currently supported host architectures. (Patches to apply to supported Debian versions of perl are included in /usr/share/perl-cross-debian/patches). See perl-cross-staging (1) for information on how to extend perl-cross-debian to other host architectures and other versions of perl.COMMAND¶
--variant VARIANTName of the current perl build variant (static, debug or
shared), passed in via debian/rules, must be specified once for each
iteration.
--clean
Runs the perl-cross-debian clean target and exits
zero. --clean overrides any --variant command - the clean
operation does not depend on the current variant.
OPTIONS¶
--rootdir DIRECTORYDebug support for testing with unreleased config files,
uses the files from the rootdir instead of looking in the
/usr/share/perl-cross-debian/$(DEB_HOST_GNU_TYPE)/$(PERL_VERSION) directory.
($(PERL_VERSION) in this instance is the output of /bin/bash
debian/config.debian --full-version.)
-?, -h, --help, --version
Show summary of options and the version
information.
LIMITATIONS¶
perl-cross-debian implements a safeguard that the perl interpreter to be used during the cross-build is the same upstream version as the perl interpreter to be cross-built due to limitations of DynaLoader.pm :arm-linux-gnueabi-gcc -c -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"3.39_02\" -DXS_VERSION=\"3.39_02\" -fPIC "-I../.." Cwd.c Running Mkbootstrap for Cwd () DynaLoader object version 1.13 does not match $DynaLoader::VERSION 1.14 at ../../lib/DynaLoader.pm line 86. Compilation failed in require at ../../lib/ExtUtils/Mkbootstrap.pm line 27.
sudo xapt -a armel -b zlib1g-dev libbz2-dev libdb-dev libgdbm-dev
RUNNING THE CROSS BUILD¶
perl-cross-debian needs some changes to the perl package before cross-building, so ensure that Makefile.SH and debian/rules are both patched and that the cross dependencies and cross compiler are installed. Patches are carried in the perl-cross-debian package in /usr/share/perl-cross-debian/patches. debuild is preferred as this will provide a build log and run lintian (by default) which means that the built packages will be checked to ensure that the binaries have been correctly compiled for the cross architecture (amongst the normal checks). Run the cross build with:DEB_BUILD_OPTIONS="nocheck" debuild -aarmel -us -uc -d
SUPPORTED VERSIONS AND ARCHITECTURES¶
perl-cross-debian support is patchy but can be improved. Only specific architectures at specific versions are supported - if you do not find the files for the requested version in the directory of the architecture required, see perl-cross-staging (1) for information on how this information can be added and also for details of ongoing work with perl upstream.CLEAN TARGET SUPPORT¶
perl-cross-debian includes support for a custom clean target for cross-builds to ensure that version-specific content generated during the cross-build is cleaned up before dpkg-source tries to verify the source package. If there are additional files which need to be cleaned, file a bug against perl-cross-debian.EXTENSION INSTALLATION¶
The current method of building and installing the extensions does need testing and improvement. Whilst the main emphasis for a perl cross build is to support bootstrapping by having the normal perl interpreter available instead of just miniperl, there may be less emphasis on the correct functioning of the extensions and modules normally packaged by a native perl build. Problems relating to any use of perl extensions and modules when the cross built perl packages are installed should be reported as bugs in perl-cross-debian.EXTENDING PERL-CROSS-DEBIAN¶
perl-cross-debian provides some POD documentation of how to extend support to new architectures and how to update existing support for new versions of perl. See /usr/share/doc/perl-cross-debian/converting-native.pod and /usr/share/doc/perl-cross-debian/new-arch.podAUTHOR¶
Neil Williams <codehelp@debian.org>Wrote this manpage for the Debian system.
COPYRIGHT¶
Copyright © 2012 Neil Williams05/19/2013 | perl-cross-debian |