-
Notifications
You must be signed in to change notification settings - Fork 1.5k
meshroom: Update to version 2025.1.0, fix checkver & autoupdate #16462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughManifest updated: version bumped to 2025.1.0; release source switched from Fosshub to Zenodo; download URL, extract_dir, and hash format changed to md5; homepage and license fields normalized; checkver and autoupdate now use URL/jsonpath/regex to parse GitHub/Zenodo responses. Changes
Sequence Diagram(s)sequenceDiagram
participant CI as CI / Updater
participant Manifest as manifest (checkver/autoupdate)
participant GitHub as GitHub Releases API
participant Zenodo as Zenodo record
CI->>Manifest: trigger update check
Manifest->>GitHub: fetch releases JSON (Releases API)
GitHub-->>Manifest: releases JSON
Manifest->>Zenodo: derive $matchDoi/$matchName, request Zenodo record
Zenodo-->>Manifest: Zenodo JSON (file list + md5)
Manifest->>CI: provide version, templated Zenodo download URL, extracted md5
CI->>CI: download & install Meshroom-<version>-Windows.zip (extract_dir)
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/meshroom.json(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-16T15:59:21.258Z
Learnt from: o-l-a-v
PR: ScoopInstaller/Extras#16349
File: bucket/fvim.json:45-49
Timestamp: 2025-10-16T15:59:21.258Z
Learning: In Scoop manifests, the `autoupdate.url` and `autoupdate.architecture.<arch>.url` fields must be valid URIs according to the JSON schema (defined with `"format": "uri"`). Variables like `$matchUrlx64` that contain only path segments must be combined with a base URL (e.g., `https://github.com/.../releases/download/`) to form a complete valid URI.
Applied to files:
bucket/meshroom.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: WindowsPowerShell
- GitHub Check: PullRequestHandler
🔇 Additional comments (3)
bucket/meshroom.json (3)
30-33: Verify regex pattern matches Zenodo HTML structure.The hash extraction regex (
(?msi)>$basename</a>.+?>md5:$md5) assumes the Zenodo record page displays filenames as clickable links followed by checksums in the formatmd5:<hash>. While the PR objectives note successful testing, please ensure this pattern will remain stable across Zenodo UI updates.Recommended: Add a comment in the manifest documenting the expected HTML structure so future maintainers understand the dependency.
5-8: License metadata improved.The upgrade from a plain license string to an object with SPDX identifier and license file URL is a best practice and improves clarity for tooling and end-users.
11-13: URL migration to Zenodo and extract_dir update look correct.The new Zenodo URL is properly structured, and
extract_dir: "Meshroom-2025.1.0"aligns with the archive contents. The URI format complies with JSON schema requirements.
|
All changes look good. Wait for review from human collaborators. meshroom
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
bucket/meshroom.json (2)
1-40: Dynamic record ID extraction addresses the past critical issue—well done.The hardcoded Zenodo record ID concern from the previous review is now resolved. By extracting
$matchDoifrom GitHub release notes, the manifest no longer couples to a specific version's record ID. This enables autoupdate to handle future versions automatically, provided release notes follow the expected format.To ensure long-term maintainability and prevent silent autoupdate failures:
- Document the GitHub release note format in a comment or CONTRIBUTING guide so future maintainers know they must include
[Meshroom-VERSION-Windows](https://zenodo.org/records/RECORD_ID/files/FILENAME.zip)in release body.- Monitor Zenodo API changes (see recommendation above for hash extraction) to ensure HTML scraping remains reliable.
- Add defensive logging or error reporting if regex extraction fails, so users get meaningful feedback rather than silent autoupdate breakage.
The implementation is pragmatic given Scoop's constraints. The PR testing confirms the current approach works.
28-39: Consider replacing HTML regex scraping with Zenodo REST API for robust hash extraction.The current hash extraction (lines 32-35) relies on HTML regex scraping, which is fragile. Zenodo's Records REST API (GET /api/records/{id}) returns file metadata including checksums in format "md5:", providing a more reliable alternative.
Suggested improvement: Replace the regex-based extraction with an API call to
https://zenodo.org/api/records/$matchDoi, parse the JSON response, and extract the checksum from the matching file object. This eliminates dependence on HTML structure changes and is more maintainable.If staying with regex scraping, add a code comment documenting the expected HTML format for future maintainers.
Note: Current implementation works (confirmed by PR testing), so this is a forward-looking maintainability improvement rather than a critical issue.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/meshroom.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (2)
bucket/meshroom.json (2)
2-15: Version, homepage, license, and architecture updates look good.Version and extract_dir correctly reflect the new Zenodo archive structure; license now uses structured SPDX format with source link; MD5 hash is appropriate for the ~9.3 GB installer size.
23-27: Verify that$versionvariable correctly captures the unnamed regex group.The checkver regex captures version in an unnamed group
([\\d.]+). According to Scoop's autoupdate documentation, unnamed groups map to$match1,$match2, etc., while$versionis a special variable. Verify that the autoupdate line 36 correctly references$versionand that this variable receives the captured version from the regex. If$versiondoesn't automatically populate from the first unnamed group, the extract_dir substitution will fail.You can verify this by checking the Scoop documentation or testing a future release:
- Confirm that GitHub release notes will consistently follow the format
[...-VERSION-Windows](...records/ID/files/FILENAME)- If the format might vary, consider adding a secondary pattern or documentation for release maintainers
Given that the PR testing logs show successful autoupdate detection, this may already be working correctly—please confirm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
bucket/meshroom.json (1)
23-26: Add an explanatory comment for the checkver regex pattern—the format must be maintained upstream.The
checkverregex expects GitHub release notes to include a Zenodo link in markdown format:[VERSION-... Windows](zenodo.org/records/XXXXX/files/FILENAME). This is not documented in the manifest.Add a brief comment above the regex explaining the expected format, so future maintainers understand the dependency:
"checkver": { "url": "https://api.github.com/repositories/34405381/releases/latest", "jsonpath": "$.body", "regex": "(?i)\\[[^[]+-([\\d.]+)[^[]+Windows\\]\\(.+records/(?<doi>[\\d]+)/files/(?<name>[^]]+)\\)" }Becomes:
"checkver": { "url": "https://api.github.com/repositories/34405381/releases/latest", "jsonpath": "$.body", "regex": "Expects release body: [VERSION Windows](zenodo.org/records/ID/files/FILENAME)", "regex": "(?i)\\[[^[]+-([\\d.]+)[^[]+Windows\\]\\(.+records/(?<doi>[\\d]+)/files/(?<name>[^]]+)\\)" }Verify with Meshroom maintainers that all future releases will include the Zenodo link in this format. If they cannot commit to this, the autoupdate will silently fail for new versions.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/meshroom.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (2)
bucket/meshroom.json (2)
4-8: Metadata normalization looks good.Homepage now correctly omits the trailing slash, and the license is properly formatted with SPDX identifier and URL. This improves manifest consistency.
31-35: Verification complete—regex pattern correctly matches Zenodo API response format.The regex pattern
(?msi)\"$basename\".+?\"md5:$md5\"successfully extracts the MD5 checksum from the actual Zenodo API response. Testing against record 16887472 confirms the pattern matches the expected format where the filename (stored in thekeyfield) is followed by the checksum value in the format"md5:...". The pattern handles multiple files correctly, and no edge cases were identified in the API response structure.
|
/verify |
|
All changes look good. Wait for review from human collaborators. meshroom
|
z-Fng
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Summary
Updates
meshroomto version 2025.1.0 and switches the download source from FossHub to Zenodo, which now hosts the official release archives. Also improves license metadata and adjusts extraction paths accordingly.Related issues or pull requests
www.fosshub.com#16460Changes
www.fosshub.comtozenodo.orghashto MD5 checksum (as provided by Zenodo)extract_dirfor the new archive structurelicensefield with SPDX identifier and URLautoupdateto reference the new Zenodo record page and regex-based hash detectionNotes
www.fosshub.comlinks are no longer valid for direct downloads and now return HTML pages instead of the actual archives.Testing
<manifest-name[@version]|chore>: <general summary of the pull request>Summary by CodeRabbit
Chores
New Features