Bug#649094: xapt: paths not fixed in libc.so in cross packages
Package: xapt
Version: 2.2.17
Severity: normal
Hi,
I'm trying to build a debian package of a mipsel cross-compiler.
To do that, I build a binutils for my target, then I install
required cross library with xapt and finally I try to build the cross-compiler
itself.
The last part fails within sid and testing. It took me some times, but I
found the problem. xapt correctly fix paths in lib/libc.so but not
in lib{32,64}/libc.so (ie these files refers to /lib{32,64}/* and
/usr/lib{32,64}/* files instead of /usr/mipsel-linux-gnu/lib{32,64})
Manually changing these paths allow me to go further in the compilation of
the cross compiler (but not yet to the end :-( )
You will find in attachment the script I use to build my cross-compiler.
Regards,
Vincent
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.0.0-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages xapt depends on:
ii apt 0.8.15.9
ii dpkg-cross 2.6.5
ii dpkg-dev 1.16.2~50.gbp921bea
ii libconfig-inifiles-perl 2.68-1
ii libdpkg-perl 1.16.2~50.gbp921bea
ii liblocale-gettext-perl 1.05-7
ii perl 5.12.4-6
xapt recommends no packages.
xapt suggests no packages.
-- no debconf information
# Here is a script to build and install a cross compiler to be used on Nachos
#
# Contrary to previous document, this script build a recent cross compiler
# (gcc 4.6 by default) so gcc 2.95 is not used anymore.
# improvement: software is installed as real packages on the system
# inconvenient: only works for Debian (unstable and perhaps
# testing/wheezy) and it could perhaps work with ubuntu (feedback welcome)
#
# Note: recent gcc requires the target libc to build the cross-compiler.
# This is why I cannot tell how to build one only from gcc sources
# (as it was done with gcc 2.95)
#
# I think I put all required commands. Howver, it is probably better
# to copy and paste the command to be able to look at the results
#
# WARNING: building the cross compiler itself requires lots of time and
# lots of available disk space. It is probably possible to reduce this
# if we build only the C cross compiler (and not C++, ...) but I did not
# look if this can be easily done.
# Do not copy-paste the next line in a interractive shell
# (else your shell will exit as soon as a command does not succeed)
set -ex
mkdir -p tools
cd tools
TARGET=mipsel-linux-gnu
if test "$(ls binutils-$TARGET_*.deb 2>/dev/null)" ; then
echo "Skipping building and installing binutils (already there)"
else
apt-get source binutils
sudo apt-get build-dep binutils
sudo apt-get install fakeroot build-essential binutils-multiarch
cd binutils-*
env TARGET=$TARGET dpkg-buildpackage -b -uc -us
cd ..
sudo dpkg -i binutils-$TARGET_*.deb
fi
sudo apt-get install dpkg-cross xapt
sudo xapt --mirror http://ftp.fr.debian.org/debian/ \
--arch mipsel --suite unstable --keep-cache libc6-dev libc6 \
libc6-dev-mips64 libc6-dev-mipsn32 libc6-mips64 linux-libc-dev libc6-mipsn32
# At least 4.5. Previous does not have a correct cross-compiler build setup
GCC_V=4.6
apt-get source gcc-${GCC_V}
sudo apt-get build-dep gcc-${GCC_V}
sudo apt-get install gcc-${GCC_V}-source
cd gcc-${GCC_V}-*
env GCC_TARGET=mipsel debian/rules control
env GCC_TARGET=mipsel dpkg-buildpackage -rfakeroot -us -uc -b
cd ..
sudo dpkg -i gcc-${GCC_V}-mipsel-linux-gnu_*.deb gcc-${GCC_V}-mipsel-linux-gnu-base_*.deb cpp-${GCC_V}-mipsel-linux-gnu_*.deb libgcc1-mipsel-cross_*.deb libgomp1-mipsel-cross_*.deb
# Once the packages are installed, all the tools directory can be removed.
# This version of nachos will automatically detect and use this cross-compiler
# Enjoy.
Reply to: