- Add `make setup` target to register qemu and create a multiplatform buildx builder for universal (x86_64 + aarch64) packages - Use named builder with --progress=plain to avoid flickering output - Conditionally depend on arch-specific Docker tars so single-arch builds don't require the other image - Document prerequisites, build targets, and overrides in README
1.8 KiB
Kamado Pool — StartOS Packaging
StartOS 0.3.5.1 wrapper for Kamado Pool, a modern solo Bitcoin mining pool built on a patched fork of CKPool-solo with a Go middleware API and Svelte real-time dashboard.
Prerequisites
- Docker with buildx plugin
- deno — bundles the TypeScript embassy procedures
- yq — parses
manifest.yamlfor package metadata - start-sdk — packs and verifies the
.s9pk(from the StartOS SDK) - KamadoPool source — local sibling checkout at
../KamadoPool(override withKAMADO_SRC=/path/to/KamadoPool)
Building
Universal package (x86_64 + aarch64)
A universal .s9pk runs on any StartOS machine regardless of architecture. This is the default and what you should ship.
One-time setup (re-run after each reboot):
make setup
This registers qemu binfmt handlers for cross-architecture emulation and creates a multiplatform Docker buildx builder. The arm64 build runs under emulation on x86 hosts, so it is significantly slower (~5-10x) than native.
Build:
make
This bundles the TypeScript procedures, builds Docker images for both architectures, and packs kamado-pool.s9pk. The universal package is roughly double the size of a single-arch package since it contains two Docker images.
Single-arch (development)
For faster iteration when you only need one architecture:
make x86 # x86_64 only
make arm # aarch64 only
These skip the other architecture entirely — no emulation overhead.
Overrides
# Use a different KamadoPool source directory
make KAMADO_SRC=/path/to/KamadoPool
# Use a different buildx builder
make BUILDER=my-builder
License
GPL-3.0 — matches upstream Kamado and CKPool.