[tor-commits] [tor-browser-bundle/master] Bug 17895: Build and use NSIS 2.51 with Debian patches

gk at torproject.org gk at torproject.org
Fri Apr 22 12:54:37 UTC 2016


commit 186c4e271355646eb4b9faadffaaa7fc0f986a3e
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Thu Apr 21 23:46:08 2016 +0200

    Bug 17895: Build and use NSIS 2.51 with Debian patches
---
 gitian/descriptors/windows/gitian-bundle.yml     |  5 ++++-
 gitian/descriptors/windows/gitian-utils.yml      | 28 ++++++++++++++++++++++++
 gitian/fetch-inputs.sh                           |  6 +++--
 gitian/mkbundle-windows.sh                       |  5 ++++-
 gitian/patches/nsis-missing-unistd-include.patch | 11 ++++++++++
 gitian/verify-tags.sh                            |  2 +-
 gitian/versions                                  |  7 ++++++
 gitian/versions.alpha                            |  7 ++++++
 gitian/versions.nightly                          |  7 ++++++
 9 files changed, 73 insertions(+), 5 deletions(-)

diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index 5a165a7..4fe4bb6 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -7,7 +7,6 @@ architectures:
 packages:
 - "unzip"
 - "zip"
-- "nsis"
 # Needed to compensate NSIS's failure of regenerating the PE-file checksum and
 # proper padding.
 - "python-pefile"
@@ -50,6 +49,7 @@ files:
 - "mar-tools-win32.zip"
 - "tbb-docs.zip"
 - "pe_checksum_fix.py"
+- "nsis-win32-utils.zip"
 script: |
   INSTDIR="$HOME/install"
   source versions
@@ -71,6 +71,9 @@ script: |
   # Extract the MAR tools.
   unzip -d ~/build ~/build/mar-tools-win32.zip
   MARTOOLS=~/build/mar-tools
+  # Extract nsis
+  unzip -d $INSTDIR ~/build/nsis-win32-utils.zip
+  export PATH=$INSTDIR/nsis/bin:$PATH
   #
   mkdir -p $OUTDIR/
   mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff at eff.org
diff --git a/gitian/descriptors/windows/gitian-utils.yml b/gitian/descriptors/windows/gitian-utils.yml
index ae938af..2767bad 100644
--- a/gitian/descriptors/windows/gitian-utils.yml
+++ b/gitian/descriptors/windows/gitian-utils.yml
@@ -13,6 +13,9 @@ packages:
 - "g++-mingw-w64-i686"
 # Needed for compiling gcc.
 - "libmpc-dev"
+# Needed for compiling nsis.
+- "scons"
+- "libcppunit-dev"
 reference_datetime: "2000-01-01 00:00:00"
 remotes:
 - "url": "http://git.code.sf.net/p/mingw-w64/mingw-w64"
@@ -30,6 +33,9 @@ files:
 - "peXXigen.patch"
 - "versions"
 - "dzip.sh"
+- "nsis.tar.bz2"
+- "nsis-debian.tar.xz"
+- "nsis-missing-unistd-include.patch"
 script: |
   INSTDIR="$HOME/install"
   source versions
@@ -157,6 +163,27 @@ script: |
   make install
   cd ..
 
+  # Building nsis
+  tar xf nsis.tar.bz2
+  cd nsis-${NSIS_VER}-src
+  tar xf ../nsis-debian.tar.xz
+  patch -p1 < ../nsis-missing-unistd-include.patch
+  # nsis_system_zlib.patch and parallel_build.patch cause build errors
+  # so we remove them
+  rm -f debian/patches/nsis_system_zlib.patch
+  rm -f debian/patches/parallel_build.patch
+  for patch in $(grep '\.patch$' debian/patches/series)
+  do
+     [ -f debian/patches/$patch ] && patch -p1 < debian/patches/$patch
+  done
+  # When the gcc-mingw-w64-i686 package is installed, files from
+  # /usr/i686-w64-mingw32/include are used, causing the build to fail.
+  # To prevent that we remove the gcc-mingw-w64-i686 package.
+  sudo -i apt-get remove -y gcc-mingw-w64-i686
+  scons APPEND_CCFLAGS="-fgnu89-inline" VERSION=${NSIS_VER} SKIPUTILS='NSIS Menu' XGCC_W32_PREFIX=i686-w64-mingw32- PREFIX=$INSTDIR/nsis
+  scons APPEND_CCFLAGS="-fgnu89-inline" VERSION=${NSIS_VER} SKIPUTILS='NSIS Menu' XGCC_W32_PREFIX=i686-w64-mingw32- PREFIX=$INSTDIR/nsis install
+  cd ..
+
   # Grabbing the remaining results
   cd $INSTDIR
   # We might want to bump binutils independent of bumping mingw-w64.
