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

[tor-commits] [tor-browser-bundle/master] Bug 11535: Add txsocksx dependency.



commit b83b504594a1de3359aea4afceb80837408bc99f
Author: Georg Koppen <gk@xxxxxxxxxxxxxx>
Date:   Thu May 8 09:57:49 2014 +0000

    Bug 11535: Add txsocksx dependency.
    
    We not only add the txsocksx dependency but Parsley as well as it is
    needed by txsocksx. We further avoid downloading vcversioner during
    build time (that is during running the gitian-pluggable-transport build
    script) pretending we already have it locally.
---
 .../linux/gitian-pluggable-transports.yml          |   23 ++++++++++++++++++++
 .../mac/gitian-pluggable-transports.yml            |   23 ++++++++++++++++++++
 .../windows/gitian-pluggable-transports.yml        |   19 ++++++++++++++++
 gitian/fetch-inputs.sh                             |    6 +++--
 gitian/mkbundle-linux.sh                           |    2 +-
 gitian/mkbundle-mac.sh                             |    2 +-
 gitian/mkbundle-windows.sh                         |    2 +-
 gitian/verify-tags.sh                              |    3 ++-
 gitian/versions.beta                               |   13 +++++++----
 gitian/versions.nightly                            |   14 +++++++-----
 10 files changed, 92 insertions(+), 15 deletions(-)

diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 4423b50..25109b8 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -25,6 +25,8 @@ remotes:
   "dir": "flashproxy"
 - "url": "https://github.com/kpdyer/fteproxy.git";
   "dir": "fteproxy"
+- "url": "https://github.com/habnabit/txsocksx.git";
+  "dir": "txsocksx"
 files:
 - "openssl.tar.gz"
 - "gmp.tar.bz2"
@@ -34,6 +36,7 @@ files:
 - "zope.interface.zip"
 - "twisted.tar.bz2"
 - "m2crypto.tar.gz"
+- "parsley.tar.gz"
 - "dzip.sh"
 script: |
   INSTDIR="$HOME/install"
@@ -106,6 +109,26 @@ script: |
   cp -a build/twisted $PTDIR/
   cd ..
   #
+  tar xzf parsley.tar.gz
+  cd Parsley-*
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  $PYTHON setup.py build --build-lib build
+  cp -a build/parsley.py $PTDIR/
+  cp -a build/ometa $PTDIR/
+  cp -a build/terml $PTDIR/
+  cd ..
+  #
+  cd txsocksx
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  # Let's pretend we have the setup dependency already as we don't want to get
+  # it downloaded during building. Just pretending and thus avoiding another
+  # dependency should be fine here as txsocksx catches the exception due to
+  # missing __version__ and __sha__ .
+  mkdir vcversioner-1.14.1.1-py2.6.egg
+  $PYTHON setup.py build --build-lib build
+  cp -a build/txsocksx $PTDIR/
+  cd ..
+  #
   cd obfsproxy
   find -type f | xargs touch --date="$REFERENCE_DATETIME"
   $PYTHON setup.py build --build-lib build
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index 920b231..df73197 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -25,6 +25,8 @@ remotes:
   "dir": "flashproxy"
 - "url": "https://github.com/kpdyer/fteproxy.git";
   "dir": "fteproxy"
+- "url": "https://github.com/habnabit/txsocksx.git";
+  "dir": "txsocksx"
 files:
 - "openssl.tar.gz"
 - "gmp.tar.bz2"
@@ -34,6 +36,7 @@ files:
 - "zope.interface.zip"
 - "twisted.tar.bz2"
 - "m2crypto.tar.gz"
+- "parsley.tar.gz"
 - "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
 - "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
 - "dzip.sh"
@@ -126,6 +129,26 @@ script: |
   cp -a build/twisted $PTDIR/
   cd ..
   #
+  tar xzf parsley.tar.gz
+  cd Parsley-*
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  python setup.py build --build-lib build
+  cp -a build/parsley.py $PTDIR/
+  cp -a build/ometa $PTDIR/
+  cp -a build/terml $PTDIR/
+  cd ..
+  #
+  cd txsocksx
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  # Let's pretend we have the setup dependency already as we don't want to get
+  # it downloaded during building. Just pretending and thus avoiding another
+  # dependency should be fine here as txsocksx catches the exception due to
+  # missing __version__ and __sha__ .
+  mkdir vcversioner-1.14.1.1-py2.7.egg
+  python setup.py build --build-lib build
+  cp -a build/txsocksx $PTDIR/
+  cd ..
+  #
   cd obfsproxy
   find -type f | xargs touch --date="$REFERENCE_DATETIME"
   python setup.py build --build-lib build
