Skip to content

Packaging: CPack cdt/cdt-dev deb+rpm+tgz with verified release pipeline#100

Draft
jglanz wants to merge 8 commits into
masterfrom
feature/packaging-deb-rpm-portable
Draft

Packaging: CPack cdt/cdt-dev deb+rpm+tgz with verified release pipeline#100
jglanz wants to merge 8 commits into
masterfrom
feature/packaging-deb-rpm-portable

Conversation

@jglanz

@jglanz jglanz commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • CPack packaging replaces the legacy generate_package.sh pipeline: cdt (wasm toolchain + sysroot) and cdt-dev (native contract-testing libraries) as deb + rpm, plus a portable tarball (cdt/ top dir, extract to /opt). Packages install under /usr/cdt; the deb keeps the cdt_<version>-1_amd64.deb naming and cdt_ubuntu_package_amd64 artifact contract that wire-sysio CI consumes (now with rpm+tgz added — additive).
  • cmake templates untouched per constraint: package variants of cdt-config.cmake/CDTMacros.cmake/CDTWasmToolchain.cmake come from an additional configure_file pass (the mechanism the tree already uses); cdt-config.cmake's existing self-location covers non-default prefixes.
  • Real toolchain binaries in packages: llvm tools now install from the dereferenced bin/ copies — the previous source (tools/bin) contains symlinks into the local vcpkg tool dir, which shipped as dead absolute links.
  • Verifier suite (tools/packaging/tests/): payload assertions + containerized installs (ubuntu 24.04, fedora) + a contract-compile smoke: the installed toolchain must compile a hello contract to .wasm + .abi. Wired into CI as a verify-packages job and into the release workflow.
  • Release workflow: keeps the strict tag validation (vX.Y.Z, on master, matches CMake version); adds a workflow_dispatch debug path (pre-release v*-rc* tags, skip-master-check), artifact re-verification before publishing, and attaches the full artifact set + sha256 checksums.
  • Docs: docs/release-workflow.md with mermaid activity + sequence diagrams.

Local verification evidence

S1 (tgz layout), S2 (deb, ubuntu:24.04 container), S3 (rpm, fedora container) all PASS including the contract smoke — wasm+abi produced by the installed toolchain in both containers.

Notes

  • deb size grows from ~16MB to ~270MB: the old artifact embedded dead symlinks where the actual clang/lld binaries should have been; the new packages carry the real toolchain.
  • First live release validation will use a v*-rc* pre-release via the dispatch path.

jglanz added 8 commits July 13, 2026 11:02
…se pipeline

- Replace the script-generated single deb with CPack packaging: cdt (wasm
  toolchain + sysroot) and cdt-dev (native contract-testing libraries) for
  both deb and rpm, plus a portable tarball with a cdt/ top-level directory;
  packages install under /usr/cdt (consumers keep discovering the root via
  lib/cmake/cdt/cdt-config.cmake); the deb keeps the legacy
  cdt_<version>-1_amd64.deb naming that wire-sysio CI globs
- Install rules become relative + component-tagged (installation
  configuration only; the cmake templates are untouched -- package variants
  of the config/toolchain files are produced by an additional configure_file
  pass, the same mechanism the build tree already uses)
- llvm tools install from the dereferenced bin/ copies instead of tools/bin
  symlinks, which embedded dead absolute links into packages
- rpm: disable brp post-processing (read+execute-only tools broke brp-strip)
  and ELF autoreq (parity with SHLIBDEPS OFF)
- tools/packaging/tests: verifier suite incl. containerized install +
  contract-compile smoke (hello contract must produce .wasm/.abi)
- build.yaml: package all artifacts into cdt_ubuntu_package_amd64 (additive
  for consumers) + verify-packages job
- release.yaml: workflow_dispatch debug path (pre-release tags,
  skip-master-check), artifact re-verification, full artifact set + sha256
  checksums on the release
- docs/release-workflow.md: overview + mermaid activity/sequence diagrams

Change-Id: I4cdba149b01f6298a967063fee834653c0a28157
Change-Id: I1ca185cd0954d4a403e92b8192c13581ba6c11c3
…cost cache

- concurrency groups on build (per-ref) and release (per-tag) with
  cancel-in-progress so superseded runs stop automatically
- ccache: restore/save split (save even when tests fail, never from PRs),
  10G compressed cache, matching the wire-sysio build workflow
- ctest cost-data cache for better -j scheduling

Change-Id: I64d6422d172bca197f4a43712baa172ab9e5da88
Change-Id: I30c0f058ded79098fa2c356cf40a4e4bd01682ed
PR runs previously produced no package artifact, guaranteeing the
verify-packages job (and any release dispatch against a branch commit)
fails on artifact download. Same policy as wire-sysio: assemble the
package set whenever the ubuntu24 leg builds.

Change-Id: I71ef742c3a01d7b2e85e91357f971f384a05fcfd
build-platforms is skipped whenever the builder image is already published,
and GitHub propagates skipped ancestors through the default success() check,
silently skipping verify-packages. Use the same !cancelled() + result guard
the build job already needs for the same reason.

Change-Id: Ic53ca3d4a51e9f7117f3c9bdda97645a8cd35d73
actions/cache only saves in its post step when the job succeeds, so failed and cancel-in-progress-superseded builds discarded all vcpkg work. Split into cache/restore + cache/save with unique per-run save keys (caches are immutable) and newest-prefix restore, saving on always().

Change-Id: Ib5bfa223c7fd37cda209f8ef8fba7140df2fa957
…hing works

vcpkg.cmake consumes no -D of that name, so the previous -DVCPKG_BINARY_SOURCES form silently did nothing: vcpkg wrote archives to ~/.cache/vcpkg/archives ('Restored 0 package(s)' every run), .vcpkg-binary-cache never existed, and the cache save step warned 'Path Validation Error ... no cache is being saved'. Export the variable in the Build step instead and drop the dead -D.

Change-Id: Ia2575adf89cf5d79f4acfd78c139623ee0ea24d2
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