@@ -168,4 +195,5 @@ script: |
   ~/build/dzip.sh openssl-$OPENSSL_VER-win32-utils.zip openssl
   ~/build/dzip.sh gmp-$GMP_VER-win32-utils.zip gmp
   ~/build/dzip.sh gcclibs-$GCC_VER-win32-utils.zip gcclibs
+  ~/build/dzip.sh nsis-$NSIS_VER-win32-utils.zip nsis
   cp *-utils.zip $OUTDIR/
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index da487f4..99b984b 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -162,7 +162,7 @@ do
   get "${!PACKAGE}" "${MIRROR_URL_ASN}${!PACKAGE}"
 done
 
-for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT
+for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
 do
   URL="${i}_URL"
   PACKAGE="${i}_PACKAGE"
@@ -174,7 +174,7 @@ wget -U "" -N ${NOSCRIPT_URL}
 
 # Verify packages with weak or no signatures via direct sha256 check
 # (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
 do
    PACKAGE="${i}_PACKAGE"
    HASH="${i}_HASH"
@@ -244,6 +244,8 @@ ln -sf "$SETUPTOOLS_PACKAGE" setuptools.tar.gz
 ln -sf "$GMP_PACKAGE" gmp.tar.bz2
 ln -sf "$PARSLEY_PACKAGE" parsley.tar.gz
 ln -sf "$GO_PACKAGE" go.tar.gz
+ln -sf "$NSIS_PACKAGE" nsis.tar.bz2
+ln -sf "$NSIS_DEBIAN_PACKAGE" nsis-debian.tar.xz
 
 # 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/mkbundle-windows.sh b/gitian/mkbundle-windows.sh
index 2de0f1e..1afa840 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -106,7 +106,8 @@ if [ ! -f inputs/binutils-$BINUTILS_VER-win32-utils.zip -o \
      ! -f inputs/zlib-${ZLIB_TAG_ORIG#v}-win32-utils.zip -o \
      ! -f inputs/libevent-${LIBEVENT_TAG_ORIG#release-}-win32-utils.zip -o \
      ! -f inputs/openssl-$OPENSSL_VER-win32-utils.zip -o \
-     ! -f inputs/gmp-$GMP_VER-win32-utils.zip ];
+     ! -f inputs/gmp-$GMP_VER-win32-utils.zip -o \
+     ! -f inputs/nsis-$NSIS_VER-win32-utils.zip ];
 then
   echo
   echo "****** Starting Utilities Component of Windows Bundle (1/5 for Windows) ******"
@@ -128,6 +129,7 @@ then
   ln -sf gmp-$GMP_VER-win32-utils.zip gmp-win32-utils.zip
   ln -sf gcclibs-$GCC_VER-win32-utils.zip gcclibs-win32-utils.zip
   ln -sf gcc-$GCC_VER-linux32-precise-utils.zip gcc-linux32-precise-utils.zip
+  ln -sf nsis-$NSIS_VER-win32-utils.zip nsis-win32-utils.zip
   cd ..
   #cp -a result/utils-win-res.yml inputs/
 else
@@ -144,6 +146,7 @@ else
   ln -sf gmp-$GMP_VER-win32-utils.zip gmp-win32-utils.zip
   ln -sf gcclibs-$GCC_VER-win32-utils.zip gcclibs-win32-utils.zip
   ln -sf gcc-$GCC_VER-linux32-precise-utils.zip gcc-linux32-precise-utils.zip
+  ln -sf nsis-$NSIS_VER-win32-utils.zip nsis-win32-utils.zip
   cd ..
 fi
 
diff --git a/gitian/patches/nsis-missing-unistd-include.patch b/gitian/patches/nsis-missing-unistd-include.patch
new file mode 100644
index 0000000..4f4fdd2
--- /dev/null
+++ b/gitian/patches/nsis-missing-unistd-include.patch
@@ -0,0 +1,11 @@
+--- nsis-2.46-src.old/Source/util.h	2009-03-28 09:47:26.000000000 +0000
++++ nsis-2.46-src/Source/util.h	2012-01-16 12:22:14.967416817 +0000
+@@ -17,6 +17,8 @@
+ #ifndef _UTIL_H_
+ #define _UTIL_H_
+ 
++#include <unistd.h>
++
+ #include <string> // for std::string
+ 
+ #include "boost/scoped_ptr.hpp" // for boost::scoped_ptr
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index 95bdaf1..a966626 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -143,7 +143,7 @@ done
 
 # Verify packages with weak or no signatures via direct sha256 check
 # (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
 do
    PACKAGE="${i}_PACKAGE"
    HASH="${i}_HASH"
diff --git a/gitian/versions b/gitian/versions
index 4dd8aa5..a18afab 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -54,6 +54,7 @@ PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
 PARSLEY_VER=1.2
 GO_VER=1.4.2
+NSIS_VER=2.51
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -75,6 +76,8 @@ PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
 PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
 GO_PACKAGE=go${GO_VER}.src.tar.gz
+NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
+NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
 STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
 NOTOEMOJIFONT_PACKAGE=NotoEmoji-Regular.ttf
 NOTOJPFONT_PACKAGE=NotoSansJP-Regular.otf
@@ -99,6 +102,8 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
 SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
 PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
 GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
+NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
 GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
 STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
 NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
@@ -126,6 +131,8 @@ PY2EXE_URL=http://liquidtelecom.dl.sourceforge.net/project/py2exe/py2exe/${PY2EX
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
 PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PACKAGE}
 GO_URL=https://golang.org/dl/${GO_PACKAGE}
+NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
+NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIAN_PACKAGE}
 STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
 NOTOEMOJIFONT_URL=https://github.com/googlei18n/noto-emoji/raw/2f1ffdd6fbbd05d6f382138a3d3adcd89c5ce800/fonts/${NOTOEMOJIFONT_PACKAGE}
 NOTOCJKBASE_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a6d49abbfb5c83d0209584158
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 7e1dd98..0ba31d2 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -61,6 +61,7 @@ PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
 PARSLEY_VER=1.2
 GO_VER=1.4.2
+NSIS_VER=2.51
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -83,6 +84,8 @@ PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
 PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
 GO_PACKAGE=go${GO_VER}.src.tar.gz
+NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
+NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
 STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
 NOTOEMOJIFONT_PACKAGE=NotoEmoji-Regular.ttf
 NOTOJPFONT_PACKAGE=NotoSansJP-Regular.otf
@@ -108,6 +111,8 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
 SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
 PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
 GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
+NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
 GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
 STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
 NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
@@ -136,6 +141,8 @@ PY2EXE_URL=http://liquidtelecom.dl.sourceforge.net/project/py2exe/py2exe/${PY2EX
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
 PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PACKAGE}
 GO_URL=https://golang.org/dl/${GO_PACKAGE}
+NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
+NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIAN_PACKAGE}
 STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
 NOTOEMOJIFONT_URL=https://github.com/googlei18n/noto-emoji/raw/2f1ffdd6fbbd05d6f382138a3d3adcd89c5ce800/fonts/${NOTOEMOJIFONT_PACKAGE}
 NOTOCJKBASE_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a6d49abbfb5c83d0209584158
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index bf2e2a6..dab84ef 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -68,6 +68,7 @@ PY2EXE_VER=0.6.9
 SETUPTOOLS_VER=1.4
 PARSLEY_VER=1.2
 GO_VER=1.4.2
+NSIS_VER=2.51
 
 ## File names for the source packages
 OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -90,6 +91,8 @@ PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
 SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
 PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
 GO_PACKAGE=go${GO_VER}.src.tar.gz
+NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
+NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
 STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
 NOTOEMOJIFONT_PACKAGE=NotoEmoji-Regular.ttf
 NOTOJPFONT_PACKAGE=NotoSansJP-Regular.otf
@@ -115,6 +118,8 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
 SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
 PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
 GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
+NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
 GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
 STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
 NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
@@ -143,6 +148,8 @@ PY2EXE_URL=http://liquidtelecom.dl.sourceforge.net/project/py2exe/py2exe/${PY2EX
 SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUPTOOLS_PACKAGE}
 PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PACKAGE}
 GO_URL=https://golang.org/dl/${GO_PACKAGE}
+NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
+NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIAN_PACKAGE}
 STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
 NOTOEMOJIFONT_URL=https://github.com/googlei18n/noto-emoji/raw/2f1ffdd6fbbd05d6f382138a3d3adcd89c5ce800/fonts/${NOTOEMOJIFONT_PACKAGE}
 NOTOCJKBASE_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a6d49abbfb5c83d0209584158



More information about the tor-commits mailing list