While writing a release-process doc for extension_tools/extension_drop
(https://github.com/Postgres-Extensions/extension_tools), found several
things `make dist` doesn't check today that it probably should, since it's
the point where a distribution actually goes out the door:
-
Version consistency: nothing checks that `META.in.json`'s top-level
`version`, each extension's `provides..version`, and each matching
`.control`'s `default_version` all agree. It's easy to bump one and
forget the others.
-
META.json freshness: `make dist` should ensure `META.json` is fully
regenerated from `META.in.json` before packaging (fail, or force a
rebuild, if it's stale) rather than trusting whatever's on disk.
-
Resource URL reachability: `META.in.json`'s `resources` block
(homepage/bugtracker/repository URLs) can drift silently (e.g. after a
repo transfer/rename) since nothing ever re-checks it. `make dist` could
do a basic reachability check (HTTP HEAD or similar) on these URLs and
warn if any don't resolve.
Filing all three together since they're all "is this distribution actually
ready to ship" checks that belong at the same point in the process.
While writing a release-process doc for extension_tools/extension_drop
(https://github.com/Postgres-Extensions/extension_tools), found several
things `make dist` doesn't check today that it probably should, since it's
the point where a distribution actually goes out the door:
Version consistency: nothing checks that `META.in.json`'s top-level
`version`, each extension's `provides..version`, and each matching
`.control`'s `default_version` all agree. It's easy to bump one and
forget the others.
META.json freshness: `make dist` should ensure `META.json` is fully
regenerated from `META.in.json` before packaging (fail, or force a
rebuild, if it's stale) rather than trusting whatever's on disk.
Resource URL reachability: `META.in.json`'s `resources` block
(homepage/bugtracker/repository URLs) can drift silently (e.g. after a
repo transfer/rename) since nothing ever re-checks it. `make dist` could
do a basic reachability check (HTTP HEAD or similar) on these URLs and
warn if any don't resolve.
Filing all three together since they're all "is this distribution actually
ready to ship" checks that belong at the same point in the process.