Binaries for Linux (x86-64 and arm64) and macOS (Apple silicon), plus a macOS
installer .pkg, built and published by .github/workflows/release.yml from the tag
alone.
Install
Each archive is a staged cmake --install payload, so every path under its usr/ is
the path the file installs to:
sudo tar -xzf sendspin-cli-0.1.3-linux-x86_64.tar.gz --strip-components=1 -C / \
sendspin-cli-0.1.3-linux-x86_64/usr
sudo systemd-sysusers
sudo systemctl daemon-reloadsystemd-sysusers creates the unprivileged account the unit runs as, from the
declaration the payload installs alongside it; a tarball has no postinst to run it
for you, and without it systemctl start reports 217/USER.
Naming the usr member is what leaves BUILD-INFO.txt in the archive rather than
unpacking it at /. Each archive carries its own BUILD-INFO.txt at the root with
that command already filled in for its platform, the runtime packages it needs, and
what the systemd unit does. Or run it where you unpacked it, at
./<name>/usr/local/bin/sendspin-cli.
On macOS the .pkg is the shorter path to the same place. It is built from the very
payload the macOS archive holds, so the two put identical files on disk:
sudo installer -pkg sendspin-cli-0.1.3-macos-arm64.pkg -target /
sendspin-cli --versionThere is no uninstaller: remove those files and run
sudo pkgutil --forget io.github.chrisuthe.sendspin-cli.
macOS is unsigned, archive and .pkg alike
The macOS binary is ad-hoc signed — the minimum an arm64 Mach-O needs to execute
at all, applied by the linker. It carries no developer identity, spctl rejects it,
and the .pkg around it is unsigned in the same way. Unpack the archive from a
terminal rather than in Finder, whose Archive Utility sets the quarantine flag where
tar does not; if macOS refuses the binary anyway:
xattr -d com.apple.quarantine \
./sendspin-cli-0.1.3-macos-arm64/usr/local/bin/sendspin-cliA .pkg downloaded from this page is quarantined too, and Gatekeeper refuses it on a
double-click — allow it once under System Settings → Privacy & Security, or use the
installer command above, which makes no Gatekeeper assessment at all whatever the
file is flagged with.
All of that is a workaround, not a fix, and the .pkg is not the fix either. What it
changes is narrower: xcrun stapler staples a notarization ticket to a .pkg and
refuses a bare executable, so this is the shape that makes notarization possible at
all. A Developer ID signature and notarization need a paid Apple enrolment and are
still owed. Said plainly here because it is worth knowing before you download: these
are unsigned builds from a public CI runner. The full account is under macOS, and
Gatekeeper in the README linked below.
Checksums
SHA256SUMS covers the four files above. It does not cover the Source code
archives GitHub attaches on its own, which are generated by GitHub rather than built
here.
sha256sum --ignore-missing -c SHA256SUMS # Linux
shasum -a 256 --ignore-missing -c SHA256SUMS # macOSRun that from the directory you downloaded into. --ignore-missing is there because
SHA256SUMS lists all four and you have almost certainly taken one: without it, the
ones you did not download are reported as failures and the command exits non-zero on a
perfectly good file.
What this build is
sendspin-cli 0.1.3. The version of the sendspin-cpp library it is linked against
is pinned at build time and printed on the second line of sendspin-cli --version,
alongside this one on the first.
- README — build, install, run,
macOS, and Gatekeeper,
and the installer.pkg - Roadmap — what shipped and
what is owed, item by item