diff --git a/gitian/descriptors/windows/gitian-pluggable-transports.yml b/gitian/descriptors/windows/gitian-pluggable-transports.yml
index 3624d04..cf7595e 100644
--- a/gitian/descriptors/windows/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/windows/gitian-pluggable-transports.yml
@@ -26,6 +26,8 @@ remotes:
   "dir": "flashproxy"
 - "url": "https://github.com/kpdyer/fteproxy.git";
   "dir": "fteproxy"
+- "url": "https://github.com/habnabit/txsocksx.git";
+  "dir": "txsocksx"
 files:
 - "openssl.tar.gz"
 - "gmp.tar.bz2"
@@ -36,6 +38,7 @@ files:
 - "zope.interface.zip"
 - "twisted.tar.bz2"
 - "m2crypto.tar.gz"
+- "parsley.tar.gz"
 - "ubuntu-wine.gpg"
 - "wine-wrappers"
 - "python.msi"
@@ -193,6 +196,22 @@ script: |
   LD_PRELOAD= $INSTPYTHON setup.py install --single-version-externally-managed --record /dev/null
   cd ..
   #
+  tar xzf parsley.tar.gz
+  cd Parsley-*
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  LD_PRELOAD= $INSTPYTHON setup.py install
+  cd ..
+  #
+  cd txsocksx
+  find -type f | xargs touch --date="$REFERENCE_DATETIME"
+  # Let's pretend we have the setup dependency already as we don't want to get
+  # it downloaded during building. Just pretending and thus avoiding another
+  # dependency should be fine here as txsocksx catches the exception due to
+  # missing __version__ and __sha__ .
+  mkdir vcversioner-1.14.1.1-py2.7.egg
+  LD_PRELOAD= $INSTPYTHON setup.py install
+  cd ..
+  #
   # py2exe byte-compiles to .pyc files, which embed the mtime of the parent .py file.
   find $INSTDIR/python -type f | xargs touch --date="$REFERENCE_DATETIME"
   #
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 03827b6..c89d340 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -178,7 +178,7 @@ do
   get "${!PACKAGE}" "${MIRROR_URL_ASN}${!PACKAGE}"
 done
 
-for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS
+for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY
 do
   URL="${i}_URL"
   PACKAGE="${i}_PACKAGE"
@@ -229,7 +229,7 @@ fi
 
 # Verify packages with weak or no signatures via direct sha256 check
 # (OpenSSL is signed with MD5, and OSXSDK is not signed at all)
-for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MINGW MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP
+for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MINGW MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY
 do
    PACKAGE="${i}_PACKAGE"
    HASH="${i}_HASH"
@@ -281,6 +281,7 @@ 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
+ln -sf "$PARSLEY_PACKAGE" parsley.tar.gz
 
 # Fetch latest gitian-builder itself
 # XXX - this is broken if a non-standard inputs dir is selected using the command line flag.
@@ -308,6 +309,7 @@ obfsproxy https://git.torproject.org/pluggable-transports/obfsproxy.git $OBFSPRO
 flashproxy            https://git.torproject.org/flashproxy.git $FLASHPROXY_TAG
 fteproxy              https://github.com/kpdyer/fteproxy.git $FTEPROXY_TAG
 libdmg-hfsplus        https://github.com/vasi/libdmg-hfsplus.git $LIBDMG_TAG
+txsocksx              https://github.com/habnabit/txsocksx.git $TXSOCKSX_TAG
 EOF
 
 exit 0
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index fc88092..d6186d2 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -204,7 +204,7 @@ then
   echo "****** Starting Pluggable Transports Component of Linux Bundle (4/5 for Linux) ******"
   echo
 
-  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
+  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
   if [ $? -ne 0 ];
   then
     #mv var/build.log ./pluggable-transports-fail-linux.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index 8d3c73e..a7752a9 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -148,7 +148,7 @@ then
   echo "****** Starting Pluggable Transports Component of Mac Bundle (3/4 for Mac) ******"
   echo 
 
-  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG $DESCRIPTOR_DIR/mac/gitian-pluggable-transports.yml
+  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG $DESCRIPTOR_DIR/mac/gitian-pluggable-transports.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 4a176bf..f93fb57 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -143,7 +143,7 @@ then
   echo "****** Starting Pluggable Transports Component of Windows Bundle (3/4 for Windows) ******"
   echo 
 
