A release publishes one archive per target with the generated C header,
three static libraries, the integration guide and the compatibility docs.
scripts/package-release.sh builds it, and CI runs the same script on
every push through scripts/test-package-release.sh.
dist/map2check-library-<version>-<target>.tar.gz, where <version> comes
from Cargo.toml and <target> is the rustc host triple (for example
x86_64-unknown-linux-gnu):
| Path in the archive | Source |
|---|---|
include/map2check.h |
Generated by build.rs; MAP2CHECK_VERSION must equal <version>. |
lib/libmap2check.a |
cargo build --release (no features), for plain C programs. |
lib/libmap2check_libfuzzer.a |
cargo build --release --features libfuzzer, for LibFuzzer targets; the program must define int __map2check_main__(void). |
lib/libmap2check_runtime.a |
cargo build --profile runtime --features libfuzzer,wasm: the build Map2Check links (unwinding panics, LibFuzzer and wasm2c runtime). |
docs/integration-guide.md, docs/api-deltas.md, docs/semantic-deltas.md |
Repository. |
CHANGELOG.md, LICENSE |
Repository. |
The KLEE runtime bitcode is not in the archive: it needs rustc 1.72.1 and
LLVM 16 tools, so it is built separately with
scripts/build-klee-runtime.sh <out.bc> (see the integration guide).
dist/SHA256SUMS sits next to the archive. There are two libraries
because the libfuzzer build references __map2check_main__. Without
that symbol in the program, linking the libfuzzer library fails with
undefined reference to '__map2check_main__'.
-
Version. On a branch off
develop, setversioninCargo.tomland theorg.opencontainers.image.versionlabel inDockerfile.tests/header_version.rsfails if they disagree. -
Changelog. Move the
[Unreleased]entries into a new## [<version>] - YYYY-MM-DDsection ofCHANGELOG.md, and leave an empty[Unreleased]above it. -
Compatibility docs. Make sure
docs/api-deltas.mdanddocs/semantic-deltas.mdreflect every ABI or behaviour change since the last release.cargo test --all-features --test compat_docsmust pass. -
Pull request. Open a PR to
developand merge it oncebuild_and_testis green, then open a PR fromdeveloptomain(1 review required). -
Package. On the merged commit, run:
scripts/package-release.sh # writes dist/ (cd dist && sha256sum -c SHA256SUMS)
-
Tag. Create a signed tag on the merged commit and push it:
git tag -s v<version> -m "map2check-library v<version>" git push origin v<version>
-
GitHub release. Attach the archive and checksums. Use
--prereleasefor-rcNversions:V=<version> awk -v h="## [$V]" 'index($0,"## [")==1{p=index($0,h)==1;next} p' CHANGELOG.md > dist/notes.md gh release create "v$V" dist/map2check-library-"$V"-*.tar.gz dist/SHA256SUMS \ --title "v$V" --notes-file dist/notes.md \ --prerelease # omit for a final (non -rcN) version
dist/notes.mdholds the body of the## [<version>]section, up to the next## [heading or the end of the file. Name the archive by version so older archives left indist/are not uploaded;SHA256SUMSonly covers the newest one.
Steps 6 and 7 publish outside the repository; the maintainer runs them.