aboutsummaryrefslogtreecommitdiff
path: root/doc/release-process.txt
blob: 29271ad224b6b35dc5334d2d4afb4d0853d2ebae (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
132
133
134
135
136
137
138
139
140
141
142
143
* 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 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