Repository navigation
Add single-header amalgamation as a release asset - #41
Merged
Merged
Conversation
tools/amalgamate.py concatenates the headers in dependency order into one self-contained geo.hpp: per-file banners, pragma once, and local includes dropped; system includes deduplicated and hoisted; one combined license/attribution banner on top. Deterministic output. The new release-assets.yml workflow generates the file from the release tag, smoke-tests it by building and running the end-to-end example against it, and uploads it to the GitHub release. A matching smoke job in ci.yml catches amalgamation breakage at PR time rather than after a release is public. Verified beyond the smoke: the full 76-test ctest suite passes when the multi-header layout is shimmed to the amalgamation.
This repository has immutable releases enabled: assets cannot be attached after publishing (the v1.2.0 backfill got HTTP 422). The workflow now triggers on release 'created' (which fires for drafts), and RELEASING.md publishes via draft -> attach -> undraft. README points at releases after v1.2.0 for the single-header download.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
tools/amalgamate.py— deterministic generator: headers concatenated in dependency order, per-file banners /#pragma once/ local includes stripped, system includes deduplicated and hoisted, one combined Apache-2.0 + android-maps-utils attribution banner on top (~1 270 lines for v1.2.0).release-assets.yml— on every published release: generate from the tag, smoke-test (build + runexamples/gps_track.cppagainst the amalgam with-Wall -Wextra -Wpedantic -Werror), uploadgeo.hppto the release. Tag name flows through anenvvar (no shell interpolation of event fields).ci.yml:single-header-smokejob — the same generate+smoke on every PR, so amalgamation breakage surfaces before a release is public.Verification