fix flatpak build: add checksums and update to GNOME 49

- Generate cargo checksum files for vendored sources
- Add checksums.json for build-time checksum creation
- Update runtime to GNOME 49 for Rust 1.93+ support
- Fix archive-type to tar-gzip for flatpak-builder

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jonas Heinrich 2026-03-27 23:06:33 +01:00
parent 256da4b440
commit 09b737b901
4 changed files with 428 additions and 331 deletions

View file

@ -3,7 +3,7 @@
Usage:
python3 build-aux/flatpak-cargo-generator.py [Cargo.lock] \
> build-aux/cargo-sources.json
-o build-aux/cargo-sources.json
"""
import json
@ -23,12 +23,25 @@ REGISTRY_SOURCE = "registry+https://github.com/rust-lang/crates.io-index"
def main() -> None:
lockfile = sys.argv[1] if len(sys.argv) > 1 else "Cargo.lock"
# Parse arguments
lockfile = "Cargo.lock"
output_file = None
args = sys.argv[1:]
i = 0
while i < len(args):
if args[i] == "-o" and i + 1 < len(args):
output_file = args[i + 1]
i += 2
else:
lockfile = args[i]
i += 1
with open(lockfile, "rb") as f:
lock = tomllib.load(f)
sources = []
checksums = {}
for pkg in lock.get("package", []):
name = pkg["name"]
@ -38,17 +51,30 @@ def main() -> None:
# Only vendor packages from crates.io (they have a checksum)
if source == REGISTRY_SOURCE and checksum:
dest = f"cargo-vendor/{name}-{version}"
sources.append(
{
"type": "archive",
"archive-type": "tar-gz",
"archive-type": "tar-gzip",
"url": f"{CRATES_IO_DL}/{name}/{version}/download",
"sha256": checksum,
"dest": f"cargo-vendor/{name}-{version}",
"dest": dest,
}
)
checksums[f"{name}-{version}"] = checksum
print(json.dumps(sources, indent=2))
output = json.dumps(sources, indent=2)
if output_file:
with open(output_file, "w") as f:
f.write(output)
# Also write checksums file
checksums_file = output_file.replace(".json", "-checksums.json")
with open(checksums_file, "w") as f:
json.dump(checksums, f)
print(f"Generated {output_file} and {checksums_file}")
else:
print(output)
if __name__ == "__main__":