Skip to content

Commit 9be3c85

Browse files
authored
only load extensions once dependencies have finished loading (#47927)
1 parent 427432e commit 9be3c85

File tree

7 files changed

+27
-5
lines changed

7 files changed

+27
-5
lines changed

base/loading.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ function run_extension_callbacks(; force::Bool=false)
11021102
for extid in EXT_DORMITORY
11031103
extid.succeeded && continue
11041104
!force && extid.triggered && continue
1105-
if all(x -> haskey(Base.loaded_modules, x), extid.triggers)
1105+
if all(x -> haskey(Base.loaded_modules, x) && !haskey(package_locks, x), extid.triggers)
11061106
ext_not_allowed_load = nothing
11071107
extid.triggered = true
11081108
# It is possible that some of the triggers were loaded in an environment

test/loading.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,8 +998,8 @@ end
998998
push!(empty!(DEPOT_PATH), joinpath(tmp, "depot"))
999999

10001000
proj = joinpath(@__DIR__, "project", "Extensions", "HasDepWithExtensions.jl")
1001-
for i in 1:2 # Once when requiring precomilation, once where it is already precompiled
1002-
cmd = `$(Base.julia_cmd()) --project=$proj --startup-file=no -e '
1001+
for compile in (`--compiled-modules=no`, ``, ``) # Once when requiring precomilation, once where it is already precompiled
1002+
cmd = `$(Base.julia_cmd()) $compile --project=$proj --startup-file=no -e '
10031003
begin
10041004
using HasExtensions
10051005
# Base.get_extension(HasExtensions, :Extension) === nothing || error("unexpectedly got an extension")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
name = "ExtDep"
22
uuid = "fa069be4-f60b-4d4c-8b95-f8008775090c"
33
version = "0.1.0"
4+
5+
[deps]
6+
SomePackage = "678608ae-7bb3-42c7-98b1-82102067a3d8"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
module ExtDep
22

3+
# loading this package makes the check for loading extensions trigger
4+
# which tests #47921
5+
using SomePackage
6+
37
struct ExtDepStruct end
48

59
end # module ExtDep

test/project/Extensions/HasDepWithExtensions.jl/Manifest.toml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
julia_version = "1.10.0-DEV"
44
manifest_format = "2.0"
5-
project_hash = "7cbe1857ecc6692a8cc8be428a5ad5073531ff98"
5+
project_hash = "d523b3401f72a1ed34b7b43749fd2655c6b78542"
66

77
[[deps.ExtDep]]
8+
deps = ["SomePackage"]
89
path = "../ExtDep.jl"
910
uuid = "fa069be4-f60b-4d4c-8b95-f8008775090c"
1011
version = "0.1.0"
@@ -15,11 +16,16 @@ uuid = "55982ee5-2ad5-4c40-8cfe-5e9e1b01500d"
1516
version = "0.1.0"
1617

1718
[[deps.HasExtensions]]
18-
weakdeps = ["ExtDep", "ExtDep2"]
1919
path = "../HasExtensions.jl"
2020
uuid = "4d3288b3-3afc-4bb6-85f3-489fffe514c8"
2121
version = "0.1.0"
22+
weakdeps = ["ExtDep", "ExtDep2"]
2223

2324
[deps.HasExtensions.extensions]
2425
Extension = "ExtDep"
2526
ExtensionFolder = ["ExtDep", "ExtDep2"]
27+
28+
[[deps.SomePackage]]
29+
path = "../SomePackage"
30+
uuid = "678608ae-7bb3-42c7-98b1-82102067a3d8"
31+
version = "0.1.0"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
name = "SomePackage"
2+
uuid = "678608ae-7bb3-42c7-98b1-82102067a3d8"
3+
authors = ["Kristoffer <[email protected]>"]
4+
version = "0.1.0"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module SomePackage
2+
3+
greet() = print("Hello World!")
4+
5+
end # module SomePackage

0 commit comments

Comments
 (0)