-  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG $DESCRIPTOR_DIR/windows/gitian-pluggable-transports.yml
+  ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG $DESCRIPTOR_DIR/windows/gitian-pluggable-transports.yml
   if [ $? -ne 0 ];
   then
     #mv var/build.log ./pluggable-transports-fail-win32.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index 8829b9d..e5e9f3f 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -107,6 +107,7 @@ while read dir commit; do
 done << EOF
 libdmg-hfsplus          $LIBDMG_TAG
 fteproxy                $FTEPROXY_TAG
+txsocksx                $TXSOCKSX_TAG
 EOF
 
 # Verify signatures on signed packages
@@ -130,7 +131,7 @@ done
 
 # Verify packages with weak or no signatures via direct sha256 check
 # (OpenSSL is signed with MD5, and OSXSDK is not signed at all)
-for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MINGW MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP
+for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MINGW MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY
 do
    PACKAGE="${i}_PACKAGE"
    HASH="${i}_HASH"
diff --git a/gitian/versions.beta b/gitian/versions.beta
index c3faa7b..d10c87a 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -15,11 +15,12 @@ NSIS_TAG=v0.1
 ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
 MINGW_REV=6184
-PYPTLIB_TAG=pyptlib-0.0.5
-OBFSPROXY_TAG=obfsproxy-0.2.4
+PYPTLIB_TAG=pyptlib-0.0.6
+OBFSPROXY_TAG=obfsproxy-0.2.9
 FLASHPROXY_TAG=1.6
 FTEPROXY_TAG=55d81d2f0a4fab759c1ed8aca78dd3a5db6e75c6 # unsigned 0.2.13
 LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
+TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433
 
 GITIAN_TAG=tor-browser-builder-3.x-5
 
@@ -33,11 +34,12 @@ PYCRYPTO_VER=2.6.1
 ARGPARSE_VER=1.2.1
 PYYAML_VER=3.11
 ZOPEINTERFACE_VER=4.0.5
-TWISTED_VER=13.1.0
+TWISTED_VER=13.2.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
 LXML_VER=3.3.5
+PARSLEY_VER=1.2
 HTTPSE_VER=3.5.1
 
 ## File names for the source packages
@@ -63,6 +65,7 @@ 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
+PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -78,10 +81,11 @@ PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
 ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
 PYYAML_HASH=c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8
 ZOPEINTERFACE_HASH=1a7c84716bbd9981915b64a81d8a3f076a5934a8c8df4224655469b3564940cc
-TWISTED_HASH=110e957dd8fc4c6eaba8abe4f0477e60b2873e3cf1c260325863fd2ef69341c6
+TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
 M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
 PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
 SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
+PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
 
 ## Non-git package URLs
 OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -105,3 +109,4 @@ M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKA
 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}
+PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PACKAGE}
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 355b68a..635fa70 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -16,11 +16,11 @@ ZLIB_TAG=v1.2.8
 LIBEVENT_TAG=release-2.0.21-stable
 MINGW_REV=6184
 PYPTLIB_TAG=master
-# Hardcoding this commit until #11535 is fixed
-OBFSPROXY_TAG=b58fd9e1ef264796b6bddbde5db117472fb674a0
+OBFSPROXY_TAG=master
 FLASHPROXY_TAG=master
-FTEPROXY_TAG=0.2.13
+FTEPROXY_TAG=master
 LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
+TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433
 
 GITIAN_TAG=tor-browser-builder-3.x-5
 
@@ -34,12 +34,13 @@ PYCRYPTO_VER=2.6.1
 ARGPARSE_VER=1.2.1
 PYYAML_VER=3.11
 ZOPEINTERFACE_VER=4.0.5
-TWISTED_VER=13.1.0
+TWISTED_VER=13.2.0
 M2CRYPTO_VER=0.21.1
 PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
 LXML_VER=3.3.5
 HTTPSE_VER=3.5.1
+PARSLEY_VER=1.2
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -64,6 +65,7 @@ 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
+PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
 
 # Hashes for packages with weak sigs or no sigs
 OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -79,10 +81,11 @@ PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
 ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
 PYYAML_HASH=c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8
 ZOPEINTERFACE_HASH=1a7c84716bbd9981915b64a81d8a3f076a5934a8c8df4224655469b3564940cc
-TWISTED_HASH=110e957dd8fc4c6eaba8abe4f0477e60b2873e3cf1c260325863fd2ef69341c6
+TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
 M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
 PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
 SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
+PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
 
 ## Non-git package URLs
 OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -106,3 +109,4 @@ M2CRYPTO_URL=https://pypi.python.org/packages/source/M/M2Crypto/${M2CRYPTO_PACKA
 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}
+PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PACKAGE}

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