Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions base/loading.jl
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,8 @@ function locate_package_env(pkg::PkgId, stopenv::Union{String, Nothing}=nothing)
path = manifest_uuid_path(env, pkg)
# missing is used as a sentinel to stop looking further down in envs
if path === missing
# Before stopping, try stdlib fallback
is_stdlib(pkg) && @goto stdlib_fallback
path = nothing
@goto done
end
Expand All @@ -474,6 +476,7 @@ function locate_package_env(pkg::PkgId, stopenv::Union{String, Nothing}=nothing)
stopenv == env && break
end
end
@label stdlib_fallback
# Allow loading of stdlibs if the name/uuid are given
# e.g. if they have been explicitly added to the project/manifest
mbypath = manifest_uuid_path(Sys.STDLIB, pkg)
Expand Down
11 changes: 10 additions & 1 deletion test/loading.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1539,12 +1539,21 @@ end
mktempdir() do depot
# This manifest has a LibGit2 entry that is missing LibGit2_jll, which should be
# handled by falling back to the stdlib Project.toml for dependency truth.
badmanifest_test_dir = joinpath(@__DIR__, "project", "deps", "BadStdlibDeps.jl")
badmanifest_test_dir = joinpath(@__DIR__, "project", "deps", "BadStdlibDeps")
@test success(addenv(
`$(Base.julia_cmd()) --project=$badmanifest_test_dir --startup-file=no -e 'using LibGit2'`,
"JULIA_DEPOT_PATH" => depot * Base.Filesystem.pathsep(),
))
end
mktempdir() do depot
# This manifest has a LibGit2 entry that has a LibGit2_jll with a git-tree-hash1
# which simulates an old manifest where LibGit2_jll was not a stdlib
badmanifest_test_dir2 = joinpath(@__DIR__, "project", "deps", "BadStdlibDeps2")
@test success(addenv(
`$(Base.julia_cmd()) --project=$badmanifest_test_dir2 --startup-file=no -e 'using LibGit2'`,
"JULIA_DEPOT_PATH" => depot * Base.Filesystem.pathsep(),
))
end
end

@testset "code coverage disabled during precompilation" begin
Expand Down
54 changes: 54 additions & 0 deletions test/project/deps/BadStdlibDeps2/Manifest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This file is machine-generated - editing it directly is not advised

julia_version = "1.12.0-DEV"
manifest_format = "2.0"
project_hash = "dc9d33b0ee13d9466bdb75b8d375808a534a79ec"

[[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.11.0"

[[deps.LibGit2]]
deps = ["NetworkOptions", "Printf", "SHA", "LibGit2_jll"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
version = "1.11.0"

# This is an stdlib but intentionally has a git-tree-sha1 because
# we are emulating that the manifest comes from a version where
# LibGit2_jll was not an stdlib
[[deps.LibGit2_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
git-tree-sha1 = "1111111111111111111111111111111111111111"
uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
version = "1.8.0+0"

[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.11.0+1"

[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
version = "1.11.0"

[[deps.MbedTLS_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.28.6+1"

[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
version = "1.2.0"

[[deps.Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
version = "1.11.0"

[[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
version = "0.7.0"

[[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
version = "1.11.0"
2 changes: 2 additions & 0 deletions test/project/deps/BadStdlibDeps2/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[deps]
LibGit2 = "76f85450-5226-5b5a-8eaa-529ad045b433"