commit
3702f127fd
33
doc/README
33
doc/README
|
@ -1,33 +0,0 @@
|
||||||
Bitcoin 0.8.2 BETA
|
|
||||||
|
|
||||||
Copyright (c) 2009-2013 Bitcoin Developers
|
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
|
||||||
|
|
||||||
|
|
||||||
Intro
|
|
||||||
-----
|
|
||||||
Bitcoin is a free open source peer-to-peer electronic cash system that is
|
|
||||||
completely decentralized, without the need for a central server or trusted
|
|
||||||
parties. Users hold the crypto keys to their own money and transact directly
|
|
||||||
with each other, with the help of a P2P network to check for double-spending.
|
|
||||||
|
|
||||||
|
|
||||||
Setup
|
|
||||||
-----
|
|
||||||
You need the Qt4 run-time libraries to run Bitcoin-Qt. On Debian or Ubuntu:
|
|
||||||
sudo apt-get install libqtgui4
|
|
||||||
|
|
||||||
Unpack the files into a directory and run:
|
|
||||||
bin/32/bitcoin-qt (GUI, 32-bit)
|
|
||||||
bin/32/bitcoind (headless, 32-bit)
|
|
||||||
bin/64/bitcoin-qt (GUI, 64-bit)
|
|
||||||
bin/64/bitcoind (headless, 64-bit)
|
|
||||||
|
|
||||||
|
|
||||||
See the documentation at the bitcoin wiki:
|
|
||||||
https://en.bitcoin.it/wiki/Main_Page
|
|
||||||
for help and more information.
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
Bitcoin 0.8.2 BETA
|
||||||
|
====================
|
||||||
|
|
||||||
|
Copyright (c) 2009-2013 Bitcoin Developers
|
||||||
|
|
||||||
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
|
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
This product includes software developed by the OpenSSL Project for use in the [OpenSSL Toolkit](http://www.openssl.org/). This product includes
|
||||||
|
cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard.
|
||||||
|
|
||||||
|
|
||||||
|
Intro
|
||||||
|
---------------------
|
||||||
|
Bitcoin is a free open source peer-to-peer electronic cash system that is
|
||||||
|
completely decentralized, without the need for a central server or trusted
|
||||||
|
parties. Users hold the crypto keys to their own money and transact directly
|
||||||
|
with each other, with the help of a P2P network to check for double-spending.
|
||||||
|
|
||||||
|
|
||||||
|
Setup
|
||||||
|
---------------------
|
||||||
|
You need the Qt4 run-time libraries to run Bitcoin-Qt. On Debian or Ubuntu:
|
||||||
|
`sudo apt-get install libqtgui4`
|
||||||
|
|
||||||
|
Unpack the files into a directory and run:
|
||||||
|
|
||||||
|
- bin/32/bitcoin-qt (GUI, 32-bit)
|
||||||
|
- bin/32/bitcoind (headless, 32-bit)
|
||||||
|
- bin/64/bitcoin-qt (GUI, 64-bit)
|
||||||
|
- bin/64/bitcoind (headless, 64-bit)
|
||||||
|
|
||||||
|
See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page)
|
||||||
|
for help and more information.
|
||||||
|
|
||||||
|
|
||||||
|
Other Pages
|
||||||
|
---------------------
|
||||||
|
- [Unix Build Notes](build-unix.md)
|
||||||
|
- [OSX Build Notes](build-osx.md)
|
||||||
|
- [Windows Build Notes](build-msw.md)
|
||||||
|
- [Coding Guidelines](coding.md)
|
||||||
|
- [Release Process](release-process.md)
|
||||||
|
- [Release Notes](release-notes.md)
|
||||||
|
- [Multiwallet Qt Development](multiwallet-qt.md)
|
||||||
|
- [Unit Tests](unit-tests.md)
|
||||||
|
- [Translation Process](translation_process.md)
|
|
@ -1,10 +1,9 @@
|
||||||
Copyright (c) 2009-2012 Bitcoin Developers
|
Copyright (c) 2009-2013 Bitcoin Developers
|
||||||
|
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
This product includes software developed by the OpenSSL Project for use in the [OpenSSL Toolkit](http://www.openssl.org/). This product includes
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard.
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
|
|
||||||
software written by Thomas Bernard.
|
|
||||||
|
|
||||||
|
|
||||||
See readme-qt.rst for instructions on building Bitcoin-Qt, the
|
See readme-qt.rst for instructions on building Bitcoin-Qt, the
|
||||||
|
@ -30,12 +29,14 @@ Boost \boost-1.50.0-mgw http://www.boost.org/users/download/
|
||||||
miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/
|
miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/
|
||||||
|
|
||||||
Their licenses:
|
Their licenses:
|
||||||
|
|
||||||
OpenSSL Old BSD license with the problematic advertising requirement
|
OpenSSL Old BSD license with the problematic advertising requirement
|
||||||
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
||||||
Boost MIT-like license
|
Boost MIT-like license
|
||||||
miniupnpc New (3-clause) BSD license
|
miniupnpc New (3-clause) BSD license
|
||||||
|
|
||||||
Versions used in this release:
|
Versions used in this release:
|
||||||
|
|
||||||
OpenSSL 1.0.1c
|
OpenSSL 1.0.1c
|
||||||
Berkeley DB 4.8.30.NC
|
Berkeley DB 4.8.30.NC
|
||||||
Boost 1.50.0
|
Boost 1.50.0
|
||||||
|
@ -45,6 +46,7 @@ miniupnpc 1.6
|
||||||
OpenSSL
|
OpenSSL
|
||||||
-------
|
-------
|
||||||
MSYS shell:
|
MSYS shell:
|
||||||
|
|
||||||
un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377)
|
un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377)
|
||||||
change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe'
|
change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe'
|
||||||
|
|
||||||
|
@ -55,6 +57,7 @@ make
|
||||||
Berkeley DB
|
Berkeley DB
|
||||||
-----------
|
-----------
|
||||||
MSYS shell:
|
MSYS shell:
|
||||||
|
|
||||||
cd /c/db-4.8.30.NC-mgw/build_unix
|
cd /c/db-4.8.30.NC-mgw/build_unix
|
||||||
sh ../dist/configure --enable-mingw --enable-cxx
|
sh ../dist/configure --enable-mingw --enable-cxx
|
||||||
make
|
make
|
||||||
|
@ -62,15 +65,17 @@ make
|
||||||
Boost
|
Boost
|
||||||
-----
|
-----
|
||||||
DOS prompt:
|
DOS prompt:
|
||||||
|
|
||||||
downloaded boost jam 3.1.18
|
downloaded boost jam 3.1.18
|
||||||
cd \boost-1.50.0-mgw
|
cd \boost-1.50.0-mgw
|
||||||
bjam toolset=gcc --build-type=complete stage
|
bjam toolset=gcc --build-type=complete stage
|
||||||
|
|
||||||
MiniUPnPc
|
MiniUPnPc
|
||||||
---------
|
---------
|
||||||
UPnP support is optional, make with USE_UPNP= to disable it.
|
UPnP support is optional, make with `USE_UPNP=` to disable it.
|
||||||
|
|
||||||
MSYS shell:
|
MSYS shell:
|
||||||
|
|
||||||
cd /c/miniupnpc-1.6-mgw
|
cd /c/miniupnpc-1.6-mgw
|
||||||
make -f Makefile.mingw
|
make -f Makefile.mingw
|
||||||
mkdir miniupnpc
|
mkdir miniupnpc
|
||||||
|
@ -79,6 +84,7 @@ cp *.h miniupnpc/
|
||||||
Bitcoin
|
Bitcoin
|
||||||
-------
|
-------
|
||||||
DOS prompt:
|
DOS prompt:
|
||||||
|
|
||||||
cd \bitcoin\src
|
cd \bitcoin\src
|
||||||
mingw32-make -f makefile.mingw
|
mingw32-make -f makefile.mingw
|
||||||
strip bitcoind.exe
|
strip bitcoind.exe
|
|
@ -1,26 +1,23 @@
|
||||||
Copyright (c) 2009-2012 Bitcoin Developers
|
Copyright (c) 2009-2013 Bitcoin Developers
|
||||||
|
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
This product includes software developed by the OpenSSL Project for use in the [OpenSSL Toolkit](http://www.openssl.org/). This product includes
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard.
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
|
|
||||||
software written by Thomas Bernard.
|
|
||||||
|
|
||||||
|
|
||||||
UNIX BUILD NOTES
|
UNIX BUILD NOTES
|
||||||
================
|
====================
|
||||||
|
|
||||||
To Build
|
To Build
|
||||||
--------
|
---------------------
|
||||||
|
|
||||||
cd src/
|
cd src/
|
||||||
make -f makefile.unix # Headless bitcoin
|
make -f makefile.unix # Headless bitcoin
|
||||||
|
|
||||||
See readme-qt.rst for instructions on building Bitcoin-Qt,
|
See readme-qt.rst for instructions on building Bitcoin-Qt, the graphical user interface.
|
||||||
the graphical user interface.
|
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
------------
|
---------------------
|
||||||
|
|
||||||
Library Purpose Description
|
Library Purpose Description
|
||||||
------- ------- -----------
|
------- ------- -----------
|
||||||
|
@ -29,14 +26,16 @@ Dependencies
|
||||||
libboost Boost C++ Library
|
libboost Boost C++ Library
|
||||||
miniupnpc UPnP Support Optional firewall-jumping support
|
miniupnpc UPnP Support Optional firewall-jumping support
|
||||||
|
|
||||||
miniupnpc may be used for UPnP port mapping. It can be downloaded from
|
[miniupnpc](http://miniupnp.free.fr/) may be used for UPnP port mapping. It can be downloaded from [here](
|
||||||
http://miniupnp.tuxfamily.org/files/. UPnP support is compiled in and
|
http://miniupnp.tuxfamily.org/files/). UPnP support is compiled in and
|
||||||
turned off by default. Set USE_UPNP to a different value to control this:
|
turned off by default. Set USE_UPNP to a different value to control this:
|
||||||
USE_UPNP=- No UPnP support - miniupnp not required
|
|
||||||
|
USE_UPNP= No UPnP support miniupnp not required
|
||||||
USE_UPNP=0 (the default) UPnP support turned off by default at runtime
|
USE_UPNP=0 (the default) UPnP support turned off by default at runtime
|
||||||
USE_UPNP=1 UPnP support turned on by default at runtime
|
USE_UPNP=1 UPnP support turned on by default at runtime
|
||||||
|
|
||||||
IPv6 support may be disabled by setting:
|
IPv6 support may be disabled by setting:
|
||||||
|
|
||||||
USE_IPV6=0 Disable IPv6 support
|
USE_IPV6=0 Disable IPv6 support
|
||||||
|
|
||||||
Licenses of statically linked libraries:
|
Licenses of statically linked libraries:
|
||||||
|
@ -45,48 +44,51 @@ Licenses of statically linked libraries:
|
||||||
Boost MIT-like license
|
Boost MIT-like license
|
||||||
miniupnpc New (3-clause) BSD license
|
miniupnpc New (3-clause) BSD license
|
||||||
|
|
||||||
Versions used in this release:
|
- Versions used in this release:
|
||||||
GCC 4.3.3
|
- GCC 4.3.3
|
||||||
OpenSSL 1.0.1c
|
- OpenSSL 1.0.1c
|
||||||
Berkeley DB 4.8.30.NC
|
- Berkeley DB 4.8.30.NC
|
||||||
Boost 1.37
|
- Boost 1.37
|
||||||
miniupnpc 1.6
|
- miniupnpc 1.6
|
||||||
|
|
||||||
Dependency Build Instructions: Ubuntu & Debian
|
Dependency Build Instructions: Ubuntu & Debian
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
Build requirements:
|
Build requirements:
|
||||||
|
|
||||||
sudo apt-get install build-essential
|
sudo apt-get install build-essential
|
||||||
sudo apt-get install libssl-dev
|
sudo apt-get install libssl-dev
|
||||||
|
|
||||||
for Ubuntu 12.04:
|
for Ubuntu 12.04:
|
||||||
|
|
||||||
sudo apt-get install libboost-all-dev
|
sudo apt-get install libboost-all-dev
|
||||||
|
|
||||||
db4.8 packages are available at:
|
db4.8 packages are available [here](https://launchpad.net/~bitcoin/+archive/bitcoin).
|
||||||
https://launchpad.net/~bitcoin/+archive/bitcoin
|
|
||||||
|
|
||||||
Ubuntu precise has packages for libdb5.1-dev and libdb5.1++-dev,
|
Ubuntu precise has packages for libdb5.1-dev and libdb5.1++-dev,
|
||||||
but using these will break binary wallet compatibility, and is not recommended.
|
but using these will break binary wallet compatibility, and is not recommended.
|
||||||
|
|
||||||
for other Ubuntu & Debian:
|
for other Ubuntu & Debian:
|
||||||
|
|
||||||
sudo apt-get install libdb4.8-dev
|
sudo apt-get install libdb4.8-dev
|
||||||
sudo apt-get install libdb4.8++-dev
|
sudo apt-get install libdb4.8++-dev
|
||||||
sudo apt-get install libboost1.37-dev
|
sudo apt-get install libboost1.37-dev
|
||||||
(If using Boost 1.37, append -mt to the boost libraries in the makefile)
|
(If using Boost 1.37, append -mt to the boost libraries in the makefile)
|
||||||
|
|
||||||
Optional:
|
Optional:
|
||||||
|
|
||||||
sudo apt-get install libminiupnpc-dev (see USE_UPNP compile flag)
|
sudo apt-get install libminiupnpc-dev (see USE_UPNP compile flag)
|
||||||
|
|
||||||
|
|
||||||
Dependency Build Instructions: Gentoo
|
Dependency Build Instructions: Gentoo
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Note: If you just want to install bitcoind on Gentoo, you can add the Bitcoin
|
Note: If you just want to install bitcoind on Gentoo, you can add the Bitcoin overlay and use your package manager:
|
||||||
overlay and use your package manager:
|
|
||||||
layman -a bitcoin && emerge bitcoind
|
|
||||||
|
|
||||||
|
layman -a bitcoin && emerge bitcoind
|
||||||
emerge -av1 --noreplace boost glib openssl sys-libs/db:4.8
|
emerge -av1 --noreplace boost glib openssl sys-libs/db:4.8
|
||||||
|
|
||||||
Take the following steps to build (no UPnP support):
|
Take the following steps to build (no UPnP support):
|
||||||
|
|
||||||
cd ${BITCOIN_DIR}/src
|
cd ${BITCOIN_DIR}/src
|
||||||
make -f makefile.unix USE_UPNP= USE_IPV6=1 BDB_INCLUDE_PATH='/usr/include/db4.8'
|
make -f makefile.unix USE_UPNP= USE_IPV6=1 BDB_INCLUDE_PATH='/usr/include/db4.8'
|
||||||
strip bitcoind
|
strip bitcoind
|
||||||
|
@ -110,6 +112,7 @@ make install
|
||||||
Berkeley DB
|
Berkeley DB
|
||||||
-----------
|
-----------
|
||||||
You need Berkeley DB 4.8. If you have to build Berkeley DB yourself:
|
You need Berkeley DB 4.8. If you have to build Berkeley DB yourself:
|
||||||
|
|
||||||
../dist/configure --enable-cxx
|
../dist/configure --enable-cxx
|
||||||
make
|
make
|
||||||
|
|
||||||
|
@ -117,6 +120,7 @@ make
|
||||||
Boost
|
Boost
|
||||||
-----
|
-----
|
||||||
If you need to build Boost yourself:
|
If you need to build Boost yourself:
|
||||||
|
|
||||||
sudo su
|
sudo su
|
||||||
./bootstrap.sh
|
./bootstrap.sh
|
||||||
./bjam install
|
./bjam install
|
||||||
|
@ -138,9 +142,11 @@ exploit even if a vulnerability is found, you can take the following measures:
|
||||||
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
||||||
|
|
||||||
To build with PIE, use:
|
To build with PIE, use:
|
||||||
|
|
||||||
make -f makefile.unix ... -e PIE=1
|
make -f makefile.unix ... -e PIE=1
|
||||||
|
|
||||||
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
||||||
|
|
||||||
scanelf -e ./bitcoin
|
scanelf -e ./bitcoin
|
||||||
|
|
||||||
The output should contain:
|
The output should contain:
|
||||||
|
@ -155,7 +161,7 @@ exploit even if a vulnerability is found, you can take the following measures:
|
||||||
executable without the non-executable stack protection.
|
executable without the non-executable stack protection.
|
||||||
|
|
||||||
To verify that the stack is non-executable after compiling use:
|
To verify that the stack is non-executable after compiling use:
|
||||||
scanelf -e ./bitcoin
|
`scanelf -e ./bitcoin`
|
||||||
|
|
||||||
the output should contain:
|
the output should contain:
|
||||||
STK/REL/PTL
|
STK/REL/PTL
|
|
@ -0,0 +1,94 @@
|
||||||
|
Coding
|
||||||
|
====================
|
||||||
|
|
||||||
|
Please be consistent with the existing coding style.
|
||||||
|
|
||||||
|
Block style:
|
||||||
|
|
||||||
|
bool Function(char* psz, int n)
|
||||||
|
{
|
||||||
|
// Comment summarising what this section of code does
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
// When something fails, return early
|
||||||
|
if (!Something())
|
||||||
|
return false;
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Success return is usually at the end
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ANSI/Allman block style
|
||||||
|
- 4 space indenting, no tabs
|
||||||
|
- No extra spaces inside parenthesis; please don't do ( this )
|
||||||
|
- No space after function names, one space after if, for and while
|
||||||
|
|
||||||
|
Variable names begin with the type in lowercase, like nSomeVariable.
|
||||||
|
Please don't put the first word of the variable name in lowercase like
|
||||||
|
someVariable.
|
||||||
|
|
||||||
|
Common types:
|
||||||
|
|
||||||
|
n integer number: short, unsigned short, int, unsigned int, int64, uint64, sometimes char if used as a number
|
||||||
|
d double, float
|
||||||
|
f flag
|
||||||
|
hash uint256
|
||||||
|
p pointer or array, one p for each level of indirection
|
||||||
|
psz pointer to null terminated string
|
||||||
|
str string object
|
||||||
|
v vector or similar list objects
|
||||||
|
map map or multimap
|
||||||
|
set set or multiset
|
||||||
|
bn CBigNum
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
Locking/mutex usage notes
|
||||||
|
|
||||||
|
The code is multi-threaded, and uses mutexes and the
|
||||||
|
LOCK/TRY_LOCK macros to protect data structures.
|
||||||
|
|
||||||
|
Deadlocks due to inconsistent lock ordering (thread 1 locks cs_main
|
||||||
|
and then cs_wallet, while thread 2 locks them in the opposite order:
|
||||||
|
result, deadlock as each waits for the other to release its lock) are
|
||||||
|
a problem. Compile with -DDEBUG_LOCKORDER to get lock order
|
||||||
|
inconsistencies reported in the debug.log file.
|
||||||
|
|
||||||
|
Re-architecting the core code so there are better-defined interfaces
|
||||||
|
between the various components is a goal, with any necessary locking
|
||||||
|
done by the components (e.g. see the self-contained CKeyStore class
|
||||||
|
and its cs_KeyStore lock for example).
|
||||||
|
|
||||||
|
-------
|
||||||
|
Threads
|
||||||
|
|
||||||
|
- StartNode : Starts other threads.
|
||||||
|
|
||||||
|
- ThreadGetMyExternalIP : Determines outside-the-firewall IP address, sends addr message to connected peers when it determines it.
|
||||||
|
|
||||||
|
- ThreadSocketHandler : Sends/Receives data from peers on port 8333.
|
||||||
|
|
||||||
|
- ThreadMessageHandler : Higher-level message handling (sending and receiving).
|
||||||
|
|
||||||
|
- ThreadOpenConnections : Initiates new connections to peers.
|
||||||
|
|
||||||
|
- ThreadTopUpKeyPool : replenishes the keystore's keypool.
|
||||||
|
|
||||||
|
- ThreadCleanWalletPassphrase : re-locks an encrypted wallet after user has unlocked it for a period of time.
|
||||||
|
|
||||||
|
- SendingDialogStartTransfer : used by pay-via-ip-address code (obsolete)
|
||||||
|
|
||||||
|
- ThreadDelayedRepaint : repaint the gui
|
||||||
|
|
||||||
|
- ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms.
|
||||||
|
|
||||||
|
- ThreadRPCServer : Remote procedure call handler, listens on port 8332 for connections and services them.
|
||||||
|
|
||||||
|
- ThreadBitcoinMiner : Generates bitcoins
|
||||||
|
|
||||||
|
- ThreadMapPort : Universal plug-and-play startup/shutdown
|
||||||
|
|
||||||
|
- Shutdown : Does an orderly shutdown of everything
|
||||||
|
|
||||||
|
- ExitTimeout : Windows-only, sleeps 5 seconds then exits application
|
|
@ -1,96 +0,0 @@
|
||||||
Please be consistent with the existing coding style.
|
|
||||||
|
|
||||||
Block style:
|
|
||||||
|
|
||||||
bool Function(char* psz, int n)
|
|
||||||
{
|
|
||||||
// Comment summarising what this section of code does
|
|
||||||
for (int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
// When something fails, return early
|
|
||||||
if (!Something())
|
|
||||||
return false;
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
// Success return is usually at the end
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ANSI/Allman block style
|
|
||||||
- 4 space indenting, no tabs
|
|
||||||
- No extra spaces inside parenthesis; please don't do ( this )
|
|
||||||
- No space after function names, one space after if, for and while
|
|
||||||
|
|
||||||
Variable names begin with the type in lowercase, like nSomeVariable.
|
|
||||||
Please don't put the first word of the variable name in lowercase like
|
|
||||||
someVariable.
|
|
||||||
|
|
||||||
Common types:
|
|
||||||
n integer number: short, unsigned short, int, unsigned int,
|
|
||||||
int64, uint64, sometimes char if used as a number
|
|
||||||
d double, float
|
|
||||||
f flag
|
|
||||||
hash uint256
|
|
||||||
p pointer or array, one p for each level of indirection
|
|
||||||
psz pointer to null terminated string
|
|
||||||
str string object
|
|
||||||
v vector or similar list objects
|
|
||||||
map map or multimap
|
|
||||||
set set or multiset
|
|
||||||
bn CBigNum
|
|
||||||
|
|
||||||
-------------------------
|
|
||||||
Locking/mutex usage notes
|
|
||||||
|
|
||||||
The code is multi-threaded, and uses mutexes and the
|
|
||||||
LOCK/TRY_LOCK macros to protect data structures.
|
|
||||||
|
|
||||||
Deadlocks due to inconsistent lock ordering (thread 1 locks cs_main
|
|
||||||
and then cs_wallet, while thread 2 locks them in the opposite order:
|
|
||||||
result, deadlock as each waits for the other to release its lock) are
|
|
||||||
a problem. Compile with -DDEBUG_LOCKORDER to get lock order
|
|
||||||
inconsistencies reported in the debug.log file.
|
|
||||||
|
|
||||||
Re-architecting the core code so there are better-defined interfaces
|
|
||||||
between the various components is a goal, with any necessary locking
|
|
||||||
done by the components (e.g. see the self-contained CKeyStore class
|
|
||||||
and its cs_KeyStore lock for example).
|
|
||||||
|
|
||||||
-------
|
|
||||||
Threads
|
|
||||||
|
|
||||||
StartNode : Starts other threads.
|
|
||||||
|
|
||||||
ThreadGetMyExternalIP : Determines outside-the-firewall IP address,
|
|
||||||
sends addr message to connected peers when it determines it.
|
|
||||||
|
|
||||||
ThreadSocketHandler : Sends/Receives data from peers on port 8333.
|
|
||||||
|
|
||||||
ThreadMessageHandler : Higher-level message handling (sending and
|
|
||||||
receiving).
|
|
||||||
|
|
||||||
ThreadOpenConnections : Initiates new connections to peers.
|
|
||||||
|
|
||||||
ThreadTopUpKeyPool : replenishes the keystore's keypool.
|
|
||||||
|
|
||||||
ThreadCleanWalletPassphrase : re-locks an encrypted wallet after user
|
|
||||||
has unlocked it for a period of time.
|
|
||||||
|
|
||||||
SendingDialogStartTransfer : used by pay-via-ip-address code (obsolete)
|
|
||||||
|
|
||||||
ThreadDelayedRepaint : repaint the gui
|
|
||||||
|
|
||||||
ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used
|
|
||||||
in 500ms.
|
|
||||||
|
|
||||||
ThreadRPCServer : Remote procedure call handler, listens on port 8332
|
|
||||||
for connections and services them.
|
|
||||||
|
|
||||||
ThreadBitcoinMiner : Generates bitcoins
|
|
||||||
|
|
||||||
ThreadMapPort : Universal plug-and-play startup/shutdown
|
|
||||||
|
|
||||||
Shutdown : Does an orderly shutdown of everything
|
|
||||||
|
|
||||||
ExitTimeout : Windows-only, sleeps 5 seconds then exits application
|
|
|
@ -39,15 +39,14 @@ Changes to bitcoin.cpp
|
||||||
bitcoin.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for
|
bitcoin.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for
|
||||||
multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the
|
multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the
|
||||||
singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel.
|
singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel.
|
||||||
The initial change required is very simple: rather than calling window.setWalletModel(&walletModel); we perform the
|
The initial change required is very simple: rather than calling `window.setWalletModel(&walletModel);` we perform the
|
||||||
following two steps:
|
following two steps:
|
||||||
|
|
||||||
window.addWallet("~Default", &walletModel);
|
window.addWallet("~Default", &walletModel);
|
||||||
window.setCurrentWallet("~Default");
|
window.setCurrentWallet("~Default");
|
||||||
|
|
||||||
The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name
|
The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name collisions in the future with additional wallets.
|
||||||
collisions in the future with additional wallets.
|
|
||||||
|
|
||||||
The shutdown call window.setWalletModel(0) has also been removed. In its place is now:
|
The shutdown call `window.setWalletModel(0)` has also been removed. In its place is now:
|
||||||
|
|
||||||
window.removeAllWallets();
|
window.removeAllWallets();
|
|
@ -26,41 +26,41 @@ the rest of the network your transactions may never confirm.
|
||||||
Bitcoin-Qt changes
|
Bitcoin-Qt changes
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* New icon and splash screen
|
- New icon and splash screen
|
||||||
* Improve reporting of synchronization process
|
- Improve reporting of synchronization process
|
||||||
* Remove hardcoded fee recommendations
|
- Remove hardcoded fee recommendations
|
||||||
* Improve metadata of executable on MacOSX and Windows
|
- Improve metadata of executable on MacOSX and Windows
|
||||||
* Move export button to individual tabs instead of toolbar
|
- Move export button to individual tabs instead of toolbar
|
||||||
* Add "send coins" command to context menu in address book
|
- Add "send coins" command to context menu in address book
|
||||||
* Add "copy txid" command to copy transaction IDs from transaction overview
|
- Add "copy txid" command to copy transaction IDs from transaction overview
|
||||||
* Save & restore window size and position when showing & hiding window
|
- Save & restore window size and position when showing & hiding window
|
||||||
* New translations: Arabic (ar), Bosnian (bs), Catalan (ca), Welsh (cy),
|
- New translations: Arabic (ar), Bosnian (bs), Catalan (ca), Welsh (cy), Esperanto (eo), Interlingua (la), Latvian (lv) and many improvements to current translations
|
||||||
Esperanto (eo), Interlingua (la), Latvian (lv) and many improvements
|
|
||||||
to current translations
|
|
||||||
|
|
||||||
MacOSX:
|
MacOSX:
|
||||||
* OSX support for click-to-pay (bitcoin:) links
|
|
||||||
* Fix GUI disappearing problem on MacOSX (issue #1522)
|
- OSX support for click-to-pay (bitcoin:) links
|
||||||
|
- Fix GUI disappearing problem on MacOSX (issue #1522)
|
||||||
|
|
||||||
Linux/Unix:
|
Linux/Unix:
|
||||||
* Copy addresses to middle-mouse-button clipboard
|
|
||||||
|
- Copy addresses to middle-mouse-button clipboard
|
||||||
|
|
||||||
|
|
||||||
Command-line options
|
Command-line options
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* -walletnotify will call a command on receiving transactions that affect the wallet.
|
* `-walletnotify` will call a command on receiving transactions that affect the wallet.
|
||||||
* -alertnotify will call a command on receiving an alert from the network.
|
* `-alertnotify` will call a command on receiving an alert from the network.
|
||||||
* -par now takes a negative number, to leave a certain amount of cores free.
|
* `-par` now takes a negative number, to leave a certain amount of cores free.
|
||||||
|
|
||||||
JSON-RPC API changes
|
JSON-RPC API changes
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* listunspent now lists account and address infromation.
|
* `listunspent` now lists account and address infromation.
|
||||||
* getinfo now also returns the time adjustment estimated from your peers.
|
* `getinfo` now also returns the time adjustment estimated from your peers.
|
||||||
* getpeerinfo now returns bytessent, bytesrecv and syncnode.
|
* `getpeerinfo` now returns bytessent, bytesrecv and syncnode.
|
||||||
* gettxoutsetinfo returns statistics about the unspent transaction output database.
|
* `gettxoutsetinfo` returns statistics about the unspent transaction output database.
|
||||||
* gettxout returns information about a specific unspent transaction output.
|
* `gettxout` returns information about a specific unspent transaction output.
|
||||||
|
|
||||||
|
|
||||||
Networking changes
|
Networking changes
|
||||||
|
@ -76,5 +76,5 @@ Wallet compatibility/rescuing
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
* Cases where wallets cannot be opened in another version/installation should be reduced.
|
* Cases where wallets cannot be opened in another version/installation should be reduced.
|
||||||
* -salvagewallet now works for encrypted wallets.
|
* `-salvagewallet` now works for encrypted wallets.
|
||||||
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
Release Process
|
||||||
|
====================
|
||||||
|
|
||||||
|
* update translations (ping wumpus, Diapolo or tcatm on IRC)
|
||||||
|
* see https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#syncing-with-transifex
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
###update (commit) version in sources
|
||||||
|
|
||||||
|
|
||||||
|
bitcoin-qt.pro
|
||||||
|
contrib/verifysfbinaries/verify.sh
|
||||||
|
doc/README*
|
||||||
|
share/setup.nsi
|
||||||
|
src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true)
|
||||||
|
|
||||||
|
###tag version in git
|
||||||
|
|
||||||
|
git tag -a v0.8.0
|
||||||
|
|
||||||
|
###write release notes. git shortlog helps a lot, for example:
|
||||||
|
|
||||||
|
git shortlog --no-merges v0.7.2..v0.8.0
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
##perform gitian builds
|
||||||
|
|
||||||
|
From a directory containing the bitcoin source, gitian-builder and gitian.sigs
|
||||||
|
|
||||||
|
export SIGNER=(your gitian key, ie bluematt, sipa, etc)
|
||||||
|
export VERSION=0.8.0
|
||||||
|
cd ./gitian-builder
|
||||||
|
|
||||||
|
Fetch and build inputs: (first time, or when dependency versions change)
|
||||||
|
|
||||||
|
mkdir -p inputs; cd inputs/
|
||||||
|
wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz
|
||||||
|
wget 'http://www.openssl.org/source/openssl-1.0.1c.tar.gz'
|
||||||
|
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||||
|
wget 'http://zlib.net/zlib-1.2.6.tar.gz'
|
||||||
|
wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.9.tar.gz'
|
||||||
|
wget 'http://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2'
|
||||||
|
wget 'http://downloads.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2'
|
||||||
|
wget 'http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.3.tar.gz'
|
||||||
|
cd ..
|
||||||
|
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-win32.yml
|
||||||
|
mv build/out/boost-win32-1.50.0-gitian2.zip inputs/
|
||||||
|
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/qt-win32.yml
|
||||||
|
mv build/out/qt-win32-4.8.3-gitian-r1.zip inputs/
|
||||||
|
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-win32.yml
|
||||||
|
mv build/out/bitcoin-deps-0.0.5.zip inputs/
|
||||||
|
|
||||||
|
Build bitcoind and bitcoin-qt on Linux32, Linux64, and Win32:
|
||||||
|
|
||||||
|
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian.yml
|
||||||
|
./bin/gsign --signer $SIGNER --release ${VERSION} --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml
|
||||||
|
pushd build/out
|
||||||
|
zip -r bitcoin-${VERSION}-linux-gitian.zip *
|
||||||
|
mv bitcoin-${VERSION}-linux-gitian.zip ../../
|
||||||
|
popd
|
||||||
|
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
|
||||||
|
./bin/gsign --signer $SIGNER --release ${VERSION}-win32 --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
|
||||||
|
pushd build/out
|
||||||
|
zip -r bitcoin-${VERSION}-win32-gitian.zip *
|
||||||
|
mv bitcoin-${VERSION}-win32-gitian.zip ../../
|
||||||
|
popd
|
||||||
|
|
||||||
|
Build output expected:
|
||||||
|
|
||||||
|
1. linux 32-bit and 64-bit binaries + source (bitcoin-${VERSION}-linux-gitian.zip)
|
||||||
|
2. windows 32-bit binary, installer + source (bitcoin-${VERSION}-win32-gitian.zip)
|
||||||
|
3. Gitian signatures (in gitian.sigs/${VERSION}[-win32]/(your gitian key)/
|
||||||
|
|
||||||
|
repackage gitian builds for release as stand-alone zip/tar/installer exe
|
||||||
|
|
||||||
|
**Linux .tar.gz:**
|
||||||
|
|
||||||
|
unzip bitcoin-${VERSION}-linux-gitian.zip -d bitcoin-${VERSION}-linux
|
||||||
|
tar czvf bitcoin-${VERSION}-linux.tar.gz bitcoin-${VERSION}-linux
|
||||||
|
rm -rf bitcoin-${VERSION}-linux
|
||||||
|
|
||||||
|
**Windows .zip and setup.exe:**
|
||||||
|
|
||||||
|
unzip bitcoin-${VERSION}-win32-gitian.zip -d bitcoin-${VERSION}-win32
|
||||||
|
mv bitcoin-${VERSION}-win32/bitcoin-*-setup.exe .
|
||||||
|
zip -r bitcoin-${VERSION}-win32.zip bitcoin-${VERSION}-win32
|
||||||
|
rm -rf bitcoin-${VERSION}-win32
|
||||||
|
|
||||||
|
**Perform Mac build:**
|
||||||
|
|
||||||
|
OSX binaries are created by Gavin Andresen on a 32-bit, OSX 10.6 machine.
|
||||||
|
|
||||||
|
qmake RELEASE=1 USE_UPNP=1 USE_QRCODE=1 bitcoin-qt.pro
|
||||||
|
make
|
||||||
|
export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files
|
||||||
|
T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale)
|
||||||
|
python2.7 share/qt/clean_mac_info_plist.py
|
||||||
|
python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist
|
||||||
|
|
||||||
|
Build output expected: Bitcoin-Qt.dmg
|
||||||
|
|
||||||
|
###Next steps:
|
||||||
|
|
||||||
|
* Code-sign Windows -setup.exe (in a Windows virtual machine) and
|
||||||
|
OSX Bitcoin-Qt.app (Note: only Gavin has the code-signing keys currently)
|
||||||
|
|
||||||
|
* upload builds to SourceForge
|
||||||
|
|
||||||
|
* create SHA256SUMS for builds, and PGP-sign it
|
||||||
|
|
||||||
|
* update bitcoin.org version
|
||||||
|
make sure all OS download links go to the right versions
|
||||||
|
|
||||||
|
* update forum version
|
||||||
|
|
||||||
|
* update wiki download links
|
||||||
|
|
||||||
|
* update wiki changelog: [https://en.bitcoin.it/wiki/Changelog](https://en.bitcoin.it/wiki/Changelog)
|
||||||
|
|
||||||
|
Commit your signature to gitian.sigs:
|
||||||
|
|
||||||
|
pushd gitian.sigs
|
||||||
|
git add ${VERSION}/${SIGNER}
|
||||||
|
git add ${VERSION}-win32/${SIGNER}
|
||||||
|
git commit -a
|
||||||
|
git push # Assuming you can push to the gitian.sigs tree
|
||||||
|
popd
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
### After 3 or more people have gitian-built, repackage gitian-signed zips:
|
||||||
|
|
||||||
|
From a directory containing bitcoin source, gitian.sigs and gitian zips
|
||||||
|
|
||||||
|
export VERSION=0.5.1
|
||||||
|
mkdir bitcoin-${VERSION}-linux-gitian
|
||||||
|
pushd bitcoin-${VERSION}-linux-gitian
|
||||||
|
unzip ../bitcoin-${VERSION}-linux-gitian.zip
|
||||||
|
mkdir gitian
|
||||||
|
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
|
||||||
|
for signer in $(ls ../gitian.sigs/${VERSION}/); do
|
||||||
|
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert
|
||||||
|
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig
|
||||||
|
done
|
||||||
|
zip -r bitcoin-${VERSION}-linux-gitian.zip *
|
||||||
|
cp bitcoin-${VERSION}-linux-gitian.zip ../
|
||||||
|
popd
|
||||||
|
mkdir bitcoin-${VERSION}-win32-gitian
|
||||||
|
pushd bitcoin-${VERSION}-win32-gitian
|
||||||
|
unzip ../bitcoin-${VERSION}-win32-gitian.zip
|
||||||
|
mkdir gitian
|
||||||
|
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
|
||||||
|
for signer in $(ls ../gitian.sigs/${VERSION}-win32/); do
|
||||||
|
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert
|
||||||
|
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig
|
||||||
|
done
|
||||||
|
zip -r bitcoin-${VERSION}-win32-gitian.zip *
|
||||||
|
cp bitcoin-${VERSION}-win32-gitian.zip ../
|
||||||
|
popd
|
||||||
|
|
||||||
|
- Upload gitian zips to SourceForge
|
||||||
|
- Celebrate
|
|
@ -1,144 +0,0 @@
|
||||||
* update translations (ping wumpus, Diapolo or tcatm on IRC)
|
|
||||||
* see https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#syncing-with-transifex
|
|
||||||
|
|
||||||
* update (commit) version in sources
|
|
||||||
bitcoin-qt.pro
|
|
||||||
contrib/verifysfbinaries/verify.sh
|
|
||||||
doc/README*
|
|
||||||
share/setup.nsi
|
|
||||||
src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true)
|
|
||||||
|
|
||||||
* tag version in git
|
|
||||||
|
|
||||||
git tag -a v0.8.0
|
|
||||||
|
|
||||||
* write release notes. git shortlog helps a lot, for example:
|
|
||||||
|
|
||||||
git shortlog --no-merges v0.7.2..v0.8.0
|
|
||||||
|
|
||||||
* perform gitian builds
|
|
||||||
|
|
||||||
* From a directory containing the bitcoin source, gitian-builder and gitian.sigs
|
|
||||||
export SIGNER=(your gitian key, ie bluematt, sipa, etc)
|
|
||||||
export VERSION=0.8.0
|
|
||||||
cd ./gitian-builder
|
|
||||||
|
|
||||||
* Fetch and build inputs: (first time, or when dependency versions change)
|
|
||||||
mkdir -p inputs; cd inputs/
|
|
||||||
wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz
|
|
||||||
wget 'http://www.openssl.org/source/openssl-1.0.1c.tar.gz'
|
|
||||||
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
|
||||||
wget 'http://zlib.net/zlib-1.2.6.tar.gz'
|
|
||||||
wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.9.tar.gz'
|
|
||||||
wget 'http://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2'
|
|
||||||
wget 'http://downloads.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2'
|
|
||||||
wget 'http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.3.tar.gz'
|
|
||||||
cd ..
|
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-win32.yml
|
|
||||||
mv build/out/boost-win32-1.50.0-gitian2.zip inputs/
|
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/qt-win32.yml
|
|
||||||
mv build/out/qt-win32-4.8.3-gitian-r1.zip inputs/
|
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-win32.yml
|
|
||||||
mv build/out/bitcoin-deps-0.0.5.zip inputs/
|
|
||||||
|
|
||||||
* Build bitcoind and bitcoin-qt on Linux32, Linux64, and Win32:
|
|
||||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian.yml
|
|
||||||
./bin/gsign --signer $SIGNER --release ${VERSION} --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml
|
|
||||||
pushd build/out
|
|
||||||
zip -r bitcoin-${VERSION}-linux-gitian.zip *
|
|
||||||
mv bitcoin-${VERSION}-linux-gitian.zip ../../
|
|
||||||
popd
|
|
||||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
|
|
||||||
./bin/gsign --signer $SIGNER --release ${VERSION}-win32 --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
|
|
||||||
pushd build/out
|
|
||||||
zip -r bitcoin-${VERSION}-win32-gitian.zip *
|
|
||||||
mv bitcoin-${VERSION}-win32-gitian.zip ../../
|
|
||||||
popd
|
|
||||||
|
|
||||||
Build output expected:
|
|
||||||
1. linux 32-bit and 64-bit binaries + source (bitcoin-${VERSION}-linux-gitian.zip)
|
|
||||||
2. windows 32-bit binary, installer + source (bitcoin-${VERSION}-win32-gitian.zip)
|
|
||||||
3. Gitian signatures (in gitian.sigs/${VERSION}[-win32]/(your gitian key)/
|
|
||||||
|
|
||||||
* repackage gitian builds for release as stand-alone zip/tar/installer exe
|
|
||||||
|
|
||||||
* Linux .tar.gz:
|
|
||||||
unzip bitcoin-${VERSION}-linux-gitian.zip -d bitcoin-${VERSION}-linux
|
|
||||||
tar czvf bitcoin-${VERSION}-linux.tar.gz bitcoin-${VERSION}-linux
|
|
||||||
rm -rf bitcoin-${VERSION}-linux
|
|
||||||
|
|
||||||
* Windows .zip and setup.exe:
|
|
||||||
unzip bitcoin-${VERSION}-win32-gitian.zip -d bitcoin-${VERSION}-win32
|
|
||||||
mv bitcoin-${VERSION}-win32/bitcoin-*-setup.exe .
|
|
||||||
zip -r bitcoin-${VERSION}-win32.zip bitcoin-${VERSION}-win32
|
|
||||||
rm -rf bitcoin-${VERSION}-win32
|
|
||||||
|
|
||||||
* perform Mac build
|
|
||||||
OSX binaries are created by Gavin Andresen on a 32-bit, OSX 10.6 machine.
|
|
||||||
|
|
||||||
qmake RELEASE=1 USE_UPNP=1 USE_QRCODE=1 bitcoin-qt.pro
|
|
||||||
make
|
|
||||||
export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files
|
|
||||||
T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale)
|
|
||||||
python2.7 share/qt/clean_mac_info_plist.py
|
|
||||||
python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist
|
|
||||||
|
|
||||||
Build output expected:
|
|
||||||
Bitcoin-Qt.dmg
|
|
||||||
|
|
||||||
* Code-sign Windows -setup.exe (in a Windows virtual machine) and
|
|
||||||
OSX Bitcoin-Qt.app (Note: only Gavin has the code-signing keys currently)
|
|
||||||
|
|
||||||
* upload builds to SourceForge
|
|
||||||
|
|
||||||
* create SHA256SUMS for builds, and PGP-sign it
|
|
||||||
|
|
||||||
* update bitcoin.org version
|
|
||||||
make sure all OS download links go to the right versions
|
|
||||||
|
|
||||||
* update forum version
|
|
||||||
|
|
||||||
* update wiki download links
|
|
||||||
|
|
||||||
* update wiki changelog: https://en.bitcoin.it/wiki/Changelog
|
|
||||||
|
|
||||||
* Commit your signature to gitian.sigs:
|
|
||||||
pushd gitian.sigs
|
|
||||||
git add ${VERSION}/${SIGNER}
|
|
||||||
git add ${VERSION}-win32/${SIGNER}
|
|
||||||
git commit -a
|
|
||||||
git push # Assuming you can push to the gitian.sigs tree
|
|
||||||
popd
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
* After 3 or more people have gitian-built, repackage gitian-signed zips:
|
|
||||||
|
|
||||||
* From a directory containing bitcoin source, gitian.sigs and gitian zips
|
|
||||||
export VERSION=0.5.1
|
|
||||||
mkdir bitcoin-${VERSION}-linux-gitian
|
|
||||||
pushd bitcoin-${VERSION}-linux-gitian
|
|
||||||
unzip ../bitcoin-${VERSION}-linux-gitian.zip
|
|
||||||
mkdir gitian
|
|
||||||
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
|
|
||||||
for signer in $(ls ../gitian.sigs/${VERSION}/); do
|
|
||||||
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert
|
|
||||||
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig
|
|
||||||
done
|
|
||||||
zip -r bitcoin-${VERSION}-linux-gitian.zip *
|
|
||||||
cp bitcoin-${VERSION}-linux-gitian.zip ../
|
|
||||||
popd
|
|
||||||
mkdir bitcoin-${VERSION}-win32-gitian
|
|
||||||
pushd bitcoin-${VERSION}-win32-gitian
|
|
||||||
unzip ../bitcoin-${VERSION}-win32-gitian.zip
|
|
||||||
mkdir gitian
|
|
||||||
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
|
|
||||||
for signer in $(ls ../gitian.sigs/${VERSION}-win32/); do
|
|
||||||
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert
|
|
||||||
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig
|
|
||||||
done
|
|
||||||
zip -r bitcoin-${VERSION}-win32-gitian.zip *
|
|
||||||
cp bitcoin-${VERSION}-win32-gitian.zip ../
|
|
||||||
popd
|
|
||||||
|
|
||||||
* Upload gitian zips to SourceForge
|
|
|
@ -1,18 +1,19 @@
|
||||||
Compiling/running bitcoind unit tests
|
Compiling/running bitcoind unit tests
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
bitcoind unit tests are in the src/test/ directory; they
|
bitcoind unit tests are in the `src/test/` directory; they
|
||||||
use the Boost::Test unit-testing framework.
|
use the Boost::Test unit-testing framework.
|
||||||
|
|
||||||
To compile and run the tests:
|
To compile and run the tests:
|
||||||
|
|
||||||
cd src
|
cd src
|
||||||
make -f makefile.unix test_bitcoin # Replace makefile.unix if you're not on unix
|
make -f makefile.unix test_bitcoin # Replace makefile.unix if you're not on unix
|
||||||
./test_bitcoin # Runs the unit tests
|
./test_bitcoin # Runs the unit tests
|
||||||
|
|
||||||
If all tests succeed the last line of output will be:
|
If all tests succeed the last line of output will be:
|
||||||
*** No errors detected
|
`*** No errors detected`
|
||||||
|
|
||||||
To add more tests, add BOOST_AUTO_TEST_CASE functions to the existing
|
To add more tests, add `BOOST_AUTO_TEST_CASE` functions to the existing
|
||||||
.cpp files in the test/ directory or add new .cpp files that
|
.cpp files in the test/ directory or add new .cpp files that
|
||||||
implement new BOOST_AUTO_TEST_SUITE sections (the makefiles are
|
implement new BOOST_AUTO_TEST_SUITE sections (the makefiles are
|
||||||
set up to add test/*.cpp to test_bitcoin automatically).
|
set up to add test/*.cpp to test_bitcoin automatically).
|
||||||
|
@ -25,9 +26,10 @@ Bitcoin-Qt unit tests are in the src/qt/test/ directory; they
|
||||||
use the Qt unit-testing framework.
|
use the Qt unit-testing framework.
|
||||||
|
|
||||||
To compile and run the tests:
|
To compile and run the tests:
|
||||||
|
|
||||||
qmake bitcoin-qt.pro BITCOIN_QT_TEST=1
|
qmake bitcoin-qt.pro BITCOIN_QT_TEST=1
|
||||||
make
|
make
|
||||||
./bitcoin-qt_test
|
./bitcoin-qt_test
|
||||||
|
|
||||||
To add more tests, add them to the src/qt/test/ directory,
|
To add more tests, add them to the `src/qt/test/` directory,
|
||||||
the src/qt/test/test_main.cpp file, and bitcoin-qt.pro.
|
the `src/qt/test/test_main.cpp` file, and bitcoin-qt.pro.
|
Loading…
Reference in New Issue