Skip to content

Commit dbea5f0

Browse files
committed
only use the default sysimage stdlibs, not the ones for the current sysimage
1 parent a53ebb6 commit dbea5f0

File tree

1 file changed

+69
-5
lines changed

1 file changed

+69
-5
lines changed

src/PackageCompiler.jl

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,72 @@ function source_path(ctx, pkg)
9393
end
9494

9595
const _STDLIBS = readdir(Sys.STDLIB)
96-
sysimage_modules() = Base._sysimage_modules
97-
stdlibs_in_sysimage() = filter(pkg -> pkg.name in _STDLIBS, sysimage_modules())
96+
97+
# Hardcoded list of stdlibs in the default sysimage for each Julia version
98+
function default_sysimage_stdlibs()
99+
if VERSION < v"1.11"
100+
# Julia 1.10
101+
return [
102+
Base.PkgId(Base.UUID("29816b5a-b9ab-546f-933c-edad1886dfa8"), "LibSSH2_jll"),
103+
Base.PkgId(Base.UUID("4536629a-c528-5b80-bd46-f80d51c5b363"), "OpenBLAS_jll"),
104+
Base.PkgId(Base.UUID("8e850ede-7688-5339-a07c-302acd2aaf8d"), "nghttp2_jll"),
105+
Base.PkgId(Base.UUID("9e88b42a-f829-5b0c-bbe9-9e923198166b"), "Serialization"),
106+
Base.PkgId(Base.UUID("e37daf67-58a4-590a-8e99-b0245dd2ffc5"), "LibGit2_jll"),
107+
Base.PkgId(Base.UUID("8f399da3-3557-5675-b5ff-fb832c97cbdb"), "Libdl"),
108+
Base.PkgId(Base.UUID("ea8e919c-243c-51af-8825-aaa63cd721ce"), "SHA"),
109+
Base.PkgId(Base.UUID("f43a241f-c20a-4ad4-852c-f6b1247861c6"), "Downloads"),
110+
Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg"),
111+
Base.PkgId(Base.UUID("7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"), "FileWatching"),
112+
Base.PkgId(Base.UUID("56f22d72-fd6d-98f1-02f0-08ddc0907c33"), "Artifacts"),
113+
Base.PkgId(Base.UUID("2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"), "Base64"),
114+
Base.PkgId(Base.UUID("ade2ca70-3891-5945-98fb-dc099432e06a"), "Dates"),
115+
Base.PkgId(Base.UUID("b77e0a4c-d291-57a0-90e8-8db25a27a240"), "InteractiveUtils"),
116+
Base.PkgId(Base.UUID("8e850b90-86db-534c-a0d3-1478176c7d93"), "libblastrampoline_jll"),
117+
Base.PkgId(Base.UUID("d6f4376e-aef5-505a-96c1-9c027394607a"), "Markdown"),
118+
Base.PkgId(Base.UUID("3f19e933-33d8-53b3-aaab-bd5110c3b7a0"), "p7zip_jll"),
119+
Base.PkgId(Base.UUID("4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"), "Unicode"),
120+
Base.PkgId(Base.UUID("cf7118a7-6976-5b1a-9a39-7adc72f591a4"), "UUIDs"),
121+
Base.PkgId(Base.UUID("14a3606d-f60d-562e-9121-12d972cd8159"), "MozillaCACerts_jll"),
122+
Base.PkgId(Base.UUID("deac9b47-8bc7-5906-a0fe-35ac56dc84c0"), "LibCURL_jll"),
123+
Base.PkgId(Base.UUID("fa267f1f-6049-4f14-aa54-33bafae1ed76"), "TOML"),
124+
Base.PkgId(Base.UUID("8bf52ea8-c179-5cab-976a-9e18b702a9bc"), "CRC32c"),
125+
Base.PkgId(Base.UUID("56ddb016-857b-54e1-b83d-db4d58db5568"), "Logging"),
126+
Base.PkgId(Base.UUID("3fa0cd96-eef1-5676-8a61-b3b8758bbffb"), "REPL"),
127+
Base.PkgId(Base.UUID("c8ffd9c3-330d-5841-b78e-0817d7145fa1"), "MbedTLS_jll"),
128+
Base.PkgId(Base.UUID("b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"), "LibCURL"),
129+
Base.PkgId(Base.UUID("ca575930-c2e3-43a9-ace4-1e988b2c1908"), "NetworkOptions"),
130+
Base.PkgId(Base.UUID("a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"), "Tar"),
131+
Base.PkgId(Base.UUID("76f85450-5226-5b5a-8eaa-529ad045b433"), "LibGit2"),
132+
Base.PkgId(Base.UUID("a63ad114-7e13-5084-954f-fe012c677804"), "Mmap"),
133+
Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra"),
134+
Base.PkgId(Base.UUID("9a3f8284-a2c9-5f02-9a11-845980a1fd5c"), "Random"),
135+
Base.PkgId(Base.UUID("6462fe0b-24de-5631-8697-dd941f90decc"), "Sockets"),
136+
Base.PkgId(Base.UUID("9fa8497b-333b-5362-9e8d-4d0656e87820"), "Future"),
137+
Base.PkgId(Base.UUID("de0858da-6303-5e67-8744-51eddeeeb8d7"), "Printf"),
138+
Base.PkgId(Base.UUID("0dad84c5-d112-42e6-8d28-ef12dabb789f"), "ArgTools"),
139+
]
140+
else
141+
# Julia 1.11, 1.12, 1.13+
142+
stdlibs = [
143+
Base.PkgId(Base.UUID("4536629a-c528-5b80-bd46-f80d51c5b363"), "OpenBLAS_jll"),
144+
Base.PkgId(Base.UUID("8f399da3-3557-5675-b5ff-fb832c97cbdb"), "Libdl"),
145+
Base.PkgId(Base.UUID("ea8e919c-243c-51af-8825-aaa63cd721ce"), "SHA"),
146+
Base.PkgId(Base.UUID("7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"), "FileWatching"),
147+
Base.PkgId(Base.UUID("56f22d72-fd6d-98f1-02f0-08ddc0907c33"), "Artifacts"),
148+
Base.PkgId(Base.UUID("8e850b90-86db-534c-a0d3-1478176c7d93"), "libblastrampoline_jll"),
149+
Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra"),
150+
Base.PkgId(Base.UUID("9a3f8284-a2c9-5f02-9a11-845980a1fd5c"), "Random"),
151+
Base.PkgId(Base.UUID("6462fe0b-24de-5631-8697-dd941f90decc"), "Sockets"),
152+
]
153+
# Julia 1.13+ adds CompilerSupportLibraries_jll as a transitive dependency of OpenBLAS_jll
154+
if VERSION >= v"1.13-"
155+
push!(stdlibs, Base.PkgId(Base.UUID("e66e0078-7015-5450-92f7-15fbd957f2ae"), "CompilerSupportLibraries_jll"))
156+
end
157+
return stdlibs
158+
end
159+
end
160+
161+
stdlibs_in_default_sysimage() = default_sysimage_stdlibs()
98162

99163
# TODO: Also check UUIDs for stdlibs, not only names<
100164
function gather_stdlibs_project(ctx)
@@ -642,7 +706,7 @@ function create_sysimage(packages::Union{Nothing, Symbol, Vector{String}, Vector
642706

643707
# Add stdlibs to packages_sysimg when building from fresh base sysimage
644708
if !incremental && !filter_stdlibs
645-
union!(packages_sysimg, stdlibs_in_sysimage())
709+
union!(packages_sysimg, stdlibs_in_default_sysimage())
646710
end
647711

648712
# Create the sysimage
@@ -874,7 +938,7 @@ function create_app(package_dir::String,
874938
try_rm_dir(app_dir; force)
875939
stdlibs = gather_stdlibs_project(ctx)
876940
if !filter_stdlibs
877-
stdlibs = unique(vcat(stdlibs, map(pkg -> pkg.name, stdlibs_in_sysimage())))
941+
stdlibs = unique(vcat(stdlibs, map(pkg -> pkg.name, stdlibs_in_default_sysimage())))
878942
end
879943
bundle_julia_libraries(app_dir, stdlibs)
880944
bundle_julia_libexec(ctx, app_dir)
@@ -1091,7 +1155,7 @@ function create_library(package_or_project::String,
10911155
mkpath(dest_dir)
10921156
stdlibs = gather_stdlibs_project(ctx)
10931157
if !filter_stdlibs
1094-
stdlibs = unique(vcat(stdlibs, map(pkg -> pkg.name, stdlibs_in_sysimage())))
1158+
stdlibs = unique(vcat(stdlibs, map(pkg -> pkg.name, stdlibs_in_default_sysimage())))
10951159
end
10961160
bundle_julia_libraries(dest_dir, stdlibs)
10971161
bundle_julia_libexec(ctx, dest_dir)

0 commit comments

Comments
 (0)