Add variant field and NoGPL build support#52
Add variant field and NoGPL build support#52gbaraldi wants to merge 4 commits intoJuliaLang:mainfrom
Conversation
Add support for cataloging Julia's "nogpl" build variants (builds
without GPL-licensed dependencies) hosted on the julialang-nogpl S3
bucket.
- Add `variant` field ("default"/"nogpl") to schema and file metadata
- Add `NoGPL{T}` parametric wrapper type with dispatch methods for
URL generation matching the nogpl bucket structure
- Add `get_tag_commits()` to resolve version tags to git commit hashes
(nogpl filenames use short commit hashes instead of version numbers)
- Add nogpl platform loop in `main()` covering Linux x64, macOS
x64/aarch64, and Windows x64
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract shared download/hash/metadata logic into `process_download!` helper to eliminate ~80 lines of duplication between default and nogpl platform loops - Add .asc signature checking for nogpl builds (the S3 bucket has .asc files for nogpl archives) - Use string(version) as meta dict key to fix compatibility with newer JSON.jl which requires explicit key serialization Verified: output matches upstream versions.json with 0 mismatches across 2,147 files and 190 versions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of adding a variant field to the shared schema, generate separate versions files per bucket: - julialang-s3: versions.json (unchanged schema, no variant field) - julialang-nogpl: versions.v1.json (same schema, separate file) This keeps existing consumers unaffected. The process_download! refactor is retained to share download/hash/metadata logic between main() and main_nogpl(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of adding a variant field to the shared schema, generate separate versions files per bucket: - julialang-s3: versions.json (unchanged schema) - julialang-nogpl: versions.v1.json (same schema, separate file) Extract process_download! and _build_versions helpers to share download/hash/metadata logic between main() and main_nogpl(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@fredrikekre could you take a look? |
|
Can you update the PR description to reflect the new state of the PR, namely that we have different files for different buckets? |
|
Thinking more on this, I'm a little worried that it might get unwieldy to have multiple different Of course, we can't just add this directly to I think we should do what we discussed previously: Start versioning So then we'll have a single
Note: The builds don't need to be done from scratch. There should be a single CI job that collects all the info for all Julia versions and all S3 buckets, and then that job can output multiple @fredrikekre @gbaraldi What do you think? |
Summary
variantfield ("default"/"nogpl") to the JSON schema and file metadata, so consumers can distinguish build variantsNoGPL{T}parametric wrapper type with dispatch methods for generating download URLs matching thejulialang-nogplS3 bucket structure (bin-nogpl/{os}nogpl/{arch}/{major.minor}/julia-{hash}-{tar_os}.{ext})get_tag_commits()to resolve version tags to 10-char git commit short hashes via the GitHub tags API (nogpl filenames use commit hashes, not version numbers)main()for nogpl builds covering Linux x64, macOS x64/aarch64, and Windows x64Test plan
julia --project test/runtests.jl)versions.jsonvalidates against updatedschema.json🤖 Generated with Claude Code