Skip to content

Commit 628b15c

Browse files
authored
only add extensions from one environment (#48558)
(cherry picked from commit b2adb8548d7f2a38dc73ea2de1be271e688a545c)
1 parent ed1ecea commit 628b15c

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

base/loading.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,12 +1109,13 @@ const EXT_DORMITORY_FAILED = ExtensionId[]
11091109

11101110
function insert_extension_triggers(pkg::PkgId)
11111111
pkg.uuid === nothing && return
1112+
extensions_added = Set{PkgId}()
11121113
for env in load_path()
1113-
insert_extension_triggers(env, pkg)
1114+
insert_extension_triggers!(extensions_added, env, pkg)
11141115
end
11151116
end
11161117

1117-
function insert_extension_triggers(env::String, pkg::PkgId)::Union{Nothing,Missing}
1118+
function insert_extension_triggers!(extensions_added::Set{PkgId}, env::String, pkg::PkgId)::Union{Nothing,Missing}
11181119
project_file = env_project_file(env)
11191120
if project_file isa String
11201121
manifest_file = project_file_manifest_path(project_file)
@@ -1132,7 +1133,7 @@ function insert_extension_triggers(env::String, pkg::PkgId)::Union{Nothing,Missi
11321133
extensions === nothing && return
11331134
weakdeps === nothing && return
11341135
if weakdeps isa Dict{String, Any}
1135-
return _insert_extension_triggers(pkg, extensions, weakdeps)
1136+
return _insert_extension_triggers!(extensions_added, pkg, extensions, weakdeps)
11361137
end
11371138

11381139
d_weakdeps = Dict{String, String}()
@@ -1147,18 +1148,21 @@ function insert_extension_triggers(env::String, pkg::PkgId)::Union{Nothing,Missi
11471148
d_weakdeps[dep_name] = uuid
11481149
end
11491150
@assert length(d_weakdeps) == length(weakdeps)
1150-
return _insert_extension_triggers(pkg, extensions, d_weakdeps)
1151+
return _insert_extension_triggers!(extensions_added, pkg, extensions, d_weakdeps)
11511152
end
11521153
end
11531154
end
11541155
end
11551156
return nothing
11561157
end
11571158

1158-
function _insert_extension_triggers(parent::PkgId, extensions::Dict{String, <:Any}, weakdeps::Dict{String, <:Any})
1159+
function _insert_extension_triggers!(extensions_added::Set{PkgId}, parent::PkgId, extensions::Dict{String, <:Any}, weakdeps::Dict{String, <:Any})
11591160
for (ext::String, triggers::Union{String, Vector{String}}) in extensions
11601161
triggers isa String && (triggers = [triggers])
11611162
id = PkgId(uuid5(parent.uuid, ext), ext)
1163+
# Only add triggers for an extension from one env.
1164+
id in extensions_added && continue
1165+
push!(extensions_added, id)
11621166
gid = ExtensionId(id, parent, 1 + length(triggers))
11631167
trigger1 = get!(Vector{ExtensionId}, EXT_DORMITORY, parent)
11641168
push!(trigger1, gid)

0 commit comments

Comments
 (0)