[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor-browser-bundle/master] Bug 12461: New compiler for Tor Browser ESR 31.



commit 0d36f05505208e8c46ece532c9cb455cde31c417
Author: Georg Koppen <gk@xxxxxxxxxxxxxx>
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



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits