From 0e098cadadb18ce1be342568288893669f80483e Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Tue, 17 Mar 2026 14:57:01 +0000 Subject: [PATCH] Add top-level packaging Makefile and README --- packaging/Makefile | 31 ++++++++++++++++ packaging/README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 packaging/Makefile create mode 100644 packaging/README.md diff --git a/packaging/Makefile b/packaging/Makefile new file mode 100644 index 0000000..a9b7cd4 --- /dev/null +++ b/packaging/Makefile @@ -0,0 +1,31 @@ +# FIPS Packaging Makefile +# +# Builds release packages for supported target platforms. +# All outputs are placed in deploy/ at the project root. +# +# Usage: +# make deb Build a Debian/Ubuntu .deb package +# make tarball Build a systemd install tarball +# make ipk Build an OpenWrt .ipk package +# make all Build deb and tarball (default) +# make clean Remove deploy/ directory + +SHELL := /bin/bash +PACKAGING_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +PROJECT_ROOT := $(abspath $(PACKAGING_DIR)/..) + +.PHONY: all deb tarball ipk clean + +all: deb tarball + +deb: + @bash $(PACKAGING_DIR)/debian/build-deb.sh + +tarball: + @bash $(PACKAGING_DIR)/systemd/build-tarball.sh + +ipk: + @bash $(PACKAGING_DIR)/openwrt/build-ipk.sh + +clean: + rm -rf $(PROJECT_ROOT)/deploy diff --git a/packaging/README.md b/packaging/README.md new file mode 100644 index 0000000..aef9864 --- /dev/null +++ b/packaging/README.md @@ -0,0 +1,86 @@ +# FIPS Packaging + +This directory contains packaging for all supported target platforms. +All build outputs go to `deploy/` at the project root. + +## Quick Start + +```sh +make deb # Debian/Ubuntu .deb +make tarball # systemd install tarball +make ipk # OpenWrt .ipk +make all # deb + tarball (default) +``` + +## Directory Structure + +```text +packaging/ + common/ Shared assets (default config, hosts file) + debian/ Debian/Ubuntu .deb packaging via cargo-deb + systemd/ Generic Linux systemd tarball packaging + openwrt/ OpenWrt .ipk packaging via cargo-zigbuild +``` + +## Formats + +### Debian/Ubuntu (`.deb`) + +Built with [cargo-deb](https://github.com/kornelski/cargo-deb). Installs +`fips`, `fipsctl`, and `fipstop` to `/usr/bin/`, places config at +`/etc/fips/fips.yaml` (preserved on upgrade), and enables the systemd +service. + +```sh +# Build +make deb + +# Install +sudo dpkg -i deploy/fips__.deb + +# Remove (preserves config and keys) +sudo dpkg -r fips + +# Purge (removes config and identity keys) +sudo dpkg -P fips +``` + +### systemd Tarball + +A self-contained tarball with binaries and an `install.sh` script for +any systemd-based Linux distribution. + +```sh +# Build +make tarball + +# Install (on target host) +tar -xzf deploy/fips--linux-.tar.gz +sudo ./fips--linux-/install.sh +``` + +See [systemd/README.install.md](systemd/README.install.md) for full +installation and configuration instructions. + +### OpenWrt (`.ipk`) + +Cross-compiled with cargo-zigbuild and assembled as a standard `.ipk` +archive. Supports aarch64, mipsel, mips, arm, and x86\_64 targets. + +```sh +# Build (default: aarch64) +make ipk + +# Build for a specific architecture +bash packaging/openwrt/build-ipk.sh --arch mipsel +``` + +See [openwrt/README.md](openwrt/README.md) for router-specific +installation instructions. + +## Shared Assets + +`common/` contains assets used across packaging formats: + +- `fips.yaml` — default configuration (ephemeral identity, UDP/TCP/TUN/DNS) +- `hosts` — static hostname-to-npub mappings for `.fips` DNS resolution