Wladimir J. van der Laan
12 years ago
11 changed files with 443 additions and 399 deletions
@ -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) |
@ -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 |
|
@ -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 |
|
Loading…
Reference in new issue