tor-commits
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2019
- 21 participants
- 1812 discussions
18 Dec '19
commit dc1fa8a4b18468440e589c685eafb266211595dc
Author: JeremyRand <jeremyrand(a)airmail.cc>
Date: Wed Dec 18 13:50:27 2019 +0000
Bug 30558: Optionally enable Namecoin
Namecoin will be enabled if all the following are true:
* rbm var/namecoin is set to 1 at build time
* This is true for nightly on linux only
* env var TOR_ENABLE_NAMECOIN=1 is set at run-time
---
projects/aiohttp/build | 14 ++
projects/aiohttp/config | 11 ++
projects/aiohttp_socks/build | 14 ++
projects/aiohttp_socks/config | 11 ++
projects/aiorpcx/build | 14 ++
projects/aiorpcx/config | 11 ++
projects/async_timeout/build | 14 ++
projects/async_timeout/config | 11 ++
projects/attr/build | 14 ++
projects/attr/config | 11 ++
projects/certifi/build | 16 ++
projects/certifi/config | 13 ++
projects/certifi/roots_of_top_10_issuers.pem | 217 +++++++++++++++++++++
projects/chardet/build | 14 ++
projects/chardet/config | 11 ++
projects/dns/build | 17 ++
projects/dns/config | 11 ++
projects/ecdsa/build | 14 ++
projects/ecdsa/config | 11 ++
projects/electrum-nmc/build | 42 ++++
projects/electrum-nmc/config | 48 +++++
projects/firefox/build | 10 +
projects/firefox/config | 5 +
projects/firefox/namecoin-etld.patch | 25 +++
projects/firefox/namecoin-torbutton.patch | 105 ++++++++++
projects/goansicolor/config | 16 ++
projects/gobtcd/config | 32 +++
projects/gobtcd2/config | 32 +++
projects/gobtclog/config | 16 ++
projects/gobtcutil/config | 23 +++
projects/gobuildinfo/config | 31 +++
projects/goconfigurable/config | 16 ++
projects/godegoutils/config | 22 +++
projects/godexlogconfig/config | 40 ++++
projects/godns/config | 26 +++
projects/goeasyconfig/config | 35 ++++
projects/gogroupcache/config | 18 ++
projects/goisatty/config | 20 ++
projects/gokingpin/config | 23 +++
projects/gomadns/config | 40 ++++
projects/goncbtcjson/config | 20 ++
projects/goncrpcclient/config | 23 +++
projects/gopflag/config | 16 ++
projects/gopretty/config | 20 ++
projects/goservice/config | 44 +++++
projects/gosocks/config | 18 ++
projects/gosvcutils/config | 47 +++++
projects/gosystemd/config | 29 +++
projects/gotemplate/config | 16 ++
projects/gotext/config | 16 ++
projects/gotoml/config | 16 ++
projects/gounits/config | 16 ++
projects/gowebsocket/config | 16 ++
projects/goxcryptoed25519/config | 19 ++
projects/goxcryptoripemd160/config | 19 ++
projects/goxlog/config | 23 +++
projects/goxnetip/config | 24 +++
projects/goxsysunix/config | 19 ++
projects/idna/build | 14 ++
projects/idna/config | 11 ++
projects/idna_ssl/build | 14 ++
projects/idna_ssl/config | 11 ++
projects/jsonrpclib/build | 14 ++
projects/jsonrpclib/config | 11 ++
projects/multidict/build | 14 ++
projects/multidict/config | 11 ++
projects/ncdns/build | 31 +++
projects/ncdns/config | 82 ++++++++
projects/ncprop279/build | 32 +++
projects/ncprop279/config | 32 +++
projects/pyaes/build | 14 ++
projects/pyaes/config | 11 ++
projects/six/build | 14 ++
projects/six/config | 11 ++
projects/stemns/build | 25 +++
projects/stemns/config | 17 ++
projects/stemns/settings_port.py | 1 +
projects/stemns/settings_services.py | 4 +
.../Bundle-Data/linux/Data/Electrum-NMC/config | 6 +
.../linux/Data/ncprop279/ncprop279.conf | 12 ++
projects/tor-browser/build | 25 ++-
projects/tor-browser/config | 12 ++
projects/tor-browser/namecoin.patch | 83 ++++++++
projects/typing_extensions/build | 14 ++
projects/typing_extensions/config | 11 ++
projects/yarl/build | 14 ++
projects/yarl/config | 11 ++
rbm.conf | 5 +
88 files changed, 2041 insertions(+), 1 deletion(-)
diff --git a/projects/aiohttp/build b/projects/aiohttp/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/aiohttp/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiohttp/config b/projects/aiohttp/config
new file mode 100644
index 0000000..79f8f64
--- /dev/null
+++ b/projects/aiohttp/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.5.4
+git_url: https://github.com/aio-libs/aiohttp.git
+git_hash: f6f647eb828fa738610d61481f11fa51e42599e9
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/aiohttp_socks/build b/projects/aiohttp_socks/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/aiohttp_socks/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiohttp_socks/config b/projects/aiohttp_socks/config
new file mode 100644
index 0000000..3e24f2f
--- /dev/null
+++ b/projects/aiohttp_socks/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.2.2
+git_url: https://github.com/romis2012/aiohttp-socks.git
+git_hash: 3252f4bdd37fb9a7360481977f800189cb3e3aca
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/aiorpcx/build b/projects/aiorpcx/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/aiorpcx/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiorpcx/config b/projects/aiorpcx/config
new file mode 100644
index 0000000..fd8eb5a
--- /dev/null
+++ b/projects/aiorpcx/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.18.3
+git_url: https://github.com/kyuupichan/aiorpcX.git
+git_hash: 4f39366e5dee3fd0a857e53f383c628807cd2715
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/async_timeout/build b/projects/async_timeout/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/async_timeout/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/async_timeout/config b/projects/async_timeout/config
new file mode 100644
index 0000000..1e0faa7
--- /dev/null
+++ b/projects/async_timeout/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.0.1
+git_url: https://github.com/aio-libs/async-timeout.git
+git_hash: 992fd174a5282258228b74127914f4b8135bf30a
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/attr/build b/projects/attr/build
new file mode 100644
index 0000000..296b5f4
--- /dev/null
+++ b/projects/attr/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/src/[% project %]/*.py ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/attr/config b/projects/attr/config
new file mode 100644
index 0000000..bf62203
--- /dev/null
+++ b/projects/attr/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 19.1.0
+git_url: https://github.com/python-attrs/attrs.git
+git_hash: 0356f0603eb5d8d4e7bae132ab80847fff4abcfc
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/certifi/build b/projects/certifi/build
new file mode 100644
index 0000000..7531001
--- /dev/null
+++ b/projects/certifi/build
@@ -0,0 +1,16 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+cp $rootdir/roots_of_top_10_issuers.pem ./[% project %]/cacert.pem
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/certifi/config b/projects/certifi/config
new file mode 100644
index 0000000..cd1120d
--- /dev/null
+++ b/projects/certifi/config
@@ -0,0 +1,13 @@
+# vim: filetype=yaml sw=2
+version: 2019.3.9
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/c/certifi/certifi-[% c("version") %].tar.gz
+ sha256sum: b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae
+ # TODO: This package uses GPG sigs; we should switch from SHA256 hash to GPG verification.
+ - filename: roots_of_top_10_issuers.pem
diff --git a/projects/certifi/roots_of_top_10_issuers.pem b/projects/certifi/roots_of_top_10_issuers.pem
new file mode 100644
index 0000000..2d53dd8
--- /dev/null
+++ b/projects/certifi/roots_of_top_10_issuers.pem
@@ -0,0 +1,217 @@
+# This file contains the root CA's used by the top 10 HTTPS cert issuers for
+# the Alexa Top 1 Million as of February 2019, according to Scott Helme's HTTPS
+# issuer list and crt.sh's root CA database. Each root CA is copied verbatim
+# from cacert.pem from certifi-2019.3.9.
+
+# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Label: "DST Root CA X3"
+# Serial: 91299735575339953335919266965803778155
+# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5
+# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13
+# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39
+-----BEGIN CERTIFICATE-----
+MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
+PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
+Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
+rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
+OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
+xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
+7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
+aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
+SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
+ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
+AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
+R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
+JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
+Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Label: "COMODO RSA Certification Authority"
+# Serial: 101909084537582093308941363524873193117
+# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18
+# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4
+# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
+6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
+pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
+9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
+/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
+Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
+qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
+SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
+u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
+Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
+crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
+/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
+wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
+4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
+2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
+FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
+CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
+boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
+jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
+S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
+QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
+0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
+NVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Label: "COMODO ECC Certification Authority"
+# Serial: 41578283867086692638256921589707938090
+# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23
+# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11
+# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7
+-----BEGIN CERTIFICATE-----
+MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
+IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
+MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
+ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
+T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
+FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
+cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
+BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
+fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
+GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Label: "Go Daddy Root Certificate Authority - G2"
+# Serial: 0
+# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01
+# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b
+# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
+EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
+ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
+NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
+EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
+AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
+E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
+/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
+DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
+GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
+tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
+AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
+FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
+WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
+9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
+gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
+2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
+LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
+4uJEvlz36hz1
+-----END CERTIFICATE-----
+
+# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Label: "Baltimore CyberTrust Root"
+# Serial: 33554617
+# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
+# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
+# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
+RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
+VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
+DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
+ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
+VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
+mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
+IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
+mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
+XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
+dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
+jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
+BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
+DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
+9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
+jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
+Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
+ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
+R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 1 O=Amazon
+# Subject: CN=Amazon Root CA 1 O=Amazon
+# Label: "Amazon Root CA 1"
+# Serial: 143266978916655856878034712317230054538369994
+# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6
+# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16
+# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e
+-----BEGIN CERTIFICATE-----
+MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
+ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
+9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
+IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
+VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
+93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
+jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
+A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
+U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
+N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
+o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
+5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
+rqXRfboQnoZsG4q5WTP468SQvvG5
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Global Root CA"
+# Serial: 10944719598952040374951832963794454346
+# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
+# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
+# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+
diff --git a/projects/chardet/build b/projects/chardet/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/chardet/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/chardet/config b/projects/chardet/config
new file mode 100644
index 0000000..94884fb
--- /dev/null
+++ b/projects/chardet/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.0.4
+git_url: https://github.com/chardet/chardet.git
+git_hash: 9b8c5c2fb118d76c6beeab9affd01c332732a530
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/dns/build b/projects/dns/build
new file mode 100644
index 0000000..c610ada
--- /dev/null
+++ b/projects/dns/build
@@ -0,0 +1,17 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+shopt -s globstar
+
+unzip dnspython-[% c('version') %].zip
+
+mkdir -p /var/tmp/dist/[% project %]
+
+cd $rootdir/dnspython*/[% project %]
+cp --parents **/*.py /var/tmp/dist/[% project %]/
+
+cd /var/tmp/dist/
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/dns/config b/projects/dns/config
new file mode 100644
index 0000000..e18fc85
--- /dev/null
+++ b/projects/dns/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.16.0
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/d/dnspython/dnspython-[% c("version") %].zip
+ sha256sum: 36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01
+ # TODO: This package uses GPG sigs; we should switch from SHA256 hash to GPG verification.
diff --git a/projects/ecdsa/build b/projects/ecdsa/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/ecdsa/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/ecdsa/config b/projects/ecdsa/config
new file mode 100644
index 0000000..e4ee567
--- /dev/null
+++ b/projects/ecdsa/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.13.2
+git_url: https://github.com/warner/python-ecdsa.git
+git_hash: bb359d32e93acc3eb4d216aff4ba0e7531599cfb
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/electrum-nmc/build b/projects/electrum-nmc/build
new file mode 100644
index 0000000..8371744
--- /dev/null
+++ b/projects/electrum-nmc/build
@@ -0,0 +1,42 @@
+#!/bin/sh
+[% c("var/set_default_env") -%]
+mkdir -p /var/tmp/build/[% project %]
+tar -C /var/tmp/build/[% project %] -xf [% project %]-[% c("version") %].tar.gz
+
+cd /var/tmp/build/[% project %]/[% project %]-*
+
+mkdir packages
+cd packages
+
+[% FOREACH dep = ['aiohttp', 'aiohttp_socks', 'aiorpcx', 'async_timeout', 'attr', 'certifi', 'chardet', 'dns', 'ecdsa', 'idna', 'idna_ssl', 'jsonrpclib', 'multidict', 'pyaes', 'six', 'typing_extensions', 'yarl'] -%]
+ tar -C . -xf $rootdir/[% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a /var/tmp/build/[% project %]/[% project %]* ./Electrum-NMC
+
+cd ./Electrum-NMC
+# Remove GUI, since it's not used in Tor Browser.
+rm -r electrum_nmc/electrum/gui/
+# Remove plugins, since they're not used in Tor Browser.
+rm -r electrum_nmc/electrum/plugins/*/
+# Remove wallet functionality, since it's not used in Tor Browser.
+mv electrum_nmc/electrum/null_impl/null_wallet/*.py electrum_nmc/electrum/
+rm -r electrum_nmc/electrum/null_impl/
+# Remove some other files that aren't needed. We have to leave
+# electrum-nmc.desktop there, because it's used in run_electrum_nmc's is_local
+# detection.
+rm -r .git*
+rm -r .travis*
+rm -r contrib/
+rm -r electrum_nmc/electrum/tests/
+rm -r pubkeys
+rm -r tox.ini
+cd ../
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/electrum-nmc/config b/projects/electrum-nmc/config
new file mode 100644
index 0000000..57cabe5
--- /dev/null
+++ b/projects/electrum-nmc/config
@@ -0,0 +1,48 @@
+# vim: filetype=yaml sw=2
+filename: 'Electrum-NMC-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: 3.3.8
+git_url: https://github.com/namecoin/electrum-nmc.git
+# Note: this Git hash has a couple of fixes on top of the 3.3.8 tag, which
+# aren't yet in a release tag.
+git_hash: 74b87da8f2ddbbf33c23cc8e63b0e1515f427d86
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - project: aiohttp
+ name: aiohttp
+ - project: aiohttp_socks
+ name: aiohttp_socks
+ - project: aiorpcx
+ name: aiorpcx
+ - project: async_timeout
+ name: async_timeout
+ - project: attr
+ name: attr
+ - project: certifi
+ name: certifi
+ - project: chardet
+ name: chardet
+ - project: dns
+ name: dns
+ - project: ecdsa
+ name: ecdsa
+ - project: idna
+ name: idna
+ - project: idna_ssl
+ name: idna_ssl
+ - project: jsonrpclib
+ name: jsonrpclib
+ - project: multidict
+ name: multidict
+ - project: pyaes
+ name: pyaes
+ - project: six
+ name: six
+ - project: typing_extensions
+ name: typing_extensions
+ - project: yarl
+ name: yarl
diff --git a/projects/firefox/build b/projects/firefox/build
index 5179634..b42b301 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -92,11 +92,21 @@ fi
export LDFLAGS="-Wl,--no-insert-timestamp"
[% END -%]
+[% IF c("var/namecoin") %]
+ patch -p1 < $rootdir/namecoin-etld.patch
+[% END -%]
+
[% IF ! c("var/android") %]
# Place a copy of the Tor Launcher sources under browser/extensions
tar -C browser/extensions -xf $rootdir/[% c('input_files_by_name/tor-launcher') %]
[% END -%]
+[% IF c("var/namecoin") %]
+ pushd toolkit/torproject/torbutton
+ patch -p1 < $rootdir/namecoin-torbutton.patch
+ popd
+[% END %]
+
rm -f configure
rm -f js/src/configure
diff --git a/projects/firefox/config b/projects/firefox/config
index c6f840b..0931a3f 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -182,3 +182,8 @@ input_files:
- project: tba-translation
name: tba-translation
enable: '[% c("var/android") %]'
+ - filename: namecoin-torbutton.patch
+ enable: '[% c("var/namecoin") %]'
+ # TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
+ - filename: namecoin-etld.patch
+ enable: '[% c("var/namecoin") %]'
diff --git a/projects/firefox/namecoin-etld.patch b/projects/firefox/namecoin-etld.patch
new file mode 100644
index 0000000..4a97f99
--- /dev/null
+++ b/projects/firefox/namecoin-etld.patch
@@ -0,0 +1,25 @@
+diff --git a/mobile/android/app/src/main/assets/publicsuffixlist b/mobile/android/app/src/main/assets/publicsuffixlist
+index 7f834b1..6874b40 100644
+--- a/mobile/android/app/src/main/assets/publicsuffixlist
++++ b/mobile/android/app/src/main/assets/publicsuffixlist
+@@ -3005,6 +3005,8 @@ edu.mn
+ gov.mn
+ london
+ fashion
++onion
++bit.onion
+ creditunion
+ vision
+ eurovision
+diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
+index 9dd962a..3402b20 100644
+--- a/netwerk/dns/effective_tld_names.dat
++++ b/netwerk/dns/effective_tld_names.dat
+@@ -5480,6 +5480,7 @@ pro.om
+
+ // onion : https://tools.ietf.org/html/rfc7686
+ onion
++bit.onion
+
+ // org : https://en.wikipedia.org/wiki/.org
+ org
diff --git a/projects/firefox/namecoin-torbutton.patch b/projects/firefox/namecoin-torbutton.patch
new file mode 100644
index 0000000..11cf7a1
--- /dev/null
+++ b/projects/firefox/namecoin-torbutton.patch
@@ -0,0 +1,105 @@
+diff --git a/chrome/content/tor-circuit-display.js b/chrome/content/tor-circuit-display.js
+index 5ecbe7d..f771150 100644
+--- a/chrome/content/tor-circuit-display.js
++++ b/chrome/content/tor-circuit-display.js
+@@ -49,7 +49,11 @@ let credentialsToNodeDataMap = new Map(),
+ knownCircuitIDs = new Map(),
+ // A mutable map that records the SOCKS credentials for the
+ // latest channels for each browser + domain.
+- browserToCredentialsMap = new Map();
++ browserToCredentialsMap = new Map(),
++ // A mutable map from stream id to .bit[.onion] domains
++ bitTargets = {},
++ // A mutable map from .bit[.onion] domains to .onion domains.
++ bitToOnionMap = {};
+
+ // __trimQuotes(s)__.
+ // Removes quotation marks around a quoted string.
+@@ -126,6 +130,28 @@ let getCircuitStatusByID = async function (aController, circuitID) {
+ return null;
+ };
+
++// __collectBitTargets(aContoller)__.
++// Watches for STREAM NEW events. When a NEW event occurs, we will see
++// the stream's target domain. If that target is a .bit domain, then
++// we want to be sure to record this so we can later record if it is
++// remapped to a .onion domain.
++let collectBitTargets = function (aController) {
++ return aController.watchEvent(
++ "STREAM",
++ streamEvent => streamEvent.StreamStatus === "NEW",
++ async (streamEvent) => {
++ logger.eclog(3, "new streamEvent:" + JSON.stringify(streamEvent));
++ if (streamEvent && streamEvent.StreamID && streamEvent.Target) {
++ let targetDomain = streamEvent.Target.split(":")[0];
++ if (targetDomain.endsWith(".bit") ||
++ targetDomain.endsWith(".bit.onion")) {
++ bitTargets[streamEvent.StreamID] = Services.eTLD.getBaseDomainFromHost(targetDomain);
++ logger.eclog(3, "stream on .bit domain: " + targetDomain);
++ }
++ }
++ });
++};
++
+ // __collectIsolationData(aController, updateUI)__.
+ // Watches for STREAM SENTCONNECT events. When a SENTCONNECT event occurs, then
+ // we assume isolation settings (SOCKS username+password) are now fixed for the
+@@ -139,6 +165,15 @@ let collectIsolationData = function (aController, updateUI) {
+ "STREAM",
+ streamEvent => streamEvent.StreamStatus === "SENTCONNECT",
+ async (streamEvent) => {
++ logger.eclog(3, "sentconnect streamEvent:" + JSON.stringify(streamEvent));
++ // Collect any stream target that might be an onion.
++ if (streamEvent && streamEvent.StreamID && streamEvent.Target) {
++ let targetDomain = streamEvent.Target.split(":")[0];
++ if (targetDomain.endsWith(".onion")) {
++ bitToOnionMap[bitTargets[streamEvent.StreamID]] = targetDomain;
++ logger.eclog(3, "mapped " + bitTargets[streamEvent.StreamID] + " to " + targetDomain);
++ }
++ }
+ if (!knownCircuitIDs.get(streamEvent.CircuitID)) {
+ logger.eclog(3, "streamEvent.CircuitID: " + streamEvent.CircuitID);
+ knownCircuitIDs.set(streamEvent.CircuitID, true);
+@@ -306,12 +341,14 @@ let updateCircuitDisplay = function () {
+ (i === 0 && nodeData[0].type !== "bridge") ?
+ ["span", { class: "circuit-guard-info" }, uiString("guard")] : null);
+ }
+- if (domain.endsWith(".onion")) {
++ logger.eclog(3, "bit to onion map:" + JSON.stringify(bitToOnionMap) + ", domain: " + domain);
++ let mappedOnion = bitToOnionMap[domain];
++ if (domain.endsWith(".onion") || mappedOnion) {
+ for (let i = 0; i < 3; ++i) {
+ li(uiString("relay"));
+ }
+ }
+- li(domain);
++ li(domain, " ", mappedOnion ? ["span", { class: "circuit-ip-address" }, mappedOnion] : null);
+ // Hide the note about guards if we are using a bridge.
+ document.getElementById("circuit-guard-note-container").style.display =
+ (nodeData[0].type === "bridge") ? "none" : "block";
+@@ -418,6 +455,7 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ stopCollectingIsolationData = null,
+ stopCollectingBrowserCredentials = null,
+ stopEnsuringCorrectPopupDimensions = null,
++ stopCollectingBitTargets = null,
+ stop = function() {
+ syncDisplayWithSelectedTab(false);
+ if (myController) {
+@@ -430,6 +468,9 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ if (stopEnsuringCorrectPopupDimensions) {
+ stopEnsuringCorrectPopupDimensions();
+ }
++ if (stopCollectingBitTargets) {
++ stopCollectingBitTargets();
++ }
+ myController = null;
+ }
+ },
+@@ -444,6 +485,7 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ stop();
+ });
+ syncDisplayWithSelectedTab(true);
++ stopCollectingBitTargets = collectBitTargets(myController);
+ stopCollectingIsolationData = collectIsolationData(myController, updateCircuitDisplay);
+ stopCollectingBrowserCredentials = collectBrowserCredentials();
+ stopEnsuringCorrectPopupDimensions = ensureCorrectPopupDimensions();
diff --git a/projects/goansicolor/config b/projects/goansicolor/config
new file mode 100644
index 0000000..6d1a73e
--- /dev/null
+++ b/projects/goansicolor/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/shiena/ansicolor.git
+git_hash: a422bbe96644373c5753384a59d678f7d261ff10
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/shiena/ansicolor
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtcd/config b/projects/gobtcd/config
new file mode 100644
index 0000000..56dcca4
--- /dev/null
+++ b/projects/gobtcd/config
@@ -0,0 +1,32 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/btcd.git
+git_hash: 6cfad711d4ee7367b3ab9dc572097438dbca56eb
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/btcd
+ go_lib_install:
+ - github.com/namecoin/btcd/btcjson
+ - github.com/namecoin/btcd/rpcclient
+ go_lib_deps:
+ - gobtclog
+ - gobtcutil
+ - gosocks
+ - gowebsocket
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtclog
+ project: gobtclog
+ - name: gobtcutil
+ project: gobtcutil
+ - name: gosocks
+ project: gosocks
+ - name: gowebsocket
+ project: gowebsocket
diff --git a/projects/gobtcd2/config b/projects/gobtcd2/config
new file mode 100644
index 0000000..5324737
--- /dev/null
+++ b/projects/gobtcd2/config
@@ -0,0 +1,32 @@
+# vim: filetype=yaml sw=2
+
+# You're probably wondering why gobtcd2 is a thing, rather than being part of
+# gobtcd. gobtcd builds the btcjson and rpcclient subpackages of btcd.
+# gobtcd2 builds the btcec, chaincfg, chaincfg/chainhash, and wire subpackages
+# of btcd. The former set depends on gobtcutil, which depends on the latter
+# set. This is fine for the dependency management done by "go get", which
+# operates on a per-package level rather than a per-repo level. Alas, since
+# rbm instead operates on a per-repo level (since each project is one repo),
+# splitting it up was necessary.
+
+version: '[% c("abbrev") %]'
+git_url: '[% pc("gobtcd", "git_url") %]'
+git_hash: '[% pc("gobtcd", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btcd
+ go_lib_install:
+ - github.com/btcsuite/btcd/btcec
+ - github.com/btcsuite/btcd/chaincfg
+ - github.com/btcsuite/btcd/chaincfg/chainhash
+ - github.com/btcsuite/btcd/wire
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtclog/config b/projects/gobtclog/config
new file mode 100644
index 0000000..9fcb6c6
--- /dev/null
+++ b/projects/gobtclog/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/btclog.git
+git_hash: 84c8d2346e9fc8c7b947e243b9c24e6df9fd206a
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btclog
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtcutil/config b/projects/gobtcutil/config
new file mode 100644
index 0000000..63a8f90
--- /dev/null
+++ b/projects/gobtcutil/config
@@ -0,0 +1,23 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/btcutil.git
+git_hash: 9e5f4b9a998d263e3ce9c56664a7816001ac8000
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btcutil
+ go_lib_deps:
+ - gobtcd2
+ - goxcryptoripemd160
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd2
+ project: gobtcd2
+ - name: goxcryptoripemd160
+ project: goxcryptoripemd160
diff --git a/projects/gobuildinfo/config b/projects/gobuildinfo/config
new file mode 100644
index 0000000..5ca103c
--- /dev/null
+++ b/projects/gobuildinfo/config
@@ -0,0 +1,31 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/buildinfo.git
+git_hash: 337a29b5499734e584d4630ce535af64c5fe7813
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/buildinfo
+ go_lib_deps:
+ - goeasyconfig
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: goeasyconfig
+ project: goeasyconfig
diff --git a/projects/goconfigurable/config b/projects/goconfigurable/config
new file mode 100644
index 0000000..07bace5
--- /dev/null
+++ b/projects/goconfigurable/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/configurable.git
+git_hash: 34642c4c8cbf56801d0e34f0e82187305983ac26
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/configurable.v1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/godegoutils/config b/projects/godegoutils/config
new file mode 100644
index 0000000..f4f380a
--- /dev/null
+++ b/projects/godegoutils/config
@@ -0,0 +1,22 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/degoutils.git
+git_hash: 8fa2440b63444dad556d76366f1c3ee070c8a577
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/degoutils
+ go_lib_install:
+ - github.com/hlandau/degoutils/net
+ go_lib_deps:
+ - goxnet
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxnet
+ project: goxnet
diff --git a/projects/godexlogconfig/config b/projects/godexlogconfig/config
new file mode 100644
index 0000000..0dccbe2
--- /dev/null
+++ b/projects/godexlogconfig/config
@@ -0,0 +1,40 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/dexlogconfig.git
+git_hash: 244f29bd260884993b176cd14ef2f7631f6f3c18
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/dexlogconfig
+ go_lib_deps:
+ - gobuildinfo
+ - goeasyconfig
+ - gosystemd
+ - goxlog
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: goxlog
+ project: goxlog
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: gosystemd
+ project: gosystemd
+ - name: gobuildinfo
+ project: gobuildinfo
diff --git a/projects/godns/config b/projects/godns/config
new file mode 100644
index 0000000..a005c32
--- /dev/null
+++ b/projects/godns/config
@@ -0,0 +1,26 @@
+version: 1.1.22
+git_url: https://github.com/miekg/dns.git
+git_hash: 1e224ff5dead8366ed6fcdcb832794be42e73f0e
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/miekg/dns
+ go_lib_deps:
+ - goxcryptoed25519
+ - goxnetip
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxcryptoed25519
+ project: goxcryptoed25519
+ - name: goxnetip
+ project: goxnetip
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/goeasyconfig/config b/projects/goeasyconfig/config
new file mode 100644
index 0000000..a87283e
--- /dev/null
+++ b/projects/goeasyconfig/config
@@ -0,0 +1,35 @@
+version: 1.0.17
+git_url: https://github.com/hlandau/easyconfig.git
+git_hash: c31249162931b4963bbe6e501cccb60d23271a3f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/easyconfig.v1
+ go_lib_deps:
+ - goconfigurable
+ - gosvcutils
+ - gotoml
+ - gopflag
+ - gokingpin
+ go_lib_install:
+ - gopkg.in/hlandau/easyconfig.v1
+ - gopkg.in/hlandau/easyconfig.v1/cflag
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goconfigurable
+ project: goconfigurable
+ - name: gosvcutils
+ project: gosvcutils
+ - name: gotoml
+ project: gotoml
+ - name: gopflag
+ project: gopflag
+ - name: gokingpin
+ project: gokingpin
diff --git a/projects/gogroupcache/config b/projects/gogroupcache/config
new file mode 100644
index 0000000..5646737
--- /dev/null
+++ b/projects/gogroupcache/config
@@ -0,0 +1,18 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/golang/groupcache.git
+git_hash: 611e8accdfc92c4187d399e95ce826046d4c8d73
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/golang/groupcache
+ go_lib_install:
+ - github.com/golang/groupcache/lru
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goisatty/config b/projects/goisatty/config
new file mode 100644
index 0000000..0f5fc17
--- /dev/null
+++ b/projects/goisatty/config
@@ -0,0 +1,20 @@
+version: 0.0.10
+git_url: https://github.com/mattn/go-isatty.git
+git_hash: 88ba11cfdc67c7588b30042edf244b2875f892b6
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/mattn/go-isatty
+ go_lib_deps:
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/gokingpin/config b/projects/gokingpin/config
new file mode 100644
index 0000000..dd209f4
--- /dev/null
+++ b/projects/gokingpin/config
@@ -0,0 +1,23 @@
+version: 2.2.6
+git_url: https://github.com/alecthomas/kingpin.git
+git_hash: 947dcec5ba9c011838740e680966fd7087a71d0d
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/alecthomas/kingpin.v2
+ go_lib_deps:
+ - gotemplate
+ - gounits
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gotemplate
+ project: gotemplate
+ - name: gounits
+ project: gounits
diff --git a/projects/gomadns/config b/projects/gomadns/config
new file mode 100644
index 0000000..a53f410
--- /dev/null
+++ b/projects/gomadns/config
@@ -0,0 +1,40 @@
+version: 2.0.1
+git_url: https://github.com/hlandau/madns.git
+git_hash: 26979b3e4b5aa3e0bd53cf0a014f9eaf43b578e3
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/madns.v2
+ go_lib_deps:
+ - godns
+ - gobuildinfo
+ - goxlog
+ go_lib_install:
+ - gopkg.in/hlandau/madns.v2
+ - gopkg.in/hlandau/madns.v2/merr
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: godns
+ project: godns
+ - name: gobuildinfo
+ project: gobuildinfo
+ - name: goxlog
+ project: goxlog
diff --git a/projects/goncbtcjson/config b/projects/goncbtcjson/config
new file mode 100644
index 0000000..708bfc8
--- /dev/null
+++ b/projects/goncbtcjson/config
@@ -0,0 +1,20 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncbtcjson.git
+git_hash: 0d2f400334751d149ca21bfd4535c9d2274f7264
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/ncbtcjson
+ go_lib_deps:
+ - gobtcd
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd
+ project: gobtcd
diff --git a/projects/goncrpcclient/config b/projects/goncrpcclient/config
new file mode 100644
index 0000000..122700c
--- /dev/null
+++ b/projects/goncrpcclient/config
@@ -0,0 +1,23 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncrpcclient.git
+git_hash: 858e1a5acd8b2da56462f50323633cdf2fe80977
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/ncrpcclient
+ go_lib_deps:
+ - gobtcd
+ - goncbtcjson
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd
+ project: gobtcd
+ - name: goncbtcjson
+ project: goncbtcjson
diff --git a/projects/gopflag/config b/projects/gopflag/config
new file mode 100644
index 0000000..16141cc
--- /dev/null
+++ b/projects/gopflag/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/ogier/pflag.git
+git_hash: 45c278ab3607870051a2ea9040bb85fcb8557481
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/ogier/pflag
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gopretty/config b/projects/gopretty/config
new file mode 100644
index 0000000..a2ceecf
--- /dev/null
+++ b/projects/gopretty/config
@@ -0,0 +1,20 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/kr/pretty.git
+git_hash: 71e7e49937503c662b9b636fd6b2c14b1aa818a5
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/kr/pretty
+ go_lib_deps:
+ - gotext
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gotext
+ project: gotext
diff --git a/projects/goservice/config b/projects/goservice/config
new file mode 100644
index 0000000..67eff54
--- /dev/null
+++ b/projects/goservice/config
@@ -0,0 +1,44 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/service.git
+git_hash: 0496f910e39ef577ba805f512f6e1b80d652c4b9
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/service.v2
+ go_lib_deps:
+ - gosvcutils
+ - goeasyconfig
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: gosvcutils
+ project: gosvcutils
+ - name: goeasyconfig
+ project: goeasyconfig
diff --git a/projects/gosocks/config b/projects/gosocks/config
new file mode 100644
index 0000000..1d9a5a8
--- /dev/null
+++ b/projects/gosocks/config
@@ -0,0 +1,18 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/go-socks.git
+git_hash: 4720035b7bfd2a9bb130b1c184f8bbe41b6f0d0f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/go-socks
+ go_lib_install:
+ - github.com/btcsuite/go-socks/socks
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gosvcutils/config b/projects/gosvcutils/config
new file mode 100644
index 0000000..b941e05
--- /dev/null
+++ b/projects/gosvcutils/config
@@ -0,0 +1,47 @@
+version: 1.0.10
+git_url: https://github.com/hlandau/svcutils.git
+git_hash: c25dac49e50cbbcbef8c81b089f56156f4067729
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/svcutils.v1
+ go_lib_install:
+ - gopkg.in/hlandau/svcutils.v1
+ - gopkg.in/hlandau/svcutils.v1/caps
+ - gopkg.in/hlandau/svcutils.v1/chroot
+ - gopkg.in/hlandau/svcutils.v1/dupfd
+ - gopkg.in/hlandau/svcutils.v1/exepath
+ - gopkg.in/hlandau/svcutils.v1/passwd
+ - gopkg.in/hlandau/svcutils.v1/pidfile
+ - gopkg.in/hlandau/svcutils.v1/setuid
+ - gopkg.in/hlandau/svcutils.v1/systemd
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
diff --git a/projects/gosystemd/config b/projects/gosystemd/config
new file mode 100644
index 0000000..daa9f79
--- /dev/null
+++ b/projects/gosystemd/config
@@ -0,0 +1,29 @@
+version: 21
+git_url: https://github.com/coreos/go-systemd.git
+git_hash: d3cd4ed1dbcf5835feba465b180436db54f20228
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/coreos/go-systemd
+ go_lib_install:
+ - github.com/coreos/go-systemd/journal
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
diff --git a/projects/gotemplate/config b/projects/gotemplate/config
new file mode 100644
index 0000000..62cddc9
--- /dev/null
+++ b/projects/gotemplate/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/alecthomas/template.git
+git_hash: fb15b899a75114aa79cc930e33c46b577cc664b1
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/alecthomas/template
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gotext/config b/projects/gotext/config
new file mode 100644
index 0000000..5493329
--- /dev/null
+++ b/projects/gotext/config
@@ -0,0 +1,16 @@
+version: 0.1.0
+git_url: https://github.com/kr/text.git
+git_hash: e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/kr/text
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gotoml/config b/projects/gotoml/config
new file mode 100644
index 0000000..c40c582
--- /dev/null
+++ b/projects/gotoml/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/BurntSushi/toml.git
+git_hash: 3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/BurntSushi/toml
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gounits/config b/projects/gounits/config
new file mode 100644
index 0000000..8cf7395
--- /dev/null
+++ b/projects/gounits/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/alecthomas/units.git
+git_hash: f65c72e2690dc4b403c8bd637baf4611cd4c069b
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/alecthomas/units
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gowebsocket/config b/projects/gowebsocket/config
new file mode 100644
index 0000000..1e103d3
--- /dev/null
+++ b/projects/gowebsocket/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/websocket.git
+git_hash: 31079b6807923eb23992c421b114992b95131b55
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/websocket
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxcryptoed25519/config b/projects/goxcryptoed25519/config
new file mode 100644
index 0000000..d065de1
--- /dev/null
+++ b/projects/goxcryptoed25519/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxcrypto", "git_url") %]'
+git_hash: '[% pc("goxcrypto", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/crypto
+ go_lib_install:
+ - golang.org/x/crypto/ed25519
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxcryptoripemd160/config b/projects/goxcryptoripemd160/config
new file mode 100644
index 0000000..b14e71d
--- /dev/null
+++ b/projects/goxcryptoripemd160/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxcrypto", "git_url") %]'
+git_hash: '[% pc("goxcrypto", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/crypto
+ go_lib_install:
+ - golang.org/x/crypto/ripemd160
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxlog/config b/projects/goxlog/config
new file mode 100644
index 0000000..fa47d30
--- /dev/null
+++ b/projects/goxlog/config
@@ -0,0 +1,23 @@
+version: 1.0.0
+git_url: https://github.com/hlandau/xlog.git
+git_hash: 197ef798aed28e08ed3e176e678fda81be993a31
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/xlog
+ go_lib_deps:
+ - goisatty
+ - goansicolor
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goisatty
+ project: goisatty
+ - name: goansicolor
+ project: goansicolor
diff --git a/projects/goxnetip/config b/projects/goxnetip/config
new file mode 100644
index 0000000..db1c85e
--- /dev/null
+++ b/projects/goxnetip/config
@@ -0,0 +1,24 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxnet", "git_url") %]'
+git_hash: '[% pc("goxnet", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/net
+ go_lib_install:
+ - golang.org/x/net/ipv4
+ - golang.org/x/net/ipv6
+ go_lib_deps:
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/goxsysunix/config b/projects/goxsysunix/config
new file mode 100644
index 0000000..a2fe03c
--- /dev/null
+++ b/projects/goxsysunix/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxsys", "git_url") %]'
+git_hash: '[% pc("goxsys", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/sys
+ go_lib_install:
+ - golang.org/x/sys/unix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/idna/build b/projects/idna/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/idna/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/idna/config b/projects/idna/config
new file mode 100644
index 0000000..c499a80
--- /dev/null
+++ b/projects/idna/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 2.8
+git_url: https://github.com/kjd/idna.git
+git_hash: 1cdf175e259b299be76f49c3ddc8794214f9931f
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/idna_ssl/build b/projects/idna_ssl/build
new file mode 100644
index 0000000..6f65b22
--- /dev/null
+++ b/projects/idna_ssl/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/idna_ssl/config b/projects/idna_ssl/config
new file mode 100644
index 0000000..7331027
--- /dev/null
+++ b/projects/idna_ssl/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.1.0
+git_url: https://github.com/aio-libs/idna-ssl.git
+git_hash: 1ab8304810f8bd9a880c0a013276cddd3c6e9551
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/jsonrpclib/build b/projects/jsonrpclib/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/jsonrpclib/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/jsonrpclib/config b/projects/jsonrpclib/config
new file mode 100644
index 0000000..e5b469b
--- /dev/null
+++ b/projects/jsonrpclib/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.4.0
+git_url: https://github.com/tcalmant/jsonrpclib.git
+git_hash: fe9fcf2c99973507f7055d6c9e05e155957c2549
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/multidict/build b/projects/multidict/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/multidict/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/multidict/config b/projects/multidict/config
new file mode 100644
index 0000000..d242b08
--- /dev/null
+++ b/projects/multidict/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 4.5.2
+git_url: https://github.com/aio-libs/multidict.git
+git_hash: bd40998bf220820a7d636d5f02912c8d4abcac23
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/ncdns/build b/projects/ncdns/build
new file mode 100644
index 0000000..5ec0bc8
--- /dev/null
+++ b/projects/ncdns/build
@@ -0,0 +1,31 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+export PATH="/var/tmp/dist/binutils/bin:$PATH"
+export CGO_ENABLED=1
+distdir=/var/tmp/dist/[% project %]
+mkdir -p $distdir
+
+[% FOREACH dep = c("var/go_lib_deps") -%]
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p $GOPATH/src/github.com/namecoin
+tar -C $GOPATH/src/github.com/namecoin -xf [% project %]-[% c('version') %].tar.gz
+mv $GOPATH/src/github.com/namecoin/ncdns-[% c('version') %] $GOPATH/src/github.com/namecoin/ncdns
+
+TAGS="-tags no_namecoin_tls"
+
+[% FOREACH inst IN c("var/go_lib_install") %]
+ go install $TAGS -ldflags '-s' [% inst %]
+[% END %]
+
+cd /var/tmp/dist
+
+[% c('tar', {
+ tar_src => [ 'gopath' ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+}) %]
diff --git a/projects/ncdns/config b/projects/ncdns/config
new file mode 100644
index 0000000..0785e51
--- /dev/null
+++ b/projects/ncdns/config
@@ -0,0 +1,82 @@
+#version: 0.0.9
+# Using latest master branch because we need the stream isolation and
+# disable_namecoin_tlsa features. Once they're in a tagged release, we'll go
+# back to using a version number here.
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncdns.git
+# Using latest master branch because we need the stream isolation and
+# disable_namecoin_tlsa features. Once they're in a tagged release, we'll go
+# back to using a hash that corresponds to a tag here.
+git_hash: 'ca0fe5552806a4275f38468c4d3fbcb2cba1cb79'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+ go_lib_deps:
+ - gogroupcache
+ - godegoutils
+ - godexlogconfig
+ - goncbtcjson
+ - goncrpcclient
+ - gobtcd
+ - gopretty
+ - godns
+ - gomadns
+ - goeasyconfig
+ - goservice
+ - goxnet
+ go_lib_install:
+ - github.com/namecoin/ncdns
+ - github.com/namecoin/ncdns/backend
+ - github.com/namecoin/ncdns/namecoin
+ - github.com/namecoin/ncdns/ncdomain
+ - github.com/namecoin/ncdns/ncdt
+ - github.com/namecoin/ncdns/rrtourl
+ - github.com/namecoin/ncdns/server
+ - github.com/namecoin/ncdns/testutil
+ - github.com/namecoin/ncdns/tlshook
+ - github.com/namecoin/ncdns/util
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: godexlogconfig
+ project: godexlogconfig
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: goservice
+ project: goservice
+ - name: gogroupcache
+ project: gogroupcache
+ - name: goncbtcjson
+ project: goncbtcjson
+ - name: goncrpcclient
+ project: goncrpcclient
+ - name: gobtcd
+ project: gobtcd
+ - name: godns
+ project: godns
+ - name: gomadns
+ project: gomadns
+ - name: gopretty
+ project: gopretty
+ - name: godegoutils
+ project: godegoutils
+ - name: goxnet
+ project: goxnet
diff --git a/projects/ncprop279/build b/projects/ncprop279/build
new file mode 100644
index 0000000..a035277
--- /dev/null
+++ b/projects/ncprop279/build
@@ -0,0 +1,32 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
+export CGO_ENABLED=0
+distdir=/var/tmp/dist/[% project %]
+mkdir -p $distdir
+
+[% FOREACH dep = c("var/go_lib_deps") -%]
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p $GOPATH/src/github.com/namecoin
+tar -C $GOPATH/src/github.com/namecoin -xf [% project %]-[% c('version') %].tar.gz
+mv $GOPATH/src/github.com/namecoin/ncprop279-[% c('version') %] $GOPATH/src/github.com/namecoin/ncprop279
+
+TAGS="-tags no_namecoin_tls"
+
+go install $TAGS -ldflags '-s' github.com/namecoin/ncprop279
+
+[% IF c("var/linux-x86_64") -%]
+ GOPATHBIN="${GOPATH}/bin"
+[% ELSE -%]
+ GOPATHBIN="${GOPATH}/bin/${GOOS}_${GOARCH}"
+[% END -%]
+
+cp -a $GOPATHBIN/ncprop279 $distdir/
+
+cd $distdir
+[% c('tar', {
+ tar_src => [ '.' ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/ncprop279/config b/projects/ncprop279/config
new file mode 100644
index 0000000..5d4ee51
--- /dev/null
+++ b/projects/ncprop279/config
@@ -0,0 +1,32 @@
+#version: '0.0.2'
+# Using latest master branch because we need the stream isolation feature.
+# Once it's in a tagged release, we'll go back to using a version number here.
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncprop279.git
+# Using latest master branch because we need the stream isolation feature.
+# Once it's in a tagged release, we'll go back to using a hash that corresponds
+# to a tag here.
+git_hash: '7bdd741d70258407f66aab52b24788f1acccc56b'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+ go_lib_deps:
+ - godns
+ - goeasyconfig
+ - gomadns
+ - ncdns
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: godns
+ project: godns
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: gomadns
+ project: gomadns
+ - name: ncdns
+ project: ncdns
diff --git a/projects/pyaes/build b/projects/pyaes/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/pyaes/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/pyaes/config b/projects/pyaes/config
new file mode 100644
index 0000000..6fba344
--- /dev/null
+++ b/projects/pyaes/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.6.1
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/p/pyaes/pyaes-[% c("version") %].tar.gz
+ sha256sum: 02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
+ # TODO: This version doesn't show up as a Git tag; where did it come from?
diff --git a/projects/six/build b/projects/six/build
new file mode 100644
index 0000000..6f65b22
--- /dev/null
+++ b/projects/six/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/six/config b/projects/six/config
new file mode 100644
index 0000000..e0945d1
--- /dev/null
+++ b/projects/six/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.12.0
+git_url: https://github.com/benjaminp/six.git
+git_hash: d927b9e27617abca8dbf4d66cc9265ebbde261d6
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/stemns/build b/projects/stemns/build
new file mode 100644
index 0000000..3784894
--- /dev/null
+++ b/projects/stemns/build
@@ -0,0 +1,25 @@
+#!/bin/sh
+[% c("var/set_default_env") -%]
+distdir=/var/tmp/dist/StemNS
+mkdir /var/tmp/build
+mkdir /var/tmp/dist
+
+# Extract StemNS
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+cp -a /var/tmp/build/[% project %]-[% c('version') %] ${distdir}
+
+# Extract Stem
+tar -C /var/tmp/build -xf stem-[% c("var/stem-version") %].tar.gz
+
+cp -a /var/tmp/build/stem-[% c("var/stem-version") %]/stem ${distdir}/stem
+
+# Apply settings
+cp -a settings_port.py settings_services.py ${distdir}/
+
+cd /var/tmp/dist/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/stemns/config b/projects/stemns/config
new file mode 100644
index 0000000..6c83335
--- /dev/null
+++ b/projects/stemns/config
@@ -0,0 +1,17 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/StemNS.git
+git_hash: '32ed59be344d6bb949faa4a2bf70ae058bfe4d21'
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+var:
+ container:
+ use_container: 1
+ stem-version: 1.7.1
+
+input_files:
+ - project: container-image
+ - URL: 'https://files.pythonhosted.org/packages/source/s/stem/stem-[% c("var/stem-version") %].tar.gz'
+ sha256sum: c9eaf3116cb60c15995cbd3dec3a5cbc50e9bb6e062c4d6d42201e566f498ca2
+ # TODO: This sha256sum was grabbed from PyPI and hasn't been verified. We should probably switch to using an OpenPGP sig.
+ - filename: settings_port.py
+ - filename: settings_services.py
diff --git a/projects/stemns/settings_port.py b/projects/stemns/settings_port.py
new file mode 100644
index 0000000..e9f290d
--- /dev/null
+++ b/projects/stemns/settings_port.py
@@ -0,0 +1 @@
+tor_control_port = 9151
diff --git a/projects/stemns/settings_services.py b/projects/stemns/settings_services.py
new file mode 100644
index 0000000..57897f0
--- /dev/null
+++ b/projects/stemns/settings_services.py
@@ -0,0 +1,4 @@
+_service_to_command = {
+ "bit.onion": ['TorBrowser/ncprop279/ncprop279', '--conf=TorBrowser/Data/ncprop279/ncprop279.conf'],
+ "bit": ['TorBrowser/ncprop279/ncprop279', '--conf=TorBrowser/Data/ncprop279/ncprop279.conf'],
+}
diff --git a/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config b/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config
new file mode 100644
index 0000000..df1ab17
--- /dev/null
+++ b/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config
@@ -0,0 +1,6 @@
+{
+ "proxy": "socks5:127.0.0.1:9150::",
+ "rpcpassword": "password",
+ "rpcport": 8336,
+ "rpcuser": "user"
+}
\ No newline at end of file
diff --git a/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf b/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf
new file mode 100644
index 0000000..afcba1b
--- /dev/null
+++ b/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf
@@ -0,0 +1,12 @@
+[ncprop279]
+
+namecoinrpcaddress="127.0.0.1:8336"
+namecoinrpcusername="user"
+namecoinrpcpassword="password"
+namecoinrpctimeout="10000"
+onlyonion="true"
+
+[xlog]
+
+# Uncomment this to enable debug logging
+#severity="DEBUG"
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 2979658..2c72e03 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -61,6 +61,11 @@ tar -C "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]" -xf [% c('input
cat > ${TB_STAGE_DIR}/Browser/start-tor-browser << 'RBM_TB_EOF'
[% INCLUDE 'RelativeLink/start-tor-browser' -%]
RBM_TB_EOF
+ [% IF c("var/namecoin") %]
+ pushd ${TB_STAGE_DIR}/Browser/
+ patch -p1 < $rootdir/namecoin.patch
+ popd
+ [% END %]
chmod +x ${TB_STAGE_DIR}/Browser/start-tor-browser
# Make sure we get the desired scrollbar behavior with Gtk3, see bug 27546.
GTK_SETTINGS_DIR=${TB_STAGE_DIR}/Browser/.config/gtk-3.0
@@ -70,6 +75,17 @@ RBM_TB_EOF
tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/tor-browser.tar.gz
tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files_by_name/tor') %]/tor.tar.gz
+[% IF c("var/namecoin") %]
+ # Extract Electrum-NMC
+ tar -C "$TBDIR/TorBrowser" -xf [% c('input_files_by_name/electrum-nmc') %]
+
+ # Extract ncprop279
+ mkdir "$TBDIR/TorBrowser/ncprop279"
+ tar -C "$TBDIR/TorBrowser/ncprop279" -xf [% c('input_files_by_name/ncprop279') %]
+
+ # Extract StemNS
+ tar -C "$TBDIR/TorBrowser" -xf [% c('input_files_by_name/stemns') %]
+[% END %]
[% IF c("var/linux");
SET bundledata_osname = 'linux';
@@ -105,7 +121,14 @@ tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files
mkdir -p "$TBDIR/$DOCSPATH"
cp -a Bundle-Data/Docs/* "$TBDIR/$DOCSPATH"
-tar -C Bundle-Data/[% bundledata_osname %] -c . | tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -x
+[% IF c("var/namecoin") %]
+ EXCLUDE_ELECTRUM=""
+ EXCLUDE_NCPROP279=""
+[% ELSE %]
+ EXCLUDE_ELECTRUM="--exclude=*Electrum-NMC*"
+ EXCLUDE_NCPROP279="--exclude=*ncprop279*"
+[% END %]
+tar -C Bundle-Data/[% bundledata_osname %] "${EXCLUDE_ELECTRUM}" "${EXCLUDE_NCPROP279}" -c . | tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -x
cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$TBDIR/$TORCONFIGPATH/torrc-defaults"
[% IF ! c("var/snowflake") %]
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 819ebad..85d8bff 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -14,6 +14,7 @@ var:
- unzip
- bzip2
- xz-utils
+ - patch
targets:
linux-i686:
@@ -104,3 +105,14 @@ input_files:
name: apktool
sha256sum: a0f116e8916d6f21160e1559847bb8b8c32ee71900f321cafeadbe37b87ebcc1
enable: '[% c("var/android") %]'
+ - name: electrum-nmc
+ project: electrum-nmc
+ enable: '[% c("var/namecoin") %]'
+ - name: ncprop279
+ project: ncprop279
+ enable: '[% c("var/namecoin") %]'
+ - name: stemns
+ project: stemns
+ enable: '[% c("var/namecoin") %]'
+ - filename: namecoin.patch
+ enable: '[% c("var/namecoin") %]'
diff --git a/projects/tor-browser/namecoin.patch b/projects/tor-browser/namecoin.patch
new file mode 100644
index 0000000..f0c2cd0
--- /dev/null
+++ b/projects/tor-browser/namecoin.patch
@@ -0,0 +1,83 @@
+diff -ru RelativeLink/start-tor-browser RelativeLinkNamecoin/start-tor-browser
+--- RelativeLink/start-tor-browser 2019-11-03 06:56:36.062938844 +0000
++++ RelativeLinkNamecoin/start-tor-browser 2019-12-13 12:00:58.000000000 +0000
+@@ -169,6 +169,11 @@
+ detach=0
+ fi
+
++# We can't detach and enable Namecoin at the same time..
++if [ "$TOR_ENABLE_NAMECOIN" = 1 -a "$detach" -eq 1 ]; then
++ detach=0
++fi
++
+ if [ "$show_output" -eq 0 ]; then
+ # If the user hasn't requested 'debug mode' or --help, close stdout and stderr,
+ # to keep Firefox and the stuff loaded by/for it (including the
+@@ -352,6 +357,55 @@
+ #
+ # The --class parameter was added to fix bug 11102.
+
++# The Namecoin support in this script is a placeholder proof-of-concept only.
++# In the real world this would be moved to Tor Launcher.
++terminate_namecoin () {
++ echo "Terminating Namecoin..."
++ kill ${ELECTRUM_NMC_PID}
++ kill -s SIGKILL ${STEM_NS_PID}
++ echo "Terminated Namecoin."
++}
++if [ "${TOR_ENABLE_NAMECOIN}" = 1 ]; then
++ python3 -c 'import sys; exit(0) if sys.version_info[:2] >= (3, 6) else exit(1)'
++ if [ "$?" -ne 0 ]; then
++ complain "Namecoin requires at least Python 3.6."
++ exit 1
++ fi
++
++ if [ "$show_usage" -eq 1 ]; then
++ # No help exists for Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$detach" -eq 1 ] ; then
++ # No support yet for detached Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$log_output" -eq 1 -a "$show_output" -eq 1 ]; then
++ # No support yet for logging Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$show_output" -eq 1 ]; then
++ # Launch Namecoin in verbose mode
++ echo "Launching Namecoin..."
++ trap terminate_namecoin SIGINT SIGTERM
++ grep --quiet "__LeaveStreamsUnattached 1" TorBrowser/Data/Tor/torrc-defaults || echo "__LeaveStreamsUnattached 1" >> TorBrowser/Data/Tor/torrc-defaults
++ TorBrowser/Electrum-NMC/run_electrum_nmc daemon -v --dir "TorBrowser/Data/Electrum-NMC/" &
++ ELECTRUM_NMC_PID=$!
++ python3 TorBrowser/StemNS/poc.py &
++ STEM_NS_PID=$!
++ echo "Launched Namecoin."
++ else
++ # Launch Namecoin
++ trap terminate_namecoin SIGINT SIGTERM
++ grep --quiet "__LeaveStreamsUnattached 1" TorBrowser/Data/Tor/torrc-defaults || echo "__LeaveStreamsUnattached 1" >> TorBrowser/Data/Tor/torrc-defaults
++ TorBrowser/Electrum-NMC/run_electrum_nmc daemon --dir "TorBrowser/Data/Electrum-NMC/" &
++ ELECTRUM_NMC_PID=$!
++ python3 TorBrowser/StemNS/poc.py &
++ STEM_NS_PID=$!
++ fi
++fi
++
++if [ "${TOR_ENABLE_NAMECOIN}" != 1 ]; then
++ perl -i -p -e 's/__LeaveStreamsUnattached 1\n//' TorBrowser/Data/Tor/torrc-defaults
++fi
++
+ if [ "$show_usage" -eq 1 ]; then
+ # Display Firefox help, then our help
+ TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
+@@ -373,4 +427,10 @@
+ -profile TorBrowser/Data/Browser/profile.default "${@}" > "$logfile" 2>&1 </dev/null
+ fi
+
+-exit $?
++FIREFOX_EXIT_CODE=$?
++
++if [ "${TOR_ENABLE_NAMECOIN}" = 1 ]; then
++ terminate_namecoin
++fi
++
++exit ${FIREFOX_EXIT_CODE}
diff --git a/projects/typing_extensions/build b/projects/typing_extensions/build
new file mode 100644
index 0000000..2628ad1
--- /dev/null
+++ b/projects/typing_extensions/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/src_py3/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/typing_extensions/config b/projects/typing_extensions/config
new file mode 100644
index 0000000..4926d82
--- /dev/null
+++ b/projects/typing_extensions/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.7.4
+git_url: https://github.com/python/typing.git
+git_hash: baf63c5924a2b9695175df5d47ced40596024b78
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/yarl/build b/projects/yarl/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/yarl/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/yarl/config b/projects/yarl/config
new file mode 100644
index 0000000..506bec1
--- /dev/null
+++ b/projects/yarl/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.3.0
+git_url: https://github.com/aio-libs/yarl.git
+git_hash: 619cc2203b8888fb9ad552c4a3da6f8b31d1fbac
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/rbm.conf b/rbm.conf
index 0fe7acb..31f60bb 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -233,6 +233,7 @@ targets:
android_min_api_x86: 16
android_min_api_x86_64: 21
snowflake: 0
+ namecoin: 0
CC: '$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/bin/clang'
CXX: '$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/bin/clang++'
container:
@@ -275,6 +276,8 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ # Only build Namecoin for linux on nightly
+ namecoin: '[% c("var/nightly") %]'
container:
suite: wheezy
arch: amd64
@@ -327,6 +330,7 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ namecoin: 0
deps:
- build-essential
- python
@@ -355,6 +359,7 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ namecoin: 0
deps:
- build-essential
- python
1
0
[tor-browser-build/master] Merge remote-tracking branch 'jrand/namecoin-v10'
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 64a1bed987212218a2a04e456e1828bf135ab703
Merge: 16e629f dc1fa8a
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Dec 18 14:18:39 2019 +0000
Merge remote-tracking branch 'jrand/namecoin-v10'
projects/aiohttp/build | 14 ++
projects/aiohttp/config | 11 ++
projects/aiohttp_socks/build | 14 ++
projects/aiohttp_socks/config | 11 ++
projects/aiorpcx/build | 14 ++
projects/aiorpcx/config | 11 ++
projects/async_timeout/build | 14 ++
projects/async_timeout/config | 11 ++
projects/attr/build | 14 ++
projects/attr/config | 11 ++
projects/certifi/build | 16 ++
projects/certifi/config | 13 ++
projects/certifi/roots_of_top_10_issuers.pem | 217 +++++++++++++++++++++
projects/chardet/build | 14 ++
projects/chardet/config | 11 ++
projects/dns/build | 17 ++
projects/dns/config | 11 ++
projects/ecdsa/build | 14 ++
projects/ecdsa/config | 11 ++
projects/electrum-nmc/build | 42 ++++
projects/electrum-nmc/config | 48 +++++
projects/firefox/build | 10 +
projects/firefox/config | 5 +
projects/firefox/namecoin-etld.patch | 25 +++
projects/firefox/namecoin-torbutton.patch | 105 ++++++++++
projects/goansicolor/config | 16 ++
projects/gobtcd/config | 32 +++
projects/gobtcd2/config | 32 +++
projects/gobtclog/config | 16 ++
projects/gobtcutil/config | 23 +++
projects/gobuildinfo/config | 31 +++
projects/goconfigurable/config | 16 ++
projects/godegoutils/config | 22 +++
projects/godexlogconfig/config | 40 ++++
projects/godns/config | 26 +++
projects/goeasyconfig/config | 35 ++++
projects/gogroupcache/config | 18 ++
projects/goisatty/config | 20 ++
projects/gokingpin/config | 23 +++
projects/gomadns/config | 40 ++++
projects/goncbtcjson/config | 20 ++
projects/goncrpcclient/config | 23 +++
projects/gopflag/config | 16 ++
projects/gopretty/config | 20 ++
projects/goservice/config | 44 +++++
projects/gosocks/config | 18 ++
projects/gosvcutils/config | 47 +++++
projects/gosystemd/config | 29 +++
projects/gotemplate/config | 16 ++
projects/gotext/config | 16 ++
projects/gotoml/config | 16 ++
projects/gounits/config | 16 ++
projects/gowebsocket/config | 16 ++
projects/goxcryptoed25519/config | 19 ++
projects/goxcryptoripemd160/config | 19 ++
projects/goxlog/config | 23 +++
projects/goxnetip/config | 24 +++
projects/goxsysunix/config | 19 ++
projects/idna/build | 14 ++
projects/idna/config | 11 ++
projects/idna_ssl/build | 14 ++
projects/idna_ssl/config | 11 ++
projects/jsonrpclib/build | 14 ++
projects/jsonrpclib/config | 11 ++
projects/multidict/build | 14 ++
projects/multidict/config | 11 ++
projects/ncdns/build | 31 +++
projects/ncdns/config | 82 ++++++++
projects/ncprop279/build | 32 +++
projects/ncprop279/config | 32 +++
projects/pyaes/build | 14 ++
projects/pyaes/config | 11 ++
projects/six/build | 14 ++
projects/six/config | 11 ++
projects/stemns/build | 25 +++
projects/stemns/config | 17 ++
projects/stemns/settings_port.py | 1 +
projects/stemns/settings_services.py | 4 +
.../Bundle-Data/linux/Data/Electrum-NMC/config | 6 +
.../linux/Data/ncprop279/ncprop279.conf | 12 ++
projects/tor-browser/build | 25 ++-
projects/tor-browser/config | 12 ++
projects/tor-browser/namecoin.patch | 83 ++++++++
projects/typing_extensions/build | 14 ++
projects/typing_extensions/config | 11 ++
projects/yarl/build | 14 ++
projects/yarl/config | 11 ++
rbm.conf | 5 +
88 files changed, 2041 insertions(+), 1 deletion(-)
1
0
[tor-browser-bundle-testsuite/master] Bug 25101: Remove tools/prune-old-builds
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit ea0942f9da2bdbaf3f140f3baaed1bb56ee9af69
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Dec 16 21:35:49 2019 +0100
Bug 25101: Remove tools/prune-old-builds
The prune-old-builds script has been moved to tor-browser-build.git, in
tools/ansible/roles/tbb-nightly-build/files/prune-old-builds.
---
.gitmodules | 3 ---
tools/prune-old-builds | 1 -
2 files changed, 4 deletions(-)
diff --git a/.gitmodules b/.gitmodules
index a6d0dd9..067f871 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
[submodule "packages/rbm"]
path = packages/rbm
url = https://github.com/boklm/rbm
-[submodule "tools/prune-old-builds"]
- path = tools/prune-old-builds
- url = https://github.com/boklm/prune-old-builds
diff --git a/tools/prune-old-builds b/tools/prune-old-builds
deleted file mode 160000
index 8cb7522..0000000
--- a/tools/prune-old-builds
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 8cb752270ef0c1d82a07196c5fc5024f042d7885
1
0
[tor-browser-bundle-testsuite/master] Bug 25101: Generate incremental mars for nightly builds
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 4261c714139e0d9896d17c92af54747f34bd9f9b
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Tue Dec 10 21:13:10 2019 +0100
Bug 25101: Generate incremental mars for nightly builds
---
TBBTestSuite/TestSuite/TorBrowserBuild.pm | 58 +++++++++++++++++++++++++++++++
tmpl/details_make_incrementals.html | 1 +
2 files changed, 59 insertions(+)
diff --git a/TBBTestSuite/TestSuite/TorBrowserBuild.pm b/TBBTestSuite/TestSuite/TorBrowserBuild.pm
index c52d5c4..d391bac 100644
--- a/TBBTestSuite/TestSuite/TorBrowserBuild.pm
+++ b/TBBTestSuite/TestSuite/TorBrowserBuild.pm
@@ -3,9 +3,11 @@ package TBBTestSuite::TestSuite::TorBrowserBuild;
use strict;
use parent 'TBBTestSuite::TestSuite::RBMBuild';
+use TBBTestSuite::Common qw(run_to_file);
use TBBTestSuite::GitRepo;
use File::Copy;
use IO::CaptureOutput qw(capture_exec);
+use Path::Tiny;
sub description {
'Tor Browser Build';
@@ -15,6 +17,13 @@ sub type {
'tor-browser_build';
};
+sub test_types {
+ my $self = shift;
+ my $res = $self->SUPER::test_types();
+ $res->{make_incrementals} = \&make_incrementals;
+ return $res;
+}
+
sub set_tests {
my ($testsuite) = @_;
$testsuite->{tests} = [
@@ -32,6 +41,12 @@ sub set_tests {
publish_dir => 'nightly-linux-x86_64',
},
{
+ name => 'incrementals-nightly-linux-x86_64',
+ descr => 'create incrementals for tor-browser nightly linux-x86_64',
+ type => 'make_incrementals',
+ publish_dir => 'nightly-linux-x86_64',
+ },
+ {
name => 'nightly-linux-i686',
descr => 'build tor-browser nightly linux-i686',
type => 'rbm_build',
@@ -44,6 +59,12 @@ sub set_tests {
publish_dir => 'nightly-linux-i686',
},
{
+ name => 'incrementals-nightly-linux-i686',
+ descr => 'create incrementals for tor-browser nightly linux-i686',
+ type => 'make_incrementals',
+ publish_dir => 'nightly-linux-i686',
+ },
+ {
name => 'nightly-windows-i686',
descr => 'build tor-browser nightly windows-i686',
type => 'rbm_build',
@@ -56,6 +77,12 @@ sub set_tests {
publish_dir => 'nightly-windows-i686',
},
{
+ name => 'incrementals-nightly-windows-i686',
+ descr => 'create incrementals for tor-browser nightly windows-i686',
+ type => 'make_incrementals',
+ publish_dir => 'nightly-windows-i686',
+ },
+ {
name => 'nightly-windows-x86_64',
descr => 'build tor-browser nightly windows-x86_64',
type => 'rbm_build',
@@ -68,6 +95,12 @@ sub set_tests {
publish_dir => 'nightly-windows-x86_64',
},
{
+ name => 'incrementals-nightly-windows-x86_64',
+ descr => 'create incrementals for tor-browser nightly windows-x86_64',
+ type => 'make_incrementals',
+ publish_dir => 'nightly-windows-x86_64',
+ },
+ {
name => 'nightly-osx-x86_64',
descr => 'build tor-browser nightly osx-x86_64',
type => 'rbm_build',
@@ -80,6 +113,12 @@ sub set_tests {
publish_dir => 'nightly-osx-x86_64',
},
{
+ name => 'incrementals-nightly-osx-x86_64',
+ descr => 'create incrementals for tor-browser nightly osx-x86_64',
+ type => 'make_incrementals',
+ publish_dir => 'nightly-osx-x86_64',
+ },
+ {
name => 'nightly-android-armv7',
descr => 'build tor-browser nightly android-armv7',
type => 'rbm_build',
@@ -130,6 +169,25 @@ sub set_tests {
];
}
+sub make_incrementals {
+ my ($testsuite, $test) = @_;
+ $test->{results}{success} = 0;
+ mkdir 'nightly' unless -d 'nightly';
+ # Clean the nightly directory
+ foreach my $subdir (path('nightly')->children) {
+ unlink $subdir if -l $subdir;
+ }
+ foreach my $builddir (path($testsuite->{publish_dir} . '/..')->children) {
+ if (-f "$builddir/$test->{publish_dir}/sha256sums-unsigned-build.txt") {
+ symlink("$builddir/$test->{publish_dir}", 'nightly/' . $builddir->basename);
+ }
+ }
+ my @cmd = ('make', 'incrementals-nightly');
+ run_to_file("$testsuite->{'results-dir'}/$test->{name}.build.txt", @cmd)
+ or return;
+ $test->{results}{success} = 1;
+}
+
sub pre_tests {
my ($tbbinfos) = @_;
my $gr = TBBTestSuite::GitRepo->new({
diff --git a/tmpl/details_make_incrementals.html b/tmpl/details_make_incrementals.html
new file mode 120000
index 0000000..d9bb49c
--- /dev/null
+++ b/tmpl/details_make_incrementals.html
@@ -0,0 +1 @@
+details_rbm_build.html
\ No newline at end of file
1
0
[tor-browser-bundle-testsuite/master] Bug 25101: Set TORBROWSER_NIGHTLY_VERSION env variable
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 679ee355425b0cb4bf77626a8b16755c1c43db60
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Tue Dec 10 20:13:18 2019 +0100
Bug 25101: Set TORBROWSER_NIGHTLY_VERSION env variable
---
TBBTestSuite/TestSuite/TorBrowserBuild.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/TBBTestSuite/TestSuite/TorBrowserBuild.pm b/TBBTestSuite/TestSuite/TorBrowserBuild.pm
index 1389092..c52d5c4 100644
--- a/TBBTestSuite/TestSuite/TorBrowserBuild.pm
+++ b/TBBTestSuite/TestSuite/TorBrowserBuild.pm
@@ -149,6 +149,9 @@ sub pre_tests {
return;
}
}
+ if ($tbbinfos->{tbb_version}) {
+ $ENV{TORBROWSER_NIGHTLY_VERSION} = $tbbinfos->{tbb_version};
+ }
}
1;
1
0
[tor-browser-build/master] Bug 25101: Generate incremental mars for nightly builds
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 608fbb6f06237c0e0786b650433ca0c4cc203f72
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Dec 11 00:15:33 2019 +0100
Bug 25101: Generate incremental mars for nightly builds
Update testsuite_git_commit so that incremental mars are generated
as part of our nightly builds.
---
tools/ansible/roles/tbb-nightly-build/defaults/main.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/ansible/roles/tbb-nightly-build/defaults/main.yml b/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
index f7f63f5..0a9e94a 100644
--- a/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
+++ b/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
@@ -5,7 +5,7 @@ nightly_build_cron_minute: 20
nightly_build_keep_builds: 3
testsuite_dir: "/home/{{ nightly_build_user }}/tbb-testsuite"
testsuite_git_url: https://git.torproject.org/tor-browser-bundle-testsuite.git
-testsuite_git_commit: d5e23151bf4ff48146c0c33355fe70def5e4d3f2
+testsuite_git_commit: ea0942f9da2bdbaf3f140f3baaed1bb56ee9af69
nightly_build_wwwdir: "/home/{{ nightly_build_user }}/www"
nightly_build_nginx_enable: true
nightly_build_nginx_listen: 127.0.0.1:80
1
0
[tor-browser-build/master] Bug 25101: Add license and usage information to the prune-old-builds script
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 434a7d9e9ad8785c92a6dae014de990a9595c77f
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Dec 16 21:00:31 2019 +0100
Bug 25101: Add license and usage information to the prune-old-builds script
---
.../roles/tbb-nightly-build/files/prune-old-builds | 57 ++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
index 5d54229..1b4e30b 100755
--- a/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
+++ b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
@@ -1,4 +1,61 @@
#!/usr/bin/perl -w
+
+# Copyright (c) 2019, The Tor Project, Inc.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#
+# * Neither the names of the copyright owners nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# 'prune-old-builds' is a script to prune old builds.
+#
+#
+# Usage:
+# $ ./prune-old-builds [options] <directory>
+#
+#
+# Available options:
+#
+# --dry-run
+# Don't delete anything, but say what would be deleted.
+#
+# --prefix <prefix>
+# Prefix of the directories to be removed. Default is 'tbb-nightly-'.
+#
+# --days <n>
+# Number of days that we should keep. Default is 6.
+#
+# --weeks <n>
+# Number of monday builds that we should keep. Default is 3.
+#
+# --months <n>
+# Number of 1st day of the month builds that we should keep.
+# Default is 3.
+
use strict;
use Getopt::Long;
use DateTime;
1
0
[tor-browser-build/master] Bug 25101: Change nightly builds directory to be the version
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 2d5508bfea59900b8d5952d895ac0e9610c70503
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Dec 11 00:10:56 2019 +0100
Bug 25101: Change nightly builds directory to be the version
To make generation of incremental mars easier, we use the version as the
directory name (instead of just the date).
We also define the tbb_version option, which is used to set the
TORBROWSER_NIGHTLY_VERSION environment variable.
---
.../roles/tbb-nightly-build/files/prune-old-builds | 17 +++++++++++------
.../roles/tbb-nightly-build/templates/start-tbb-nightly | 2 +-
.../roles/tbb-nightly-build/templates/testsuite-config | 6 ++++--
3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
index 1b4e30b..852a9da 100755
--- a/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
+++ b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
@@ -44,7 +44,11 @@
# Don't delete anything, but say what would be deleted.
#
# --prefix <prefix>
-# Prefix of the directories to be removed. Default is 'tbb-nightly-'.
+# Prefix of the directories to be removed. Default is 'tbb-nightly.'.
+#
+# --separator <c>
+# Separator character to separate the year, month, day in the directory
+# names. Default is '.'.
#
# --days <n>
# Number of days that we should keep. Default is 6.
@@ -66,7 +70,8 @@ my %options = (
days => 6,
weeks => 3,
months => 3,
- prefix => 'tbb-nightly-',
+ prefix => 'tbb-nightly.',
+ separator => '.',
);
sub keep_builds {
@@ -79,7 +84,7 @@ sub keep_builds {
my $n = $options{days};
my $dt = DateTime->now;
while ($n) {
- $res{ $options{prefix} . $dt->ymd } = 1;
+ $res{ $options{prefix} . $dt->ymd($options{separator}) } = 1;
$dt = $dt - $day;
$n--;
}
@@ -89,7 +94,7 @@ sub keep_builds {
$dt = $dt - $day;
}
while ($w) {
- $res{ $options{prefix} . $dt->ymd } = 1;
+ $res{ $options{prefix} . $dt->ymd($options{separator}) } = 1;
$dt = $dt - $week;
$w--;
}
@@ -100,7 +105,7 @@ sub keep_builds {
$dt = $dt - $day;
}
while ($m) {
- $res{ $options{prefix} . $dt->ymd } = 1;
+ $res{ $options{prefix} . $dt->ymd($options{separator}) } = 1;
$dt = $dt - $month;
$m--;
}
@@ -113,7 +118,7 @@ sub clean_directory {
my $k = keep_builds;
chdir $directory || die "Error entering $directory";
foreach my $file (glob "$options{prefix}*") {
- next unless $file =~ m/^$options{prefix}\d{4}-\d{2}-\d{2}$/;
+ next unless $file =~ m/^$options{prefix}\d{4}$options{separator}\d{2}$options{separator}\d{2}$/;
next if $k->{$file};
if ($options{'dry-run'}) {
print "Would remove $file\n";
diff --git a/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly b/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
index c93bc94..fafc1d9 100644
--- a/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
+++ b/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
@@ -2,4 +2,4 @@
cd {{ testsuite_dir }}
export RBM_NO_DEBUG=1
./tbb-testsuite --config=tbb-nightly "$@"
-/home/{{ nightly_build_user }}/prune-old-builds --prefix '' --days {{ nightly_build_keep_builds }} ./tor-browser-builds
+/home/{{ nightly_build_user }}/prune-old-builds --days {{ nightly_build_keep_builds }} ./tor-browser-builds
diff --git a/tools/ansible/roles/tbb-nightly-build/templates/testsuite-config b/tools/ansible/roles/tbb-nightly-build/templates/testsuite-config
index c07c52c..90b08ac 100644
--- a/tools/ansible/roles/tbb-nightly-build/templates/testsuite-config
+++ b/tools/ansible/roles/tbb-nightly-build/templates/testsuite-config
@@ -5,6 +5,7 @@ use DateTime;
use TBBTestSuite::TestSuite::TorBrowserBuild;
my $date = DateTime->now->ymd;
+my $tbb_version = 'tbb-nightly.' . DateTime->now->ymd('.');
my $name = "tor-browser-$date";
if (-d "$options->{'reports-dir'}/r/$name") {
@@ -13,8 +14,9 @@ if (-d "$options->{'reports-dir'}/r/$name") {
}
my $testsuite = TBBTestSuite::TestSuite::TorBrowserBuild->new({
- publish_dir => "$FindBin::Bin/tor-browser-builds/$date",
- publish_url => "{{ nightly_build_url }}/tor-browser-builds/$date",
+ tbb_version => $tbb_version,
+ publish_dir => "$FindBin::Bin/tor-browser-builds/$tbb_version",
+ publish_url => "{{ nightly_build_url }}/tor-browser-builds/$tbb_version",
rbm_local_conf => "$FindBin::Bin/rbm-config/tbb-nightly.rbm.local.conf",
make_clean => 1,
});
1
0
[tor-browser-build/master] Bug 25101: Add the prune-old-builds script
by gk@torproject.org 18 Dec '19
by gk@torproject.org 18 Dec '19
18 Dec '19
commit 073dfa5f7402b54cfe7772d71a1c931552908463
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Dec 16 20:52:54 2019 +0100
Bug 25101: Add the prune-old-builds script
Previously we were using the prune-old-builds script which was located
in the testsuite repository in tools/prune-old-builds, as a git submodule.
As this script is not used anywhere other than here, it doesn't make
much sense to keep it as a separate git submodule. To simplify
modification of this script, we move it here.
---
.../roles/tbb-nightly-build/files/prune-old-builds | 74 ++++++++++++++++++++++
.../ansible/roles/tbb-nightly-build/tasks/main.yml | 7 ++
.../tbb-nightly-build/templates/start-tbb-nightly | 2 +-
3 files changed, 82 insertions(+), 1 deletion(-)
diff --git a/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
new file mode 100755
index 0000000..5d54229
--- /dev/null
+++ b/tools/ansible/roles/tbb-nightly-build/files/prune-old-builds
@@ -0,0 +1,74 @@
+#!/usr/bin/perl -w
+use strict;
+use Getopt::Long;
+use DateTime;
+use DateTime::Duration;
+use File::Path qw(remove_tree);
+
+my %options = (
+ days => 6,
+ weeks => 3,
+ months => 3,
+ prefix => 'tbb-nightly-',
+);
+
+sub keep_builds {
+ my %res;
+
+ my $day = DateTime::Duration->new(days => 1);
+ my $week = DateTime::Duration->new(weeks => 1);
+ my $month = DateTime::Duration->new(months => 1);
+
+ my $n = $options{days};
+ my $dt = DateTime->now;
+ while ($n) {
+ $res{ $options{prefix} . $dt->ymd } = 1;
+ $dt = $dt - $day;
+ $n--;
+ }
+
+ my $w = $options{weeks};
+ while ($dt->day_of_week != 1) {
+ $dt = $dt - $day;
+ }
+ while ($w) {
+ $res{ $options{prefix} . $dt->ymd } = 1;
+ $dt = $dt - $week;
+ $w--;
+ }
+
+ my $m = $options{months};
+ $dt = DateTime->now;
+ while ($dt->day != 1) {
+ $dt = $dt - $day;
+ }
+ while ($m) {
+ $res{ $options{prefix} . $dt->ymd } = 1;
+ $dt = $dt - $month;
+ $m--;
+ }
+
+ return \%res;
+}
+
+sub clean_directory {
+ my ($directory) = @_;
+ my $k = keep_builds;
+ chdir $directory || die "Error entering $directory";
+ foreach my $file (glob "$options{prefix}*") {
+ next unless $file =~ m/^$options{prefix}\d{4}-\d{2}-\d{2}$/;
+ next if $k->{$file};
+ if ($options{'dry-run'}) {
+ print "Would remove $file\n";
+ } else {
+ remove_tree($file);
+ }
+ }
+}
+
+my @opts = qw(days=i weeks=i months=i prefix=s dry-run!);
+Getopt::Long::GetOptions(\%options, @opts);
+die "Missing argument: directory to clean" unless @ARGV;
+foreach my $dir (@ARGV) {
+ clean_directory($dir);
+}
diff --git a/tools/ansible/roles/tbb-nightly-build/tasks/main.yml b/tools/ansible/roles/tbb-nightly-build/tasks/main.yml
index 64d31a9..2c795b8 100644
--- a/tools/ansible/roles/tbb-nightly-build/tasks/main.yml
+++ b/tools/ansible/roles/tbb-nightly-build/tasks/main.yml
@@ -39,6 +39,13 @@
mode: 0644
owner: "{{ nightly_build_user }}"
+- name: prune-old-builds
+ copy:
+ src: prune-old-builds
+ dest: "/home/{{ nightly_build_user }}/prune-old-builds"
+ mode: 0755
+ owner: "{{ nightly_build_user }}"
+
- name: add start-tbb-nightly script
template:
src: start-tbb-nightly
diff --git a/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly b/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
index 3c1847d..c93bc94 100644
--- a/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
+++ b/tools/ansible/roles/tbb-nightly-build/templates/start-tbb-nightly
@@ -2,4 +2,4 @@
cd {{ testsuite_dir }}
export RBM_NO_DEBUG=1
./tbb-testsuite --config=tbb-nightly "$@"
-./tools/prune-old-builds/prune-old-builds --prefix '' --days {{ nightly_build_keep_builds }} ./tor-browser-builds
+/home/{{ nightly_build_user }}/prune-old-builds --prefix '' --days {{ nightly_build_keep_builds }} ./tor-browser-builds
1
0
18 Dec '19
commit 8489c017a01460d3e88e06dfc7a1edd3f02b71f8
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Dec 16 21:09:20 2019 +0100
Bug 25101: Keep 3 nightly builds
In rbm.conf we currently have var/max_torbrowser_incremental_from set to
2. In order to be able to generate incrementals from the previous two
versions, we need to keep 3 builds.
---
tools/ansible/roles/tbb-nightly-build/defaults/main.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/ansible/roles/tbb-nightly-build/defaults/main.yml b/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
index 34d3929..f7f63f5 100644
--- a/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
+++ b/tools/ansible/roles/tbb-nightly-build/defaults/main.yml
@@ -2,7 +2,7 @@
nightly_build_user: tbb-nightly
nightly_build_cron_hour: 2
nightly_build_cron_minute: 20
-nightly_build_keep_builds: 2
+nightly_build_keep_builds: 3
testsuite_dir: "/home/{{ nightly_build_user }}/tbb-testsuite"
testsuite_git_url: https://git.torproject.org/tor-browser-bundle-testsuite.git
testsuite_git_commit: d5e23151bf4ff48146c0c33355fe70def5e4d3f2
1
0