Files
enricobuehler fd477f92b4
ci / docs-site (pull_request) Successful in 47s
ci / web (pull_request) Successful in 53s
ci / decky-typecheck (pull_request) Successful in 10s
ci / bun-nix (pull_request) Successful in 12s
android / android (pull_request) Canceled after 1m25s
apple / swift (pull_request) Canceled after 0s
apple / distribute (pull_request) Canceled after 0s
apple / screenshots (pull_request) Canceled after 0s
ci / rust (pull_request) Canceled after 1m26s
ci / rust-arm64 (pull_request) Canceled after 1m24s
ci / sdk-plugin-kit (pull_request) Canceled after 1m21s
ci / docs-drift (pull_request) Canceled after 24s
installer-smoke / build punktfunk-setup (musl) (pull_request) Canceled after 17s
installer-smoke / omarchy integration self-check (pull_request) Canceled after 0s
installer-smoke / omarchy (armed update guard) (pull_request) Canceled after 0s
installer-smoke / smoke (arch) (pull_request) Canceled after 0s
installer-smoke / smoke (debian-13) (pull_request) Canceled after 0s
installer-smoke / smoke (fedora-44) (pull_request) Canceled after 0s
macos-host / check (pull_request) Canceled after 0s
setup-windows / test (pull_request) Successful in 1m23s
nix / flake (pull_request) Canceled after 2s
setup-binary / build (aarch64) (pull_request) Canceled after 0s
setup-binary / build (x86_64) (pull_request) Canceled after 0s
setup-binary / probe the published channel (pull_request) Canceled after 0s
setup-binary / publish to the generic registry (pull_request) Canceled after 0s
windows-client / client (arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (pull_request) Canceled after 3s
windows-client / client (x64, , x86_64-pc-windows-msvc, C:\t) (pull_request) Canceled after 0s
windows-drivers / probe-and-proto (pull_request) Canceled after 0s
windows-drivers / driver-build (pull_request) Canceled after 0s
secret-scan / gitleaks (pull_request) Successful in 19s
feat(encode): drop libavcodec from the host
Every encode path the host still needs is native now: NVIDIA on the direct
NVENC SDK, AMD and Intel on the VAAPI session that shipped this week, Windows
Intel on VPL and Windows AMD on AMF. libav was left as the A/B oracle and the
fallback; on glass the native VAAPI arm answers both questions, so keeping a
second implementation of every backend only costs a dependency that has broken
us twice on soname majors and forces an LGPL payload into the Windows
installer.

The one gap it leaves is NVIDIA with a CPU capture, which libav NVENC used to
take. Direct NVENC now uploads such a frame into a reused pitched device
buffer instead of refusing it, so the CPU path is a copy rather than a second
encoder. Untested on hardware: no NVIDIA Linux box is in the fleet.

`PUNKTFUNK_VAAPI_NATIVE` and `PUNKTFUNK_NVENC_DIRECT` go with the code they
switched between, as do the `libav-fallback` and `amf-qsv` features. Linux
packaging keeps its libav* build dependencies until the packaging half lands.
2026-09-07 08:56:07 +02:00

60 lines
3.0 KiB
TOML

# cargo-about config — full-fidelity third-party license harvest for CI.
#
# cargo install cargo-about
# cargo about generate about.hbs > THIRD-PARTY-NOTICES.txt # (or use scripts/gen-third-party-notices.sh)
#
# `accepted` is the allow-list of SPDX licenses permitted in the dependency tree. CI fails if a crate
# carries anything not listed here — the regression guard against a copyleft dependency silently
# entering the linked set. All entries
# below are permissive / attribution-only; deliberately NO GPL/LGPL/AGPL/MPL-link/SSPL/EPL.
#
# ⚠ KNOW THE LIMIT OF THIS GATE. cargo-about walks the CARGO graph, so it sees CRATES. A native
# library linked through a permissively-licensed `-sys` crate is INVISIBLE to it, licence and all.
# FFmpeg was precisely that shape while we linked it: `ffmpeg-sys-next` is WTFPL and passed
# cleanly, while the LGPL libavcodec/libavutil/swscale it link-imported never appeared in the
# harvest at all. Nothing links it any more (host encode went native, 2026-09), so the crate graph
# and the linked set coincide for every artifact — but the gate is no stronger than it was.
# Copyleft arriving as C behind a -sys crate is a REVIEW question, not a CI one.
#
# The dependency-free fallback is scripts/gen-third-party-notices.py (reads the cargo registry cache),
# which is what produced the committed baseline when cargo-about is unavailable offline.
accepted = [
"MIT",
"MIT-0",
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"Zlib",
"0BSD",
"BSL-1.0",
"Unicode-3.0",
"Unicode-DFS-2016",
"CDLA-Permissive-2.0",
"CC0-1.0",
"Unlicense",
"WTFPL",
]
# cbindgen is MPL-2.0 but it is a BUILD-ONLY codegen tool that never links into a shipped artifact
# (its generated header is not a derivative work), so it is excluded from the notices rather than
# accepted as a linked license.
ignore-build-dependencies = true
ignore-dev-dependencies = true
# Per-crate license-acceptance additions (cargo-about ≥0.6 syntax; the old `[crate.clarify]`
# license-only form fails to deserialize under cargo-about 0.9, which now wants checksummed file
# clarifications — per-crate `accepted` extensions express the same intent without checksums).
#
# r-efi is tri-licensed with an LGPL-2.1-or-later arm; cargo-about resolves OR-expressions to an
# accepted arm on its own (MIT/Apache-2.0 are globally accepted), so it needs no entry. (It is
# also UEFI-target-gated out of every shipped build.)
#
# There is deliberately NO per-crate entry here any more. `ring` used to need one (its licence is an
# AND that includes the OpenSSL licence, which was accepted for that crate alone), but the crypto
# backend moved to aws-lc-rs and the ureq 2 → 3 upgrade removed ring from every target we build.
# aws-lc-sys 0.44's SPDX is an AND of ISC / Apache-2.0 / MIT / BSD-3-Clause / MIT-0 — all globally
# accepted above — and carries no OpenSSL clause, so `OpenSSL` left the global list with ring.