Skip to content

4. Release Plan

Wanda B.K. Boyer edited this page Jun 17, 2026 · 1 revision

Pre-release Testing

In addition to manual testing as features are implemented or updated, extensive automated testing has already been performed via GitHub Actions on every pull request, which ensures successful compilation and functional testing on a variety of platforms and compilers, including with sanitizers.

Furthermore, we test all graphs up to isomorphism for graph orders up to and including N=11 by performing the following:

  1. Generate the slice files containing all graphs for each edge count using the graph_generation_orchestrator.py (see 3. Test Support - Graph Generation Orchestrator)
  2. Run the planarity_testAllGraphs_orchestrator.py on those slice files (see 3. Test Support - Algorithm Testing Orchestrator
  3. Regenerate the test tables without the numInvalidOK counts using the test_table_generator.py (see 3. Test Support - Test Table Generator) to compare the OK/NONEMBEDDABLE counts haven't changed.

Testing while Building the Release Tarball

A key step of making the distribution is performing make distcheck, which runs functional regression tests using the -test command line parameter, including:

  • runSpecificGraphTests() - Runs each of the graph algorithm extensions on appropriate sample files and ensures the expected output is produced
  • runGraphTransformationTests() - Transforms input graphs in each of the supported formats to the other formats, and ensures the expected output is produced.
  • runTestAllGraphsTests() - Runs TestAllGraphs() on c/samples/n8.mALL.g6 for all graph algorithm extensions and ensures the expected OK/NONEMBEDDABLE counts are reproduced.

Building the Release Tarball

Before building the release (e.g. on Debian Linux or on Windows via MSYS2), follow the setup steps outlined on 2. Dev Env Setup to ensure you have installed the developer dependencies (i.e. gcc and autotools).

Ensure that configure.ac has been updated to match the values from from c/graphLib/graphLib.h, and that this change has been committed to master:

  1. Update the AC_INIT statement so that the project version number matches the values for GP_PROJECTVERSION_MAJOR, GP_PROJECTVERSION_MINOR, GP_PROJECTVERSION_MAINT, and GP_PROJECTVERSION_TWEAK.
  2. Update the values for LT_CURRENT, LT_REVISION, and LT_AGE so that they match GP_LIBPLANARITYVERSION_CURRENT, GP_LIBPLANARITYVERSION_REVISION, and GP_LIBPLANARITYVERSION_AGE.

Ensure your local environment is clean (i.e. no untracked local changes that could affect compilation) by running:

git clean -x -d -e .vscode -e TestSupport -e adjlist -e embedded -e error -e missing -e obstructed -e random -e m4 -e Debug -e Release -f

Finally, build the release tarball by following the instructions for making the distribution.

Installing and Testing the Release Tarball

Install the distribution tarball on Debian Linux using Making and running the software from the distribution, and then run:

planarity -test /usr/local/share/doc/planarity/samples

Producing Standalone Executables for the Release

In addition to the release tarball, we produce standalone executables for macOS and Windows using VSCode.

After performing the final dev env setup steps, your .vscode directory should contain the tasks.json which includes the Debug and Release build configurations for each supported platform. In the VSCode menu bar, open the "Terminal" item and choose "Run Build Task...", then select the Release target for your current platform.

Then, make sure to update the planarity-X.X.X.X_(MacOS-Silicon|Windows-Intel)_buildinfo.txt contents to include the chipset info, compiler version, tasks.json build task configuration, build task output, and SHA256 of the resulting executable.

Finally, add the executable, buildinfo file, and a copy of the c/samples directory to a .zip archive and record the SHA256 of the .zip to include in the release notes.

Smoke testing the release assets

  1. Download the assets into a RELEASE-N.N.N.N directory
  2. For planarity-N.N.N.N.tar.gz
    1. Right-click and choose Extract All…
    2. Follow the instructions on the project home page for Making and running the software from the distribution
      1. Launch MSYS2 UCRT64 terminal
      2. Navigate to the planarity-N.N.N.N directory that contains the makefile
      3. Run ./configure && make
      4. Run ./planarity -test ./c/samples
    3. Test the hash of the file:
      1. Open Windows PowerShell
      2. Navigate into the directory containing the release tarball
      3. Run Get-FileHash planarity-N.N.N.N.tar.gz and check that the hash matches the one that was placed in the "Read More" of the Release Notes (if it was placed there by the release creator).
  3. For planarity-N.N.N.N.Windows-Intel.zip
    1. Right-click and choose Extract All…
    2. Open Windows PowerShell
    3. Navigate into the extracted Release directory
    4. Run .\planarity.exe -test c\samples to see if all tests succeed
    5. Run .\planarity.exe and check the version on the menu
    6. Run Get-FileHash .\planarity.exe and check that the hash matches the one in the planarity-N.N.N.N.Windows-Intel_buildinfo.txt file
    7. Check whether the buildinfo file shows that the (Windows) [Release] job was used to generate the planarity.exe
  4. For checking planarity-N.N.N.N.MacOS-Silicon.zip under Windows:
    1. You can still Extract All…, then in PowerShell navigate to the extracted Release directory (which will likely be called Release 1 if the folder Release already exists)
    2. Run Get-FileHash .\planarity and check whether the hash matches the one in the buildinfo.txt file (modulo capitalizations, MacOS shasum -a 256 produces the same output as Microsoft Powershell Get-FileHash)
    3. Check that the buildinfo shows the (MacOS) [Release] target was used to generate the planarity executable.

Cutting the Release

  1. Go to repo releases and click “Draft a new release”
  2. Click “Select tag” and define a new tag, e.g., Version_5.0.0.0
  3. Leave the “Target” at main/master (assumes all code merged to main/master)
  4. Type in a “Release title” e.g., "Version 5.0.0.0"
  5. Write the “Release notes”
    • Include SHA256 hash values for each additional binary
  6. Drag and drop to attach binaries, e.g., planarity-5.0.0.0.tar.gz, planarity-5.0.0.0.Windows-Intel.zip, and planarity-5.0.0.0.MacOS-Silicon.zip
  7. Leave the checkboxes along (unselected for “Set as a pre-release” and selected for “Set as the latest issue”), then hit the “Publish release” button