Skip to content

Fix downgrade sublibrary bounds #759

Fix downgrade sublibrary bounds

Fix downgrade sublibrary bounds #759

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