[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Cross bootstrap with multilib support with help of multiarch (mips64el as an example)



STEP 0 preparation

sudo debootstrap sid sid-chroot
sudo pbuilder login --no-targz --buildplace sid-chroot
sed -i ’s/^deb http/deb [arch=amd64] http/‘ /etc/apt/sources.list
echo “deb-src http://ftp.us.debian.org/debian sid main” >> /etc/apt/sources.list
dpkg --add-architecture mips64el
apt-get update
apt-get install binutils-mips64el-linux-gnuabi64 devscripts rdfind symlinks



STEP 1 build gcc stage1

apt-get build-dep gcc-4.9
apt-get purge libx32* libc6-i386 libc6-x32  # they conflicts with
mips64el multilib packages

downgrade all pacakges from gcc-4.9 to 4.9.2-3 aka before
with_deps_on_target_arch_pkgs was removed: download them from
snapshot.debian.org

dget http://snapshot.debian.org/archive/debian/20141126T040641Z/pool/main/g/gcc-4.9/gcc-4.9_4.9.2-3.dsc
cd gcc-4.9-4.9.2

patch the source with attached gcc-4.9.debdiff

Then run command

with_deps_on_target_arch_pkgs=yes DH_VERBOSE=1 WITH_SYSROOT=/
BACKPORT=false PKG_IGNORE_CURRENTLY_BUILDING=1
DEB_BUILD_OPTIONS=nostrip DEB_STAGE=stage1 dpkg-buildpackage
--target-arch=mips64el -b -uc -us -d


We can get these deb files:
cpp-4.9-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
gcc-4.9-multilib-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
libgcc-4.9-dev_4.9.2-3_mips64el.deb
gcc-4.9-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
lib32gcc-4.9-dev_4.9.2-3_mips64el.deb
libn32gcc-4.9-dev_4.9.2-3_mips64el.deb
gcc-4.9-base_4.9.2-3_mips64el.deb


rm ../gcc-4.9-multilib*.deb
dpkg -i ../*.deb



STEP 2 build linux-libc-dev

apt-get source linux; cd linux-*
make -f debian/rules.gen binary-libc-dev_mips64el
dpkg -i ../linux-libc-dev*.deb




STEP 3 glibc stage1
apt-get source glibc; cd glibc-*
patch the source with attached glibc.debdiff

Then run
DEB_STAGE=stage1 DEB_GCC_VERSION=-4.9 dpkg-buildpackage -B -amips64el -d
dpkg -i ../*.deb


STEP 4  gcc stage2

with_deps_on_target_arch_pkgs=yes DH_VERBOSE=1 WITH_SYSROOT=/
BACKPORT=false PKG_IGNORE_CURRENTLY_BUILDING=1
DEB_BUILD_OPTIONS=nostrip DEB_STAGE=stage2 dpkg-buildpackage
--target-arch=mips64el -b -uc -us -d

on the same source with stage1 gcc.

We can get these Debs
cpp-4.9-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
lib32gcc-4.9-dev_4.9.2-3_mips64el.deb
libgcc1-dbg_4.9.2-3_mips64el.deb
libn32gcc1_4.9.2-3_mips64el.deb
gcc-4.9-base_4.9.2-3_mips64el.deb
lib32gcc1-dbg_4.9.2-3_mips64el.deb
libgcc1_4.9.2-3_mips64el.deb
gcc-4.9-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
lib32gcc1_4.9.2-3_mips64el.deb   libn32gcc-4.9-dev_4.9.2-3_mips64el.deb
gcc-4.9-multilib-mips64el-linux-gnuabi64_4.9.2-3_amd64.deb
libgcc-4.9-dev_4.9.2-3_mips64el.deb
libn32gcc1-dbg_4.9.2-3_mips64el.deb

install them

rm ../gcc-4.9-multilib*.deb ../*dbg*.deb
dpkg -i ../*.deb


STEP 5 glibc stage2
DEB_STAGE=stage2 DEB_GCC_VERSION=-4.9 dpkg-buildpackage -B -amips64el -d
We can get Debs and install them

dpkg -i libc6_2.19-13_mips64el.deb libc6-dev_2.19-13_mips64el.deb
libc6-dev-mips*.deb libc6-mips*.deb


STEP 6 gcc stage3

with_deps_on_target_arch_pkgs=yes DH_VERBOSE=1 WITH_SYSROOT=/
BACKPORT=false PKG_IGNORE_CURRENTLY_BUILDING=1
DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage --target-arch=mips64el -b
-uc -us -d

-- 
YunQiang Su

Attachment: glibc.debdiff
Description: Binary data

Attachment: gcc-4.9.debdiff
Description: Binary data


Reply to: