50 lines
1.3 KiB
Julia
50 lines
1.3 KiB
Julia
# build_sysimage.jl
|
|
using PackageCompiler
|
|
|
|
headless = "--headless" in ARGS
|
|
|
|
println("--- Starting Custom System Image Build ---")
|
|
println("Mode: ", headless ? "Headless (Scripting/Docker)" : "Full GUI (Genie App)")
|
|
println("This process can take 5-15 minutes.")
|
|
|
|
ext = Sys.iswindows() ? ".dll" : Sys.isapple() ? ".dylib" : ".so"
|
|
sysimage_name = headless ? "sys_msi_headless" * ext : "sys_msi_gui" * ext
|
|
sysimage_path = joinpath(@__DIR__, sysimage_name)
|
|
|
|
packages_to_include = Symbol[
|
|
:MSI_src, # <--- Bake our core library
|
|
:DataFrames,
|
|
:SparseArrays,
|
|
:Mmap,
|
|
:Libz,
|
|
:Serialization,
|
|
:Printf,
|
|
:JSON
|
|
]
|
|
|
|
if !headless
|
|
append!(packages_to_include, [
|
|
:Genie,
|
|
:GenieFramework,
|
|
:PlotlyBase
|
|
])
|
|
end
|
|
|
|
create_sysimage(
|
|
packages_to_include,
|
|
sysimage_path = sysimage_path,
|
|
precompile_execution_file = "precompile_script.jl",
|
|
incremental = true,
|
|
filter_stdlibs = false
|
|
)
|
|
|
|
println("--- System Image Build Successful! ---")
|
|
println("Created: $(sysimage_path)")
|
|
if headless
|
|
println("To use in a headles script:")
|
|
println("julia --threads auto --project=. --sysimage $(sysimage_name) my_script.jl")
|
|
else
|
|
println("To start Julia with the GUI image, use:")
|
|
println("julia --threads auto --project=. --sysimage $(sysimage_name) start_MSI_GUI.jl")
|
|
end
|