Size: 4449
Comment:
|
Size: 4664
Comment: Fix formatting of commands
|
Deletions are marked like this. | Additions are marked like this. |
Line 13: | Line 13: |
STEP 0 preparation | |
Line 15: | Line 14: |
= STEP 0 preparation = {{{ |
|
Line 18: | Line 20: |
echo “deb-src http://ftp.us.debian.org/debian sid main” >> /etc/apt/sources.list | echo “deb-src http://httpredir.debian.org/debian sid main” >> /etc/apt/sources.list |
Line 22: | Line 24: |
}}} | |
Line 24: | Line 27: |
= STEP 1 build gcc stage1 = | |
Line 25: | Line 29: |
STEP 1 build gcc stage1 |
{{{ |
Line 29: | Line 32: |
Line 32: | Line 34: |
}}} | |
Line 34: | Line 37: |
if you need gnat support, you'd wish add some other patches from: BUG:#782257 #783372 |
if you need gnat support, you'd wish add some other patches from: BUG:#782257 #783372 |
Line 37: | Line 40: |
cd gcc-5-*; | {{{ cd gcc-5-* |
Line 41: | Line 45: |
Line 50: | Line 53: |
sed -i '/^ada_no_cross/c ada_no_cross := yes' debian/rules.defs }}} due to libgnatprj depends on gmp.h, which can only be built when gcc is ready. |
|
Line 52: | Line 58: |
sed -i '/^ada_no_cross/c ada_no_cross := yes' debian/rules.defs due to libgnatprj depends on gmp.h, which can only be built when gcc is ready. |
Then run: |
Line 55: | Line 60: |
Then run: 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 |
{{{ 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-5-mips64el-linux-gnuabi64 gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev gcc-5-mips64el-linux-gnuabi64 lib32gcc-5-dev libn32gcc-5-dev |
Line 62: | Line 74: |
We can get these deb files: cpp-5-mips64el-linux-gnuabi64 gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev gcc-5-mips64el-linux-gnuabi64 lib32gcc-5-dev libn32gcc-5-dev |
|
Line 70: | Line 75: |
{{{ | |
Line 71: | Line 77: |
--force-all as we have not gcc-5-base:mips64el yet. | }}} -force-all as we have not gcc-5-base:mips64el yet. |
Line 74: | Line 81: |
STEP 2 build linux-libc-dev | = STEP 2 build linux-libc-dev = |
Line 76: | Line 83: |
{{{ | |
Line 79: | Line 87: |
}}} | |
Line 81: | Line 90: |
= STEP 3 glibc stage1 = {{{ apt-get source glibc; cd glibc-* }}} patch the source with patch from BUG:#773300 Then run {{{ DEB_STAGE=stage1 DEB_GCC_VERSION=-5 dpkg-buildpackage -B -amips64el -d dpkg --force-all -i ../libc6*.deb }}} --force-all as we have not libgcc1:mips64el yet. |
|
Line 83: | Line 105: |
STEP 3 glibc stage1 apt-get source glibc; cd glibc-* |
= STEP 4 gcc stage2 = on the same source with stage1 gcc. |
Line 86: | Line 108: |
patch the source with patch from BUG:#773300 Then run DEB_STAGE=stage1 DEB_GCC_VERSION=-5 dpkg-buildpackage -B -amips64el -d dpkg --force-all -i ../libc6*.deb --force-all as we have not libgcc1:mips64el yet. |
{{{ 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 }}} |
Line 95: | Line 113: |
STEP 4 gcc stage2 | We can get these Debs |
Line 97: | Line 115: |
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 |
cpp-5-mips64el-linux-gnuabi64 |
Line 102: | Line 117: |
on the same source with stage1 gcc. | lib32gcc-4.9-dev |
Line 104: | Line 119: |
We can get these Debs cpp-5-mips64el-linux-gnuabi64 lib32gcc-4.9-dev libgcc1-dbg libn32gcc1 gcc-5-base lib32gcc1-dbg libgcc1 gcc-5-mips64el-linux-gnuabi64 lib32gcc1 libn32gcc-4.9-dev gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev libn32gcc1-dbg |
libgcc1-dbg libn32gcc1 gcc-5-base lib32gcc1-dbg libgcc1 gcc-5-mips64el-linux-gnuabi64 lib32gcc1 libn32gcc-4.9-dev gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev libn32gcc1-dbg |
Line 121: | Line 143: |
{{{ | |
Line 122: | Line 145: |
}}} | |
Line 123: | Line 147: |
= STEP 5 glibc stage2 = | |
Line 124: | Line 149: |
STEP 5 glibc stage2 | {{{ |
Line 126: | Line 151: |
}}} |
|
Line 128: | Line 155: |
dpkg -i ../libc6_2.19-13_mips64el.deb ../libc6-dev_2.19-13_mips64el.deb ../libc6-dev-mips*.deb ../libc6-mips*.deb |
{{{ dpkg -i ../libc6_*_mips64el.deb ../libc6-dev_*_mips64el.deb ../libc6-dev-mips*.deb ../libc6-mips*.deb }}} |
Line 131: | Line 159: |
= STEP 6 gcc stage3 = | |
Line 132: | Line 161: |
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 }}} = STEP 7 gmp/selinux = |
Line 134: | Line 167: |
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 STEP 7 gmp/selinux dpkg-buildpacakge -amips64el |
{{{ dpkg-buildpacakge -amips64el }}} |
Line 142: | Line 171: |
STEP 8 gcc with gnat support | = STEP 8 gcc with gnat support = |
Line 144: | Line 173: |
{{{ | |
Line 145: | Line 175: |
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 |
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 }}} |
This page shows how to bootstrap a multiarch cross toolchain.
Multiarch-Cross-Toolchain, aka as known as Wookey's way, just lke cross-gcc does.
It has pacakges like gcc-<VERSION>-<TRIPLET>, it dpends on
libc6-dev:<TARGET> libgcc-<VERSION>-dev:<TARGET>
- etc.
This also shows how to bootstrap for a new architecture.
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://httpredir.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-5 apt-get purge libx32* libc6-i386 libc6-x32 # they conflicts with mips64el multilib packages apt-get source gcc-5 apt-get install cross-gcc-dev
- if you need gnat support, you'd wish add some other patches from:
BUG:#782257 #783372
cd gcc-5-* patch -p1 < /tmp/0001-version.patch patch -p1 < /tmp/0002-control.patch patch -p1 < /tmp/0003-patch.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0001-gcc_cross_multiarch.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0002-allow-no-biarch.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0003-gxx-crossbase-substvar.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0004-reverted-removal-of-with_deps_on_target_arch_pkgs-in.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0005-Allow-target-selection-via-dpkg-buildpackage-target-.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0006-fix-with_deps_on_target_arch_pkgs-yes-DEB_STAGE-stag.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0007-Skip-libjit-when-we-re-cross-building.patch patch -p1 < /usr/share/cross-gcc/patches/gcc-5/0008-g-include-directories-functional-again.patch sed -i '/^ada_no_cross/c ada_no_cross := yes' debian/rules.defs
- due to libgnatprj depends on gmp.h, which can only be built when gcc is ready.
Then run:
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-5-mips64el-linux-gnuabi64 gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev gcc-5-mips64el-linux-gnuabi64 lib32gcc-5-dev libn32gcc-5-dev
dpkg --force-all -i ../*.deb
- -force-all as we have not gcc-5-base:mips64el yet.
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 patch from BUG:#773300
Then run
DEB_STAGE=stage1 DEB_GCC_VERSION=-5 dpkg-buildpackage -B -amips64el -d dpkg --force-all -i ../libc6*.deb
- --force-all as we have not libgcc1:mips64el yet.
STEP 4 gcc stage2
on the same source with stage1 gcc.
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
We can get these Debs
- cpp-5-mips64el-linux-gnuabi64 lib32gcc-4.9-dev libgcc1-dbg libn32gcc1 gcc-5-base lib32gcc1-dbg libgcc1 gcc-5-mips64el-linux-gnuabi64 lib32gcc1 libn32gcc-4.9-dev gcc-5-multilib-mips64el-linux-gnuabi64 libgcc-5-dev libn32gcc1-dbg
install them
dpkg -i ../*.deb
STEP 5 glibc stage2
DEB_STAGE=stage2 DEB_GCC_VERSION=-5 dpkg-buildpackage -B -amips64el -d
We can get Debs and install them
dpkg -i ../libc6_*_mips64el.deb ../libc6-dev_*_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
STEP 7 gmp/selinux
dpkg-buildpacakge -amips64el
STEP 8 gcc with gnat support
sed -i '/^ada_no_cross/c ada_no_cross := no' debian/rules.defs 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