mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Add OpenWrt .apk packaging for OpenWrt 25+, where apk-tools is the mandatory package manager. The existing .ipk continues to cover OpenWrt 24.x and earlier. Built SDK-free like the .ipk: it reuses the cargo-zigbuild cross-compile and the shared installed-filesystem payload under openwrt-ipk/files, and assembles the ADB container with the official `apk mkpkg` applet from apk-tools 3.0.5 built from source, so no OpenWrt SDK image is needed. The package-openwrt workflow is refactored so a single compile-binaries job cross-compiles and strips each arch once; both the .ipk and .apk packagers consume the binaries via a new --bin-dir flag instead of each recompiling. A build-apk job (aarch64, x86_64) builds apk-tools, packages, and structurally verifies the .apk with `apk adbdump`. Releases now publish .apk artifacts and checksums alongside .ipk; the release download is scoped to fips_* so the shared raw-binary artifacts are not swept into the published release. apk-version.sh maps a release tag or commit height to an apk-tools-valid version, covered by a case-table test. Packages are unsigned, installed with `apk add --allow-untrusted`, matching the .ipk posture. Also fix the OpenWrt control socket: the init script now pre-creates /run/fips before starting the daemon, the procd equivalent of the systemd unit's RuntimeDirectory=fips. Without it, on a fresh boot the daemon resolves its control socket to /tmp (since /run/fips does not yet exist), while fips-gateway later creates /run/fips for its own gateway.sock, leaving fipsctl/fipstop resolving a /run/fips/control.sock the daemon never bound.
46 lines
1.1 KiB
Bash
Executable File
46 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Case-table test for apk-version.sh. Run: sh apk-version.test.sh
|
|
set -eu
|
|
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
SUT="$HERE/apk-version.sh"
|
|
|
|
fail=0
|
|
check() {
|
|
# check <expected> <args...>
|
|
expected="$1"; shift
|
|
actual="$(sh "$SUT" "$@")"
|
|
if [ "$actual" = "$expected" ]; then
|
|
printf ' PASS %-22s -> %s\n' "$*" "$actual"
|
|
else
|
|
printf ' FAIL %-22s -> %s (expected %s)\n' "$*" "$actual" "$expected"
|
|
fail=1
|
|
fi
|
|
}
|
|
|
|
echo "== apk-version.sh =="
|
|
|
|
# Plain release tags.
|
|
check "1.2.3-r0" tag v1.2.3
|
|
check "0.4.0-r0" tag v0.4.0
|
|
check "10.20.30-r0" tag v10.20.30
|
|
|
|
# Pre-release tags: hyphen separator becomes apk's '_' marker.
|
|
check "1.2.3_rc1-r0" tag v1.2.3-rc1
|
|
check "1.2.3_alpha1-r0" tag v1.2.3-alpha1
|
|
check "1.2.3_beta2-r0" tag v1.2.3-beta2
|
|
check "1.2.3_pre1-r0" tag v1.2.3-pre1
|
|
|
|
# Unknown pre-release token is dropped (apk cannot represent it).
|
|
check "1.2.3-r0" tag v1.2.3-weird9
|
|
|
|
# Dev builds: monotonic commit height as a _git component.
|
|
check "0.0.0_git1234-r0" dev 1234
|
|
check "0.0.0_git0-r0" dev 0
|
|
|
|
if [ "$fail" -ne 0 ]; then
|
|
echo "FAILED"
|
|
exit 1
|
|
fi
|
|
echo "OK"
|