set java-version=8 in rules to enable openjdk 21 support, closes: #1052587
[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/telebt-v4.0/{*.elf,*.ihx} \
87            src/teledongle-v3.0/{*.elf,*.ihx} \
88            src/telegps-v1.0/{*.elf,*.ihx} \
89            src/telemega-v1.0/{*.elf,*.ihx} \
90            src/telemega-v2.0/{*.elf,*.ihx} \
91            src/telemetrum-v2.0/{*.elf,*.ihx} \
92            src/telemini-v3.0/{*.elf,*.ihx} \
93            ~/altusmetrumllc/Binaries/
94         cp src/chaoskey-v1.0/flash-loader/{*.elf,*.bin} \
95            src/easymega-v1.0/flash-loader/*.elf \
96            src/easymini-v1.0/flash-loader/*.elf \
97            src/easymini-v2.0/flash-loader/{*.elf,*.bin} \
98            src/telebt-v3.0/flash-loader/*.elf \
99            src/telebt-v4.0/flash-loader/*.elf \
100            src/teledongle-v3.0/flash-loader/*.elf \
101            src/telegps-v1.0/flash-loader/*.elf \
102            src/telemega-v1.0/flash-loader/*.elf \
103            src/telemega-v2.0/flash-loader/*.elf \
104            src/telemetrum-v2.0/flash-loader/*.elf \
105            src/telemini-v3.0/flash-loader/{*.elf,*.bin} \
106            ~/altusmetrumllc/Binaries/loaders/
107         (cd ~/altusmetrumllc ; git add Binaries ; git commit -a) 
108         (cd ~/altusmetrumllc ; git push) 
109
110         - copy the relevant release notes .html file from doc/ to 
111             /home/bdale/web/altusmetrum/AltOS/releases/<rev>
112
113         (cd ~/web/altusmetrum/AltOS/releases/<rev> ; rm *.tar.bz2)
114
115         - create /home/bdale/web/altusmetrum/MicroPeak/releases/<rev>,
116           and move the MicroPeak installers from AltOS/releases to there
117                 
118         - create /home/bdale/web/altusmetrum/TeleGPS/releases/<rev>,
119           and move the TeleGPS installers from AltOS/releases to there
120                 
121         - go edit ~/web/altusmetrum/AltOS/releases/<rev>.mdwn, 
122           /home/bdale/web/altusmetrum/MicroPeak/releases/<rev>.mdwn, and
123           /home/bdale/web/altusmetrum/TeleGPS/releases/<rev>.mdwn
124
125                 - make sure the Windows stuff is like 1-4-1, not 1.4.1!
126
127         (cd doc ; make publish)
128
129                 this pushes fresh documents to the web site
130
131         sudo debian/rules clean
132         git push origin master branch-<version> debian pristine-tar
133         git push --tags
134
135                 push commits and leave the build tree in an uncluttered state
136
137 Testing before a release
138
139         To verify that a build works, the following need to be checked
140         on each platform:
141
142         1) Install package
143
144         2) Connect TM *and* TD devices. Verify that you can Monitor
145            Flight from the TD and Configure Telemetrum from the TM.
146
147         3) Replay Flight, using your favorite .eeprom file. Check
148            each tab, especially the 'Site Map' tab. Make sure the
149            sound works.
150
151         4) Graph Data. Graph a favorite .eeprom file. Make sure you
152            can zoom in on some region of the graph.