Files
adebisi-fa 8d42faf707 docs(openspec): archive fpagent-installer-multiarch and sync specs
Bundle selection is now architecture-aware, not just codename-aware, and the
no-compatible-bundle failure names the host architecture. Merged into the
fpagent-installer spec and archived the change.
2026-10-06 19:19:23 +01:00

1.9 KiB

Proposal: fpagent-installer-multiarch

Why

The hosted installer only ever picks the x86_64 bundle. fingerprint-agent v1.5.0 publishes a 32-bit -linux-i386 bundle and its own installer accepts i386 hosts, so a 32-bit field laptop running the public one-liner fails with "no compatible bundle" and installs nothing, even though a matching release asset exists.

What Changes

  • The installer detects the host architecture (uname -m → x86_64 or i386) and selects the matching bundle: the distro-codename bundle when one exists for that architecture, else the generic -linux-<arch> bundle.
  • An unsupported architecture fails with a message that names the host machine, and installs nothing.
  • The version parsed from the asset name accepts the -linux-i386 suffix, so a 32-bit install records and reports its version the same way x86_64 does.
  • The installer's help text matches the bundle installer: the systemd service and the self-update timer are on by default, so --no-service, --no-updates and --update-base are documented instead of --enable-service being described as required to get a service.

Capabilities

New Capabilities

(none)

Modified Capabilities

  • fpagent-installer: bundle selection becomes architecture-aware (not just distro-codename aware), the no-compatible-bundle failure names the host architecture, and the version is derived for every published architecture.

Impact

  • tools/public/fpagent/install.sh: architecture detection, bundle pick, version regex, help text.
  • tools/test/fpagent-install.test.js: architecture selection and version parsing tests.
  • README.md: the installer section (flags and architectures).
  • Depends on the fingerprint-agent bundle naming fpagent-<version>-linux-<arch>.tar.gz, where <arch> is x86_64 or i386 (v1.5.0 and newer). No change to tools/server.js: the server proxies whatever assets the release lists.