feat: add OpenWrt cross-compilation and packaging (Phase F7)

- packaging/openwrt/: opkg Makefile, procd init script, uci config
- scripts/cross-compile.sh: build for musl targets with size checks
- .github/workflows/openwrt.yml: CI cross-compile + 5 MB size gate
- docs/openwrt.md: installation and configuration guide
- Targets: x86_64-musl, armv7-musleabihf, aarch64-musl
- Uses cargo-zigbuild for Docker-free cross-compilation
This commit is contained in:
2026-03-04 20:52:15 +01:00
parent 49e8e066d7
commit 372dd67a3b
6 changed files with 412 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
# OpenWrt package feed Makefile for quicproquo server.
#
# Usage:
# 1. Add this directory as a custom feed in feeds.conf:
# src-link quicproquo /path/to/quicproquo/packaging/openwrt
# 2. ./scripts/feeds update quicproquo && ./scripts/feeds install quicproquo
# 3. make menuconfig (select Network -> quicproquo)
# 4. make package/quicproquo/compile V=s
#
# The binary is pre-built via cross-compilation (see scripts/cross-compile.sh)
# and the Makefile simply installs it into the ipkg.
include $(TOPDIR)/rules.mk
PKG_NAME:=quicproquo
PKG_VERSION:=0.1.0
PKG_RELEASE:=1
PKG_MAINTAINER:=quicproquo team
PKG_LICENSE:=MIT
include $(INCLUDE_DIR)/package.mk
define Package/quicproquo
SECTION:=net
CATEGORY:=Network
TITLE:=End-to-end encrypted group messenger (server)
DEPENDS:=+libpthread +librt
URL:=https://github.com/nicholasgasior/quicproquo
endef
define Package/quicproquo/description
Production-grade end-to-end encrypted group messenger using QUIC transport,
MLS (RFC 9420), ML-KEM-768 hybrid post-quantum KEM, and OPAQUE authentication.
This package installs the qpq-server daemon.
endef
define Package/quicproquo/conffiles
/etc/config/quicproquo
endef
# Skip standard build — we use pre-compiled static musl binaries.
define Build/Compile
endef
define Package/quicproquo/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/qpq-server $(1)/usr/bin/qpq-server
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/quicproquo.init $(1)/etc/init.d/quicproquo
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/quicproquo.uci $(1)/etc/config/quicproquo
$(INSTALL_DIR) $(1)/var/lib/quicproquo
endef
$(eval $(call BuildPackage,quicproquo))