aboutsummaryrefslogtreecommitdiff
path: root/doc/release-process.txt
blob: 4abd91389e4041700b9269df192fe18083f63f68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
* update (commit) version in sources
  src/serialize.h
  share/setup.nsi

* update (commit) version in OSX app bundle
 contrib/Bitcoin.app/Contents/Info.plist

  * CFBundleShortVersionString should have value like 0.5.0
  * CFBundleVersion should have value like 500

* tag version in git

   git tag -a v0.5.0

* write release notes.  git shortlog helps a lot:

   git shortlog --no-merges v0.4.0..

* create source-only archive

   git archive --format=tar --prefix=bitcoin-0.5.0/ HEAD | \
  	gzip -9c > ~/tmp/bitcoin-0.5.0-src.tar.gz 

* 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.5.0
   cd ./gitian-builder

  * Fetch and build inputs:
   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.0e.tar.gz'
   wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
   wget 'http://downloads.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.tar.bz2'
   wget 'http://download.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz'
   cd ..
   ./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-win32.yml
   cp build/out/boost-win32-1.47.0-gitian.zip inputs/
   ./bin/gbuild ../bitcoin/contrib/gitian-descriptors/qt-win32.yml
   cp build/out/qt-win32-4.7.4-gitian.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
   cd build/out
   zip bitcoin-$VERSION-linux-gitian.zip *
   mv bitcoin-$VERSION-linux-gitian.zip ../../
   ./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
   cd build/out
   zip bitcoin-$VERSION-win32-gitian.zip *
   mv bitcoin-$VERSION-win32-gitian.zip ../../

  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:
   mkdir bitcoin-$VERSION-linux
   cd bitcoin-$VERSION-linux
   unzip bitcoin-$VERSION-linux-gitian.zip
   cd ..; tar czvf bitcoin-$VERSION-linux.tar.gz bitcoin-$VERSION-linux

  * Windows .zip and setup.exe:
   mkdir bitcoin-$VERSION-win32
   cd bitcoin-$VERSION-win32
   unzip bitcoin-$VERSION-win32-gitian.zip
   mv bitcoin-$VERSION-win32-setup.exe ..
   cd ..; zip bitcoin-$VERSION-win32.zip bitcoin-$VERSION-win32


* perform Mac build
  See this blog post for how Gavin set up his build environment and
  patched macdeployqt to build the OSX release:
    http://gavintech.blogspot.com/2011/11/deploying-bitcoin-qt-on-osx.html
  qmake USE_SSL=1 USE_UPNP=1 bitcoin-qt.pro
  make
  export QTDIR=/opt/local/share/qt4  # needed to find translations/qt_*.qm files
  contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr de,es,ru -dmg -fancy contrib/macdeploy/fancy.plist  

 Build output expected:
  Bitcoin-Qt.dmg

* upload source and builds to SourceForge

* create SHA1SUMS for builds, and PGP-sign it

* update bitcoin.org version

* update forum version

* update wiki

* update wiki download links

* release gitian-signed gitian archives

  * Collect enough gitian signatures to meet minimum_weight (see contrib/gitian-downloader/*-download-config)

  * From a directory containing bitcoin source, gitian.sigs and gitian zips
   export VERSION=0.5.0
   mkdir bitcoin-$VERSION-linux-gitian; cd bitcoin-$VERSION-linux-gitian
   unzip ../bitcoin-$VERSION-linux-gitian.zip
   mkdir gitian
   cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
   for file in `ls ../gitian.sigs/$VERSION/`; do
     cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert
     cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
   done
   zip bitcoin-$VERSION-linux-gitian.zip *
   cp bitcoin-$VERSION-linux-gitian.zip ../
   cd ..
   mkdir bitcoin-$VERSION-linux-gitian; cd bitcoin-$VERSION-linux-gitian
   unzip ../bitcoin-$VERSION-linux-gitian.zip
   mkdir gitian
   cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
   for file in `ls ../gitian.sigs/$VERSION/`; do
     cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert
     cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
   done
   zip bitcoin-$VERSION-linux-gitian.zip *
   cp bitcoin-$VERSION-linux-gitian.zip ../

  * Upload gitian zips to SourceForge