11.1 Release Checklist
VERSION.1 Release Checklist
- YYYY-MM-DD π Release Kick-off β½ (default branch merged to stable)
- YYYY-MM-DD π οΈ 1st release candidate VERSION.0.90 on https://alpha.gnu.org/gnu/octave/
- YYYY-MM-DD π Final Release π VERSION.1.0 on https://ftp.gnu.org/gnu/octave/
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 (seeetc/HACKING.md
). - Bump version numbers in
configure.ac
on default branch (seeetc/HACKING.md
). - Create new
etc/NEWS.VERSION+1.md
file on default branch by copyingetc/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
tagVERSION.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
andFixed Release
fields by addingVERSION.1.0 (current stable)
andVERSION+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 inlibgui/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
- MXE
- 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
inCFLAGS
,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
inCFLAGS
,CXXFLAGS
, and linking with-fsanitize=undefined -fno-omit-frame-pointer
inLDFLAGS
. - Update static code analysis results.
- For
clang
, doscan-build make -j<N> all
and thenscan-view
. - See PVS static analyzer - 5.0 Release.
- For
- Use other tools such as
cppcheck
, etc.
- Check for memory leaks by configuring with
- 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.
- Use script
- 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β inetc/HACKING.md
)- Update
AC_INIT
macro with versionMAJOR.MINOR.PATCH
. - Set
OCTAVE_MINOR_VERSION
to versionMINOR
. - Set
OCTAVE_PATCH_VERSION
to versionPATCH
. - Set
OCTAVE_RELEASE_DATE
to the current date. - Set the year in
OCTAVE_COPYRIGHT
to the current year.
- Update
- 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.
- 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 (
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.
- Use script
- 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
, anddownload.in
.
- Steps documented in this changeset.
- Upload documentation (manual HTML + PDF at
octave.org/doc
, version inoctave.org/.htaccess
, Doxygen atoctave.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
- Update https://wiki.octave.org/Release_History page.
- Edit page Template:Release and update release version in code
<includeonly>MAJOR.MINOR.PATCH</includeonly>
- Edit page Template:Release Date and update month and day in code
<includeonly>MONTH DD, {{Release Year}}</includeonly>
- Edit page Template:Release Year and update year in code
<includeonly>YYYY</includeonly>
π’ Announce final release
Completion Date:
- Octave mailing-lists (yes, still) help@octave.org and info-gnu@gnu.org.
- Octave web site (https://hg.octave.org/web-octave)
βοΈ 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 directoryscripts/deprecated
. Check fileetc/NEWS.VERSION-2.md
for list of features that have been deprecated.