Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / Releasing
1 These are Bdale's notes on how to do a release.
2
3         - make sure build environment is up to date
4                 sudo cowbuilder --update
5
6         git checkout master
7
8         - update the version in configure.ac if Keith hasn't already
9
10         - make sure the Google Maps API key is in the build chroot and root
11             sudo mkdir -p /var/cache/pbuilder/base.cow/opt/google /opt/google
12             sudo cp ~/altusmetrumllc/google-maps-api-key \
13                 /var/cache/pbuilder/base.cow/opt/google/maps-api-key
14             sudo ln -sf /home/bdale/altusmetrumllc/google-maps-api-key \
15                 /opt/google/maps-api-key
16
17         - if this is an x.y release, then:
18                 git checkout -b branch-<version>
19
20         - if this is an x.y.z release, then:
21                 git checkout branch-<version>           # the x.y parts only
22                 - cherry-pick or merge appropriate content from master
23         
24         - make sure there is a doc/release-notes-<version>.inc
25         - make sure that doc/altusmetrum-docinfo.xml has the right copyright 
26           year, and add release to the revision history at the front (release 
27           notes will be pulled in automatically)
28         - make absolutely sure checked-out tree is "clean" 
29         - make absolutely sure the pdclib/ submodule is on the master branch,
30           up to date, and "clean"
31
32         git log > ChangeLog
33         git commit -a
34         git tag -a <version>                    # full x.y.z version
35
36         - make sure .git/gbp.conf set to use branch-<version> as upstream
37
38         git checkout debian
39         git merge branch-<version>
40
41         - verify debian/changelog is "clean" ending in last release version
42         - craft a suitable debian/changelog entry, possibly using:
43         gbp dch --release --new-version=<version>-1 --multimaint-merge
44
45         git commit -n debian/changelog -m "update changelog for Debian build"
46
47         - if this is a -1 release, then
48                 gbp buildpackage --git-no-pristine-tar --git-submodules \
49                         --git-upstream-branch=branch-<version> \ # eg 1.3
50                         --git-upstream-tag=<version>             # eg 1.3.1
51                 pristine-tar commit \
52                         ../build-area/altos_<version>.orig.tar.gz \
53                         branch-<version>
54           else if this is not a -1 release
55                 gbp buildpackage --git-submodules
56
57         git tag debian/<version>
58
59         - at this point we have packages in ~/debian/build-area/altos, now
60           we move on to the non-Debian part of the release process
61
62         make distclean
63
64         ./autogen.sh --enable-multi-arch \
65                 --with-fat-dir=/home/bdale/web/altusmetrum/AltOS/releases
66         make && make fat
67
68                 this pushes packages for each platform to web site
69
70         # store a stable copy of ARM binaries for production use
71         cp src/easymega-v1.0/*.elf \
72            src/easymini-v1.0/*.elf \
73            src/telebt-v3.0/*.elf \
74            src/teledongle-v3.0/*.elf \
75            src/telegps-v1.0/*.elf \
76            src/telemega-v1.0/*.elf \
77            src/telemega-v2.0/*.elf \
78            src/telemetrum-v2.0/*.elf \
79            ~/altusmetrumllc/Binaries/
80         cp src/easymega-v1.0/flash-loader/*.elf \
81            src/easymini-v1.0/flash-loader/*.elf \
82            src/telebt-v3.0/flash-loader/*.elf \
83            src/teledongle-v3.0/flash-loader/*.elf \
84            src/telegps-v1.0/flash-loader/*.elf \
85            src/telemega-v1.0/flash-loader/*.elf \
86            src/telemega-v2.0/flash-loader/*.elf \
87            src/telemetrum-v2.0/flash-loader/*.elf \
88            ~/altusmetrumllc/Binaries/loaders/
89         (cd ~/altusmetrumllc ; git add Binaries ; git commit -a) 
90         (cd ~/altusmetrumllc ; git push) 
91
92         - copy the relevant release notes .html file from doc/ to 
93             /home/bdale/web/altusmetrum/AltOS/releases/<rev>
94
95         (cd ~/web/altusmetrum/AltOS/releases/<rev> ; rm *.tar.bz2)
96
97         - create /home/bdale/web/altusmetrum/MicroPeak/releases/<rev>,
98           and move the MicroPeak installers from AltOS/releases to there
99                 
100         - create /home/bdale/web/altusmetrum/TeleGPS/releases/<rev>,
101           and move the TeleGPS installers from AltOS/releases to there
102                 
103         - go edit ~/web/altusmetrum/AltOS/releases/<rev>.mdwn, 
104           /home/bdale/web/altusmetrum/MicroPeak/releases/<rev>.mdwn, and
105           /home/bdale/web/altusmetrum/TeleGPS/releases/<rev>.mdwn
106
107                 - make sure the Windows stuff is like 1-4-1, not 1.4.1!
108
109         (cd doc ; make publish)
110
111                 this pushes fresh documents to the web site
112
113         sudo debian/rules clean
114         git push origin master branch-<version> debian pristine-tar
115         git push --tags
116
117                 push commits and leave the build tree in an uncluttered state
118
119 Testing before a release
120
121         To verify that a build works, the following need to be checked
122         on each platform:
123
124         1) Install package
125
126         2) Connect TM *and* TD devices. Verify that you can Monitor
127            Flight from the TD and Configure Telemetrum from the TM.
128
129         3) Replay Flight, using your favorite .eeprom file. Check
130            each tab, especially the 'Site Map' tab. Make sure the
131            sound works.
132
133         4) Graph Data. Graph a favorite .eeprom file. Make sure you
134            can zoom in on some region of the graph.