From 2ebed53d633e7593d3914f138dcc8d5a3b987c58 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Thu, 2 May 2019 17:46:03 +0000 Subject: [PATCH] Add ncdns-nsis project --- keyring/isc.gpg | Bin 0 -> 26104 bytes keyring/nlnetlabs.gpg | Bin 0 -> 4284 bytes keyring/zlib.gpg | 1 + projects/ncdns-nsis/build | 53 ++++++++++++++++++++++++++++ projects/ncdns-nsis/config | 56 ++++++++++++++++++++++++++++++ projects/nsis | 1 + projects/release/build | 3 ++ projects/release/config | 16 +++++++++ projects/zlib | 1 + tools/setup-submodule-symlinks.sh | 2 ++ 10 files changed, 133 insertions(+) create mode 100644 keyring/isc.gpg create mode 100644 keyring/nlnetlabs.gpg create mode 120000 keyring/zlib.gpg create mode 100644 projects/ncdns-nsis/build create mode 100644 projects/ncdns-nsis/config create mode 120000 projects/nsis create mode 120000 projects/zlib diff --git a/keyring/isc.gpg b/keyring/isc.gpg new file mode 100644 index 0000000000000000000000000000000000000000..49bb2d7b7787dcf765167e314a280a47c8c4927e GIT binary patch literal 26104 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 KjuX@=y#EC;V!tE+ literal 0 HcmV?d00001 diff --git a/keyring/zlib.gpg b/keyring/zlib.gpg new file mode 120000 index 0000000..7701394 --- /dev/null +++ b/keyring/zlib.gpg @@ -0,0 +1 @@ +../tor-browser-build/keyring/zlib.gpg \ No newline at end of file diff --git a/projects/ncdns-nsis/build b/projects/ncdns-nsis/build new file mode 100644 index 0000000..296f8e8 --- /dev/null +++ b/projects/ncdns-nsis/build @@ -0,0 +1,53 @@ +#!/bin/bash +[% c("var/set_default_env") -%] + +distdir=/var/tmp/dist/[% project %] +mkdir -p "$distdir" + +# We need to install a recent version of python-pefile so that it works +# in a x86_64 container: +# https://github.com/TheTorProject/tor-messenger-build/pull/10 +tar xf $rootdir/[% c('input_files_by_name/python-pefile') %] +cd $(echo [% c('input_files_by_name/python-pefile') %] | sed s/\.tar\.gz$//) +python setup.py install --user +cd .. + +tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/nsis') %] +export PATH="/var/tmp/dist/nsis/bin:$PATH" + +cd "$distdir" + +tar -C . -xf $rootdir/[% project %]-[% c('version') %].tar.gz +mv ./ncdns-nsis-*/* ./ + +NSISFLAGS="-V2" +OUTFN=build/bin/ncdns-[% c("version") %]-[% c("arch") %]-install.exe + +ARTIFACTS="$distdir/build/artifacts" +NEUTRAL_ARTIFACTS="$distdir/artifacts" + +mkdir -p "${ARTIFACTS}" + +mkdir -p /var/tmp/dist/plain-binaries +tar -C /var/tmp/dist/plain-binaries -xf $rootdir/[% c('input_files_by_name/plain-binaries') %] +cp /var/tmp/dist/plain-binaries/*.exe /var/tmp/dist/plain-binaries/*.dll ${ARTIFACTS} + +mkdir /var/tmp/dist/bind +unzip -d /var/tmp/dist/bind $rootdir/[% c('input_files_by_name/bind') %] +cp /var/tmp/dist/bind/*.exe /var/tmp/dist/bind/*.dll ${ARTIFACTS} + +cp $rootdir/[% c('input_files_by_name/dnssec-trigger') %] ${ARTIFACTS} + +[% IF c("var/windows-x86_64") %] + cp $rootdir/[% c('input_files_by_name/namecoin-core') %] ${ARTIFACTS} +[% END %] + +cp $rootdir/[% c('input_files_by_name/consensusj-namecoin') %] ${ARTIFACTS}/bitcoinj-daemon.jar + +mkdir -p build/bin +makensis ${NSISFLAGS} -DPOSIX_BUILD=1 -DNCDNS_PRODVER=[% c('var/ncdns_nsis_version') %] [% c('var/arch_nsis_args') %] "-DARTIFACTS=$ARTIFACTS" "-DNEUTRAL_ARTIFACTS=$NEUTRAL_ARTIFACTS" "-DDNSSEC_TRIGGER_FN=[% c('input_files_by_name/dnssec-trigger') %]" "-DNAMECOIN_FN=[% c('input_files_by_name/namecoin-core') %]" "-DOUTFN=${OUTFN}" ncdns.nsi + +# Working around NSIS braindamage +mv "${OUTFN}" torbrowser-install-tmp.exe +python $rootdir/pe_checksum_fix.py +mv torbrowser-install-tmp2.exe [% dest_dir _ '/' _ c('filename') %] diff --git a/projects/ncdns-nsis/config b/projects/ncdns-nsis/config new file mode 100644 index 0000000..bb7ef1c --- /dev/null +++ b/projects/ncdns-nsis/config @@ -0,0 +1,56 @@ +# vim: filetype=yaml sw=2 +version: '[% pc("ncdns", "version") %]' +git_url: https://github.com/namecoin/ncdns-nsis.git +git_hash: 'f3f7c7a7a13897044e4499cd89d61bf9c2b1d07e' +filename: 'ncdns-[% c("version") %]-[% c("arch") %]-install-[% c("var/build_id") %].exe' + +var: + bind_version: '9.15.7' + consensusj_namecoin_version: '0.3.2.1' + dnssec_trigger_version: '0.17' + namecoin_core_version: '0.21.0.1' + # Used for PE metadata. + # Must be a 4-tuple without leading 'v' for NSIS to be happy. + ncdns_nsis_version: '0.1.2.0' + container: + use_container: 1 + deps: + - python + - python-future + - unzip + +targets: + windows-x86_64: + var: + arch_nsis_args: '-DNCDNS_64BIT=1' + bind_arch: 'x64' + windows-i686: + var: + arch_nsis_args: '-DNO_NAMECOIN_CORE' + bind_arch: 'x86' + +input_files: + - project: container-image + - project: plain-binaries + name: plain-binaries + - name: bind + URL: 'https://ftp.isc.org/isc/bind/[% c("var/bind_version") %]/BIND[% c("var/bind_version") %].[% c("var/bind_arch") %].zip' + file_gpg_id: 1 + gpg_keyring: isc.gpg + - name: dnssec-trigger + URL: 'https://www.nlnetlabs.nl/downloads/dnssec-trigger/dnssec_trigger_setup_[% c("var/dnssec_trigger_version") %].exe' + file_gpg_id: 1 + gpg_keyring: nlnetlabs.gpg + - name: namecoin-core + URL: 'https://www.namecoin.org/files/namecoin-core/namecoin-core-[% c("var/namecoin_core_version") %]/namecoin-nc[% c("var/namecoin_core_version") %]-win64-setup-unsigned.exe' + sha256sum: f82c070daa086c2243d641bb07a31d6dc272e191a7792860974d0cd1f0b97873 + enable: '[% c("var/windows-x86_64") %]' + - name: consensusj-namecoin + URL: 'https://www.namecoin.org/files/ConsensusJ-Namecoin/[% c("var/consensusj_namecoin_version") %]/namecoinj-daemon-0.3.2-SNAPSHOT.jar' + sha256sum: 6b35d5a31eb74b4870c8a6c37dd53563aa63b64810fdedb5192f2a77396e190f + - project: nsis + name: nsis + - filename: pe_checksum_fix.py + - name: python-pefile + URL: https://files.pythonhosted.org/packages/7e/9b/f99171190f04cd23768547dd34533b4016bd582842f53cd9fe9585a74c74/pefile-2017.11.5.tar.gz + sha256sum: 675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854 diff --git a/projects/nsis b/projects/nsis new file mode 120000 index 0000000..f29c93d --- /dev/null +++ b/projects/nsis @@ -0,0 +1 @@ +../tor-browser-build/projects/nsis \ No newline at end of file diff --git a/projects/release/build b/projects/release/build index 79a3fbb..4476e12 100644 --- a/projects/release/build +++ b/projects/release/build @@ -18,9 +18,12 @@ mkdir -p "$destdir" [% END -%] [% IF c("var/ncdns-windows-i686") -%] mv [% c('input_files_by_name/windows-i686') %] "$destdir"/ + # NSIS disabled for i686 due to unavailability of BIND binaries. + #mv [% c('input_files_by_name/windows-i686-nsis') %] "$destdir"/ [% END -%] [% IF c("var/ncdns-windows-x86_64") -%] mv [% c('input_files_by_name/windows-x86_64') %] "$destdir"/ + mv [% c('input_files_by_name/windows-x86_64-nsis') %] "$destdir"/ [% END -%] [% IF c("var/ncdns-osx-x86_64") -%] mv [% c('input_files_by_name/osx-x86_64') %] "$destdir"/ diff --git a/projects/release/config b/projects/release/config index 2d542e0..09457d4 100644 --- a/projects/release/config +++ b/projects/release/config @@ -176,6 +176,22 @@ input_files: - '[% c("var/build_target") %]' - ncdns-windows-x86_64 + # i686 is disabled for NSIS because BIND no longer distributes binaries. Once + # we replace BIND, maybe we can re-enable this. + #- name: windows-i686-nsis + # project: ncdns-nsis + # enable: '[% c("var/ncdns-windows-i686") %]' + # target: + # - '[% c("var/build_target") %]' + # - ncdns-windows-i686 + + - name: windows-x86_64-nsis + project: ncdns-nsis + enable: '[% c("var/ncdns-windows-x86_64") %]' + target: + - '[% c("var/build_target") %]' + - ncdns-windows-x86_64 + - name: osx-x86_64 project: plain-binaries enable: '[% c("var/ncdns-osx-x86_64") %]' diff --git a/projects/zlib b/projects/zlib new file mode 120000 index 0000000..81dd396 --- /dev/null +++ b/projects/zlib @@ -0,0 +1 @@ +../tor-browser-build/projects/zlib \ No newline at end of file diff --git a/tools/setup-submodule-symlinks.sh b/tools/setup-submodule-symlinks.sh index 911a2cf..45e1f11 100755 --- a/tools/setup-submodule-symlinks.sh +++ b/tools/setup-submodule-symlinks.sh @@ -20,3 +20,5 @@ else git submodule update --init make -C tor-browser-build submodule-update fi + +cp tor-browser-build/projects/tor-browser/pe_checksum_fix.py projects/ncdns-nsis/