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