Fix downgrade sublibrary bounds #757
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Downgrade Sublibraries | |
| on: | |
| pull_request: | |
| branches: | |
| - master | |
| paths-ignore: | |
| - 'docs/**' | |
| push: | |
| branches: | |
| - master | |
| paths-ignore: | |
| - 'docs/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} | |
| jobs: | |
| downgrade-sublibraries: | |
| uses: "SciML/.github/.github/workflows/sublibrary-downgrade.yml@v1" | |
| secrets: "inherit" | |
| with: | |
| julia-version: "lts" | |
| # SymbolicAnalysis skipped: 0.3.x doesn't support Symbolics 7 (required by | |
| # ModelingToolkit 11). Stdlibs and in-repo sublibraries are auto-populated by | |
| # the centralized workflow. | |
| skip: "SymbolicAnalysis" | |
| exclude: "OptimizationQuadDIRECT" | |
| group-env-name: "OPTIMIZATION_TEST_GROUP" | |
| group-env-value: "Core" | |
| # OptimizationQuadDIRECT has an unregistered URL source and is tested below | |
| # with a manifest repair step after downgrade-compat. | |
| downgrade-quaddirect: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: julia-actions/setup-julia@v3 | |
| with: | |
| version: "lts" | |
| - name: "Resolve numeric Julia version for downgrade-compat" | |
| run: echo "JULIA_MM=$(julia --startup-file=no -e 'print(VERSION.major, ".", VERSION.minor)')" >> "$GITHUB_ENV" | |
| - name: "Set sublibrary test group" | |
| run: echo "OPTIMIZATION_TEST_GROUP=Core" >> "$GITHUB_ENV" | |
| - name: "Enumerate Julia standard libraries" | |
| run: | | |
| names="$(julia --startup-file=no -e ' | |
| using Pkg | |
| ns = String[] | |
| for v in values(Pkg.Types.stdlibs()) | |
| push!(ns, v isa AbstractString ? v : first(v)) | |
| end | |
| println(join(sort(unique(ns)), ",")) | |
| ')" | |
| echo "STDLIB_SKIP=$names" >> "$GITHUB_ENV" | |
| - name: "Compute effective downgrade skip list" | |
| run: | | |
| sublibs="" | |
| for d in lib/*/; do | |
| d="${d%/}" | |
| [ -f "$d/Project.toml" ] || continue | |
| name="$(basename "$d")" | |
| if [ -z "$sublibs" ]; then sublibs="$name"; else sublibs="$sublibs,$name"; fi | |
| done | |
| effective="$STDLIB_SKIP" | |
| [ -n "$sublibs" ] && effective="$effective,$sublibs" | |
| src_names="$(julia --startup-file=no -e ' | |
| using TOML | |
| src = get(TOML.parsefile(ARGS[1]), "sources", Dict()) | |
| println(join(collect(keys(src)), ",")) | |
| ' "lib/OptimizationQuadDIRECT/Project.toml")" | |
| [ -n "$src_names" ] && effective="$effective,$src_names" | |
| effective="$effective,SymbolicAnalysis" | |
| echo "EFFECTIVE_SKIP=$effective" >> "$GITHUB_ENV" | |
| - uses: julia-actions/julia-downgrade-compat@v2 | |
| with: | |
| projects: "lib/OptimizationQuadDIRECT" | |
| skip: ${{ env.EFFECTIVE_SKIP }} | |
| julia_version: ${{ env.JULIA_MM }} | |
| - name: "Restore URL-sourced packages" | |
| run: | | |
| julia --startup-file=no --project=lib/OptimizationQuadDIRECT -e ' | |
| using Pkg, TOML | |
| project = TOML.parsefile(joinpath(ARGS[1], "Project.toml")) | |
| deps = get(project, "deps", Dict()) | |
| specs = Pkg.PackageSpec[] | |
| for (pkg, src) in get(project, "sources", Dict()) | |
| src isa AbstractDict || continue | |
| haskey(deps, pkg) || continue | |
| haskey(src, "url") || continue | |
| kwargs = Dict{Symbol, Any}(:name => pkg, :url => src["url"]) | |
| haskey(src, "rev") && (kwargs[:rev] = src["rev"]) | |
| haskey(src, "subdir") && (kwargs[:subdir] = src["subdir"]) | |
| push!(specs, Pkg.PackageSpec(; kwargs...)) | |
| end | |
| isempty(specs) || Pkg.add(specs; preserve = Pkg.PRESERVE_ALL) | |
| ' "lib/OptimizationQuadDIRECT" | |
| - uses: julia-actions/julia-buildpkg@v1 | |
| with: | |
| project: "lib/OptimizationQuadDIRECT" | |
| - uses: julia-actions/julia-runtest@v1 | |
| with: | |
| project: "lib/OptimizationQuadDIRECT" | |
| allow_reresolve: false |