[tor-commits] [tor-browser-bundle/master] Bug 11556: Fix broken bundling due to HTTPS-E 3.5.

gk at torproject.org gk at torproject.org
Fri Apr 25 07:55:50 UTC 2014


commit ffe165972b6290df94d969675b9f2660cf2eedbb
Author: Georg Koppen <gk at torproject.org>
Date:   Fri Apr 25 09:03:02 2014 +0000

    Bug 11556: Fix broken bundling due to HTTPS-E 3.5.
    
    Starting with version 3.5 HTTPS-Everywhere uses Python 2.7 for
    assembling its rules in a SQLite database. This caused our bundling
    step to be broken on all platforms: On Linux (Ubuntu 10.04) there is
    no Python 2.7 available via the package management and the Windows and
    OS X bundling descriptors missed some necessary packages.
---
 gitian/descriptors/linux/gitian-bundle.yml   |   10 ++++++++++
 gitian/descriptors/linux/gitian-utils.yml    |   24 +++++++++++++++++++++---
 gitian/descriptors/mac/gitian-bundle.yml     |    3 +++
 gitian/descriptors/windows/gitian-bundle.yml |    5 ++++-
 gitian/fetch-inputs.sh                       |    6 ++++--
 gitian/gpg/LXML.gpg                          |  Bin 0 -> 1450 bytes
 gitian/mkbundle-linux.sh                     |    9 +++++++--
 gitian/versions                              |    6 ++++--
 gitian/versions.alpha                        |    6 ++++--
 gitian/versions.beta                         |    6 ++++--
 gitian/versions.nightly                      |    6 ++++--
 11 files changed, 65 insertions(+), 16 deletions(-)

diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 39a7747..c16589a 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -13,6 +13,8 @@ packages:
 - "python"
 - "rnv"
 - "xz-utils"
+- "libxslt1.1"
+- "sqlite3"
 reference_datetime: "2000-01-01 00:00:00"
 remotes:
 - "url": "https://git.torproject.org/tor-launcher.git"
@@ -29,6 +31,10 @@ files:
 - "tor-linux64-gbuilt.zip"
 - "pluggable-transports-linux32-gbuilt.zip"
 - "pluggable-transports-linux64-gbuilt.zip"
+- "python-linux32-utils.zip"
+- "python-linux64-utils.zip"
+- "lxml-linux32-utils.zip"
+- "lxml-linux64-utils.zip"
 - "torrc-defaults-appendix-linux"
 - "bridge_prefs.js"
 - "relativelink-src.zip"
@@ -57,6 +63,10 @@ script: |
   mkdir -p tor-browser/Data/Browser/profile.default/extensions/https-everywhere at eff.org
   mkdir -p tor-browser/Data/Browser/Caches
   mkdir -p tor-browser/Docs/sources/
+  # Preparing Python for HTTPS-Everywhere.
+  unzip -d $INSTDIR python-linux$GBUILD_BITS-utils.zip
+  export PATH=$INSTDIR/python/bin:$PATH
+  unzip -d $INSTDIR/python/lib/python2.7 lxml-linux$GBUILD_BITS-utils.zip
   #
   cd tor-launcher
   make clean
diff --git a/gitian/descriptors/linux/gitian-utils.yml b/gitian/descriptors/linux/gitian-utils.yml
index c4052f7..427e69b 100644
--- a/gitian/descriptors/linux/gitian-utils.yml
+++ b/gitian/descriptors/linux/gitian-utils.yml
@@ -15,6 +15,11 @@ packages:
 - "faketime"
 - "libtool"
 - "hardening-wrapper"
+# These packages are needed for Python due to HTTPS-Everywhere >= 3.5.
+- "libsqlite3-dev"
+- "zlib1g-dev"
+- "libxml2-dev"
+- "libxslt-dev"
 reference_datetime: "2000-01-01 00:00:00"
 remotes:
 - "url": "https://github.com/libevent/libevent.git"
@@ -24,6 +29,7 @@ files:
 - "dzip.sh"
 - "openssl.tar.gz"
 - "python.tar.bz2"
+- "lxml.tar.gz"
 script: |
   INSTDIR="$HOME/install"
   source versions
@@ -66,15 +72,27 @@ script: |
   cd ..
 
   # Building Python
-  # Fx 24 ESR does not work with Python < 2.7 anymore. But 10.04 does only ship
-  # with Python 2.6. Thus, we compile 2.7 ourselves...
+  # Fx 24 ESR and HTTPS Everywhere >= 3.5 do not work with Python < 2.7 anymore.
+  # But 10.04 does only ship with Python 2.6. Thus, we compile 2.7 ourselves...
   tar xjf python.tar.bz2
   cd Python-*
   ./configure
   make $MAKEOPTS altinstall prefix=$INSTDIR/python exec-prefix=$INSTDIR/python
   cd ..
 
-  # Grabbing the results
+  # Building the Python lxml module
+  tar xzf lxml.tar.gz
+  cd lxml-*
+  # Make sure we use our freshly built python binary here. Otherwise bad things
+  # may happen when we do so in the bundle step assembling the HTTPS-Everywhere
+  # rules.
+  $INSTDIR/python/bin/python2.7 setup.py build
+  cd build/lib*
+  ~/build/dzip.sh lxml-$LXML_VER-linux$GBUILD_BITS-utils.zip lxml
+  cp *-utils.zip $OUTDIR
+  cd ../../../
+
+  # Grabbing the remaining results
   cd $INSTDIR
   ~/build/dzip.sh openssl-$OPENSSL_VER-linux$GBUILD_BITS-utils.zip openssl
   # TODO: It is not guaranteed we have a X.X.XX-style version.
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index b7ecf3a..263ca57 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -15,6 +15,9 @@ packages:
 - "cmake"
 - "zlib1g-dev"
 - "libbz2-dev"
+# Both packages are needed for assembling the HTTPS-Everywhere rules since 3.5.
+- "python-lxml"
+- "sqlite3"
 reference_datetime: "2000-01-01 00:00:00"
 remotes:
 - "url": "https://git.torproject.org/tor-launcher.git"
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index fddb611..457fa7b 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -8,11 +8,14 @@ packages:
 - "git-core"
 - "unzip"
 - "zip"
-# This is needed for compiling the StartTorBrowserBundle.exe.
+# This package is needed for compiling the StartTorBrowserBundle.exe.
 - "mingw-w64"
 - "nsis"
 - "faketime"
 - "python"
+# Both packages are needed for assembling the HTTPS-Everywhere rules since 3.5.
+- "python-lxml"
+- "sqlite3"
 reference_datetime: "2000-01-01 00:00:00"
 remotes:
 - "url": "https://github.com/moba/tbb-windows-installer.git"
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 6b8ae99..f80348e 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -133,11 +133,12 @@ do
   fi
 done
 
-for i in BINUTILS GCC PYTHON PYCRYPTO M2CRYPTO PYTHON_MSI GMP
+for i in BINUTILS GCC PYTHON PYCRYPTO M2CRYPTO PYTHON_MSI GMP LXML
 do
   PACKAGE="${i}_PACKAGE"
   URL="${i}_URL"
-  if [ "${i}" == "PYTHON" -o "${i}" == "PYCRYPTO" -o "${i}" == "M2CRYPTO" -o "${i}" == "PYTHON_MSI" ]; then
+  if [ "${i}" == "PYTHON" -o "${i}" == "PYCRYPTO" -o "${i}" == "M2CRYPTO" -o \
+       "${i}" == "PYTHON_MSI" -o "${i}" == "LXML" ]; then
     SUFFIX="asc"
   else
     SUFFIX="sig"
@@ -275,6 +276,7 @@ ln -sf "$M2CRYPTO_PACKAGE" m2crypto.tar.gz
 ln -sf "$PY2EXE_PACKAGE" py2exe.exe
 ln -sf "$SETUPTOOLS_PACKAGE" setuptools.tar.gz
 ln -sf "$GMP_PACKAGE" gmp.tar.bz2
+ln -sf "$LXML_PACKAGE" lxml.tar.gz
 
 # Fetch latest gitian-builder itself
 # XXX - this is broken if a non-standard inputs dir is selected using the command line flag.
diff --git a/gitian/gpg/LXML.gpg b/gitian/gpg/LXML.gpg
new file mode 100644
index 0000000..fd5f415
Binary files /dev/null and b/gitian/gpg/LXML.gpg differ
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index b21d9b4..1328a9c 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -93,8 +93,9 @@ if [ ! -f inputs/openssl-$OPENSSL_VER-linux32-utils.zip -o \
      ! -f inputs/libevent-${LIBEVENT_TAG_ORIG:8:6}-linux32-utils.zip -o \
      ! -f inputs/libevent-${LIBEVENT_TAG_ORIG:8:6}-linux64-utils.zip -o \
      ! -f inputs/python-$PYTHON_VER-linux32-utils.zip -o \
-     ! -f inputs/python-$PYTHON_VER-linux64-utils.zip ];
-
+     ! -f inputs/python-$PYTHON_VER-linux64-utils.zip -o \
+     ! -f inputs/lxml-$LXML_VER-linux32-utils.zip -o \
+     ! -f inputs/lxml-$LXML_VER-linux64-utils.zip ];
 then
   echo
   echo "****** Starting Utilities Component of Linux Bundle (1/5 for Linux) ******"
