aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/README.md6
-rw-r--r--contrib/bitrpc/bitrpc.py12
-rw-r--r--contrib/debian/control6
-rw-r--r--contrib/debian/examples/bitcoin.conf97
-rw-r--r--contrib/debian/manpages/bitcoin-qt.15
-rw-r--r--contrib/debian/manpages/bitcoin.conf.55
-rw-r--r--contrib/debian/manpages/bitcoind.12
-rw-r--r--contrib/devtools/README.md12
-rwxr-xr-xcontrib/devtools/symbol-check.py5
-rwxr-xr-xcontrib/devtools/update-translations.py66
-rw-r--r--contrib/gitian-descriptors/deps-linux.yml10
-rw-r--r--contrib/gitian-descriptors/deps-win.yml10
-rw-r--r--contrib/gitian-descriptors/gitian-linux.yml28
-rw-r--r--contrib/gitian-descriptors/gitian-osx-bitcoin.yml61
-rw-r--r--contrib/gitian-descriptors/gitian-osx-depends.yml159
-rw-r--r--contrib/gitian-descriptors/gitian-osx-native.yml178
-rw-r--r--contrib/gitian-descriptors/gitian-osx-qt.yml186
-rw-r--r--contrib/gitian-descriptors/gitian-win.yml6
-rw-r--r--contrib/gitian-descriptors/qt-linux.yml264
-rw-r--r--contrib/gitian-descriptors/qt-win.yml6
-rw-r--r--contrib/gitian-downloader/cfields-key.pgp52
-rw-r--r--contrib/gitian-downloader/linux-download-config3
-rw-r--r--contrib/gitian-downloader/win32-download-config3
-rw-r--r--contrib/macdeploy/README.md4
-rwxr-xr-xcontrib/macdeploy/macdeployqtplus18
-rw-r--r--contrib/pyminer/README.md8
-rw-r--r--contrib/pyminer/example-config.cfg32
-rwxr-xr-xcontrib/pyminer/pyminer.py252
-rw-r--r--contrib/systemd/bitcoind.service17
-rw-r--r--contrib/verifysfbinaries/README.md2
-rwxr-xr-xcontrib/verifysfbinaries/verify.sh8
31 files changed, 1138 insertions, 385 deletions
diff --git a/contrib/README.md b/contrib/README.md
index 92d0a343db..dae975e9ef 100644
--- a/contrib/README.md
+++ b/contrib/README.md
@@ -19,13 +19,9 @@ Contains the script `github-merge.sh` for merging github pull requests securely
### [Linearize](/contrib/linearize) ###
Construct a linear, no-fork, best version of the blockchain.
-### [PyMiner](/contrib/pyminer) ###
-
-This is a 'getwork' CPU mining client for Bitcoin. It is pure-python, and therefore very, very slow. The purpose is to provide a reference implementation of a miner, for study.
-
### [Qos](/contrib/qos) ###
-A Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it.
+A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it.
### [Seeds](/contrib/seeds) ###
Utility to generate the pnSeed[] array that is compiled into the client.
diff --git a/contrib/bitrpc/bitrpc.py b/contrib/bitrpc/bitrpc.py
index a84d7e34dd..02577b1b6a 100644
--- a/contrib/bitrpc/bitrpc.py
+++ b/contrib/bitrpc/bitrpc.py
@@ -22,6 +22,18 @@ if cmd == "backupwallet":
print access.backupwallet(path)
except:
print "\n---An error occurred---\n"
+
+elif cmd == "encryptwallet":
+ try:
+ pwd = getpass.getpass(prompt="Enter passphrase: ")
+ pwd2 = getpass.getpass(prompt="Repeat passphrase: ")
+ if pwd == pwd2:
+ access.encryptwallet(pwd)
+ print "\n---Wallet encrypted. Server stopping, restart to run with encrypted wallet---\n"
+ else:
+ print "\n---Passphrases do not match---\n"
+ except:
+ print "\n---An error occurred---\n"
elif cmd == "getaccount":
try:
diff --git a/contrib/debian/control b/contrib/debian/control
index 9e006a7070..ac635f43e0 100644
--- a/contrib/debian/control
+++ b/contrib/debian/control
@@ -6,6 +6,7 @@ Uploaders: Micah Anderson <micah@debian.org>
Build-Depends: debhelper,
devscripts,
automake,
+ libtool,
bash-completion,
libboost-system-dev (>> 1.35) | libboost-system1.35-dev,
libdb4.8++-dev,
@@ -38,8 +39,9 @@ Description: peer-to-peer network based digital currency - daemon
Full transaction history is stored locally at each client. This
requires 20+ GB of space, slowly growing.
.
- This package provides bitcoind, a combined daemon and CLI tool to
- interact with the daemon.
+
+ This package provides the daemon, bitcoind, and the CLI tool
+ bitcoin-cli to interact with the daemon.
Package: bitcoin-qt
Architecture: any
diff --git a/contrib/debian/examples/bitcoin.conf b/contrib/debian/examples/bitcoin.conf
index 10ec36ae7e..31cca981e0 100644
--- a/contrib/debian/examples/bitcoin.conf
+++ b/contrib/debian/examples/bitcoin.conf
@@ -1,79 +1,110 @@
-# bitcoin.conf configuration file. Lines beginning with # are comments.
-
-
+##
+## bitcoin.conf configuration file. Lines beginning with # are comments.
+##
+
# Network-related settings:
# Run on the test network instead of the real bitcoin network.
-#testnet=1
+#testnet=0
-# Connect via a socks4 proxy
+# Run a regression test network
+#regtest=0
+
+# Connect via a SOCKS5 proxy
#proxy=127.0.0.1:9050
+##############################################################
+## Quick Primer on addnode vs connect ##
+## Let's say for instance you use addnode=4.2.2.4 ##
+## addnode will connect you to and tell you about the ##
+## nodes connected to 4.2.2.4. In addition it will tell ##
+## the other nodes connected to it that you exist so ##
+## they can connect to you. ##
+## connect will not do the above when you 'connect' to it. ##
+## It will *only* connect you to 4.2.2.4 and no one else.##
+## ##
+## So if you're behind a firewall, or have other problems ##
+## finding nodes, add some using 'addnode'. ##
+## ##
+## If you want to stay private, use 'connect' to only ##
+## connect to "trusted" nodes. ##
+## ##
+## If you run multiple nodes on a LAN, there's no need for ##
+## all of them to open lots of connections. Instead ##
+## 'connect' them all to one node that is port forwarded ##
+## and has lots of connections. ##
+## Thanks goes to [Noodle] on Freenode. ##
+##############################################################
+
# Use as many addnode= settings as you like to connect to specific peers
#addnode=69.164.218.197
#addnode=10.0.0.2:8333
-# ... or use as many connect= settings as you like to connect ONLY
-# to specific peers:
+# Alternatively use as many connect= settings as you like to connect ONLY to specific peers
#connect=69.164.218.197
#connect=10.0.0.1:8333
+# Listening mode, enabled by default except when 'connect' is being used
+#listen=1
+
# Maximum number of inbound+outbound connections.
#maxconnections=
-
+#
# JSON-RPC options (for controlling a running Bitcoin/bitcoind process)
+#
-# server=1 tells Bitcoin to accept JSON-RPC commands.
-#server=1
+# server=1 tells Bitcoin-QT and bitcoind to accept JSON-RPC commands
+#server=0
# You must set rpcuser and rpcpassword to secure the JSON-RPC api
#rpcuser=Ulysseys
-#rpcpassword=YourSuperGreatPasswordNumber_385593
+#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593
+
+# How many seconds bitcoin will wait for a complete RPC HTTP request.
+# after the HTTP connection is established.
+#rpctimeout=30
-# By default, only RPC connections from localhost are allowed. Specify
-# as many rpcallowip= settings as you like to allow connections from
-# other hosts (and you may use * as a wildcard character):
-#rpcallowip=10.1.1.34
-#rpcallowip=192.168.1.*
+# By default, only RPC connections from localhost are allowed.
+# Specify as many rpcallowip= settings as you like to allow connections from other hosts,
+# either as a single IPv4/IPv6 or with a subnet specification.
+
+# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
+# because the rpcpassword is transmitted over the network unencrypted.
+
+# server=1 tells Bitcoin-QT to accept JSON-RPC commands.
+# it is also read by bitcoind to determine if RPC should be enabled
+#rpcallowip=10.1.1.34/255.255.255.0
+#rpcallowip=1.2.3.4/24
+#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
# Listen for RPC connections on this TCP port:
-rpcport=8332
+#rpcport=8332
# You can use Bitcoin or bitcoind to send commands to Bitcoin/bitcoind
# running on another host using this option:
-rpcconnect=127.0.0.1
+#rpcconnect=127.0.0.1
# Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate
# with Bitcoin -server or bitcoind
#rpcssl=1
# OpenSSL settings used when rpcssl=1
-rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
-rpcsslcertificatechainfile=server.cert
-rpcsslprivatekeyfile=server.pem
+#rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
+#rpcsslcertificatechainfile=server.cert
+#rpcsslprivatekeyfile=server.pem
# Miscellaneous options
-# Set gen=1 to attempt to generate bitcoins
-gen=0
-
-# Use SSE instructions to try to generate bitcoins faster.
-#4way=1
-
# Pre-generate this many public/private key pairs, so wallet backups will be valid for
# both prior transactions and several dozen future transactions.
-keypool=100
+#keypool=100
# Pay an optional transaction fee every time you send bitcoins. Transactions with fees
# are more likely than free transactions to be included in generated blocks, so may
# be validated sooner.
-paytxfee=0.00
-
-# Allow direct connections for the 'pay via IP address' feature.
-#allowreceivebyip=1
-
+#paytxfee=0.00
# User interface options
diff --git a/contrib/debian/manpages/bitcoin-qt.1 b/contrib/debian/manpages/bitcoin-qt.1
index cd478b1875..a023582bc0 100644
--- a/contrib/debian/manpages/bitcoin-qt.1
+++ b/contrib/debian/manpages/bitcoin-qt.1
@@ -32,10 +32,7 @@ Set database cache size in megabytes (default: 25)
Specify connection timeout in milliseconds (default: 5000)
.TP
\fB\-proxy=\fR<ip:port>
-Connect through socks proxy
-.TP
-\fB\-socks=\fR<n>
-Select the version of socks proxy to use (4\-5, default: 5)
+Connect through SOCKS5 proxy
.TP
\fB\-tor=\fR<ip:port>
Use proxy to reach tor hidden services (default: same as \fB\-proxy\fR)
diff --git a/contrib/debian/manpages/bitcoin.conf.5 b/contrib/debian/manpages/bitcoin.conf.5
index eef213149d..8a0078d5d5 100644
--- a/contrib/debian/manpages/bitcoin.conf.5
+++ b/contrib/debian/manpages/bitcoin.conf.5
@@ -2,7 +2,7 @@
.SH NAME
bitcoin.conf \- bitcoin configuration file
.SH SYNOPSIS
-All command-line options (except for '\-datadir' and '\-conf') may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.
+All command-line options (except for '\-conf') may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.
.TP
The configuration file is a list of 'setting=value' pairs, one per line, with optional comments starting with the '#' character.
.TP
@@ -37,9 +37,6 @@ You must set *rpcuser* to secure the JSON-RPC api.
\fBrpcpassword=\fR\fI'password'\fR
You must set *rpcpassword* to secure the JSON-RPC api.
.TP
-\fBrpctimeout=\fR\fI'30'\fR
-How many seconds *bitcoin* will wait for a complete RPC HTTP request, after the HTTP connection is established.
-.TP
\fBrpcallowip=\fR\fI'192.168.1.*'\fR
By default, only RPC connections from localhost are allowed. Specify as many *rpcallowip=* settings as you like to allow connections from other hosts (and you may use * as a wildcard character).
.TP
diff --git a/contrib/debian/manpages/bitcoind.1 b/contrib/debian/manpages/bitcoind.1
index 0c191b6043..a1b17d6077 100644
--- a/contrib/debian/manpages/bitcoind.1
+++ b/contrib/debian/manpages/bitcoind.1
@@ -28,7 +28,7 @@ Start minimized
Specify data directory
.TP
\fB\-proxy=\fR<ip:port>
-Connect through socks4 proxy
+Connect through SOCKS5 proxy
.TP
\fB\-addnode=\fR<ip>
Add a node to connect to
diff --git a/contrib/devtools/README.md b/contrib/devtools/README.md
index 697a714a47..a57b4e561e 100644
--- a/contrib/devtools/README.md
+++ b/contrib/devtools/README.md
@@ -69,3 +69,15 @@ If there are 'unsupported' symbols, the return value will be 1 a list like this
.../64/test_bitcoin: symbol std::out_of_range::~out_of_range() from unsupported version GLIBCXX_3.4.15
.../64/test_bitcoin: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
+update-translations.py
+=======================
+
+Run this script from the root of the repository to update all translations from transifex.
+It will do the following automatically:
+
+- fetch all translations
+- post-process them into valid and committable format
+- add missing translations to the build system (TODO)
+
+See doc/translation-process.md for more information.
+
diff --git a/contrib/devtools/symbol-check.py b/contrib/devtools/symbol-check.py
index 4f6a18da2d..8dd6d8f037 100755
--- a/contrib/devtools/symbol-check.py
+++ b/contrib/devtools/symbol-check.py
@@ -98,10 +98,15 @@ if __name__ == '__main__':
cppfilt = CPPFilt()
retval = 0
for filename in sys.argv[1:]:
+ # Check imported symbols
for sym,version in read_symbols(filename, True):
if version and not check_version(MAX_VERSIONS, version):
print('%s: symbol %s from unsupported version %s' % (filename, cppfilt(sym), version))
retval = 1
+ # Check exported symbols
+ for sym,version in read_symbols(filename, False):
+ print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
+ retval = 1
exit(retval)
diff --git a/contrib/devtools/update-translations.py b/contrib/devtools/update-translations.py
new file mode 100755
index 0000000000..1950a42678
--- /dev/null
+++ b/contrib/devtools/update-translations.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# Copyright (c) 2014 Wladimir J. van der Laan
+# Distributed under the MIT/X11 software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+'''
+Run this script from the root of the repository to update all translations from
+transifex.
+It will do the following automatically:
+
+- fetch all translations using the tx tool
+- post-process them into valid and committable format
+ - remove invalid control characters
+ - remove location tags (makes diffs less noisy)
+
+TODO:
+- auto-add new translations to the build system according to the translation process
+- remove 'unfinished' translation items
+'''
+from __future__ import division, print_function
+import subprocess
+import re
+import sys
+import os
+
+# Name of transifex tool
+TX = 'tx'
+# Name of source language file
+SOURCE_LANG = 'bitcoin_en.ts'
+# Directory with locale files
+LOCALE_DIR = 'src/qt/locale'
+
+def check_at_repository_root():
+ if not os.path.exists('.git'):
+ print('No .git directory found')
+ print('Execute this script at the root of the repository', file=sys.stderr)
+ exit(1)
+
+def fetch_all_translations():
+ if subprocess.call([TX, 'pull', '-f']):
+ print('Error while fetching translations', file=sys.stderr)
+ exit(1)
+
+def postprocess_translations():
+ print('Postprocessing...')
+ for filename in os.listdir(LOCALE_DIR):
+ # process only language files, and do not process source language
+ if not filename.endswith('.ts') or filename == SOURCE_LANG:
+ continue
+ filepath = os.path.join(LOCALE_DIR, filename)
+ with open(filepath, 'rb') as f:
+ data = f.read()
+ # remove non-allowed control characters
+ data = re.sub('[\x00-\x09\x0b\x0c\x0e-\x1f]', '', data)
+ data = data.split('\n')
+ # strip locations from non-origin translation
+ # location tags are used to guide translators, they are not necessary for compilation
+ # TODO: actually process XML instead of relying on Transifex's one-tag-per-line output format
+ data = [line for line in data if not '<location' in line]
+ with open(filepath, 'wb') as f:
+ f.write('\n'.join(data))
+
+if __name__ == '__main__':
+ check_at_repository_root()
+ fetch_all_translations()
+ postprocess_translations()
+
diff --git a/contrib/gitian-descriptors/deps-linux.yml b/contrib/gitian-descriptors/deps-linux.yml
index af10461b83..8221222133 100644
--- a/contrib/gitian-descriptors/deps-linux.yml
+++ b/contrib/gitian-descriptors/deps-linux.yml
@@ -16,7 +16,7 @@ packages:
reference_datetime: "2013-06-01 00:00:00"
remotes: []
files:
-- "openssl-1.0.1g.tar.gz"
+- "openssl-1.0.1h.tar.gz"
- "miniupnpc-1.9.tar.gz"
- "qrencode-3.4.3.tar.bz2"
- "protobuf-2.5.0.tar.bz2"
@@ -30,15 +30,15 @@ script: |
export TZ=UTC
export LIBRARY_PATH="$STAGING/lib"
# Integrity Check
- echo "53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028 openssl-1.0.1g.tar.gz" | sha256sum -c
+ echo "9d1c8a9836aa63e2c6adb684186cbd4371c9e9dcc01d6e3bb447abf2d4d3d093 openssl-1.0.1h.tar.gz" | sha256sum -c
echo "2923e453e880bb949e3d4da9f83dd3cb6f08946d35de0b864d0339cf70934464 miniupnpc-1.9.tar.gz" | sha256sum -c
echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c
echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c
echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c
#
- tar xzf openssl-1.0.1g.tar.gz
- cd openssl-1.0.1g
+ tar xzf openssl-1.0.1h.tar.gz
+ cd openssl-1.0.1h
# need -fPIC to avoid relocation error in 64 bit builds
./config no-shared no-zlib no-dso no-krb5 --openssldir=$STAGING -fPIC
# need to build OpenSSL with faketime because a timestamp is embedded into cversion.o
@@ -95,4 +95,4 @@ script: |
done
#
cd $STAGING
- find include lib bin host | sort | zip -X@ $OUTDIR/bitcoin-deps-linux${GBUILD_BITS}-gitian-r5.zip
+ find include lib bin host | sort | zip -X@ $OUTDIR/bitcoin-deps-linux${GBUILD_BITS}-gitian-r6.zip
diff --git a/contrib/gitian-descriptors/deps-win.yml b/contrib/gitian-descriptors/deps-win.yml
index 17ac413d80..fabc2949eb 100644
--- a/contrib/gitian-descriptors/deps-win.yml
+++ b/contrib/gitian-descriptors/deps-win.yml
@@ -14,7 +14,7 @@ packages:
reference_datetime: "2011-01-30 00:00:00"
remotes: []
files:
-- "openssl-1.0.1g.tar.gz"
+- "openssl-1.0.1h.tar.gz"
- "db-4.8.30.NC.tar.gz"
- "miniupnpc-1.9.tar.gz"
- "zlib-1.2.8.tar.gz"
@@ -28,7 +28,7 @@ script: |
INDIR=$HOME/build
TEMPDIR=$HOME/tmp
# Input Integrity Check
- echo "53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028 openssl-1.0.1g.tar.gz" | sha256sum -c
+ echo "9d1c8a9836aa63e2c6adb684186cbd4371c9e9dcc01d6e3bb447abf2d4d3d093 openssl-1.0.1h.tar.gz" | sha256sum -c
echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c
echo "2923e453e880bb949e3d4da9f83dd3cb6f08946d35de0b864d0339cf70934464 miniupnpc-1.9.tar.gz" | sha256sum -c
echo "36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d zlib-1.2.8.tar.gz" | sha256sum -c
@@ -48,8 +48,8 @@ script: |
mkdir -p $INSTALLPREFIX $BUILDDIR
cd $BUILDDIR
#
- tar xzf $INDIR/openssl-1.0.1g.tar.gz
- cd openssl-1.0.1g
+ tar xzf $INDIR/openssl-1.0.1h.tar.gz
+ cd openssl-1.0.1h
if [ "$BITS" == "32" ]; then
OPENSSL_TGT=mingw
else
@@ -124,5 +124,5 @@ script: |
done
#
cd $INSTALLPREFIX
- find include lib | sort | zip -X@ $OUTDIR/bitcoin-deps-win$BITS-gitian-r12.zip
+ find include lib | sort | zip -X@ $OUTDIR/bitcoin-deps-win$BITS-gitian-r13.zip
done # for BITS in
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index 1747f531ea..30b0227bdd 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -7,7 +7,6 @@ architectures:
- "amd64"
packages:
- "g++"
-- "libqt4-dev"
- "git-core"
- "unzip"
- "pkg-config"
@@ -16,15 +15,22 @@ packages:
- "automake"
- "faketime"
- "bsdmainutils"
+- "libqt4-core"
+- "libqt4-gui"
+- "libqt4-dbus"
+- "libqt4-network"
+- "libqt4-test"
reference_datetime: "2013-06-01 00:00:00"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
"dir": "bitcoin"
files:
-- "bitcoin-deps-linux32-gitian-r5.zip"
-- "bitcoin-deps-linux64-gitian-r5.zip"
+- "bitcoin-deps-linux32-gitian-r6.zip"
+- "bitcoin-deps-linux64-gitian-r6.zip"
- "boost-linux32-1.55.0-gitian-r1.zip"
- "boost-linux64-1.55.0-gitian-r1.zip"
+- "qt-linux32-4.6.4-gitian-r1.tar.gz"
+- "qt-linux64-4.6.4-gitian-r1.tar.gz"
script: |
STAGING="$HOME/install"
OPTFLAGS='-O2'
@@ -32,16 +38,28 @@ script: |
TEMPDIR="$HOME/tempdir"
export TZ=UTC
export LIBRARY_PATH="$STAGING/lib"
+ export PATH="$STAGING/bin:$PATH"
mkdir -p ${BINDIR}
#
mkdir -p $STAGING
cd $STAGING
- unzip ../build/bitcoin-deps-linux${GBUILD_BITS}-gitian-r5.zip
+ unzip ../build/bitcoin-deps-linux${GBUILD_BITS}-gitian-r6.zip
unzip ../build/boost-linux${GBUILD_BITS}-1.55.0-gitian-r1.zip
+ tar -zxf ../build/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz
cd ../build
+ # Avoid exporting *any* symbols from the executable
+ # This avoids conflicts between the libraries statically linked into bitcoin and any
+ # libraries we may link dynamically (such as Qt and OpenSSL, see issue #4094).
+ # It also avoids start-up overhead to not export any unnecessary symbols.
+ # To do this, build a linker script that marks all symbols as local.
+ LINKER_SCRIPT=$HOME/build/linker_version_script
+ echo '
+ {
+ local: *;
+ };' > $LINKER_SCRIPT
function do_configure {
- ./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" BOOST_CHRONO_EXTRALIBS="-lrt" --enable-glibc-back-compat
+ ./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-qt-bindir=$STAGING/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib -Wl,--version-script=$LINKER_SCRIPT ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" --enable-glibc-back-compat
}
#
cd bitcoin
diff --git a/contrib/gitian-descriptors/gitian-osx-bitcoin.yml b/contrib/gitian-descriptors/gitian-osx-bitcoin.yml
new file mode 100644
index 0000000000..bc3d561c35
--- /dev/null
+++ b/contrib/gitian-descriptors/gitian-osx-bitcoin.yml
@@ -0,0 +1,61 @@
+---
+name: "bitcoin"
+suites:
+- "precise"
+architectures:
+- "i386"
+packages:
+- "git-core"
+- "automake"
+- "faketime"
+- "bsdmainutils"
+- "pkg-config"
+- "p7zip-full"
+- "libtool"
+
+reference_datetime: "2013-06-01 00:00:00"
+remotes:
+- "url": "https://github.com/bitcoin/bitcoin.git"
+ "dir": "bitcoin"
+files:
+- "osx-native-depends-r3.tar.gz"
+- "osx-depends-r4.tar.gz"
+- "osx-depends-qt-5.2.1-r4.tar.gz"
+- "MacOSX10.7.sdk.tar.gz"
+
+script: |
+
+ HOST=x86_64-apple-darwin11
+ PREFIX=`pwd`/osx-cross-depends/prefix
+ SDK=`pwd`/osx-cross-depends/SDKs/MacOSX10.7.sdk
+ NATIVEPREFIX=`pwd`/osx-cross-depends/native-prefix
+ export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
+
+ export SOURCES_PATH=`pwd`
+
+ mkdir -p osx-cross-depends/SDKs
+
+ tar -C osx-cross-depends/SDKs -xf ${SOURCES_PATH}/MacOSX10.7.sdk.tar.gz
+
+ tar -C osx-cross-depends -xf osx-native-depends-r3.tar.gz
+ tar -C osx-cross-depends -xf osx-depends-r4.tar.gz
+ tar -C osx-cross-depends -xf osx-depends-qt-5.2.1-r4.tar.gz
+ export PATH=`pwd`/osx-cross-depends/native-prefix/bin:$PATH
+
+ cd bitcoin
+
+ export ZERO_AR_DATE=1
+ export QT_RCC_TEST=1
+ ./autogen.sh
+ ./configure --host=${HOST} --with-boost=${PREFIX} CC=clang CXX=clang++ OBJC=clang OBJCXX=clang++ CFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" CXXFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" LDFLAGS="-B${NATIVEPREFIX}/bin -L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1" CPPFLAGS="-I${NATIVEPREFIX}/lib/clang/3.2/include -I${PREFIX}/include" SSL_LIBS="-lz -lssl -lcrypto" --disable-tests -with-gui=qt5 PKG_CONFIG_LIBDIR="${PREFIX}/lib/pkgconfig" --disable-dependency-tracking --disable-maintainer-mode
+ make dist
+ mkdir -p distsrc
+ cd distsrc
+ tar --strip-components=1 -xf ../bitcoin-*.tar*
+ ./configure --host=${HOST} --with-boost=${PREFIX} CC=clang CXX=clang++ OBJC=clang OBJCXX=clang++ CFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" CXXFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" LDFLAGS="-B${NATIVEPREFIX}/bin -L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1" CPPFLAGS="-I${NATIVEPREFIX}/lib/clang/3.2/include -I${PREFIX}/include" SSL_LIBS="-lz -lssl -lcrypto" --disable-tests -with-gui=qt5 PKG_CONFIG_LIBDIR="${PREFIX}/lib/pkgconfig" --disable-dependency-tracking --disable-maintainer-mode
+ make $MAKEOPTS
+ export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+ export FAKETIME=$REFERENCE_DATETIME
+ export TZ=UTC
+ make deploy
+ dmg dmg Bitcoin-Qt.dmg $OUTDIR/Bitcoin-Qt.dmg
diff --git a/contrib/gitian-descriptors/gitian-osx-depends.yml b/contrib/gitian-descriptors/gitian-osx-depends.yml
new file mode 100644
index 0000000000..07a021cf0c
--- /dev/null
+++ b/contrib/gitian-descriptors/gitian-osx-depends.yml
@@ -0,0 +1,159 @@
+---
+name: "osx-depends"
+suites:
+- "precise"
+architectures:
+- "i386"
+packages:
+- "git-core"
+- "automake"
+- "p7zip-full"
+
+reference_datetime: "2013-06-01 00:00:00"
+remotes: []
+files:
+- "boost_1_55_0.tar.bz2"
+- "db-4.8.30.NC.tar.gz"
+- "miniupnpc-1.9.tar.gz"
+- "openssl-1.0.1h.tar.gz"
+- "protobuf-2.5.0.tar.bz2"
+- "qrencode-3.4.3.tar.bz2"
+- "MacOSX10.7.sdk.tar.gz"
+- "osx-native-depends-r3.tar.gz"
+
+script: |
+
+ echo "fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 boost_1_55_0.tar.bz2" | sha256sum -c
+ echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c
+ echo "2923e453e880bb949e3d4da9f83dd3cb6f08946d35de0b864d0339cf70934464 miniupnpc-1.9.tar.gz" | sha256sum -c
+ echo "9d1c8a9836aa63e2c6adb684186cbd4371c9e9dcc01d6e3bb447abf2d4d3d093 openssl-1.0.1h.tar.gz" | sha256sum -c
+ echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c
+ echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c
+
+ REVISION=r4
+ export SOURCES_PATH=`pwd`
+ export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
+ export PATH=$HOME:$PATH
+ export SOURCES_PATH=`pwd`
+ export ZERO_AR_DATE=1
+
+ mkdir -p osx-cross-depends/build
+ cd osx-cross-depends
+
+ PREFIX=`pwd`/prefix
+ NATIVEPREFIX=`pwd`/native-prefix
+ BUILD_BASE=`pwd`/build
+ SDK=`pwd`/SDKs/MacOSX10.7.sdk
+ HOST=x86_64-apple-darwin11
+ MIN_VERSION=10.6
+
+ INT_CFLAGS="-target ${HOST} -mmacosx-version-min=${MIN_VERSION} --sysroot ${SDK} -msse2 -Qunused-arguments"
+ INT_CXXFLAGS="${INT_CFLAGS}"
+ INT_LDFLAGS="-L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1"
+ INT_LDFLAGS_CLANG="-B${NATIVEPREFIX}/bin"
+ INT_CPPFLAGS="-I${PREFIX}/include"
+ INT_CC=clang
+ INT_CXX=clang++
+ INT_OBJC=clang
+ INT_OBJCXX=clang++
+ INT_AR=${HOST}-ar
+ INT_RANLIB=${HOST}-ranlib
+ INT_LIBTOOL=${HOST}-libtool
+ INT_INSTALL_NAME_TOOL=${HOST}-install_name_tool
+
+ export PATH=${NATIVEPREFIX}/bin:${PATH}
+
+ mkdir -p ${NATIVEPREFIX}/bin
+ mkdir -p ${NATIVEPREFIX}/lib
+ mkdir -p ${PREFIX}/bin
+ mkdir -p ${PREFIX}/lib
+ mkdir -p ${BUILD_BASE}
+
+ mkdir -p SDKs
+ tar -C SDKs -xf ${SOURCES_PATH}/MacOSX10.7.sdk.tar.gz
+
+ tar xf /home/ubuntu/build/osx-native-depends-r3.tar.gz
+
+ # bdb
+ SOURCE_FILE=${SOURCES_PATH}/db-4.8.30.NC.tar.gz
+ BUILD_DIR=${BUILD_BASE}/db-4.8.30.NC
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ sed -i 's/__atomic_compare_exchange/__atomic_compare_exchange_db/g' ${BUILD_DIR}/dbinc/atomic.h
+ pushd ${BUILD_DIR}
+ cd build_unix;
+ ../dist/configure --host=${HOST} --prefix="${PREFIX}" --disable-shared --enable-cxx CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}"
+ make $MAKEOPTS libdb.a libdb_cxx.a
+ make install_lib install_include
+ popd
+
+ # openssl
+ SOURCE_FILE=${SOURCES_PATH}/openssl-1.0.1h.tar.gz
+ BUILD_DIR=${BUILD_BASE}/openssl-1.0.1h
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+ sed -ie "s|cc:|${INT_CC}:|" ${BUILD_DIR}/Configure
+ sed -ie "s|\(-arch [_a-zA-Z0-9]*\)|\1 --sysroot ${SDK} -target ${HOST} -msse2|" ${BUILD_DIR}/Configure
+ AR="${INT_AR}" RANLIB="${INT_RANLIB}" ./Configure --prefix=${PREFIX} --openssldir=${PREFIX}/etc/openssl zlib shared no-krb5 darwin64-x86_64-cc ${INT_LDFLAGS} ${INT_CLANG_LDFLAGS} ${INT_CPPFLAGS}
+ sed -i "s|engines apps test|engines|" ${BUILD_DIR}/Makefile
+ sed -i "/define DATE/d" ${BUILD_DIR}/crypto/Makefile
+ make -j1 build_libs libcrypto.pc libssl.pc openssl.pc
+ make -j1 install_sw
+ popd
+
+ #libminiupnpc
+ SOURCE_FILE=${SOURCES_PATH}/miniupnpc-1.9.tar.gz
+ BUILD_DIR=${BUILD_BASE}/miniupnpc-1.9
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+ CFLAGS="${INT_CFLAGS} ${INT_CPPFLAGS}" make $MAKEOPTS OS=Darwin CC="${INT_CC}" AR="${INT_AR}" libminiupnpc.a
+ install -d ${PREFIX}/include/miniupnpc
+ install *.h ${PREFIX}/include/miniupnpc
+ install libminiupnpc.a ${PREFIX}/lib
+ popd
+
+ # qrencode
+ SOURCE_FILE=${SOURCES_PATH}/qrencode-3.4.3.tar.bz2
+ BUILD_DIR=${BUILD_BASE}/qrencode-3.4.3
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+
+ # m4 folder is not included in the stable release, which can confuse aclocal
+ # if its timestamp ends up being earlier than configure.ac when extracted
+ touch aclocal.m4
+ ./configure --host=${HOST} --prefix="${PREFIX}" --disable-shared CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}" --disable-shared -without-tools --disable-sdltest --disable-dependency-tracking
+ make $MAKEOPTS
+ make install
+ popd
+
+ # libprotobuf
+ SOURCE_FILE=${SOURCES_PATH}/protobuf-2.5.0.tar.bz2
+ BUILD_DIR=${BUILD_BASE}/protobuf-2.5.0
+
+ tar -C ${BUILD_BASE} -xjf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+ ./configure --host=${HOST} --prefix="${PREFIX}" --disable-shared --enable-cxx CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}" --enable-shared=no --disable-dependency-tracking --with-protoc=${NATIVEPREFIX}/bin/protoc
+ cd src
+ make $MAKEOPTS libprotobuf.la
+ make install-libLTLIBRARIES install-nobase_includeHEADERS
+ cd ..
+ make install-pkgconfigDATA
+ popd
+
+ # boost
+ SOURCE_FILE=${SOURCES_PATH}/boost_1_55_0.tar.bz2
+ BUILD_DIR=${BUILD_BASE}/boost_1_55_0
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+ ./bootstrap.sh --with-libraries=chrono,filesystem,program_options,system,thread,test
+ echo "using darwin : : ${INT_CXX} : <cxxflags>\"${INT_CFLAGS} ${INT_CPPFLAGS}\" <linkflags>\"${INT_LDFLAGS} ${INT_CLANG_LDFLAGS}\" <archiver>\"${INT_LIBTOOL}\" <striper>\"${INT_STRIP}\" : ;" > "user-config.jam"
+ ./b2 -d2 --layout=tagged --build-type=complete --prefix="${PREFIX}" --toolset=darwin-4.2.1 --user-config=user-config.jam variant=release threading=multi link=static install
+ popd
+
+ export GZIP="-9n"
+ find prefix | sort | tar --no-recursion -czf osx-depends-${REVISION}.tar.gz -T -
+
+ mv osx-depends-${REVISION}.tar.gz $OUTDIR
diff --git a/contrib/gitian-descriptors/gitian-osx-native.yml b/contrib/gitian-descriptors/gitian-osx-native.yml
new file mode 100644
index 0000000000..a753ad704f
--- /dev/null
+++ b/contrib/gitian-descriptors/gitian-osx-native.yml
@@ -0,0 +1,178 @@
+---
+name: "osx-native"
+suites:
+- "precise"
+architectures:
+- "i386"
+packages:
+- "git-core"
+- "automake"
+- "faketime"
+- "libssl-dev"
+- "libbz2-dev"
+- "libz-dev"
+- "cmake"
+- "libcap-dev"
+- "p7zip-full"
+- "uuid-dev"
+
+reference_datetime: "2013-06-01 00:00:00"
+remotes: []
+files:
+- "10cc648683617cca8bcbeae507888099b41b530c.tar.gz"
+- "cctools-809.tar.gz"
+- "dyld-195.5.tar.gz"
+- "ld64-127.2.tar.gz"
+- "protobuf-2.5.0.tar.bz2"
+- "MacOSX10.7.sdk.tar.gz"
+- "cdrkit-1.1.11.tar.gz"
+- "libdmg-hfsplus-v0.1.tar.gz"
+- "clang-llvm-3.2-x86-linux-ubuntu-12.04.tar.gz"
+- "cdrkit-deterministic.patch"
+
+
+script: |
+
+ echo "18406961fd4a1ec5c7ea35c91d6a80a2f8bb797a2bd243a610bd75e13eff9aca 10cc648683617cca8bcbeae507888099b41b530c.tar.gz" | sha256sum -c
+ echo "03ba62749b843b131c7304a044a98c6ffacd65b1399b921d69add0375f79d8ad cctools-809.tar.gz" | sha256sum -c
+ echo "2cf0484c87cf79b606b351a7055a247dae84093ae92c747a74e0cde2c8c8f83c dyld-195.5.tar.gz" | sha256sum -c
+ echo "97b75547b2bd761306ab3e15ae297f01e7ab9760b922bc657f4ef72e4e052142 ld64-127.2.tar.gz" | sha256sum -c
+ echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c
+ echo "d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit-1.1.11.tar.gz" | sha256sum -c
+ echo "6569a02eb31c2827080d7d59001869ea14484c281efab0ae7f2b86af5c3120b3 libdmg-hfsplus-v0.1.tar.gz" | sha256sum -c
+ echo "b9d57a88f9514fa1f327a1a703756d0c1c960f4c58494a5bd80313245d13ffff clang-llvm-3.2-x86-linux-ubuntu-12.04.tar.gz" | sha256sum -c
+ echo "cc12bdbd7a09f71cb2a6a3e6ec3e0abe885ca7111c2b47857f5095e5980caf4f cdrkit-deterministic.patch" | sha256sum -c
+
+
+ REVISION=r3
+ export REFERENCE_DATETIME
+ export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
+ export FAKETIME=$REFERENCE_DATETIME
+ export TZ=UTC
+
+ REAL_AR=`which ar`
+ REAL_RANLIB=`which ranlib`
+ REAL_DATE=`which date`
+
+ echo '#!/bin/bash' > $HOME/ar
+ echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/ar
+ echo "$REAL_AR \"\$@\"" >> $HOME/ar
+
+ echo '#!/bin/bash' > $HOME/ranlib
+ echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/ranlib
+ echo "$REAL_RANLIB \"\$@\"" >> $HOME/ranlib
+
+ echo '#!/bin/bash' > $HOME/date
+ echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/date
+ echo "$REAL_DATE \"\$@\"" >> $HOME/date
+
+ chmod +x $HOME/ar $HOME/ranlib $HOME/date
+
+
+ export PATH=$HOME:$PATH
+ export SOURCES_PATH=`pwd`
+
+ mkdir -p osx-cross-depends/build
+ cd osx-cross-depends
+
+ NATIVEPREFIX=`pwd`/native-prefix
+ BUILD_BASE=`pwd`/build
+ SDK=`pwd`/SDKs/MacOSX10.7.sdk
+ HOST=x86_64-apple-darwin11
+ MIN_VERSION=10.6
+
+ CFLAGS=""
+ CXXFLAGS="${CFLAGS}"
+ LDFLAGS="-L${NATIVEPREFIX}/lib"
+
+ export PATH=${NATIVEPREFIX}/bin:${PATH}
+
+ mkdir -p ${NATIVEPREFIX}/bin
+ mkdir -p ${NATIVEPREFIX}/lib
+
+ mkdir -p SDKs
+ tar -C SDKs -xf ${SOURCES_PATH}/MacOSX10.7.sdk.tar.gz
+
+ # Clang
+ SOURCE_FILE=${SOURCES_PATH}/clang-llvm-3.2-x86-linux-ubuntu-12.04.tar.gz
+ BUILD_DIR=${BUILD_BASE}/clang+llvm-3.2-x86-linux-ubuntu-12.04
+
+ mkdir -p ${NATIVEPREFIX}/lib/clang/3.2/include
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ cp ${BUILD_DIR}/bin/clang ${NATIVEPREFIX}/bin/
+ cp ${BUILD_DIR}/bin/clang++ ${NATIVEPREFIX}/bin/
+ cp ${BUILD_DIR}/lib/libLTO.so ${NATIVEPREFIX}/lib/
+ cp ${BUILD_DIR}/lib/clang/3.2/include/* ${NATIVEPREFIX}/lib/clang/3.2/include
+
+ # cctools
+ SOURCE_FILE=${SOURCES_PATH}/10cc648683617cca8bcbeae507888099b41b530c.tar.gz
+ BUILD_DIR=${BUILD_BASE}/toolchain4-10cc648683617cca8bcbeae507888099b41b530c
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ mkdir -p ${BUILD_DIR}/sdks
+ pushd ${BUILD_DIR}/sdks;
+ ln -sf ${SDK} MacOSX10.7.sdk
+ ln -sf ${SOURCES_PATH}/cctools-809.tar.gz ${BUILD_DIR}/cctools2odcctools/cctools-809.tar.gz
+ ln -sf ${SOURCES_PATH}/ld64-127.2.tar.gz ${BUILD_DIR}/cctools2odcctools/ld64-127.2.tar.gz
+ ln -sf ${SOURCES_PATH}/dyld-195.5.tar.gz ${BUILD_DIR}/cctools2odcctools/dyld-195.5.tar.gz
+
+ tar -C ${BUILD_DIR} -xf ${SOURCES_PATH}/clang-llvm-3.2-x86-linux-ubuntu-12.04.tar.gz
+ # Hack in the use of our llvm headers rather than grabbing the old llvm-gcc.
+ sed -i "s|GCC_DIR|LLVM_CLANG_DIR|g" ${BUILD_DIR}/cctools2odcctools/extract.sh
+ sed -i "s|llvmgcc42-2336.1|clang+llvm-3.2-x86-linux-ubuntu-12.04|g" ${BUILD_DIR}/cctools2odcctools/extract.sh
+ sed -i "s|\${LLVM_CLANG_DIR}/llvmCore/include/llvm-c|\${LLVM_CLANG_DIR}/include/llvm-c \${LLVM_CLANG_DIR}/include/llvm |" ${BUILD_DIR}/cctools2odcctools/extract.sh
+
+ sed -i "s|fAC_INIT|AC_INIT|" ${BUILD_DIR}/cctools2odcctools/files/configure.ac
+ sed -i 's/\# Dynamically linked LTO/\t ;\&\n\t linux*)\n# Dynamically linked LTO/' ${BUILD_DIR}/cctools2odcctools/files/configure.ac
+
+ cd ${BUILD_DIR}/cctools2odcctools
+ ./extract.sh --osxver 10.7
+ cd odcctools-809
+ ./configure --prefix=${NATIVEPREFIX} --target=${HOST} CFLAGS="${CFLAGS} -I${NATIVEPREFIX}/include -D__DARWIN_UNIX03 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS" LDFLAGS="${LDFLAGS} -Wl,-rpath=\\\$\$ORIGIN/../lib" --with-sysroot=${SDK}
+
+ # The 'PC' define in sparc/reg.h conflicts but doesn't get used anyway. Just rename it.
+ sed -i "s|define\tPC|define\tPC_|" ${BUILD_DIR}/cctools2odcctools/odcctools-809/include/architecture/sparc/reg.h
+ make $MAKEOPTS
+ make install
+ popd
+
+ # protoc
+ SOURCE_FILE=${SOURCES_PATH}/protobuf-2.5.0.tar.bz2
+ BUILD_DIR=${BUILD_BASE}/protobuf-2.5.0
+
+ tar -C ${BUILD_BASE} -xjf ${SOURCE_FILE}
+ pushd ${BUILD_DIR};
+ ./configure --enable-shared=no --disable-dependency-tracking --prefix=${NATIVEPREFIX}
+ make $MAKEOPTS
+ cp ${BUILD_DIR}/src/protoc ${NATIVEPREFIX}/bin/
+ popd
+
+ # cdrkit
+ SOURCE_FILE=${SOURCES_PATH}/cdrkit-1.1.11.tar.gz
+ BUILD_DIR=${BUILD_BASE}/cdrkit-1.1.11
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ pushd ${BUILD_DIR}
+ patch -p1 < ${SOURCES_PATH}/cdrkit-deterministic.patch
+ cmake -DCMAKE_INSTALL_PREFIX=${NATIVEPREFIX}
+ make $MAKEOPTS genisoimage
+ make -C genisoimage install
+ popd
+
+ # libdmg-hfsplus
+ SOURCE_FILE=${SOURCES_PATH}/libdmg-hfsplus-v0.1.tar.gz
+ BUILD_DIR=${BUILD_BASE}/libdmg-hfsplus-libdmg-hfsplus-v0.1
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+ mkdir -p ${BUILD_DIR}/build
+ pushd ${BUILD_DIR}/build
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=${NATIVEPREFIX}/bin ..
+ make $MAKEOPTS
+ make install
+ popd
+
+ rm -rf native-prefix/docs
+
+ export GZIP="-9n"
+ find native-prefix | sort | tar --no-recursion -czf osx-native-depends-$REVISION.tar.gz -T -
+ mv osx-native-depends-$REVISION.tar.gz $OUTDIR
diff --git a/contrib/gitian-descriptors/gitian-osx-qt.yml b/contrib/gitian-descriptors/gitian-osx-qt.yml
new file mode 100644
index 0000000000..5e0ad9222a
--- /dev/null
+++ b/contrib/gitian-descriptors/gitian-osx-qt.yml
@@ -0,0 +1,186 @@
+---
+name: "osx-qt"
+suites:
+- "precise"
+architectures:
+- "i386"
+packages:
+- "git-core"
+- "automake"
+- "p7zip-full"
+
+reference_datetime: "2013-06-01 00:00:00"
+remotes: []
+files:
+- "qt-everywhere-opensource-src-5.2.1.tar.gz"
+- "osx-native-depends-r3.tar.gz"
+- "osx-depends-r4.tar.gz"
+- "MacOSX10.7.sdk.tar.gz"
+
+script: |
+
+ echo "84e924181d4ad6db00239d87250cc89868484a14841f77fb85ab1f1dbdcd7da1 qt-everywhere-opensource-src-5.2.1.tar.gz" | sha256sum -c
+
+ REVISION=r4
+ export SOURCES_PATH=`pwd`
+ export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
+ export ZERO_AR_DATE=1
+
+ export TZ=UTC
+
+ REAL_DATE=`which date`
+ echo '#!/bin/bash' > $HOME/date
+ echo "$REAL_DATE -d \"${REFERENCE_DATETIME}\" \"\$@\"" >> $HOME/date
+
+ chmod +x $HOME/date
+ export PATH=$HOME:$PATH
+
+ mkdir -p osx-cross-depends/build
+ cd osx-cross-depends
+
+ PREFIX=`pwd`/prefix
+ NATIVEPREFIX=`pwd`/native-prefix
+ BUILD_BASE=`pwd`/build
+ SDK=`pwd`/SDKs/MacOSX10.7.sdk
+ HOST=x86_64-apple-darwin11
+ MIN_VERSION=10.6
+
+ INT_CFLAGS="-target ${HOST} -mmacosx-version-min=${MIN_VERSION} --sysroot ${SDK} -msse2 -Qunused-arguments"
+ INT_CXXFLAGS="${INT_CFLAGS}"
+ INT_LDFLAGS="-L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1"
+ INT_LDFLAGS_CLANG="-B${NATIVEPREFIX}/bin"
+ INT_CPPFLAGS="-I${PREFIX}/include"
+ INT_CC=clang
+ INT_CXX=clang++
+ INT_OBJC=clang
+ INT_OBJCXX=clang++
+ INT_AR=${HOST}-ar
+ INT_RANLIB=${HOST}-ranlib
+ INT_LIBTOOL=${HOST}-libtool
+ INT_INSTALL_NAME_TOOL=${HOST}-install_name_tool
+
+ export PATH=${NATIVEPREFIX}/bin:${PATH}
+
+ mkdir -p ${NATIVEPREFIX}/bin
+ mkdir -p ${NATIVEPREFIX}/lib
+ mkdir -p ${PREFIX}/bin
+ mkdir -p ${PREFIX}/lib
+ mkdir -p ${BUILD_BASE}
+
+ mkdir -p SDKs
+ tar -C SDKs -xf ${SOURCES_PATH}/MacOSX10.7.sdk.tar.gz
+
+ tar xf /home/ubuntu/build/osx-native-depends-r3.tar.gz
+
+ export PATH=`pwd`/native-prefix/bin:$PATH
+ tar xf /home/ubuntu/build/osx-depends-r4.tar.gz
+
+ SOURCE_FILE=${SOURCES_PATH}/qt-everywhere-opensource-src-5.2.1.tar.gz
+ BUILD_DIR=${BUILD_BASE}/qt-everywhere-opensource-src-5.2.1
+
+
+ tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
+
+ # Install our mkspec. All files are pulled from the macx-clang spec, except for
+ # our custom qmake.conf
+ SPECFILE=${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/qmake.conf
+
+ mkdir -p ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux
+ cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/Info.plist.lib ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/
+ cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/Info.plist.app ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/
+ cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/qplatformdefs.h ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/
+
+ cat > ${SPECFILE} <<ENDCONF
+
+ MAKEFILE_GENERATOR = UNIX
+ CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname
+ QMAKE_INCREMENTAL_STYLE = sublib
+
+ include(../common/macx.conf)
+ include(../common/gcc-base-mac.conf)
+ include(../common/clang.conf)
+ include(../common/clang-mac.conf)
+
+ QMAKE_XCODE_VERSION=4.3
+ QMAKE_XCODE_DEVELOPER_PATH=/Developer
+
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = ${MIN_VERSION}
+
+ QMAKE_MAC_SDK=macosx
+ QMAKE_MAC_SDK.macosx.path = ${SDK}
+ QMAKE_MAC_SDK.macosx.platform_name = macosx
+ QMAKE_MAC_SDK_PATH=${SDK}
+
+ QMAKE_CFLAGS += -target ${HOST}
+ QMAKE_OBJECTIVE_CFLAGS += -target ${HOST}
+ QMAKE_CXXFLAGS += -target ${HOST}
+
+ QMAKE_LFLAGS += -target ${HOST}
+ QMAKE_AR = ${HOST}-ar cq
+ QMAKE_RANLIB=${HOST}-ranlib
+ QMAKE_LIBTOOL=${HOST}-libtool
+ QMAKE_INSTALL_NAME_TOOL=${HOST}-install_name_tool
+
+ load(qt_config)
+
+ ENDCONF
+
+ pushd ${BUILD_DIR}
+ ./configure -release -opensource -openssl-linked \
+ -no-audio-backend -no-javascript-jit -no-sql-sqlite -no-sql-tds \
+ -no-cups -no-iconv -no-dbus -no-gif -no-audio-backend -no-freetype \
+ -no-javascript-jit -no-sql-sqlite -no-nis -no-cups -no-iconv -no-pch \
+ -no-dbus -no-gif -no-sm -nomake examples -no-feature-style-plastique \
+ -no-xcb -no-qml-debug -no-pch -no-nis \
+ -no-feature-style-cde -no-feature-style-s60 -no-feature-style-motif \
+ -no-feature-style-windowsmobile -no-feature-style-windowsce \
+ -no-feature-style-cleanlooks \
+ -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql \
+ -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
+ -skip qtsvg -skip qtwebkit -skip qtwebkit-examples -skip qtserialport \
+ -skip qtdeclarative -skip qtmultimedia -skip qtimageformats \
+ -skip qtlocation -skip qtsensors -skip qtquick1 -skip qtxmlpatterns \
+ -skip qtquickcontrols -skip qtactiveqt -skip qtconnectivity \
+ -skip qtwinextras -skip qtscript \
+ -prefix ${PREFIX} -bindir ${NATIVEPREFIX}/bin \
+ -confirm-license -xplatform macx-clang-linux -v ${INT_LDFLAGS}
+
+ # RCC's output is sorted using each file entry's hash as the key. Unfortunately,
+ # the hash function uses a random seed for each run so the results aren't
+ # deterministic. This leads to static resources being defined in a random order,
+ # which in-turn means that object files are not predictable.
+ # Fortunately, this upsets Qt's unit tests as well, so they've added the
+ # QT_RCC_TEST environment variable to set a pre-defined seed. Here, do the same
+ # thing for the same reason.
+ QT_RCC_TEST=1 make $MAKEOPTS module-qtbase-make_first
+
+
+ make $MAKEOPTS module-qttranslations-make_first
+ make $MAKEOPTS module-qttools-make_first
+ make $MAKEOPTS -C qtbase
+ make -C qtbase install
+ make -C qttranslations install
+ make -C qttools/src/linguist install
+ popd
+
+ # This file should not be installed to the destination. It's native and
+ # non-deterministic. Remove it.
+ # See: https://bugreports.qt-project.org/browse/QTBUG-31393
+ rm -f ${PREFIX}/lib/libQt5Bootstrap.a
+
+ rm -f ${PREFIX}/lib/Qt*.framework/Qt*.prl
+ pushd ${PREFIX}/include
+ ln -sf ../lib/QtNetwork.framework/Headers/ QtNetwork
+ ln -sf ../lib/QtWidgets.framework/Headers/ QtWidgets
+ ln -sf ../lib/QtGui.framework/Headers/ QtGui
+ ln -sf ../lib/QtCore.framework/Headers/ QtCore
+ ln -sf ../lib/QtTest.framework/Headers/ QtTest
+ popd
+
+ rm -f ${PREFIX}/lib/*.la
+ find ${PREFIX}/lib -name "*.prl" -delete
+
+ export GZIP="-9n"
+ find native-prefix prefix | sort | tar --no-recursion -czf osx-depends-qt-5.2.1-${REVISION}.tar.gz -T -
+
+ mv osx-depends-qt-5.2.1-${REVISION}.tar.gz $OUTDIR
diff --git a/contrib/gitian-descriptors/gitian-win.yml b/contrib/gitian-descriptors/gitian-win.yml
index 2191fb36c7..245f15ccab 100644
--- a/contrib/gitian-descriptors/gitian-win.yml
+++ b/contrib/gitian-descriptors/gitian-win.yml
@@ -26,8 +26,8 @@ files:
- "qt-win64-5.2.0-gitian-r3.zip"
- "boost-win32-1.55.0-gitian-r6.zip"
- "boost-win64-1.55.0-gitian-r6.zip"
-- "bitcoin-deps-win32-gitian-r12.zip"
-- "bitcoin-deps-win64-gitian-r12.zip"
+- "bitcoin-deps-win32-gitian-r13.zip"
+- "bitcoin-deps-win64-gitian-r13.zip"
- "protobuf-win32-2.5.0-gitian-r4.zip"
- "protobuf-win64-2.5.0-gitian-r4.zip"
script: |
@@ -61,7 +61,7 @@ script: |
cd $STAGING
unzip $INDIR/qt-win${BITS}-5.2.0-gitian-r3.zip
unzip $INDIR/boost-win${BITS}-1.55.0-gitian-r6.zip
- unzip $INDIR/bitcoin-deps-win${BITS}-gitian-r12.zip
+ unzip $INDIR/bitcoin-deps-win${BITS}-gitian-r13.zip
unzip $INDIR/protobuf-win${BITS}-2.5.0-gitian-r4.zip
if [ "$NEEDDIST" == "1" ]; then
# Make source code archive which is architecture independent so it only needs to be done once
diff --git a/contrib/gitian-descriptors/qt-linux.yml b/contrib/gitian-descriptors/qt-linux.yml
new file mode 100644
index 0000000000..b163b4bb8c
--- /dev/null
+++ b/contrib/gitian-descriptors/qt-linux.yml
@@ -0,0 +1,264 @@
+---
+name: "qt-linux"
+suites:
+- "precise"
+architectures:
+- "i386"
+- "amd64"
+packages:
+- "zip"
+- "unzip"
+- "faketime"
+- "unzip"
+- "libxext-dev"
+reference_datetime: "2011-01-30 00:00:00"
+remotes: []
+files:
+- "qt-everywhere-opensource-src-4.6.4.tar.gz"
+script: |
+ export FAKETIME=$REFERENCE_DATETIME
+ export TZ=UTC
+ if [ "$GBUILD_BITS" == "32" ]; then
+ ARCH='i386-linux-gnu'
+ else
+ ARCH='x86_64-linux-gnu'
+ fi
+ # The purpose of this gitian build is not to actually build Qt, but to export
+ # the headers as well as pkgconfig files in a useable format so that we can
+ # pretend to link against an older version. The goal is to link to the
+ # system version of Qt 4.
+ # Also build development tools.
+ INSTALLPREFIX="$HOME/install"
+ # Integrity Check
+ echo "9ad4d46c721b53a429ed5a2eecfd3c239a9ab566562f183f99d3125f1a234250 qt-everywhere-opensource-src-4.6.4.tar.gz" | sha256sum -c
+ # Make install directories
+ mkdir -p $INSTALLPREFIX
+ mkdir -p $INSTALLPREFIX/include
+ PKGCONFIGDIR=$INSTALLPREFIX/lib/pkgconfig
+ mkdir -p $PKGCONFIGDIR
+ #
+ tar xzf qt-everywhere-opensource-src-4.6.4.tar.gz
+ cd qt-everywhere-opensource-src-4.6.4
+ QTBUILDDIR=$(pwd)
+ sed 's/TODAY=`date +%Y-%m-%d`/TODAY=2011-01-30/' -i configure
+
+ # Need to build 4.6-versioned host utilities as well (lrelease/qrc/lupdate/...)
+ ./configure -prefix $INSTALLPREFIX -confirm-license -release -opensource -no-qt3support -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -no-opengl -nomake examples -nomake demos -nomake docs
+ #
+ make $MAKEOPTS -C src/tools install # (rcc, uic, moc)
+ make $MAKEOPTS -C tools/linguist/lrelease install # (lrelease)
+ # install includes and pkgconfig files
+ for DIR in src/corelib src/gui src/testlib src/dbus src/network; do
+ (
+ cd $DIR
+ # extract module (QtCore/QtNetwork/...) from Makefile
+ MODULE=$(grep "QMAKE_TARGET *=" Makefile | cut -d = -f 2 | xargs)
+ # patch makefile so that not everything is build first
+ sed -i 's/first: all/first:/g' Makefile
+ make install_flat_headers install_class_headers install_targ_headers
+ # create and install pkgconfig descriptor
+ make ../../lib/pkgconfig/$MODULE.pc
+ sed -e "s,$QTBUILDDIR,$INSTALLPREFIX,g" ../../lib/pkgconfig/$MODULE.pc > $PKGCONFIGDIR/$MODULE.pc
+ # create links to existing Qt libraries
+ ln -sf /usr/lib/${ARCH}/lib${MODULE}.so.4 ${INSTALLPREFIX}/lib/lib${MODULE}.so
+ )
+ done
+
+ # Write our own configuration header, same as Ubuntu
+ # When we don't do this, the configuration will be without STL support (the QString from/to stdString methods)
+ QCONFIG=$INSTALLPREFIX/include/Qt/qconfig.h
+ echo '
+ /* Qt Edition */
+ #ifndef QT_EDITION
+ # define QT_EDITION QT_EDITION_OPENSOURCE
+ #endif
+ ' > $QCONFIG
+
+ if [ "$GBUILD_BITS" == "32" ]; then
+ echo '
+ /* Machine byte-order */
+ #define Q_BIG_ENDIAN 4321
+ #define Q_LITTLE_ENDIAN 1234
+ #define QT_BUILD_KEY "i386 linux g++-4 full-config"
+ #define QT_BUILD_KEY_COMPAT "i686 Linux g++-4 full-config"
+
+ #ifdef QT_BOOTSTRAPPED
+ #define Q_BYTE_ORDER Q_LITTLE_ENDIAN
+ #else
+ #define Q_BYTE_ORDER Q_LITTLE_ENDIAN
+ #endif
+ /* Machine Architecture */
+ #ifndef QT_BOOTSTRAPPED
+ # define QT_ARCH_I386
+ #else
+ # define QT_ARCH_I386
+ #endif
+ /* Compile time features */
+ #define QT_LARGEFILE_SUPPORT 64
+ #define QT_POINTER_SIZE 4
+ ' >> $QCONFIG
+ else
+ echo '
+ /* Machine byte-order */
+ #define Q_BIG_ENDIAN 4321
+ #define Q_LITTLE_ENDIAN 1234
+ #define QT_BUILD_KEY "x86_64 linux g++-4 full-config"
+ #define QT_BUILD_KEY_COMPAT "x86_64 Linux g++-4 full-config"
+
+ #ifdef QT_BOOTSTRAPPED
+ #define Q_BYTE_ORDER Q_LITTLE_ENDIAN
+ #else
+ #define Q_BYTE_ORDER Q_LITTLE_ENDIAN
+ #endif
+ /* Machine Architecture */
+ #ifndef QT_BOOTSTRAPPED
+ # define QT_ARCH_X86_64
+ #else
+ # define QT_ARCH_X86_64
+ #endif
+ /* Compile time features */
+ #define QT_LARGEFILE_SUPPORT 64
+ #define QT_POINTER_SIZE 8
+ ' >> $QCONFIG
+ fi
+
+ echo '
+ #ifndef QT_BOOTSTRAPPED
+
+ #if defined(QT_NO_EGL) && defined(QT_EGL)
+ # undef QT_NO_EGL
+ #elif !defined(QT_NO_EGL) && !defined(QT_EGL)
+ # define QT_NO_EGL
+ #endif
+
+ #if defined(QT_NO_GSTREAMER) && defined(QT_GSTREAMER)
+ # undef QT_NO_GSTREAMER
+ #elif !defined(QT_NO_GSTREAMER) && !defined(QT_GSTREAMER)
+ # define QT_NO_GSTREAMER
+ #endif
+
+ #if defined(QT_NO_ICD) && defined(QT_ICD)
+ # undef QT_NO_ICD
+ #elif !defined(QT_NO_ICD) && !defined(QT_ICD)
+ # define QT_NO_ICD
+ #endif
+
+ #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG)
+ # undef QT_NO_IMAGEFORMAT_JPEG
+ #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG)
+ # define QT_NO_IMAGEFORMAT_JPEG
+ #endif
+
+ #if defined(QT_NO_IMAGEFORMAT_MNG) && defined(QT_IMAGEFORMAT_MNG)
+ # undef QT_NO_IMAGEFORMAT_MNG
+ #elif !defined(QT_NO_IMAGEFORMAT_MNG) && !defined(QT_IMAGEFORMAT_MNG)
+ # define QT_NO_IMAGEFORMAT_MNG
+ #endif
+
+ #if defined(QT_NO_IMAGEFORMAT_TIFF) && defined(QT_IMAGEFORMAT_TIFF)
+ # undef QT_NO_IMAGEFORMAT_TIFF
+ #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF)
+ # define QT_NO_IMAGEFORMAT_TIFF
+ #endif
+
+ #if defined(QT_NO_MULTIMEDIA) && defined(QT_MULTIMEDIA)
+ # undef QT_NO_MULTIMEDIA
+ #elif !defined(QT_NO_MULTIMEDIA) && !defined(QT_MULTIMEDIA)
+ # define QT_NO_MULTIMEDIA
+ #endif
+
+ #if defined(QT_NO_OPENVG) && defined(QT_OPENVG)
+ # undef QT_NO_OPENVG
+ #elif !defined(QT_NO_OPENVG) && !defined(QT_OPENVG)
+ # define QT_NO_OPENVG
+ #endif
+
+ #if defined(QT_NO_PHONON) && defined(QT_PHONON)
+ # undef QT_NO_PHONON
+ #elif !defined(QT_NO_PHONON) && !defined(QT_PHONON)
+ # define QT_NO_PHONON
+ #endif
+
+ #if defined(QT_NO_PULSEAUDIO) && defined(QT_PULSEAUDIO)
+ # undef QT_NO_PULSEAUDIO
+ #elif !defined(QT_NO_PULSEAUDIO) && !defined(QT_PULSEAUDIO)
+ # define QT_NO_PULSEAUDIO
+ #endif
+
+ #if defined(QT_NO_S60) && defined(QT_S60)
+ # undef QT_NO_S60
+ #elif !defined(QT_NO_S60) && !defined(QT_S60)
+ # define QT_NO_S60
+ #endif
+
+ #if defined(QT_NO_STYLE_S60) && defined(QT_STYLE_S60)
+ # undef QT_NO_STYLE_S60
+ #elif !defined(QT_NO_STYLE_S60) && !defined(QT_STYLE_S60)
+ # define QT_NO_STYLE_S60
+ #endif
+
+ #if defined(QT_NO_SXE) && defined(QT_SXE)
+ # undef QT_NO_SXE
+ #elif !defined(QT_NO_SXE) && !defined(QT_SXE)
+ # define QT_NO_SXE
+ #endif
+
+ #if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT)
+ # undef QT_NO_WEBKIT
+ #elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT)
+ # define QT_NO_WEBKIT
+ #endif
+
+ #if defined(QT_NO_ZLIB) && defined(QT_ZLIB)
+ # undef QT_NO_ZLIB
+ #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB)
+ # define QT_NO_ZLIB
+ #endif
+
+ #if defined(QT_RUNTIME_XCURSOR) && defined(QT_NO_RUNTIME_XCURSOR)
+ # undef QT_RUNTIME_XCURSOR
+ #elif !defined(QT_RUNTIME_XCURSOR) && !defined(QT_NO_RUNTIME_XCURSOR)
+ # define QT_RUNTIME_XCURSOR
+ #endif
+
+ #if defined(QT_RUNTIME_XFIXES) && defined(QT_NO_RUNTIME_XFIXES)
+ # undef QT_RUNTIME_XFIXES
+ #elif !defined(QT_RUNTIME_XFIXES) && !defined(QT_NO_RUNTIME_XFIXES)
+ # define QT_RUNTIME_XFIXES
+ #endif
+
+ #if defined(QT_RUNTIME_XINERAMA) && defined(QT_NO_RUNTIME_XINERAMA)
+ # undef QT_RUNTIME_XINERAMA
+ #elif !defined(QT_RUNTIME_XINERAMA) && !defined(QT_NO_RUNTIME_XINERAMA)
+ # define QT_RUNTIME_XINERAMA
+ #endif
+
+ #if defined(QT_RUNTIME_XINPUT) && defined(QT_NO_RUNTIME_XINPUT)
+ # undef QT_RUNTIME_XINPUT
+ #elif !defined(QT_RUNTIME_XINPUT) && !defined(QT_NO_RUNTIME_XINPUT)
+ # define QT_RUNTIME_XINPUT
+ #endif
+
+ #if defined(QT_RUNTIME_XRANDR) && defined(QT_NO_RUNTIME_XRANDR)
+ # undef QT_RUNTIME_XRANDR
+ #elif !defined(QT_RUNTIME_XRANDR) && !defined(QT_NO_RUNTIME_XRANDR)
+ # define QT_RUNTIME_XRANDR
+ #endif
+
+ #if defined(QT_USE_MATH_H_FLOATS) && defined(QT_NO_USE_MATH_H_FLOATS)
+ # undef QT_USE_MATH_H_FLOATS
+ #elif !defined(QT_USE_MATH_H_FLOATS) && !defined(QT_NO_USE_MATH_H_FLOATS)
+ # define QT_USE_MATH_H_FLOATS
+ #endif
+
+ #endif // QT_BOOTSTRAPPED
+
+ #define QT_VISIBILITY_AVAILABLE
+ ' >> $QCONFIG
+ cp $QCONFIG $INSTALLPREFIX/include/QtCore/qconfig.h
+
+ cd $INSTALLPREFIX
+ # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date
+ export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+ # Create a .tar.gz because .zip has problems with symbolic links
+ find | sort | tar --no-recursion -cT /dev/stdin --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 --mtime="$REFERENCE_DATETIME" | gzip -n > $OUTDIR/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz
diff --git a/contrib/gitian-descriptors/qt-win.yml b/contrib/gitian-descriptors/qt-win.yml
index 8f24492b53..7000c70051 100644
--- a/contrib/gitian-descriptors/qt-win.yml
+++ b/contrib/gitian-descriptors/qt-win.yml
@@ -15,8 +15,8 @@ reference_datetime: "2011-01-30 00:00:00"
remotes: []
files:
- "qt-everywhere-opensource-src-5.2.0.tar.gz"
-- "bitcoin-deps-win32-gitian-r12.zip"
-- "bitcoin-deps-win64-gitian-r12.zip"
+- "bitcoin-deps-win32-gitian-r13.zip"
+- "bitcoin-deps-win64-gitian-r13.zip"
script: |
# Defines
export TZ=UTC
@@ -48,7 +48,7 @@ script: |
#
# Need mingw-compiled openssl from bitcoin-deps:
cd $DEPSDIR
- unzip $INDIR/bitcoin-deps-win${BITS}-gitian-r12.zip
+ unzip $INDIR/bitcoin-deps-win${BITS}-gitian-r13.zip
#
cd $BUILDDIR
#
diff --git a/contrib/gitian-downloader/cfields-key.pgp b/contrib/gitian-downloader/cfields-key.pgp
new file mode 100644
index 0000000000..6b0bd240ba
--- /dev/null
+++ b/contrib/gitian-downloader/cfields-key.pgp
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+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
+MrD0ofsytfy1LQ==
+=DE4h
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config
index b5e0561aa3..f5e6382b84 100644
--- a/contrib/gitian-downloader/linux-download-config
+++ b/contrib/gitian-downloader/linux-download-config
@@ -37,3 +37,6 @@ signers:
E944AE667CF960B1004BC32FCA662BE18B877A60:
name: "Andreas Schildbach"
key: aschildbach
+ C060A6635913D98A3587D7DB1C2491FFEB0EF770:
+ name: "Cory Fields"
+ key: "cfields"
diff --git a/contrib/gitian-downloader/win32-download-config b/contrib/gitian-downloader/win32-download-config
index 5d56db863e..06c164180d 100644
--- a/contrib/gitian-downloader/win32-download-config
+++ b/contrib/gitian-downloader/win32-download-config
@@ -37,3 +37,6 @@ signers:
E944AE667CF960B1004BC32FCA662BE18B877A60:
name: "Andreas Schildbach"
key: aschildbach
+ C060A6635913D98A3587D7DB1C2491FFEB0EF770:
+ name: "Cory Fields"
+ key: "cfields"
diff --git a/contrib/macdeploy/README.md b/contrib/macdeploy/README.md
index 5f0611f20c..0aa57b4777 100644
--- a/contrib/macdeploy/README.md
+++ b/contrib/macdeploy/README.md
@@ -1,9 +1,5 @@
### MacDeploy ###
-You will need the appscript package for the fancy disk image creation to work:
-
- sudo easy_install appscript
-
For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package:
sudo easy_install argparse
diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus
index b0d85171da..eece81dd3d 100755
--- a/contrib/macdeploy/macdeployqtplus
+++ b/contrib/macdeploy/macdeployqtplus
@@ -19,7 +19,6 @@
import subprocess, sys, re, os, shutil, stat, os.path, time
from string import Template
-from time import sleep
from argparse import ArgumentParser
# This is ported from the original macdeployqt with modifications
@@ -212,6 +211,7 @@ def getFrameworks(binaryPath, verbose):
libraries = []
for line in otoolLines:
+ line = line.replace("@loader_path", os.path.dirname(binaryPath))
info = FrameworkInfo.fromOtoolLibraryLine(line.strip())
if info is not None:
if verbose >= 3:
@@ -308,7 +308,7 @@ def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploym
if deploymentInfo.qtPath is None and framework.isQtFramework():
deploymentInfo.detectQtPath(framework.frameworkDirectory)
- if framework.installName.startswith("@executable_path"):
+ if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath):
if verbose >= 2:
print framework.frameworkName, "already deployed, skipping."
continue
@@ -488,16 +488,6 @@ if len(config.fancy) == 1:
sys.stderr.write("Error: Could not import plistlib which is required for fancy disk images.\n")
sys.exit(1)
- if verbose >= 3:
- print "Fancy: Importing appscript..."
- try:
- import appscript
- except ImportError:
- if verbose >= 1:
- sys.stderr.write("Error: Could not import appscript which is required for fancy disk images.\n")
- sys.stderr.write("Please install it e.g. with \"sudo easy_install appscript\".\n")
- sys.exit(1)
-
p = config.fancy[0]
if verbose >= 3:
print "Fancy: Loading \"%s\"..." % p
@@ -580,7 +570,7 @@ try:
except RuntimeError as e:
if verbose >= 1:
sys.stderr.write("Error: %s\n" % str(e))
- sys.exit(ret)
+ sys.exit(1)
# ------------------------------------------------
@@ -593,7 +583,7 @@ if config.plugins:
except RuntimeError as e:
if verbose >= 1:
sys.stderr.write("Error: %s\n" % str(e))
- sys.exit(ret)
+ sys.exit(1)
# ------------------------------------------------
diff --git a/contrib/pyminer/README.md b/contrib/pyminer/README.md
deleted file mode 100644
index 3b20f2fdea..0000000000
--- a/contrib/pyminer/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-### PyMiner ###
-
-This is a 'getwork' CPU mining client for Bitcoin. It is pure-python, and therefore very, very slow. The purpose is to provide a reference implementation of a miner, for study.
-
-### Other Resources ###
-
-- [BitcoinTalk Thread](https://bitcointalk.org/index.php?topic=3546.0)
-- [Jgarzik Repo](https://github.com/jgarzik/pyminer) \ No newline at end of file
diff --git a/contrib/pyminer/example-config.cfg b/contrib/pyminer/example-config.cfg
deleted file mode 100644
index 103e7c1372..0000000000
--- a/contrib/pyminer/example-config.cfg
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#
-# RPC login details
-#
-host=127.0.0.1
-port=8332
-
-rpcuser=myusername
-rpcpass=mypass
-
-
-#
-# mining details
-#
-
-threads=4
-
-# periodic rate for requesting new work, if solution not found
-scantime=60
-
-
-#
-# misc.
-#
-
-# not really used right now
-logdir=/tmp/pyminer
-
-# set to 1, to enable hashmeter output
-hashmeter=0
-
-
diff --git a/contrib/pyminer/pyminer.py b/contrib/pyminer/pyminer.py
deleted file mode 100755
index 0a2932d66e..0000000000
--- a/contrib/pyminer/pyminer.py
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (c) 2011 The Bitcoin developers
-# Distributed under the MIT/X11 software license, see the accompanying
-# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#
-
-import time
-import json
-import pprint
-import hashlib
-import struct
-import re
-import base64
-import httplib
-import sys
-from multiprocessing import Process
-
-ERR_SLEEP = 15
-MAX_NONCE = 1000000L
-
-settings = {}
-pp = pprint.PrettyPrinter(indent=4)
-
-class BitcoinRPC:
- OBJID = 1
-
- def __init__(self, host, port, username, password):
- authpair = "%s:%s" % (username, password)
- self.authhdr = "Basic %s" % (base64.b64encode(authpair))
- self.conn = httplib.HTTPConnection(host, port, False, 30)
- def rpc(self, method, params=None):
- self.OBJID += 1
- obj = { 'version' : '1.1',
- 'method' : method,
- 'id' : self.OBJID }
- if params is None:
- obj['params'] = []
- else:
- obj['params'] = params
- self.conn.request('POST', '/', json.dumps(obj),
- { 'Authorization' : self.authhdr,
- 'Content-type' : 'application/json' })
-
- resp = self.conn.getresponse()
- if resp is None:
- print "JSON-RPC: no response"
- return None
-
- body = resp.read()
- resp_obj = json.loads(body)
- if resp_obj is None:
- print "JSON-RPC: cannot JSON-decode body"
- return None
- if 'error' in resp_obj and resp_obj['error'] != None:
- return resp_obj['error']
- if 'result' not in resp_obj:
- print "JSON-RPC: no result in object"
- return None
-
- return resp_obj['result']
- def getblockcount(self):
- return self.rpc('getblockcount')
- def getwork(self, data=None):
- return self.rpc('getwork', data)
-
-def uint32(x):
- return x & 0xffffffffL
-
-def bytereverse(x):
- return uint32(( ((x) << 24) | (((x) << 8) & 0x00ff0000) |
- (((x) >> 8) & 0x0000ff00) | ((x) >> 24) ))
-
-def bufreverse(in_buf):
- out_words = []
- for i in range(0, len(in_buf), 4):
- word = struct.unpack('@I', in_buf[i:i+4])[0]
- out_words.append(struct.pack('@I', bytereverse(word)))
- return ''.join(out_words)
-
-def wordreverse(in_buf):
- out_words = []
- for i in range(0, len(in_buf), 4):
- out_words.append(in_buf[i:i+4])
- out_words.reverse()
- return ''.join(out_words)
-
-class Miner:
- def __init__(self, id):
- self.id = id
- self.max_nonce = MAX_NONCE
-
- def work(self, datastr, targetstr):
- # decode work data hex string to binary
- static_data = datastr.decode('hex')
- static_data = bufreverse(static_data)
-
- # the first 76b of 80b do not change
- blk_hdr = static_data[:76]
-
- # decode 256-bit target value
- targetbin = targetstr.decode('hex')
- targetbin = targetbin[::-1] # byte-swap and dword-swap
- targetbin_str = targetbin.encode('hex')
- target = long(targetbin_str, 16)
-
- # pre-hash first 76b of block header
- static_hash = hashlib.sha256()
- static_hash.update(blk_hdr)
-
- for nonce in xrange(self.max_nonce):
-
- # encode 32-bit nonce value
- nonce_bin = struct.pack("<I", nonce)
-
- # hash final 4b, the nonce value
- hash1_o = static_hash.copy()
- hash1_o.update(nonce_bin)
- hash1 = hash1_o.digest()
-
- # sha256 hash of sha256 hash
- hash_o = hashlib.sha256()
- hash_o.update(hash1)
- hash = hash_o.digest()
-
- # quick test for winning solution: high 32 bits zero?
- if hash[-4:] != '\0\0\0\0':
- continue
-
- # convert binary hash to 256-bit Python long
- hash = bufreverse(hash)
- hash = wordreverse(hash)
-
- hash_str = hash.encode('hex')
- l = long(hash_str, 16)
-
- # proof-of-work test: hash < target
- if l < target:
- print time.asctime(), "PROOF-OF-WORK found: %064x" % (l,)
- return (nonce + 1, nonce_bin)
- else:
- print time.asctime(), "PROOF-OF-WORK false positive %064x" % (l,)
-# return (nonce + 1, nonce_bin)
-
- return (nonce + 1, None)
-
- def submit_work(self, rpc, original_data, nonce_bin):
- nonce_bin = bufreverse(nonce_bin)
- nonce = nonce_bin.encode('hex')
- solution = original_data[:152] + nonce + original_data[160:256]
- param_arr = [ solution ]
- result = rpc.getwork(param_arr)
- print time.asctime(), "--> Upstream RPC result:", result
-
- def iterate(self, rpc):
- work = rpc.getwork()
- if work is None:
- time.sleep(ERR_SLEEP)
- return
- if 'data' not in work or 'target' not in work:
- time.sleep(ERR_SLEEP)
- return
-
- time_start = time.time()
-
- (hashes_done, nonce_bin) = self.work(work['data'],
- work['target'])
-
- time_end = time.time()
- time_diff = time_end - time_start
-
- self.max_nonce = long(
- (hashes_done * settings['scantime']) / time_diff)
- if self.max_nonce > 0xfffffffaL:
- self.max_nonce = 0xfffffffaL
-
- if settings['hashmeter']:
- print "HashMeter(%d): %d hashes, %.2f Khash/sec" % (
- self.id, hashes_done,
- (hashes_done / 1000.0) / time_diff)
-
- if nonce_bin is not None:
- self.submit_work(rpc, work['data'], nonce_bin)
-
- def loop(self):
- rpc = BitcoinRPC(settings['host'], settings['port'],
- settings['rpcuser'], settings['rpcpass'])
- if rpc is None:
- return
-
- while True:
- self.iterate(rpc)
-
-def miner_thread(id):
- miner = Miner(id)
- miner.loop()
-
-if __name__ == '__main__':
- if len(sys.argv) != 2:
- print "Usage: pyminer.py CONFIG-FILE"
- sys.exit(1)
-
- f = open(sys.argv[1])
- for line in f:
- # skip comment lines
- m = re.search('^\s*#', line)
- if m:
- continue
-
- # parse key=value lines
- m = re.search('^(\w+)\s*=\s*(\S.*)$', line)
- if m is None:
- continue
- settings[m.group(1)] = m.group(2)
- f.close()
-
- if 'host' not in settings:
- settings['host'] = '127.0.0.1'
- if 'port' not in settings:
- settings['port'] = 8332
- if 'threads' not in settings:
- settings['threads'] = 1
- if 'hashmeter' not in settings:
- settings['hashmeter'] = 0
- if 'scantime' not in settings:
- settings['scantime'] = 30L
- if 'rpcuser' not in settings or 'rpcpass' not in settings:
- print "Missing username and/or password in cfg file"
- sys.exit(1)
-
- settings['port'] = int(settings['port'])
- settings['threads'] = int(settings['threads'])
- settings['hashmeter'] = int(settings['hashmeter'])
- settings['scantime'] = long(settings['scantime'])
-
- thr_list = []
- for thr_id in range(settings['threads']):
- p = Process(target=miner_thread, args=(thr_id,))
- p.start()
- thr_list.append(p)
- time.sleep(1) # stagger threads
-
- print settings['threads'], "mining threads started"
-
- print time.asctime(), "Miner Starts - %s:%s" % (settings['host'], settings['port'])
- try:
- for thr_proc in thr_list:
- thr_proc.join()
- except KeyboardInterrupt:
- pass
- print time.asctime(), "Miner Stops - %s:%s" % (settings['host'], settings['port'])
-
diff --git a/contrib/systemd/bitcoind.service b/contrib/systemd/bitcoind.service
new file mode 100644
index 0000000000..edc81cc763
--- /dev/null
+++ b/contrib/systemd/bitcoind.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Bitcoin's distributed currency daemon
+After=network.target
+
+[Service]
+User=bitcoind
+Group=bitcoind
+
+Type=forking
+PIDFile=/var/lib/bitcoind/bitcoind.pid
+ExecStart=/usr/bin/bitcoind -daemon -pid=/var/lib/bitcoind/bitcoind.pid -conf=/etc/bitcoind.conf -datadir=/var/lib/bitcoind
+
+Restart=always
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/verifysfbinaries/README.md b/contrib/verifysfbinaries/README.md
index f646d1efd1..8c038865bd 100644
--- a/contrib/verifysfbinaries/README.md
+++ b/contrib/verifysfbinaries/README.md
@@ -1,5 +1,5 @@
### Verify SF Binaries ###
-This script attempts to download the signature file `SHA256SUMS.asc` from SourceForge.
+This script attempts to download the signature file `SHA256SUMS.asc` from https://bitcoin.org.
It first checks if the signature passes, and then downloads the files specified in the file, and checks if the hashes of these files match those that are specified in the signature file.
diff --git a/contrib/verifysfbinaries/verify.sh b/contrib/verifysfbinaries/verify.sh
index e92295661c..3eb4693883 100755
--- a/contrib/verifysfbinaries/verify.sh
+++ b/contrib/verifysfbinaries/verify.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-### This script attempts to download the signature file SHA256SUMS.asc from SourceForge
+### This script attempts to download the signature file SHA256SUMS.asc from bitcoin.org
### It first checks if the signature passes, and then downloads the files specified in
### the file, and checks if the hashes of these files match those that are specified
### in the signature file.
@@ -18,11 +18,11 @@ WORKINGDIR="/tmp/bitcoin"
TMPFILE="hashes.tmp"
#this URL is used if a version number is not specified as an argument to the script
-SIGNATUREFILE="http://downloads.sourceforge.net/project/bitcoin/Bitcoin/bitcoin-0.9.0rc1/SHA256SUMS.asc"
+SIGNATUREFILE="https://bitcoin.org/bin/0.9.2.1/SHA256SUMS.asc"
SIGNATUREFILENAME="SHA256SUMS.asc"
RCSUBDIR="test/"
-BASEDIR="http://downloads.sourceforge.net/project/bitcoin/Bitcoin/"
+BASEDIR="https://bitcoin.org/bin/"
VERSIONPREFIX="bitcoin-"
RCVERSIONSTRING="rc"
@@ -62,7 +62,7 @@ WGETOUT=$(wget -N "$BASEDIR$SIGNATUREFILENAME" 2>&1)
#and then see if wget completed successfully
if [ $? -ne 0 ]; then
echo "Error: couldn't fetch signature file. Have you specified the version number in the following format?"
- echo "[bitcoin-]<version>-[rc[0-9]] (example: bitcoin-0.7.1-rc1)"
+ echo "[bitcoin-]<version>-[rc[0-9]] (example: bitcoin-0.9.2-rc1)"
echo "wget output:"
echo "$WGETOUT"|sed 's/^/\t/g'
exit 2