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

Re: [Xen-devel] Re: [Xen-ia64-devel] cross compiling xen/ia64

Hi Ian,

Sorry this took so long.  Xen Summit got in the way of work. ;-)

I've managed to get the cross-building working in an etch chroot.
I think the main difference between your build and mine is that
my build is running in a cron job, so stdin is /dev/null.  That
allows the kernel config to go through without prompting
(accepting defaults, which isn't necessarily ideal, but at least
it allows the automated build to progress).

If it's helpful, here are most of the steps I did after creating
the chroot with debootstrap, bind-mounting some dirs into it, and
installing sudo...

1. Move aside invoke-rc.d so that daemons aren't started in the
   chroot.  Using dpkg-divert makes it stick for future updates.
   See http://www.debian-administration.org/articles/118

   $ sudo dpkg-divert --add --rename --divert /usr/sbin/invoke-rc.d{.real,} 
   $ sudo ln -s /bin/true /usr/sbin/invoke-rc.d

2. Install most of the stuff we need for building the
   cross-compiler and xen.  The underscore on mawk_ causes it to
   be uninstalled so gawk can take its place.

   $ sudo aptitude install mawk_ gawk mercurial dpkg-cross fakeroot 
   $ sudo apt-get build-dep binutils gcc-4.1

3. Install the pre-built cross toolchain from the emdebian
   project.  Unfortunately the emdebian-provided toolchain
   doesn't use the sysroot, but installing it makes things easier
   since it fulfills some cross-deps...

   $ echo 'deb http://www.emdebian.org/debian/ stable main' | \
      sudo tee -a /etc/apt/sources.list
   $ wget -O- http://www.emdebian.org/0x97BB3B58.txt | sudo apt-key add -
   $ sudo aptitude update
   $ sudo aptitude install gcc-4.1-ia64-linux-gnu

4. Prepare to rebuild the toolchain.

   $ echo 'deb-src ftp://ftp.us.debian.org/debian/ stable main' | \
      sudo tee -a /etc/apt/sources.list
   $ sudo aptitude update
   $ mkdir cross-debs
   $ cd cross-debs

5. Rebuild binutils to use the sysroot.

   $ apt-get source binutils
   $ cd binutils-2.17/
   $ patch -p0 < binutils-debian-sysroot.patch  # see attachment
   $ TARGET=ia64 fakeroot debian/rules binary-cross  # see debian/README.cross
   $ cd ..
   $ sudo dpkg -i binutils-ia64-linux-gnu_2.17-3_amd64.deb

6. Unpack the chroot since it's required to build gcc with
   sysroot capability.

   $ wget http://free.linux.hp.com/~agriffis/cross/sys-roots/etch-ia64.tar.gz
   $ sudo tar xzf etch-ia64.tar.gz -C /usr/ia64-linux-gnu
   $ sudo ln -s etch-root /usr/ia64-linux-gnu/sys-root

7. Install another requirement for rebuilding gcc.

   $ wget 
   $ sudo dpkg-cross -i -a ia64 libatomic-ops-dev_1.1-4_ia64.deb 

8. Rebuild gcc-4.1 to use the sysroot.

   $ apt-get source gcc-4.1
   $ cd gcc-4.1_4.1.1ds2
   $ export GCC_TARGET=ia64 DEB_CROSS_INDEPENDENT=yes with_sysroot=yes
   $ debian/rules  # see debian/README.cross
   $ dpkg-buildpackage -rfakeroot
   $ cd ..
   $ sudo dpkg -i *amd64.deb *all.deb

9. Build xen.

   $ cd
   $ hg clone http://xenbits.xen.org/xen-unstable.hg
   $ hg clone http://xenbits.xen.org/linux-2.6.18-xen.hg
   $ cd xen-unstable.hg
   $ make XEN_TARGET_ARCH=ia64 CROSS_COMPILE=ia64-linux-gnu- world </dev/null

10. Profit!!!

I'll try to update the wiki to include both Fedora-based and
Debian-based setups.


Attachment: binutils-debian-sysroot.patch
Description: Text Data

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.