|
| 1 | += VERSION.1 Release Checklist = |
| 2 | + |
| 3 | +'''Timeline''' (tentative) |
| 4 | + |
| 5 | +* YYYY-MM-DD 🚀 Release Kick-off ⚽ (default branch merged to stable) |
| 6 | +* YYYY-MM-DD 🛠️ 1st release candidate '''VERSION.0.90''' on https://alpha.gnu.org/gnu/octave/ |
| 7 | +* YYYY-MM-DD 🏁 Final Release 🎉 '''VERSION.1.0''' on https://ftp.gnu.org/gnu/octave/ |
| 8 | +
|
| 9 | +Please use <code><strike> </strike></code> to mark items below as done. |
| 10 | + |
| 11 | +== 🚀 Kick-off ⚽ == |
| 12 | + |
| 13 | +----- |
| 14 | + |
| 15 | +=== ⚙️ Update stable and default branch to new version numbers === |
| 16 | + |
| 17 | +Completion Date: |
| 18 | + |
| 19 | +* Merge default onto stable to become the current stable release (see instructions in <code>etc/HACKING.md</code>). |
| 20 | +* Bump version numbers in <code>configure.ac</code> on stable branch (see <code>etc/HACKING.md</code>). |
| 21 | +* Bump version numbers in <code>configure.ac</code> on default branch (see <code>etc/HACKING.md</code>). |
| 22 | +* Create new <code>etc/NEWS.VERSION+1.md</code> file on default branch by copying <code>etc/NEWS.VERSION.md</code> and then removing text so that it is a template file with headings only. |
| 23 | +
|
| 24 | +=== ⚙️ Update gnulib to latest version === |
| 25 | + |
| 26 | +Completion Date: |
| 27 | + |
| 28 | +'''Must occur first''' as it could resolve existing, or create new, bug reports. You should run <code>./bootstrap</code> in the source tree after updating to the new gnulib version. |
| 29 | + |
| 30 | +=== 📢 Call for bug reports === |
| 31 | + |
| 32 | +Completion Date: |
| 33 | + |
| 34 | +* Put out a general call for reports on [https://octave.discourse.group/ Octave Discourse] for all outstanding, but unreported, known bugs. |
| 35 | +* Create Savannah <code>Release</code> tag <code>VERSION.0.90</code> on bug tracker for 1st release candidate. |
| 36 | +* Mark items that should be fixed for the release with this tag. |
| 37 | +* Update Savannah <code>Planned Release</code> and <code>Fixed Release</code> tags by adding <code>VERSION.1.0 (current stable)</code> and <code>VERSION+1.1.0 (current default)</code>. |
| 38 | +* Review bug overview at https://octave.space/savannah/. |
| 39 | +
|
| 40 | +=== 📢 Update GUI translation files === |
| 41 | + |
| 42 | +Completion Date: |
| 43 | + |
| 44 | +* Call for updates ([https://octave.discourse.group/ Octave Discourse]) that might change GUI strings. |
| 45 | +* String freeze date: |
| 46 | +* Update language translation files (<code>*.ts</code>). See instructions in <code>libgui/languages/build_ts/README.md</code>. |
| 47 | +* Create bug report on Savannah as a centralized location for uploading files and tracking status of translations. |
| 48 | +* Call for translations of GUI strings on [https://octave.discourse.group/c/maintainers/7 Octave Discourse Maintainers], CC-ing the translators (see [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libgui/languages/translators list of translators]). |
| 49 | +* Collect translation files on Savannah bug report and push to Mercurial. |
| 50 | +
|
| 51 | +=== ⚖️ GPL License activities === |
| 52 | + |
| 53 | +Completion Date: |
| 54 | + |
| 55 | +<ul> |
| 56 | +<li><p>Update copyright statements for all source controlled files.</p> |
| 57 | +<p>Command to update copyright notifications</p> |
| 58 | +<p><code>hg locate | xargs sed -i 's/Copyright (C) \([0-9][0-9][0-9][0-9]\)-2023 The Octave Project Developers/Copyright (C) \1-2024 The Octave Project Developers/; s/Copyright (C) 2023 The Octave Project Developers/Copyright (C) 2023-2024 The Octave Project Developers/'</code></p> |
| 59 | +<p>Command to check results before checking in</p> |
| 60 | +<p><code>hg diff | grep ^[-+][^-+] | sed 's/[0-9][0-9][0-9][0-9]-/YYYY-/' | sort -u</code></p></li> |
| 61 | +<li><p>Update dates in any other locations (<code>CITATION</code>, MXE <code>README.html</code> file).</p></li> |
| 62 | +<li><p>Add any new contributors to <code>doc/interpreter/contributors.in</code> who wish to be mentioned (don’t add them without permission).</p></li></ul> |
| 63 | + |
| 64 | +=== ✅ Style-check code base === |
| 65 | + |
| 66 | +Completion Date: |
| 67 | + |
| 68 | +This will produce lots of whitespace changes, but no behavior changes. '''Must occur after patches have been added''', since whitespace changes can prevent patches from applying. |
| 69 | + |
| 70 | +* [https://wiki.octave.org/Octave_style_guide m-file style check] |
| 71 | +* [https://wiki.octave.org/C%2B%2B_style_guide C++ style check] |
| 72 | +
|
| 73 | +=== 📖 Review documentation === |
| 74 | + |
| 75 | +Completion Date: |
| 76 | + |
| 77 | +* Grammar check documentation (See <code>doc/interpreter/doccheck/README</code>). |
| 78 | +* Spell check documentation (<code>make spellcheck</code>). |
| 79 | +* Verify no functions missing from manual (<code>make doc/interpreter/undocumented_list</code>). |
| 80 | +* Verify deprecated functions removed from manual (<code>*.txi</code>) and from “see also” links. |
| 81 | +* Verify all formats (Info, HTML, PDF) build correctly. |
| 82 | +* Review <code>etc/NEWS.VERSION.md</code> for any features which should be announced. |
| 83 | +* Review <code>__unimplemented__.m</code> for the latest changes to [https://wiki.octave.org/Octave_Forge Octave Forge] packages and new Matlab functions. |
| 84 | +* Update <code>installer-files/README.html</code> in MXE Octave with version highlights. |
| 85 | +
|
| 86 | +== 🔃 Repeat until all bugs are resolved == |
| 87 | + |
| 88 | + |
| 89 | +----- |
| 90 | + |
| 91 | +Completion Date of first iteration: |
| 92 | + |
| 93 | +=== ⚠️ Current state at Savannah === |
| 94 | + |
| 95 | +Bug overview at https://octave.space/savannah/. |
| 96 | + |
| 97 | +=== ✅ <code>make check</code> === |
| 98 | + |
| 99 | +* Verify <code>make check</code> is passing on all [http://buildbot.octave.org:8010/#/waterfall buildbot combinations of OS and compilers] and [https://github.com/gnu-octave/octave/actions GitHub CI runners]. Also check [https://github.com/gnu-octave/octave-buildbot/actions test suite runs on “freshly brewed Octave for Windows”] (Kai’s buildbots on octave.space). |
| 100 | +* Use software tools to check quality of Octave code. |
| 101 | +** Check for memory leaks by configuring with <code>--enable-address-sanitizer-flags</code> and compiling with <code>-g -O0 -fno-optimize-sibling-calls</code> in <code>CFLAGS</code>, <code>CXXFLAGS</code>, and <code>LDFLAGS</code>. |
| 102 | +** Check for bad memory accesses by compiling with <code>-g -O0 -fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls</code> in <code>CFLAGS</code>, <code>CXXFLAGS</code>, and <code>LDFLAGS</code>. |
| 103 | +** Update static code analysis results. |
| 104 | +*** For <code>clang</code>, do <code>scan-build make -j<N> all</code> and then <code>scan-view</code>. |
| 105 | +*** See [https://wiki.octave.org/PVS_static_analyzer_-_5.0_Release PVS static analyzer - 5.0 Release]. |
| 106 | +** Use other tools such as <code>cppcheck</code>, etc. |
| 107 | +* Start discussion on [https://octave.discourse.group/c/maintainers/8 Octave Discourse Maintainers] about which failing tests that must be fixed and which can be declared '''WON’T FIX'''. |
| 108 | +
|
| 109 | +=== 🛠️ Create new release candidate === |
| 110 | + |
| 111 | +* Ensure correct version information (see “Release Numbering” in <code>/etc/HACKING.md</code>). |
| 112 | +* Create <code>hg tag</code> in repository with release candidate version number (<code>rc-MAJOR-MINOR-PATCH</code>). |
| 113 | +* Verify <code>make dist</code> works. |
| 114 | +* Verify <code>make distcheck</code> passes. |
| 115 | +* Create [https://wiki.octave.org/Windows_Installer Windows Installer]. |
| 116 | +* Upload release candidates to https://alpha.gnu.org/gnu/octave/. |
| 117 | +* Check [https://wiki.octave.org/Windows_Installer Windows Installer] (executable and zip formats) against false positive detection at [https://virustotal.com/ virustotal.com]. |
| 118 | +* Add release candidate version to Savannah bug tracker. |
| 119 | +* Announce release candidate to [https://octave.discourse.group/ Octave Discourse]. |
| 120 | +
|
| 121 | +== 🏁 Final Release 🎉 == |
| 122 | + |
| 123 | + |
| 124 | +----- |
| 125 | + |
| 126 | +=== 📃 Update version information === |
| 127 | + |
| 128 | +Completion Date: |
| 129 | + |
| 130 | +* Ensure correct version information in <code>configure.ac</code> (see “Release Numbering” in <code>/etc/HACKING.md</code>) |
| 131 | +** Set <code>OCTAVE_RELEASE_DATE</code> to the current date. |
| 132 | +** Set the year in <code>OCTAVE_COPYRIGHT</code> to the current year. |
| 133 | +* Create <code>hg tag</code> in repository with release candidate version number (<code>release-VERSION-1-0</code>). |
| 134 | +* Update <code>etc/NEWS.VERSION.md</code> (final release date in Summary header). |
| 135 | +* Update <code>CITATION</code> (version, year, URL) if not already done as part of "GPL License activities. |
| 136 | +* Update <code>etc/icons/org.octave.Octave.appdata.xml</code> (version number and release date). |
| 137 | +* Upload all tarballs to https://ftp.gnu.org/gnu/octave/. |
| 138 | +* Update web site files: <code>NEWS-VERSION.html</code>, <code>index.in</code>, <code>news.in</code>, and <code>download.in</code>. |
| 139 | +* Update https://wiki.octave.org/Release_History page. |
| 140 | +* Update Savannah bug tracker <code>Release</code> field to have new release number. |
| 141 | +* Update Savannah bug tracker: '''OPEN''' bugs marked as '''WON’T FIX''' should be marked as '''CONFIRMED''' (or more appropriate) for the final release. |
| 142 | +* Hide release candidate versions for <code>Release</code> field on Savannah. |
| 143 | +
|
| 144 | +=== 📢 Announce final release === |
| 145 | + |
| 146 | +Completion Date: |
| 147 | + |
| 148 | + |
| 149 | +* Octave web site (https://hg.octave.org/web-octave) |
| 150 | +* Steps documented in this [https://hg.octave.org/web-octave/rev/fe59d0118a2b changeset]. |
| 151 | +* Upload documentation (manual HTML + PDF <code>octave.org/doc</code> and version in <code>octave.org/.htaccess</code>, Doxygen <code>octave.org/doxygen</code>) |
| 152 | +* This wiki |
| 153 | +* Template:Release = 7.3.0 |
| 154 | +* Template:Release Date = November 2, 2022 |
| 155 | +* Template:Release Year = 2022 |
| 156 | +
|
| 157 | +=== ☑️ Post-Release === |
| 158 | + |
| 159 | +Completion Date: |
| 160 | + |
| 161 | +* Remove all deprecated functions scheduled for deletion on default branch. These functions are tagged with <code>OCTAVE_DEPRECATED</code> in C++ or are m-files located in the directory <code>scripts/deprecated</code>. Check file <code>etc/NEWS.VERSION-2.md</code> for list of features that have been deprecated. |
0 commit comments