2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 # Script to build binutils for both i386 and AMD64 Linux architectures.
7 # Must be run on an AMD64 supporting machine which has debootstrap and sudo
9 # Uses Ubuntu Lucid chroots as build environment.
13 if [ x
"$(whoami)" = x
"root" ]; then
14 echo "Script must not be run as root."
19 OUTPUTDIR
="${1:-$PWD/output-$(date +%Y%m%d-%H%M%S)}"
20 if [ ! -d "$OUTPUTDIR" ]; then
26 wget
-c http
://ftp.gnu.org
/gnu
/binutils
/binutils-
$VERSION.
tar.bz2
28 # Verify the signature
29 wget
-c -q http
://ftp.gnu.org
/gnu
/binutils
/binutils-
$VERSION.
tar.bz2.sig
30 if ! gpg
--verify binutils-
$VERSION.
tar.bz2.sig
; then
31 echo "GPG Signature failed to verify."
33 echo "You may need to import the vendor GPG key with:"
34 echo "# gpg --keyserver pgp.mit.edu --recv-key 4AE55E93"
39 if [ ! -d binutils-
$VERSION ]; then
41 tar jxf binutils-
$VERSION.
tar.bz2
46 patch -p1 < ..
/ehframe-race.
patch
50 for ARCH
in i386 amd64
; do
51 if [ ! -d lucid-chroot-
$ARCH ]; then
52 # Refresh sudo credentials
57 echo "Building chroot for $ARCH"
58 echo "============================="
61 --include=build-essential
,flex
,bison \
62 lucid lucid-chroot-
$ARCH
63 echo "============================="
66 BUILDDIR
=lucid-chroot-
$ARCH/build
68 # Clean up any previous failed build attempts inside chroot
69 if [ -d "$BUILDDIR" ]; then
70 sudo
rm -rf "$BUILDDIR"
73 # Copy data into the chroot
74 sudo mkdir
-p "$BUILDDIR"
75 sudo
cp -a binutils-
$VERSION "$BUILDDIR"
76 sudo
cp -a build-one.sh
"$BUILDDIR"
82 PREFIX
="setarch linux32"
83 ARCHNAME
=i686-pc-linux-gnu
86 PREFIX
="setarch linux64"
87 ARCHNAME
=x86_64-unknown-linux-gnu
91 echo "Building binutils for $ARCH"
92 LOGFILE
="$OUTPUTDIR/build-$ARCH.log"
93 if ! sudo
$PREFIX chroot lucid-chroot-
$ARCH /build
/build-one.sh
/build
/binutils-
$VERSION > $LOGFILE 2>&1; then
94 echo "Build failed! See $LOGFILE for details."
98 # Copy data out of the chroot
99 sudo chown
-R $
(whoami
) "$BUILDDIR/output/"
101 # Strip the output binaries
102 for i
in "$BUILDDIR/output/$ARCHNAME/bin/*"; do
106 # Copy them out of the chroot
107 cp -a "$BUILDDIR/output/$ARCHNAME" "$OUTPUTDIR"
110 sudo
rm -rf "$BUILDDIR"
113 echo "Check you are happy with the binaries in"
116 echo " * upload to Google Storage using the upload.sh script"
117 echo " * roll dependencies"