Files
shoes/scripts/check-release-notices.py
cfal abf24533a9 remove unused mobile SDK wrappers (#207)
* build: remove distributable mobile SDK wrappers

Remove the Android Kotlin/Gradle wrapper, AAR and XCFramework packaging, and mobile SDK release publishing.

Preserve Rust JNI/C embedding and native cross-compilation CI, with checks for library outputs and the generated C header. Document app-owned integration and retain desktop release-notice verification.

* ci: verify mobile header after locked native builds

cbindgen resolves Cargo metadata without --locked and can update Cargo.lock. Run it after the native builds so it cannot hide a stale lockfile from their checks.

* docs: remove obsolete mobile wrapper examples

Remove examples referencing nonexistent JNI wrapper methods and clarify the app-owned callback contract. Keep native mobile support unchanged.

* docs: clarify native mobile CI coverage
2026-10-22 03:08:57 -04:00

32 lines
968 B
Python

#!/usr/bin/env python3
"""Checks that release artifacts reproduce the repository's dependency notices."""
import argparse
from pathlib import Path
import tarfile
ROOT = Path(__file__).resolve().parents[1]
def expected_notices():
names = (
"THIRD_PARTY_NOTICES.md", "licenses/dependencies.txt",
"licenses/MPL-2.0.txt", "licenses/gotatun-CLOUDFLARE.txt",
)
return {name: (ROOT / name).read_bytes() for name in names}
def check(artifact):
expected = expected_notices()
with tarfile.open(artifact) as archive:
actual = {name: archive.extractfile(name).read() for name in expected}
for name, contents in expected.items():
if actual[name] != contents:
raise ValueError(f"{artifact}: incorrect {name}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("artifact", type=Path, help="release tarball")
check(parser.parse_args().artifact)