Skip to content

[#23]:svarga:build, add H5CPP-style installers + single-header packages for v1.0.0#24

Merged
steven-varga merged 1 commit into
stagingfrom
23-installers
Jun 18, 2026
Merged

[#23]:svarga:build, add H5CPP-style installers + single-header packages for v1.0.0#24
steven-varga merged 1 commit into
stagingfrom
23-installers

Conversation

@steven-varga

Copy link
Copy Markdown
Contributor

Closes #23.

H5CPP-style release packaging. plot is header-only + dependency-free, so the package payload is the amalgamated single header plot.hpp + LICENSE.

What ships

Platform Generator Artifact
Debian/Ubuntu DEB (Architecture=all) plot-dev_1.0.0_all.deb
RedHat/Fedora RPM (noarch) plot-devel-1.0.0-1.noarch.rpm
Windows NSIS plot-v1.0.0-windows.exe
macOS productbuild plot-v1.0.0-darwin.pkg
any TGZ / ZIP plot-v1.0.0-<os>.tar.gz / .zip

How

  • scripts/amalgamate.py generates plot.hpp from include/plot/ (order from the all umbrella; strips internal includes + #pragma once).
  • CMake: project bumped to 1.0.0; plot-amalgamate target (ALL when Python3 present, else gracefully skipped so the existing CI matrix can't break); plot.hpp + LICENSE installed always; full tree + find_package(plot) config gated behind -DPLOT_INSTALL_FULL=ON (default). Release builds pass -DPLOT_INSTALL_FULL=OFF ⇒ single-header-only payload.
  • CPack: arch-independent (header-only); DEB/RPM/NSIS/productbuild + TGZ/ZIP.
  • .github/workflows/package.yml: on tag v* + workflow_dispatch; builds all artifacts and uploads to the GitHub release (gh release create … --generate-notes, or upload --clobber if it already exists).

Populating the existing v1.0.0 release

package.yml triggers on future v* tag pushes. To populate the existing v1.0.0 release now, run the workflow via Actions → Package → Run workflow with the v1.0.0 tag selected as the ref — the publish job runs for tag refs and uploads with --clobber.

Verification (local)

  • Amalgamated plot.hpp compiles + renders standalone (no -Iinclude).
  • DEB/TGZ/ZIP payloads are exactly usr/include/plot.hpp + usr/share/doc/plot/LICENSE; DEB metadata plot-dev 1.0.0 all.
  • Default build: ctest 5/5; full install ships tree + cmake config + plot.hpp.
  • package.yml YAML validated.

RPM/NSIS/productbuild are exercised in CI (no local rpmbuild/makensis).

…es for v1.0.0

Ship release artifacts, H5CPP style. plot is header-only and dependency-free,
so the package payload is the amalgamated single header plot.hpp + LICENSE.

- scripts/amalgamate.py generates a self-contained plot.hpp from include/plot/
  (order read from the `all` umbrella; internal includes + #pragma once stripped).
- CMakeLists: bump project to 1.0.0; add the plot-amalgamate target (built as
  part of ALL when Python 3 is present, gracefully skipped otherwise so the
  existing CI matrix can't break); install plot.hpp + LICENSE always; gate the
  full include tree + find_package config behind -DPLOT_INSTALL_FULL=ON (default).
- CPack: DEB (Debian, Architecture=all), RPM (RedHat, noarch), NSIS (Windows),
  productbuild (macOS), plus TGZ + ZIP. Release builds set -DPLOT_INSTALL_FULL=OFF
  so packages contain only plot.hpp + LICENSE.
- .github/workflows/package.yml: on tag v* and workflow_dispatch; builds every
  artifact across linux/macos/windows runners and uploads to the GitHub release
  (creates it, or --clobber to preserve a hand-edited body).
- README: document the release packages and the single-header drop.

Verified locally: amalgamated header compiles+renders standalone (no -Iinclude);
DEB/TGZ/ZIP payloads are exactly usr/include/plot.hpp + usr/share/doc/plot/LICENSE;
default build still passes ctest (5/5) and full-installs the tree + config + plot.hpp.
@steven-varga steven-varga merged commit ba0a333 into staging Jun 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant