Conversation
There was a problem hiding this comment.
Pull request overview
Adds first-class, in-repo Debian packaging support for monad by introducing build scripts, a containerized packaging workflow, and Debian control metadata, replacing external/hand-maintained dependency lists with dpkg-shlibdeps-derived Depends.
Changes:
- Add shell scripts to compute a package version, build release binaries (Rust + CMake), and assemble a
.debwith bundled in-tree shared libraries anddpkg-shlibdepsdependency inference. - Add a Makefile target set (
deb,deb-container, etc.) and a Dockerfile to build the.debin a reproducible builder image. - Add Debian control template used to generate the package control file.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/package-version | Generates a Debian-compatible version string from git timestamp + short SHA. |
| scripts/build-deb | Builds binaries, stages files into a Debian package layout, computes Depends, and produces a .deb. |
| scripts/build-binaries | Builds Rust binaries/examples and monad-execution CMake artifacts with a pinned toolchain setup. |
| Makefile | Adds local and containerized build targets for building binaries and producing the Debian package. |
| docker/debian-package/Dockerfile | Defines a packaging container build that runs the deb build script and exports artifacts. |
| debian/DEBIAN/control.in | Control-file template filled with computed version and dependency list. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
@claude review |
This comment was marked as outdated.
This comment was marked as outdated.
Reproduces the flags the Jenkins buildRustBinaries step uses, so a local build matches the published one.
Stages the binaries and their in-tree libraries, then derives Depends with dpkg-shlibdeps instead of a hand-maintained list.
Missing libraries and basename collisions now fail the build, staging moved out of the shared cache mount, the builder's libsecp256k1.so.6 is bundled (unsatisfiable on the fleet as a Depends), GIT_COMMIT_HASH reaches container builds, and the cmake toolchain file owns arch flags.
The container build is the only path that works without the builder image's exact toolchain on the host; rename the host build to deb-host.
Valid Debian versions can contain characters that are invalid in image tags; create the copy-out container from the image id instead.
06da173 to
fa25537
Compare
- Fail the build if libsecp256k1.so.6 is missing from the builder image instead of silently skipping it (dpkg-shlibdeps and the in-builder ldd sweep cannot catch the omission). - Declare cron and whiptail in Depends: they are invoked by maintainer scripts but invisible to dpkg-shlibdeps. - Guard the crontab call in postrm so removal cannot fail on hosts installed under an older control file without cron.
'make deb' output under dist/ was being copied into the image build context on subsequent builds, bloating the context with stale packages.
efa9b93 to
1312af5
Compare
The package bundles shared libraries into /usr/local/lib but postrm never refreshed the linker cache, leaving stale entries for removed libraries (Debian Policy 8.1.1). postinst already calls ldconfig; this mirrors it on removal.
1312af5 to
bb53d14
Compare
|
@claude review |
|
Claude finished @mhumeSF's task in 3m 11s —— View job Code review
Overall this is in good shape. The design is sound: version validation before use, staging outside the shared Bug:
|
Adds a Makefile and scripts to build the monad .deb from this repo:
make debbuilds in thedocker/builderimage, bundles in-tree libraries vialdd, and derivesDependswithdpkg-shlibdepsinstead of hand-maintained lists in the Jenkins shared library. Inert on merge — nothing calls it yet.