@@ -214,25 +214,31 @@ function rewrite_sysimg_jl_only_needed_stdlibs(stdlibs::Vector{String})
214214 r" stdlibs = \[ (.*?)\] " s => string (" stdlibs = [" , join (" :" .* stdlibs, " ,\n " ), " ]" ))
215215end
216216
217- function create_fresh_base_sysimage (stdlibs:: Vector{String} ; cpu_target:: String )
217+ function create_fresh_base_sysimage (stdlibs:: Vector{String} ; cpu_target:: String , sysimage_build_args :: Cmd )
218218 tmp = mktempdir ()
219219 sysimg_source_path = Base. find_source_file (" sysimg.jl" )
220220 base_dir = dirname (sysimg_source_path)
221221 tmp_corecompiler_ji = joinpath (tmp, " corecompiler.ji" )
222222 tmp_sys_ji = joinpath (tmp, " sys.ji" )
223223 compiler_source_path = joinpath (base_dir, " compiler" , " compiler.jl" )
224224
225+ # we can't strip the IR from the base sysimg, so we filter out this flag
226+ # also presuambly `--compile=all`` and maybe a few others we missed here...
227+ sysimage_build_args_strs = map (p -> " $(p... ) " , values (sysimage_build_args))
228+ filter! (p -> ! contains (p, " --compile" ) && p ∈ ̸ (" --strip-ir" ,), sysimage_build_args_strs)
229+ sysimage_build_args = Cmd (sysimage_build_args_strs)
230+
225231 spinner = TerminalSpinners. Spinner (msg = " PackageCompiler: compiling base system image (incremental=false)" )
226232 TerminalSpinners. @spin spinner begin
227233 cd (base_dir) do
228234 # Create corecompiler.ji
229235 cmd = if isdefined (Base, :Linking ) # pkgimages feature flag
230- cmd = ` $(get_julia_cmd ()) --output-ji $tmp_corecompiler_ji -g0 -O0 $compiler_source_path `
236+ cmd = ` $(get_julia_cmd ()) --output-ji $tmp_corecompiler_ji $sysimage_build_args $compiler_source_path `
231237 @debug " running $cmd " JULIA_CPU_TARGET = cpu_target
232238 addenv (cmd, " JULIA_CPU_TARGET" => cpu_target)
233239 else
234240 cmd = ` $(get_julia_cmd ()) --cpu-target $cpu_target --output-ji $tmp_corecompiler_ji
235- -g0 -O0 $compiler_source_path `
241+ $sysimage_build_args $compiler_source_path `
236242 @debug " running $cmd "
237243 cmd
238244 end
@@ -246,13 +252,13 @@ function create_fresh_base_sysimage(stdlibs::Vector{String}; cpu_target::String)
246252 try
247253 cmd = if isdefined (Base, :Linking ) # pkgimages feature flag
248254 cmd = ` $(get_julia_cmd ()) --sysimage=$tmp_corecompiler_ji
249- -g1 -O0 --output-ji=$tmp_sys_ji $new_sysimage_source_path `
255+ $sysimage_build_args --output-ji=$tmp_sys_ji $new_sysimage_source_path `
250256 @debug " running $cmd " JULIA_CPU_TARGET = cpu_target
251257 addenv (cmd, " JULIA_CPU_TARGET" => cpu_target)
252258 else
253259 cmd = ` $(get_julia_cmd ()) --cpu-target $cpu_target
254260 --sysimage=$tmp_corecompiler_ji
255- -g1 -O0 --output-ji=$tmp_sys_ji $new_sysimage_source_path `
261+ $sysimage_build_args --output-ji=$tmp_sys_ji $new_sysimage_source_path `
256262 @debug " running $cmd "
257263 cmd
258264 end
@@ -403,12 +409,12 @@ function create_sysimg_object_file(object_file::String,
403409 # Read the input via stdin to avoid hitting the maximum command line limit
404410
405411 cmd = if isdefined (Base, :Linking ) # pkgimages feature flag
406- cmd = ` $(get_julia_cmd ()) -O3 $sysimage_build_args
412+ cmd = ` $(get_julia_cmd ()) $sysimage_build_args
407413 --sysimage=$base_sysimage --project=$project --output-o=$(object_file) $outputo_file `
408414 @debug " running $cmd " JULIA_CPU_TARGET = cpu_target
409415 addenv (cmd, " JULIA_CPU_TARGET" => cpu_target)
410416 else
411- cmd = ` $(get_julia_cmd ()) --cpu-target=$cpu_target -O3 $sysimage_build_args
417+ cmd = ` $(get_julia_cmd ()) --cpu-target=$cpu_target $sysimage_build_args
412418 --sysimage=$base_sysimage --project=$project --output-o=$(object_file) $outputo_file `
413419 @debug " running $cmd "
414420 cmd
@@ -519,7 +525,7 @@ function create_sysimage(packages::Union{Nothing, Symbol, Vector{String}, Vector
519525 error (" cannot specify `base_sysimage` when `incremental=false`" )
520526 end
521527 sysimage_stdlibs = filter_stdlibs ? gather_stdlibs_project (ctx) : stdlibs_in_sysimage ()
522- base_sysimage = create_fresh_base_sysimage (sysimage_stdlibs; cpu_target)
528+ base_sysimage = create_fresh_base_sysimage (sysimage_stdlibs; cpu_target, sysimage_build_args )
523529 else
524530 base_sysimage = something (base_sysimage, unsafe_string (Base. JLOptions (). image_file))
525531 end
0 commit comments