aboutsummaryrefslogtreecommitdiff
path: root/doc/release-process.txt
blob: 94ba11b5cb1bf29e1640e106d8102a97518f9314 (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
144
* update translations (ping tcatm on IRC for now)

* update (commit) version in sources
  bitcoin-qt.pro
  src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true)
  share/setup.nsi
  doc/README*

* tag version in git

   git tag -a v0.5.1

* write release notes.  git shortlog helps a lot:

   git shortlog --no-merges v0.5.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.5.1
   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
  See this blog post for how Gavin set up his build environment to build the OSX
  release; note that a patched version of macdeployqt is not needed anymore, as
  the required functionality and fixes are implemented directly in macdeployqtplus:
    http://gavintech.blogspot.com/2011/11/deploying-bitcoin-qt-on-osx.html
  Gavin also had trouble with the macports py27-appscript package; he
  ended up installing a version that worked with: /usr/bin/easy_install-2.7 appscript

  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)
  export CODESIGNARGS='--sign "Developer ID Application: BITCOIN FOUNDATION, INC., THE"'
  python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -sign -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist

 Build output expected:
  Bitcoin-Qt.dmg

* 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