From 24a227b48f8db91bb03a17265648069897a1c050 Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Tue, 6 Aug 2024 06:23:15 -0400 Subject: [PATCH] Prevent stdlib compat entries from breaking old Julia versions (#1324) * Prevent stdlib compat entries from breaking old Julia versions * Update AutoBuild.jl * Fix tests * Fix tests * Fix tests --- src/AutoBuild.jl | 12 +++++++----- test/basic.jl | 8 ++++---- test/jll.jl | 6 +++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/AutoBuild.jl b/src/AutoBuild.jl index 544e95a11..dbb04a66f 100644 --- a/src/AutoBuild.jl +++ b/src/AutoBuild.jl @@ -1663,8 +1663,10 @@ function build_project_dict(name, version, dependencies::Array{<:AbstractDepende "JLLWrappers" => "$(jllwrappers_compat)", "julia" => "$(julia_compat)", # Stdlibs always used, we need to have compat bounds also for them. - "Libdl" => "1", - "Artifacts" => "1", + # The "< 0.0.1" trick is needed to prevent `Pkg.test` from breaking + # on older Julia versions. + "Libdl" => "< 0.0.1, 1", + "Artifacts" => "< 0.0.1, 1", ) ) @@ -1689,15 +1691,15 @@ function build_project_dict(name, version, dependencies::Array{<:AbstractDepende if minimum_compat(julia_compat) < v"1.6" # `Pkg` is used in JLLWrappers only when we require Julia v1.5-. project["deps"]["Pkg"] = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" - project["compat"]["Pkg"] = "1" + project["compat"]["Pkg"] = "< 0.0.1, 1" end if lazy_artifacts project["deps"]["LazyArtifacts"] = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - project["compat"]["LazyArtifacts"] = "1" + project["compat"]["LazyArtifacts"] = "< 0.0.1, 1" end if !isempty(augment_platform_block) project["deps"]["TOML"] = "fa267f1f-6049-4f14-aa54-33bafae1ed76" - project["compat"]["TOML"] = "1" + project["compat"]["TOML"] = "< 0.0.1, 1" end return project diff --git a/test/basic.jl b/test/basic.jl index 716415099..d289fdafe 100644 --- a/test/basic.jl +++ b/test/basic.jl @@ -199,7 +199,7 @@ end @test dict["name"] == "$(name)_jll" @test dict["version"] == "1.0.0" @test dict["uuid"] == "8fcd9439-76b0-55f4-a525-bad0597c05d8" - @test dict["compat"] == Dict{String,Any}("julia" => "1.0", "JLLWrappers" => "1.2.0", "Pkg" => "1", "Libdl" => "1", "Artifacts" => "1") + @test dict["compat"] == Dict{String,Any}("julia" => "1.0", "JLLWrappers" => "1.2.0", "Pkg" => "< 0.0.1, 1", "Libdl" => "< 0.0.1, 1", "Artifacts" => "< 0.0.1, 1") @test all(in.( ( "Pkg" => "44cfe95a-1eb2-52ea-b672-e2afdf69b78f", @@ -224,16 +224,16 @@ end # Ensure passing a Julia dependency bound works dict = build_project_dict(name, version, dependencies, "1.4") - @test dict["compat"] == Dict{String,Any}("julia" => "1.4", "JLLWrappers" => "1.2.0", "Pkg" => "1", "Libdl" => "1", "Artifacts" => "1") + @test dict["compat"] == Dict{String,Any}("julia" => "1.4", "JLLWrappers" => "1.2.0", "Pkg" => "< 0.0.1, 1", "Libdl" => "< 0.0.1, 1", "Artifacts" => "< 0.0.1, 1") dict = build_project_dict(name, version, dependencies, "~1.4") - @test dict["compat"] == Dict{String,Any}("julia" => "~1.4", "JLLWrappers" => "1.2.0", "Pkg" => "1", "Libdl" => "1", "Artifacts" => "1") + @test dict["compat"] == Dict{String,Any}("julia" => "~1.4", "JLLWrappers" => "1.2.0", "Pkg" => "< 0.0.1, 1", "Libdl" => "< 0.0.1, 1", "Artifacts" => "< 0.0.1, 1") @test_throws ErrorException build_project_dict(name, version, dependencies, "nonsense") # Ensure passing a JLLWrappers dependency bound works dict = build_project_dict(name, version, dependencies; jllwrappers_compat="1.4.0") - @test dict["compat"] == Dict{String,Any}("julia" => "1.0", "JLLWrappers" => "1.4.0", "Pkg" => "1", "Libdl" => "1", "Artifacts" => "1") + @test dict["compat"] == Dict{String,Any}("julia" => "1.0", "JLLWrappers" => "1.4.0", "Pkg" => "< 0.0.1, 1", "Libdl" => "< 0.0.1, 1", "Artifacts" => "< 0.0.1, 1") # Ensure passing compat bounds works dependencies = [ diff --git a/test/jll.jl b/test/jll.jl index c09674187..035f77973 100644 --- a/test/jll.jl +++ b/test/jll.jl @@ -29,9 +29,9 @@ module TestJLL end "julia" => "1.0", "XZ_jll" => "=2.4.6", "JLLWrappers" => "1.2.0", - "Libdl" => "1", - "Artifacts" => "1", - "Pkg" => "1", + "Libdl" => "< 0.0.1, 1", + "Artifacts" => "< 0.0.1, 1", + "Pkg" => "< 0.0.1, 1", ) @test project["version"] == "1.3.5" # Make sure BuildDependency's don't find their way to the project