11.1 Release Checklist: Difference between revisions

From Octave
Jump to navigation Jump to search
mNo edit summary
 
(8 intermediate revisions by the same user not shown)
Line 15: Line 15:
Completion Date:
Completion Date:


* Merge default onto stable to become the current stable release (see instructions in <code>etc/HACKING.md</code>).
* Merge default onto stable to become the current stable release (see instructions "Merging the default branch to stable before a release" in <code>etc/HACKING.md</code>).
* Bump version numbers in <code>configure.ac</code> on stable branch (see <code>etc/HACKING.md</code>).
* Bump version numbers in <code>configure.ac</code> on stable branch (see <code>etc/HACKING.md</code>).
* Bump version numbers in <code>configure.ac</code> on default branch (see <code>etc/HACKING.md</code>).
* Bump version numbers in <code>configure.ac</code> on default branch (see <code>etc/HACKING.md</code>).
Line 24: Line 24:
Completion Date:
Completion Date:


'''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.
'''Must occur first''' as it could resolve existing, or create new, bug reports. Run <code>./bootstrap</code> in the source tree after updating to the new gnulib version.


=== βš™οΈ Update Autoconf macros to latest version ===
=== βš™οΈ Update Autoconf macros to latest version ===
Line 48: Line 48:
* Create Savannah <code>Release</code> tag <code>VERSION.0.90</code> on bug tracker for 1st release candidate.
* Create Savannah <code>Release</code> tag <code>VERSION.0.90</code> on bug tracker for 1st release candidate.
* Mark items that should be fixed for the release with this tag.
* Mark items that should be fixed for the release with this tag.
* 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>.
* Update Savannah <code>Planned Release</code> and <code>Fixed Release</code> fields by adding <code>VERSION.1.0 (current stable)</code> and <code>VERSION+1.1.0 (current default)</code> tags to both.
* Review bug overview at https://octave.space/savannah/.
* Review bug overview at https://octave.space/savannah/.


Line 57: Line 57:
* Call for updates ([https://octave.discourse.group/ Octave Discourse]) that might change GUI strings.
* Call for updates ([https://octave.discourse.group/ Octave Discourse]) that might change GUI strings.
* String freeze date:
* String freeze date:
* Update language translation files (<code>*.ts</code>). See instructions in <code>libgui/languages/build_ts/README.md</code>.
* Update language translation files (<code>*.ts</code>). See instructions in <code>libgui/languages/build_ts/README.md</code>.
* Create bug report on Savannah as a centralized location for uploading files and tracking status of translations.
* Create bug report on Savannah as a centralized location for uploading files and tracking status of translations.
* 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]).
* 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]).
Line 93: Line 93:
Completion Date:
Completion Date:


* Grammar check documentation (See <code>doc/interpreter/doccheck/README</code>).
* Grammar check documentation (see <code>doc/interpreter/doccheck/README</code>).
* Spell check documentation (<code>make spellcheck</code>).
* Spell check documentation (<code>make spellcheck</code>).
* Verify no functions missing from manual (<code>make doc/interpreter/undocumented_list</code>).
* Verify no functions missing from manual (<code>make doc/interpreter/undocumented_list</code>).
* Verify deprecated functions removed from manual (<code>*.txi</code>) and from β€œsee also” links.
* Verify deprecated functions removed from manual (<code>*.txi</code>) and from <code>@seealso</code> links.
* Verify all formats (Info, HTML, PDF) build correctly.
* Verify all formats (Info, HTML, PDF) build correctly.
* Review <code>etc/NEWS.VERSION.md</code> for any features which should be announced.
* Review <code>etc/NEWS.VERSION.md</code> for any features which should be announced.
Line 124: Line 124:
=== πŸ› οΈ Create new release candidate ===
=== πŸ› οΈ Create new release candidate ===


* Ensure correct version information (see β€œRelease Numbering” in <code>/etc/HACKING.md</code>).
* Ensure correct version information (see "Creating first release candidate for new MAJOR version" and "Release Numbering" in <code>/etc/HACKING.md</code>).
* Create <code>hg tag</code> in repository with release candidate version number (<code>rc-MAJOR-MINOR-PATCH</code>).
* Verify <code>make dist</code> works.
* Verify <code>make dist</code> works.
* Verify <code>make distcheck</code> passes.
* Verify <code>make distcheck</code> passes.
* Create [https://wiki.octave.org/Windows_Installer Windows Installer].
* Make Windows binaries (see instructions "Make Windows binaries" in <code>etc/HACKING.md</code>).
* Verify building from a tarball on Linux.  Verify that Windows binaries install and run.
* Create a tag in the Mercurial repository on the changeset where the version number was updated (<code>hg tag rc-MAJOR-MINOR-PATCH</code>).
* Sign tarballs and binaries with GPG key.
** Use script <code>build-aux/make-gnu-fist-files</code> to simplify the procedure.
* Upload release candidates to https://alpha.gnu.org/gnu/octave/.
* Upload release candidates to https://alpha.gnu.org/gnu/octave/.
* Check [https://wiki.octave.org/Windows_Installer Windows Installer] (executable and zip formats) against false positive detection at [https://virustotal.com/ virustotal.com].
* Announce release candidate on [https://octave.discourse.group/ Octave Discourse] in both Maintainers and Help categories.
* Add release candidate version to Savannah bug tracker.
* Announce release candidate to [https://octave.discourse.group/ Octave Discourse].


== 🏁 Final Release πŸŽ‰ ==
== 🏁 Final Release πŸŽ‰ ==
Line 150: Line 151:
* Update <code>etc/icons/org.octave.Octave.appdata.xml</code> (Add <code><release></code> with release date and version number).
* Update <code>etc/icons/org.octave.Octave.appdata.xml</code> (Add <code><release></code> with release date and version number).


=== πŸ“ƒ Build, Verify, Sign, and Upload tarballs and Windows binaries ===
=== πŸ› οΈ Build, Verify, Sign, and Upload tarballs and Windows binaries ===


* Make distribution tarballs and Windows binaries
* Make distribution tarballs and Windows binaries
** Run <code>make dist</code> on Linux to produce distribution tarballs.
** Run <code>make dist</code> on Linux to produce distribution tarballs.
** Make Windows binaries (see instructions in <code>etc/HACKING.md</code>).
** Make Windows binaries (see instructions "Make Windows binaries" in <code>etc/HACKING.md</code>).
** Check [https://wiki.octave.org/Windows_Installer Windows Installer] (executable and zip formats) against false positive detection at [https://virustotal.com/ virustotal.com].
* Verify building from a tarball on Linux.  Verify that Windows binaries install and run.
* Verify building from a tarball on Linux.  Verify that Windows binaries install and run.
* Create a tag in the Mercurial repository on the changeset where the version number was updated (<code>hg tag release-VERSION-1-0</code>).
* Create a tag in the Mercurial repository on the changeset where the version number was updated (<code>hg tag release-VERSION-1-0</code>).
Line 161: Line 163:
* Upload all tarballs to https://ftp.gnu.org/gnu/octave/.
* Upload all tarballs to https://ftp.gnu.org/gnu/octave/.


=== πŸ“ƒ Update Octave web site, Octave wiki, and Savannah bug tracker ===
=== πŸ› οΈ Update Octave web site, Octave wiki, and Savannah bug tracker ===


* Update web site files: <code>NEWS-VERSION.html</code>, <code>index.in</code>, <code>news.in</code>, and <code>download.in</code>.
* Update web site files: <code>NEWS-VERSION.html</code>, <code>index.in</code>, <code>news.in</code>, and <code>download.in</code>.
Line 181: Line 183:
* Octave mailing-lists (yes, still) [mailto:help@octave.org help@octave.org] and [mailto:info-gnu@gnu.org info-gnu@gnu.org].
* Octave mailing-lists (yes, still) [mailto:help@octave.org help@octave.org] and [mailto:info-gnu@gnu.org info-gnu@gnu.org].
* Octave web site (https://hg.octave.org/web-octave)
* Octave web site (https://hg.octave.org/web-octave)


=== β˜‘οΈ Post-Release ===
=== β˜‘οΈ Post-Release ===

Latest revision as of 23:27, 29 March 2025

VERSION.1 Release Checklist

Info icon.svg
Timeline (tentative)

Please use <strike> </strike> to mark items below as done.

πŸš€ Kick-off ⚽

βš™οΈ Update stable and default branch to new version numbers

Completion Date:

  • Merge default onto stable to become the current stable release (see instructions "Merging the default branch to stable before a release" in etc/HACKING.md).
  • Bump version numbers in configure.ac on stable branch (see etc/HACKING.md).
  • Bump version numbers in configure.ac on default branch (see etc/HACKING.md).
  • Create new etc/NEWS.VERSION+1.md file on default branch by copying etc/NEWS.VERSION.md and then removing text so that it is a template file with headings only.

βš™οΈ Update gnulib to latest version

Completion Date:

Must occur first as it could resolve existing, or create new, bug reports. Run ./bootstrap in the source tree after updating to the new gnulib version.

βš™οΈ Update Autoconf macros to latest version

Completion Date:

The following Autoconf macros are under version control in the m4 directory. The contents should be verified against the repository at https://github.com/autoconf-archive/autoconf-archive/tree/master/m4.

   ax_blas.m4
   ax_compare_version.m4
   ax_cxx_compile_stdcxx.m4
   ax_lapack.m4
   ax_openmp.m4
   ax_pthread.m4

The pkg.m4 macro should be verified against the repository at https://github.com/pkgconf/pkgconf/blob/master/pkg.m4.

πŸ“’ Call for bug reports

Completion Date:

  • Put out a general call for reports on Octave Discourse for all outstanding, but unreported, known bugs.
  • Create Savannah Release tag VERSION.0.90 on bug tracker for 1st release candidate.
  • Mark items that should be fixed for the release with this tag.
  • Update Savannah Planned Release and Fixed Release fields by adding VERSION.1.0 (current stable) and VERSION+1.1.0 (current default) tags to both.
  • Review bug overview at https://octave.space/savannah/.

πŸ“’ Update GUI translation files

Completion Date:

  • Call for updates (Octave Discourse) that might change GUI strings.
  • String freeze date:
  • Update language translation files (*.ts). See instructions in libgui/languages/build_ts/README.md.
  • Create bug report on Savannah as a centralized location for uploading files and tracking status of translations.
  • Call for translations of GUI strings on Octave Discourse Maintainers, CC-ing the translators (see list of translators).
  • Collect translation files on Savannah bug report and push to Mercurial.

βš–οΈ GPL License activities

Completion Date:

  • Update copyright statements for all source controlled files.
Command to update copyright notifications
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/'
Command to check results before checking in
hg diff | grep ^[-+][^-+] | sed 's/[0-9][0-9][0-9][0-9]-/YYYY-/' | sort -u
  • Update dates in any other locations
    • MXE README.html file
    • octave.texi, liboctave.texi, refcard.tex
  • Add any new contributors to doc/interpreter/contributors.in who wish to be mentioned (don’t add them without permission).

βœ… Style-check code base

Completion Date:

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.

πŸ“– Review documentation

Completion Date:

  • Grammar check documentation (see doc/interpreter/doccheck/README).
  • Spell check documentation (make spellcheck).
  • Verify no functions missing from manual (make doc/interpreter/undocumented_list).
  • Verify deprecated functions removed from manual (*.txi) and from @seealso links.
  • Verify all formats (Info, HTML, PDF) build correctly.
  • Review etc/NEWS.VERSION.md for any features which should be announced.
  • Review __unimplemented__.m for the latest changes to Octave Forge packages and new Matlab functions.
  • Update installer-files/README.html in MXE Octave with version highlights.

πŸ”ƒ Repeat until all bugs are resolved

Completion Date of first iteration:

⚠️ Current state at Savannah

Bug overview at https://octave.space/savannah/.

βœ… make check

  • Verify make check is passing on all buildbot combinations of OS and compilers and GitHub CI runners. Also check test suite runs on β€œfreshly brewed Octave for Windows” (Kai’s buildbots on octave.space).
  • Use software tools to check quality of Octave code.
    • Check for memory leaks by configuring with --enable-address-sanitizer-flags --disable-visibility-flags --disable-docs --disable-java and compiling with -g -O0 in CFLAGS, CXXFLAGS.
    • Check for bad memory accesses by configuring with --disable-visibility-flags --disable-docs --disable-java and compiling with -g -O0 -fsanitize=undefined -fno-omit-frame-pointer in CFLAGS, CXXFLAGS, and linking with -fsanitize=undefined -fno-omit-frame-pointer in LDFLAGS.
    • Update static code analysis results.
    • Use other tools such as cppcheck, etc.
  • Start discussion on Octave Discourse Maintainers about which failing tests that must be fixed and which can be declared WON’T FIX.

πŸ› οΈ Create new release candidate

  • Ensure correct version information (see "Creating first release candidate for new MAJOR version" and "Release Numbering" in /etc/HACKING.md).
  • Verify make dist works.
  • Verify make distcheck passes.
  • Make Windows binaries (see instructions "Make Windows binaries" in etc/HACKING.md).
  • Verify building from a tarball on Linux. Verify that Windows binaries install and run.
  • Create a tag in the Mercurial repository on the changeset where the version number was updated (hg tag rc-MAJOR-MINOR-PATCH).
  • Sign tarballs and binaries with GPG key.
    • Use script build-aux/make-gnu-fist-files to simplify the procedure.
  • Upload release candidates to https://alpha.gnu.org/gnu/octave/.
  • Announce release candidate on Octave Discourse in both Maintainers and Help categories.

🏁 Final Release πŸŽ‰

βš™οΈ Update version information

Completion Date:

  • Ensure correct version information in configure.ac (see β€œRelease Numbering” in etc/HACKING.md)
    • Update AC_INIT macro with version MAJOR.MINOR.PATCH.
    • Set OCTAVE_MINOR_VERSION to version MINOR.
    • Set OCTAVE_PATCH_VERSION to version PATCH.
    • Set OCTAVE_RELEASE_DATE to the current date.
    • Set the year in OCTAVE_COPYRIGHT to the current year.
  • Update etc/NEWS.VERSION.md (final release date in Summary header).
  • Update CITATION (version, year, URL) if not already done as part of "GPL License activities".
  • Update etc/icons/org.octave.Octave.appdata.xml (Add <release> with release date and version number).

πŸ› οΈ Build, Verify, Sign, and Upload tarballs and Windows binaries

  • Make distribution tarballs and Windows binaries
    • Run make dist on Linux to produce distribution tarballs.
    • Make Windows binaries (see instructions "Make Windows binaries" in etc/HACKING.md).
    • Check Windows Installer (executable and zip formats) against false positive detection at virustotal.com.
  • Verify building from a tarball on Linux. Verify that Windows binaries install and run.
  • Create a tag in the Mercurial repository on the changeset where the version number was updated (hg tag release-VERSION-1-0).
  • Sign tarballs and binaries with GPG key.
    • Use script build-aux/make-gnu-fist-files to simplify the procedure.
  • Upload all tarballs to https://ftp.gnu.org/gnu/octave/.

πŸ› οΈ Update Octave web site, Octave wiki, and Savannah bug tracker

  • Update web site files: NEWS-VERSION.html, index.in, news.in, and download.in.
Steps documented in this changeset.
  • Upload documentation (manual HTML + PDF at octave.org/doc, version in octave.org/.htaccess, Doxygen at octave.org/doxygen)
  • Update Savannah bug tracker Release field to have new release number.
  • Update Savannah bug tracker: OPEN bugs marked as WON’T FIX should be marked as CONFIRMED (or more appropriate) for the final release.
  • Hide release candidate versions for Release field on Savannah.
  • Update Octave wiki

πŸ“’ Announce final release

Completion Date:

β˜‘οΈ Post-Release

Completion Date:

  • Remove all deprecated functions scheduled for deletion on default branch. These functions are tagged with OCTAVE_DEPRECATED in C++ or are m-files located in the directory scripts/deprecated. Check file etc/NEWS.VERSION-2.md for list of features that have been deprecated.