Differences between revisions 1 and 7 (spanning 6 versions)
Revision 1 as of 2015-05-01 21:33:12
Size: 4449
Editor: YunQiangSu
Comment:
Revision 7 as of 2015-05-11 04:09:07
Size: 4664
Editor: BenHutchings
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