[tor-commits] [tor-browser-bundle/master] Use newer libfaketime (0.9.6).
gk at torproject.org
gk at torproject.org
Tue Sep 30 07:16:44 UTC 2014
commit 82153228c675451dc5b37d8302beff0a93e981e4
Author: Georg Koppen <gk at torproject.org>
Date: Mon Sep 22 20:10:38 2014 +0000
Use newer libfaketime (0.9.6).
libfaketime 0.8 breaks the ESR 31 build (see #12461 comment 8 and later
and #12812 comment 8 for the gory details). We therefore use a newer
version that provides us with an environment variable to skip certain
processes when faking time.
---
gitian/descriptors/linux/gitian-firefox.yml | 33 +++++++++++++++++++++----
gitian/descriptors/mac/gitian-firefox.yml | 29 ++++++++++++++++++----
gitian/descriptors/windows/gitian-firefox.yml | 22 ++++++++++++++---
gitian/fetch-inputs.sh | 1 +
gitian/mkbundle-linux.sh | 2 +-
gitian/mkbundle-mac.sh | 2 +-
gitian/mkbundle-windows.sh | 2 +-
gitian/versions.nightly | 1 +
8 files changed, 76 insertions(+), 16 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-firefox.yml b/gitian/descriptors/linux/gitian-firefox.yml
index 07927fb..d7958b0 100644
--- a/gitian/descriptors/linux/gitian-firefox.yml
+++ b/gitian/descriptors/linux/gitian-firefox.yml
@@ -6,7 +6,6 @@ architectures:
- "i386"
- "amd64"
packages:
-- "faketime"
- "unzip"
- "zip"
- "libglib2.0-dev"
@@ -32,6 +31,8 @@ reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/tor-browser.git"
"dir": "tor-browser"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
- "binutils-linux32-utils.zip"
- "binutils-linux64-utils.zip"
@@ -49,8 +50,6 @@ script: |
export CFLAGS="-frandom-seed=tor"
export CXXFLAGS="-frandom-seed=tor"
export TZ=UTC
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
export LC_ALL=C
umask 0022
#
@@ -92,18 +91,42 @@ script: |
#
mkdir -p $INSTDIR/Browser/
mkdir -p $INSTDIR/Debug/Browser/components
- #
+
+ # Building libfaketime
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ cd ..
+
cd tor-browser
# .git and the src takes up a lot of useless space, and we need the space to build
rm -rf .git
find -type f | xargs touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
+ # |configure| can't cope with nano seconds faked. And even if we would revert
+ # that feature it would hang sometimes for unknown but to libfaketime related
+ # reasons.
+ export LD_PRELOAD=""
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL}"
+ # We need libfaketime for all the timestamps e.g. written into the libraries.
+ # BUT we need to exclude |make build| from it. Otherwise the build fails close
+ # to the end, see #12461 comment 8 and later. Additionally, we need to avoid
+ # breaking the ICU compilation. Exlcuding |bash| helps here. See #12461
+ # comment 13.
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME_SKIP_CMDS="bash,make"
find -type f | xargs touch --date="$REFERENCE_DATETIME"
- #
make BUILD_HOSTNAME="gitian" $MAKEOPTS -f client.mk build
+ # Packaging is broken with libfaketime enabled, thus we disable it again. See
+ # #12461 comments 11 and 12 for details.
+ export LD_PRELOAD=""
make -C obj-* package INNER_MAKE_PACKAGE=true
+ # Without libfaketime enabled we would get different omni.ja and *debug.zip
+ # files.
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
cp -a obj-*/dist/firefox/* $INSTDIR/Browser/
# Remove firefox-bin (we don't use it, see ticket #10126)
rm -f $INSTDIR/Browser/firefox-bin
diff --git a/gitian/descriptors/mac/gitian-firefox.yml b/gitian/descriptors/mac/gitian-firefox.yml
index 40693b0..b07a261 100644
--- a/gitian/descriptors/mac/gitian-firefox.yml
+++ b/gitian/descriptors/mac/gitian-firefox.yml
@@ -10,12 +10,13 @@ packages:
- "zip"
- "autoconf"
- "autoconf2.13"
-- "faketime"
- "yasm"
reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/tor-browser.git"
"dir": "tor-browser"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
- "x86_64-apple-darwin10.tar.xz"
@@ -26,15 +27,21 @@ 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
#
mkdir -p $INSTDIR/TorBrowser.app/Contents/MacOS/
mkdir -p $OUTDIR/
- #
+
+ # Building libfaketime.
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ cd ..
+
sudo dpkg -i *.deb
tar -xavf x86_64-apple-darwin10.tar.xz
# XXX: Needed for the otool patch. But we should replace that one with a
@@ -57,9 +64,21 @@ script: |
find -type f | xargs touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
+ # |configure| can't cope with nano seconds faked. And even if we would revert
+ # that feature it would hang sometimes for unknown but to libfaketime related
+ # reasons.
+ export LD_PRELOAD=""
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL}"
find -type f | xargs touch --date="$REFERENCE_DATETIME"
- #
+ # We need libfaketime for all the timestamps e.g. written into the libraries.
+ # BUT we need to exclude |make build| from it. Otherwise the build fails close
+ # to the end, see #12812 comment 6 and #12461 comment 8 and later.
+ # Additionally, we need to exclude |rsync| due to #10153 which is reproducible
+ # reliably with the new libfaketime.
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ # XXX Order matters as for some reason the env variable has only the first
+ # command assigned when it comes to the rsync parts in the build process.
+ export FAKETIME_SKIP_CMDS="rsync,make"
make BUILD_HOSTNAME="gitian" $MAKEOPTS -f client.mk build
#
make -C obj-macos package INNER_MAKE_PACKAGE=true
diff --git a/gitian/descriptors/windows/gitian-firefox.yml b/gitian/descriptors/windows/gitian-firefox.yml
index da0c8b1..bcffffe 100644
--- a/gitian/descriptors/windows/gitian-firefox.yml
+++ b/gitian/descriptors/windows/gitian-firefox.yml
@@ -9,12 +9,13 @@ packages:
- "zip"
- "autoconf"
- "autoconf2.13"
-- "faketime"
- "yasm"
reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/tor-browser.git"
"dir": "tor-browser"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
- "mingw-w64-win32-utils.zip"
- "re-dzip.sh"
@@ -28,8 +29,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
@@ -41,6 +40,14 @@ script: |
# Make sure our custom mingw gets used.
export PATH=$INSTDIR/mingw-w64/bin:$PATH
+ # Building libfaketime
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ cd ..
+
# We don't want to link against msvcrt.dll due to bug 9084.
i686-w64-mingw32-g++ -dumpspecs > msvcr100.spec
sed 's/msvcrt/msvcr100/' -i msvcr100.spec
@@ -71,6 +78,10 @@ script: |
find -type f | xargs touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
+ # |configure| can't cope with nano seconds faked. And even if we would revert
+ # that feature it would hang sometimes for unknown but to libfaketime related
+ # reasons.
+ export LD_PRELOAD=""
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL}"
find -type f | xargs touch --date="$REFERENCE_DATETIME"
#
@@ -78,6 +89,11 @@ script: |
cp ~/build/i686* ~/build/bin/
export PATH=~/build/bin:$PATH
#
+ # We need libfaketime for all the timestamps e.g. written into the libraries.
+ # BUT we need to exclude |make build| from it. Otherwise the build fails close
+ # to the end, see #12811 comment 14 and #12461 comment 8 and later.
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME_SKIP_CMDS="make"
make BUILD_HOSTNAME="gitian" $MAKEOPTS -f client.mk build
#
make -C obj-* package INNER_MAKE_PACKAGE=true
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index ad82ddf..3a4dc87 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -294,6 +294,7 @@ libdmg-hfsplus https://github.com/vasi/libdmg-hfsplus.git $LIBDMG_TAG
txsocksx https://github.com/habnabit/txsocksx.git $TXSOCKSX_TAG
goptlib https://git.torproject.org/pluggable-transports/goptlib.git $GOPTLIB_TAG
meek https://git.torproject.org/pluggable-transports/meek.git $MEEK_TAG
+faketime https://github.com/wolfcw/libfaketime $FAKETIME_TAG
EOF
exit 0
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index 8a4e55f..4106e74 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -197,7 +197,7 @@ then
echo "****** Starting TorBrowser Component of Linux Bundle (3/5 for Linux) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG $DESCRIPTOR_DIR/linux/gitian-firefox.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/linux/gitian-firefox.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./firefox-fail-linux.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index d71c824..9a43685 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -165,7 +165,7 @@ then
echo "****** Starting TorBrowser Component of Mac Bundle (3/5 for Mac) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG $DESCRIPTOR_DIR/mac/gitian-firefox.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/mac/gitian-firefox.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./firefox-fail-mac.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-windows.sh b/gitian/mkbundle-windows.sh
index d7fc722..56830a0 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -168,7 +168,7 @@ then
echo "****** Starting Torbrowser Component of Windows Bundle (3/5 for Windows) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG $DESCRIPTOR_DIR/windows/gitian-firefox.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/windows/gitian-firefox.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./firefox-fail-win32.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 58d647f..a59e8a1 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -27,6 +27,7 @@ LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=master
MEEK_TAG=master
+FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GITIAN_TAG=tor-browser-builder-3.x-7
More information about the tor-commits
mailing list