[tor-commits] [tor-browser-bundle/master] Bug 12461: New compiler for Tor Browser ESR 31.
gk at torproject.org
gk at torproject.org
Tue Sep 30 07:16:44 UTC 2014
commit 0d36f05505208e8c46ece532c9cb455cde31c417
Author: Georg Koppen <gk at torproject.org>
Date: Wed Sep 17 10:43:13 2014 +0000
Bug 12461: New compiler for Tor Browser ESR 31.
Tor Browser based on Firefox ESR 31 needs a newer compiler. GCC 4.4 is
not supported anymore. We chose the latest GCC (4.9.1) as we don't want
to bump the version again when we start deploying hardened builds.
---
RelativeLink/RelativeLink.sh | 2 +-
gitian/descriptors/linux/gitian-firefox.yml | 22 +++++++++++++++++++---
gitian/descriptors/linux/gitian-utils.yml | 21 +++++++++++++++++++--
gitian/gpg/GCC.gpg | Bin 9931 -> 2635 bytes
gitian/mkbundle-linux.sh | 6 ++++++
gitian/versions.nightly | 2 +-
6 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/RelativeLink/RelativeLink.sh b/RelativeLink/RelativeLink.sh
index e75482a..88f9f8e 100755
--- a/RelativeLink/RelativeLink.sh
+++ b/RelativeLink/RelativeLink.sh
@@ -215,7 +215,7 @@ if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then
exit 1
fi
-LD_LIBRARY_PATH="${HOME}/TorBrowser/Tor/"
+LD_LIBRARY_PATH="${HOME}:${HOME}/TorBrowser/Tor/"
export LD_LIBRARY_PATH
function setControlPortPasswd() {
diff --git a/gitian/descriptors/linux/gitian-firefox.yml b/gitian/descriptors/linux/gitian-firefox.yml
index 4284a5d..633444d 100644
--- a/gitian/descriptors/linux/gitian-firefox.yml
+++ b/gitian/descriptors/linux/gitian-firefox.yml
@@ -26,6 +26,8 @@ packages:
- "libgstreamer-plugins-base0.10-dev"
# To pass configure since ESR 31.
- "libpulse-dev"
+# We built GCC but not the libmpc2, thus we need to install it.
+- "libmpc2"
reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/tor-browser.git"
@@ -33,6 +35,8 @@ remotes:
files:
- "binutils-linux32-utils.zip"
- "binutils-linux64-utils.zip"
+- "gcc-linux32-utils.zip"
+- "gcc-linux64-utils.zip"
- "python-linux32-utils.zip"
- "python-linux64-utils.zip"
- "re-dzip.sh"
@@ -60,12 +64,12 @@ script: |
mkdir -p $INSTDIR/build/bin/
ln -s /usr/bin/yasm-1 $INSTDIR/build/bin/yasm
export PATH=$PATH:$INSTDIR/build/bin
- # Preparing Python for Firefox
+ # Preparing Python for Tor Browser
unzip -d $INSTDIR python-linux$GBUILD_BITS-utils.zip
# TODO: We might want to have a smarter solution than hard-coding the version.
ln -sf $INSTDIR/python/bin/python2.7 $INSTDIR/python/bin/python
export PATH=$INSTDIR/python/bin:$PATH
- #
+ # Preparing Binutils and GCC for Tor Browser
unzip -d $INSTDIR binutils-linux$GBUILD_BITS-utils.zip
# Make sure gold is used with the hardening wrapper for full RELRO, see
# #13031.
@@ -76,7 +80,16 @@ script: |
ln -sf hardened-ld ld.gold
ln -sf ld.gold ld
cd ~/build
- export PATH=$INSTDIR/binutils/bin:$PATH
+ unzip -d $INSTDIR gcc-linux$GBUILD_BITS-utils.zip
+ export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH
+ ARCH=""
+ if [ $GBUILD_BITS == "64" ];
+ then
+ ARCH="64"
+ fi
+ # Make sure our GCC gets properly used.
+ export LD_LIBRARY_PATH=$INSTDIR/gcc/lib$ARCH
+ #
mkdir -p $INSTDIR/Browser/
mkdir -p $INSTDIR/Debug/Browser/components
#
@@ -119,6 +132,9 @@ script: |
strip $LIB
objcopy --add-gnu-debuglink=./Debug/$LIB $LIB
done
+ # We need to copy the libstdc++.so.6 for older Linux distros.
+ cp $INSTDIR/gcc/lib$ARCH/libstdc++.so.6 Browser
+ #
~/build/re-dzip.sh Browser/omni.ja
~/build/re-dzip.sh Browser/webapprt/omni.ja
~/build/re-dzip.sh Browser/browser/omni.ja
diff --git a/gitian/descriptors/linux/gitian-utils.yml b/gitian/descriptors/linux/gitian-utils.yml
index 35fb67b..59ef707 100644
--- a/gitian/descriptors/linux/gitian-utils.yml
+++ b/gitian/descriptors/linux/gitian-utils.yml
@@ -17,6 +17,8 @@ packages:
- "hardening-wrapper"
# Needed for compiling gold.
- "bison"
+# Needed for compiling GCC.
+- "libmpc-dev"
# These packages are needed for Python due to HTTPS-Everywhere >= 3.5.
- "libsqlite3-dev"
- "zlib1g-dev"
@@ -30,6 +32,7 @@ remotes:
"dir": "libevent"
files:
- "binutils.tar.bz2"
+- "gcc.tar.bz2"
- "openssl.tar.gz"
- "python.tar.bz2"
- "lxml.tar.gz"
@@ -39,8 +42,6 @@ files:
script: |
INSTDIR="$HOME/install"
source versions
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
export TZ=UTC
export LC_ALL=C
umask 0022
@@ -64,6 +65,21 @@ script: |
make install
cd ..
+ # Building GCC
+ tar xjf gcc.tar.bz2
+ cd gcc-*
+ ./configure --prefix=$INSTDIR/gcc --disable-multilib --enable-languages=c,c++
+ make $MAKEOPTS
+ make install
+ cd ..
+
+ # libfaketime gets into our way when building GCC 4.9.x. See:
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61314 for details. Thus, we
+ # avoid it for the toolchain and cross our fingers.
+ # TODO: Test a newer libfaketime than 0.8.
+ export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+ export FAKETIME=$REFERENCE_DATETIME
+
# Building Libevent
cd libevent
./autogen.sh
@@ -122,6 +138,7 @@ script: |
# Grabbing the remaining results
cd $INSTDIR
~/build/dzip.sh binutils-$BINUTILS_VER-linux$GBUILD_BITS-utils.zip binutils
+ ~/build/dzip.sh gcc-$GCC_VER-linux$GBUILD_BITS-utils.zip gcc
~/build/dzip.sh openssl-$OPENSSL_VER-linux$GBUILD_BITS-utils.zip openssl
~/build/dzip.sh libevent-${LIBEVENT_TAG#release-}-linux$GBUILD_BITS-utils.zip libevent
~/build/dzip.sh python-$PYTHON_VER-linux$GBUILD_BITS-utils.zip python
diff --git a/gitian/gpg/GCC.gpg b/gitian/gpg/GCC.gpg
index d94d692..e62de27 100644
Binary files a/gitian/gpg/GCC.gpg and b/gitian/gpg/GCC.gpg differ
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index c4938d0..8a4e55f 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -100,6 +100,8 @@ cd $GITIAN_DIR
if [ ! -f inputs/binutils-$BINUTILS_VER-linux32-utils.zip -o \
! -f inputs/binutils-$BINUTILS_VER-linux64-utils.zip -o \
+ ! -f inputs/gcc-$GCC_VER-linux32-utils.zip -o \
+ ! -f inputs/gcc-$GCC_VER-linux64-utils.zip -o \
! -f inputs/openssl-$OPENSSL_VER-linux32-utils.zip -o \
! -f inputs/openssl-$OPENSSL_VER-linux64-utils.zip -o \
! -f inputs/libevent-${LIBEVENT_TAG_ORIG#release-}-linux32-utils.zip -o \
@@ -126,6 +128,8 @@ then
cp -a ../build/out/*-utils.zip .
ln -sf binutils-$BINUTILS_VER-linux32-utils.zip binutils-linux32-utils.zip
ln -sf binutils-$BINUTILS_VER-linux64-utils.zip binutils-linux64-utils.zip
+ ln -sf gcc-$GCC_VER-linux32-utils.zip gcc-linux32-utils.zip
+ ln -sf gcc-$GCC_VER-linux64-utils.zip gcc-linux64-utils.zip
ln -sf openssl-$OPENSSL_VER-linux32-utils.zip openssl-linux32-utils.zip
ln -sf openssl-$OPENSSL_VER-linux64-utils.zip openssl-linux64-utils.zip
ln -sf libevent-${LIBEVENT_TAG_ORIG#release-}-linux32-utils.zip libevent-linux32-utils.zip
@@ -147,6 +151,8 @@ else
cd inputs
ln -sf binutils-$BINUTILS_VER-linux32-utils.zip binutils-linux32-utils.zip
ln -sf binutils-$BINUTILS_VER-linux64-utils.zip binutils-linux64-utils.zip
+ ln -sf gcc-$GCC_VER-linux32-utils.zip gcc-linux32-utils.zip
+ ln -sf gcc-$GCC_VER-linux64-utils.zip gcc-linux64-utils.zip
ln -sf openssl-$OPENSSL_VER-linux32-utils.zip openssl-linux32-utils.zip
ln -sf openssl-$OPENSSL_VER-linux64-utils.zip openssl-linux64-utils.zip
ln -sf libevent-${LIBEVENT_TAG_ORIG#release-}-linux32-utils.zip libevent-linux32-utils.zip
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 4d4c4f5..5032058 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -34,7 +34,7 @@ GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
FIREFOX_LANG_BUILD=build1
BINUTILS_VER=2.24
-GCC_VER=4.8.3
+GCC_VER=4.9.1
PYTHON_VER=2.7.5
PYCRYPTO_VER=2.6.1
ARGPARSE_VER=1.2.1
More information about the tor-commits
mailing list