From 2fd6cb160992cf2aa650bf3841f5f333a1e22a27 Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Mon, 15 Sep 2025 12:27:44 +1200 Subject: [PATCH] add missing file, oops --- live-build/snap-seed-missing-providers.py | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 live-build/snap-seed-missing-providers.py diff --git a/live-build/snap-seed-missing-providers.py b/live-build/snap-seed-missing-providers.py new file mode 100755 index 00000000..3f15cc6d --- /dev/null +++ b/live-build/snap-seed-missing-providers.py @@ -0,0 +1,53 @@ +#!/usr/bin/python3 + +""" +Usage: snap-seed-add-providers $SEED_DIR + +Check the snaps referenced by the $SEED_DIR/seed.yaml and print any +missing providers. + +""" + +import contextlib +import pathlib +import subprocess +import sys +import tempfile +import yaml + + +@contextlib.contextmanager +def mounted(thing, target): + subprocess.run(["mount", "-r", thing, target], check=True) + try: + yield + finally: + subprocess.run(["umount", target], check=True) + + +def main(argv): + seed_dir = pathlib.Path(argv[0]) + assert seed_dir.is_dir() + with seed_dir.joinpath("seed.yaml").open() as fp: + seed = yaml.safe_load(fp) + snap_files = set() + snap_names = set() + for snap_info in seed["snaps"]: + snap_files.add(snap_info["file"]) + snap_names.add(snap_info["name"]) + tempdir = pathlib.Path(tempfile.mkdtemp()) + for snap_file in snap_files: + snap = seed_dir.joinpath("snaps", snap_file) + with mounted(snap, tempdir): + with tempdir.joinpath("meta/snap.yaml").open() as fp: + metadata = yaml.safe_load(fp) + for plug_name, plug_info in metadata.get("plugs", {}).items(): + if plug_info.get("interface") == "content": + default_provider = plug_info.get("default-provider") + if default_provider and default_provider not in snap_names: + print(default_provider) + snap_names.add(default_provider) + + +if __name__ == "__main__": + main(sys.argv[1:])