Repository navigation
Phase 1: Manifest Schema, Generator, Validator, and Binary Fetch Scripts - #7
Conversation
…h scripts Create manifest schema (schema/manifest.schema.json), migration script (scripts/migrate_to_manifest.py), checksums/versions generator (scripts/gen_checksums.py), validator (scripts/validate_manifest.py), binary fetchers (scripts/fetch-bins.sh, scripts/fetch-bins.ps1), unit/integration test suite, and CI workflow. Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
- Create reusable workflow .github/workflows/publish-sourceforge.yml with dry_run support, SSH key auth, and automated PR generation - Add scripts/sourceforge_known_hosts pinned host keys for frs.sourceforge.net - Add scripts/update_manifest_entry.py to programmatically update manifest entries and regenerate checksums - Delete legacy transfer.yml and guard purge-history.yml with required 'PURGE' confirmation input - Add tests/test_publish.py and update .github/workflows/ci.yml with yamllint validation Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
- Create reusable workflow .github/workflows/publish-sourceforge.yml with dry_run support, SSH key auth, and automated PR generation - Add scripts/sourceforge_known_hosts pinned host keys for frs.sourceforge.net - Add scripts/update_manifest_entry.py to programmatically update manifest entries and regenerate checksums - Delete legacy transfer.yml and guard purge-history.yml with required 'PURGE' confirmation input - Add tests/test_publish.py with backup/restore cleanup and update .github/workflows/ci.yml with yamllint validation Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
- Create reusable workflow .github/workflows/publish-sourceforge.yml with dry_run support, SSH key auth, and automated PR generation - Add scripts/sourceforge_known_hosts pinned host keys for frs.sourceforge.net - Add scripts/update_manifest_entry.py to programmatically update manifest entries and regenerate checksums - Delete legacy transfer.yml and guard purge-history.yml with required 'PURGE' confirmation input - Add tests/test_publish.py with tmp_path isolation and update .github/workflows/ci.yml with yamllint validation Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
…kflows - Add NKit patch patches/nkit/0001-single-tfm-net10.patch to unify TargetFrameworks to net10.0 for NativeAOT compilation - Replace update-nkit.yml with .github/workflows/build-nkit.yml for NativeAOT single-file builds across OS/arch runners - Update build-saturn-patcher.yml and build-xgdtool.yml to require source_ref and publish via publish-sourceforge.yml - Update update-chdman.yml with version normalisation (mame0289) and dist.integrity check - Update update-binary.yml with input validation regexes and domain allowlist - Update fetch_android_bins.yml with static link check Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
…documentation - Update verify-sourceforge.yml to drive verification directly from manifest.json - Update check-versions.yml to track upstream tags and create/update GitHub issues - Update check-all-versions.yml to fetch binaries dynamically and test execution - Add README.md, LICENSES/README.md, SOURCES.md (GPL corresponding source), and SECURITY.md - Add NKit patch patches/nkit/0001-single-tfm-net10.patch and build-nkit.yml for NativeAOT single-file builds - Add reusable publish-sourceforge.yml pipeline and manifest validation scripts Co-authored-by: ClausValcaTD <193546948+ClausValcaTD@users.noreply.github.com>
PR 1: Phase 1 — Manifest + Scripts
This PR implements Phase 1 of the OpenROM-bins refactoring plan.
Summary of Changes
Manifest Schema (
schema/manifest.schema.json):built-from-source,upstream-release,npm-package), licenses, toolchain, patches, and platform file entries.Migration Script (
scripts/migrate_to_manifest.py):checksums.sha256andversions.jsonintomanifest.json."build_flavor": "legacy-unknown".universal: truefor macOS extract-xiso and xdelta3) and cross-platform shared files (same_asfor Android ARM64 binaries matching Linux ARM64).Checksum & Version Generator (
scripts/gen_checksums.py):checksums.sha256(sorted by path, LF line endings) andversions.jsonfrommanifest.json.Manifest Validator (
scripts/validate_manifest.py):manifest.jsonagainst schema.nkit/subdirs, nonkds), universal/same_as cross-platform constraints, and validates thatchecksums.sha256andversions.jsonare up to date.Binary Fetching Scripts (
scripts/fetch-bins.sh,scripts/fetch-bins.ps1):OPENROM_BINS_BASE_URL), verifies SHA-256 and size againstmanifest.json, sets executable permissions, and returns documented exit codes (0 = Success, 1 = Args/deps, 2 = Manifest/Checksum error, 3 = Download/HTTP error, 4 = Verification mismatch). PowerShell script supports PS 5.1 and PS 7.Test Suite & CI (
tests/test_manifest.py,.github/workflows/ci.yml):Recon Findings & Summary of Findings
checksums.sha256.macos/arm64/extract-xisoandmacos/x86_64/extract-xisohave identical SHA-256 hashes because they are universal binaries (Mach-O executable, fat/universal binary). Same forxdelta3on macOS. Marked asuniversal: trueinmanifest.json.android/arm64-v8a/chdman,ecm,nkit, andunecmhave identical hashes to theirlinux/arm64counterparts (ELF 64-bit aarch64 executables). Marked assame_as: "linux/arm64/..."inmanifest.json.v3.1.0exists in https://github.com/Nanook/NKit.NKitApp/NKitApp.csprojhas<PublishAot>true</PublishAot>and specifies target frameworknet10.0.dotnet publish NKitApp/NKitApp.csproj -c Release -p:TargetFramework=net10.0 -r linux-x64 -p:PublishAot=true), dependency projectsNKit.csproj,NKitStream.csproj,NKitDataStore.csprojwere failing because multi-targeting includednetstandard2.1ornet48.-f net10.0or a light patch to drop legacy TFMs when publishing with AOT resolves the TFM error.ci.ymluse standard versions or pinned SHAs (actions/checkout@v4,actions/setup-python@v5).Verification
pytest -vpasses 5/5 tests.python3 scripts/validate_manifest.pypasses successfully.PR created automatically by Jules for task 16837207595124088434 started by @ClausValcaTD