Build-Cross-Depends packages
This page seeks to build a list of packages that have to be available on the build host as native packages and as cross packages, installed using dpkg-cross or apt-cross.
auto-apt
auto-apt was considered as a tool to identify these cross dependencies but the first results were not exciting:
- empdebuild needs a source of dependencies processed by dpkg-cross.
- auto-apt can obtain packages when requested from a repository
- apt-cross needs to be more intelligent and check if a cross-package is available rather than always building it afresh.
- debian/xcontrol can specify the packages required for empdebuild.
- debian/xcontrol is in SVN (as a patch)
- the toolchain repository already contains some cross packages.
- use auto-apt -L to write a log file: parse to create xcontrol.
- auto-apt does not create it's database on installation, need to copy it or update it. Yuk.
- auto-apt slows down the build enormously - too slow to use routinely. Also consumes all memory.
- Therefore: only recommend when first emdebianising.
logfile option (-L) does not work. (426854).
- auto-apt automation would try to install fortran compilers etc.
auto-apt fails to locate the emdebian toolchain sources. (426851).
- auto-apt fails to detect the need for cross-built libraries:
# auto-apt -L -y run emdebuild -a arm ... dpkg: /usr/arm-linux-gnu/lib/libpam.so.0 not found. dpkg: /usr/arm-linux-gnu/lib/libselinux.so.1 not found. dpkg: /usr/arm-linux-gnu/lib/libc.so.6 not found. dpkg-shlibdeps: failure: dpkg --search gave error exit status 1 dh_shlibdeps: command returned error code 256 make: *** [binary-arch] Error 1 make: Leaving directory `/opt/trunk/c/cron/trunk/cron-3.0pl1' sh-3.1# ls
Currently, the rest of this page is just a list of what I had to install for certain packages.
See also: EmdebianGuide and Emdebian
gcc-4.1
$ apt-cross --install libmpfr-dev
...
Setting up libgmp3c2-arm-cross (4.2.1+dfsg-4) ... Setting up libgcc1-arm-cross (4.1.1-21) ... Setting up libmpfr1-arm-cross (2.2.1.dfsg.1-2) ... Setting up libstdc++6-arm-cross (4.1.1-21) ... Setting up libgmpxx4-arm-cross (4.2.1+dfsg-4) ... Setting up libgmp3-dev-arm-cross (4.2.1+dfsg-4) ... Setting up libmpfr-dev-arm-cross (2.2.1.dfsg.1-2) ...
cdebconf
libdebian-installer4-dev
cron
libselinux-dev
sysvinit
libselinux-dev
pam
cracklib2-dev
dialog
libncursesw5-dev
logrotate
libselinux-dev libpopt-dev
wget
libssl0.9.8 libssl-dev
openldap2
libltdl3-dev libdb4.2-dev libwrap0-dev libiodbc2-dev libsasl2-dev libslp-dev
aptitude
libncursesw5-dev libapt-pkg-dev (needs dpkg-cross >= 1.38 and apt-cross >= 0.1.2) libsigc++-2.0-dev libcppunit-dev (not picked up by configure, causes a failure much later if missing.)
libx11
xtrans-dev libxau-dev x11proto-xcmisc-dev x11proto-bigreqs-dev x11proto-xext-dev libxdmcp-dev x11proto-kb-dev x11proto-input-dev
My current list of cross-built dev packages:
$ apt-cross --list | grep dev amd64-libs-dev-arm-cross attr-dev-arm-cross dvb-dev-arm-cross kerberos4kth-dev-arm-cross libattr1-dev-arm-cross libbz2-dev-arm-cross libc-dev-arm-cross libc6-dev-arm-cross libc6.1-dev-arm-cross libdebian-installer-dev-arm-cross libdebian-installer4-dev-arm-cross libgdbmg1-dev-arm-cross libglib1.3-dev-arm-cross libglib2.0-dev-arm-cross libgmp2-dev-arm-cross libgmp3-dev-arm-cross libgpmg1-dev-arm-cross libmpfr-dev-arm-cross libncurses-dev-arm-cross libncurses5-dev-arm-cross libpam-dev-arm-cross libpam0g-dev-arm-cross libreadline-dev-arm-cross libreadline5-dev-arm-cross libselinux-dev-arm-cross libselinux1-dev-arm-cross libsepol-dev-arm-cross libsepol1-dev-arm-cross libslang2-dev-arm-cross libsqlite-dev-arm-cross libsqlite0-dev-arm-cross libstdc++-dev-arm-cross libstdc++2.10-dev-arm-cross libstdc++6-4.1-dev-arm-cross libxml2-dev-arm-cross libz-dev-arm-cross ncurses-dev-arm-cross ncurses-developer-arm-cross slang-dev6-arm-cross slang0.99.34-dev-arm-cross slang1-utf8-dev-arm-cross zlib1-dev-arm-cross zlib1g-dev-arm-cross