@@ -116,6 +117,8 @@ then
   ln -sf libevent-${LIBEVENT_TAG_ORIG:8:6}-linux64-utils.zip libevent-linux64-utils.zip
   ln -sf python-$PYTHON_VER-linux32-utils.zip python-linux32-utils.zip
   ln -sf python-$PYTHON_VER-linux64-utils.zip python-linux64-utils.zip
+  ln -sf lxml-$LXML_VER-linux32-utils.zip lxml-linux32-utils.zip
+  ln -sf lxml-$LXML_VER-linux64-utils.zip lxml-linux64-utils.zip
   cd ..
   #cp -a result/tor-linux-res.yml $GITIAN_DIR/inputs/
 else
@@ -132,6 +135,8 @@ else
   ln -sf libevent-${LIBEVENT_TAG_ORIG:8:6}-linux64-utils.zip libevent-linux64-utils.zip
   ln -sf python-$PYTHON_VER-linux32-utils.zip python-linux32-utils.zip
   ln -sf python-$PYTHON_VER-linux64-utils.zip python-linux64-utils.zip
+  ln -sf lxml-$LXML_VER-linux32-utils.zip lxml-linux32-utils.zip
+  ln -sf lxml-$LXML_VER-linux64-utils.zip lxml-linux64-utils.zip
   cd ..
 fi
 
diff --git a/gitian/versions b/gitian/versions
index 97c6d33..a9c372c 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -9,8 +9,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-1-build1
 TOR_TAG=tor-0.2.4.21
 TORLAUNCHER_TAG=0.2.4.4
 TORBUTTON_TAG=1.6.7.0
-# XXX: 3.5 requires python2.7, see #11556
-HTTPSE_TAG=3.4.5
+HTTPSE_TAG=3.5
 NSIS_TAG=v0.1
 ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
@@ -37,6 +36,7 @@ TWISTED_VER=13.1.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
+LXML_VER=3.3.5
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -59,6 +59,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
 M2CRYPTO_PACKAGE=M2Crypto-${M2CRYPTO_VER}.tar.gz
 PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
+LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -98,3 +99,4 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PACKAGE}
 M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKAGE}
 PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${PY2EXE_VER}/${PY2EXE_PACKAGE}
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
+LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index ddfa06b..9c5fa02 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -10,8 +10,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-1-build2
 TOR_TAG=tor-0.2.5.3-alpha
 TORLAUNCHER_TAG=0.2.5.3
 TORBUTTON_TAG=1.6.8.1
-# XXX: 3.5 requires python2.7, see #11556
-HTTPSE_TAG=3.4.5
+HTTPSE_TAG=3.5
 NSIS_TAG=v0.1
 ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
@@ -38,6 +37,7 @@ TWISTED_VER=13.1.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
+LXML_VER=3.3.5
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -60,6 +60,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
 M2CRYPTO_PACKAGE=M2Crypto-${M2CRYPTO_VER}.tar.gz
 PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
+LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -99,3 +100,4 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PACKAGE}
 M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKAGE}
 PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${PY2EXE_VER}/${PY2EXE_PACKAGE}
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
+LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 7933efd..f6c24a2 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -10,8 +10,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-1-build1
 TOR_TAG=tor-0.2.4.21
 TORLAUNCHER_TAG=0.2.5.3
 TORBUTTON_TAG=1.6.8.1
-# XXX: 3.5 requires python2.7, see #11556
-HTTPSE_TAG=3.4.5
+HTTPSE_TAG=3.5
 NSIS_TAG=v0.1
 ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
@@ -38,6 +37,7 @@ TWISTED_VER=13.1.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
+LXML_VER=3.3.5
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -60,6 +60,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
 M2CRYPTO_PACKAGE=M2Crypto-${M2CRYPTO_VER}.tar.gz
 PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
+LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -99,3 +100,4 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PACKAGE}
 M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKAGE}
 PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${PY2EXE_VER}/${PY2EXE_PACKAGE}
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
+LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 1596918..c8a8d7c 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -10,8 +10,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-1
 TOR_TAG=master
 TORLAUNCHER_TAG=master
 TORBUTTON_TAG=master
-# XXX: Master and 3.5 require python2.7, see #11556
-HTTPSE_TAG=3.4.5
+HTTPSE_TAG=master
 NSIS_TAG=master
 ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
@@ -39,6 +38,7 @@ TWISTED_VER=13.1.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
+LXML_VER=3.3.5
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -61,6 +61,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
 M2CRYPTO_PACKAGE=M2Crypto-${M2CRYPTO_VER}.tar.gz
 PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
+LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -100,3 +101,4 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PACKAGE}
 M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKAGE}
 PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${PY2EXE_VER}/${PY2EXE_PACKAGE}
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
+LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}



More information about the tor-commits mailing list