Skip to content

Latest commit

 

History

History
73 lines (59 loc) · 3.36 KB

linux-packages.md

File metadata and controls

73 lines (59 loc) · 3.36 KB

Linux packages

Native 0.x beta and stable releases provide ftw-linux-arm64.tar.gz for 64-bit Raspberry Pi/Linux hosts and ftw-linux-amd64.tar.gz for x86-64 Linux hosts. Each archive has a matching .sha256 file. Native releases publish no forty-two-watts-linux-<arch> downloads and no Windows packages. Assets already published for older releases remain available.

Install a package with scripts/install.sh from the same published tag, as native-beta.md shows. It verifies the package, puts releases in slots under /opt/ftw, installs deploy/ftw-native.service as the ftw service and puts the ftw command on PATH. After that, ftw update downloads the next package into a slot and the launcher switches to it (ADR 0007). The web UI only shows the version. install.sh --refresh replaces the launcher, the command and the unit when a release asks for it. Do not copy a package into /opt/ftw by hand: the launcher expects the slot layout.

The installer does not migrate an existing Docker, Home Assistant or older native site. Use Install and update FTW to switch with separate data now. Guided transfer of old settings and history is not ready. 2.x and 3.x receive no more updates; do not install 3.x beta. deploy/docker builds a local image from the same package.

Contents

Each archive holds one release: Core (ftw), ftw-launcher, ftw-backup, ftw-cli (installed as the ftw command), web files, the pinned recovery drivers, the compiled Energyplan bundle, license notices, an example config, state-schema.json, release-version.json with the version, architecture and state schema, and deploy/ftw-native.service. A release slot holds the whole extracted package; keep these files together.

Each package includes only the Energyplan executable for its Linux architecture. Its manifest lists that executable and the shared schemas, licenses and notices, with the original version, source commit and file checksums. Other Linux architectures and macOS executables are excluded. The full pinned bundle in the source checkout stays unchanged.

To verify and inspect a package by hand, download the archive and its checksum from the same explicit release. For an arm64 host:

sha256sum -c ftw-linux-arm64.tar.gz.sha256
mkdir ftw-package
tar xzf ftw-linux-arm64.tar.gz -C ftw-package
cd ftw-package
./ftw -h

Use amd64 instead on an x86-64 host. Extracting the archive does not install or start anything.

Build the same packages locally

From a clean checkout with Go, Python 3 and the driver-fetch tools installed:

make release VERSION="$(git describe --tags --exact-match)"

This builds both Linux architectures and writes the archives and checksums under release/. make release-linux-arm64 or make release-linux-amd64 builds one target. The package builder checks the binary architecture and requires every pinned driver and runtime directory. It normalizes archive timestamps and ownership so unchanged inputs produce the same package bytes.

Beta packages contain their full beta version. For stable, native-release.yml checks the named beta's release receipt and package checksums, then rebuilds from that beta's commit with the stable version. Stable promotion does not copy the beta archives.