Skip to content

Commit 33428b2

Browse files
authored
fix: pass CPU targets as cmd args (#804)
- Sysimages built with CPU targets as env var, tend to ignore them and result segfaults, when relocated to the target machine
1 parent ef46e40 commit 33428b2

File tree

1 file changed

+14
-31
lines changed

1 file changed

+14
-31
lines changed

src/PackageCompiler.jl

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -232,16 +232,11 @@ function create_fresh_base_sysimage(stdlibs::Vector{String}; cpu_target::String,
232232
TerminalSpinners.@spin spinner begin
233233
cd(base_dir) do
234234
# Create corecompiler.ji
235-
cmd = if isdefined(Base, :Linking) # pkgimages feature flag
236-
cmd = `$(get_julia_cmd()) --output-ji $tmp_corecompiler_ji $sysimage_build_args $compiler_source_path`
237-
@debug "running $cmd" JULIA_CPU_TARGET = cpu_target
238-
addenv(cmd, "JULIA_CPU_TARGET" => cpu_target)
239-
else
240-
cmd = `$(get_julia_cmd()) --cpu-target $cpu_target --output-ji $tmp_corecompiler_ji
241-
$sysimage_build_args $compiler_source_path`
242-
@debug "running $cmd"
243-
cmd
244-
end
235+
cmd = `$(get_julia_cmd()) --cpu-target $cpu_target
236+
--output-ji $tmp_corecompiler_ji $sysimage_build_args
237+
$compiler_source_path`
238+
@debug "running $cmd"
239+
245240
read(cmd)
246241

247242
# Use that to create sys.ji
@@ -250,18 +245,12 @@ function create_fresh_base_sysimage(stdlibs::Vector{String}; cpu_target::String,
250245
new_sysimage_source_path = joinpath(tmp, "sysimage_packagecompiler_$(uuid1()).jl")
251246
write(new_sysimage_source_path, new_sysimage_content)
252247
try
253-
cmd = if isdefined(Base, :Linking) # pkgimages feature flag
254-
cmd = `$(get_julia_cmd()) --sysimage=$tmp_corecompiler_ji
255-
$sysimage_build_args --output-ji=$tmp_sys_ji $new_sysimage_source_path`
256-
@debug "running $cmd" JULIA_CPU_TARGET = cpu_target
257-
addenv(cmd, "JULIA_CPU_TARGET" => cpu_target)
258-
else
259-
cmd = `$(get_julia_cmd()) --cpu-target $cpu_target
260-
--sysimage=$tmp_corecompiler_ji
261-
$sysimage_build_args --output-ji=$tmp_sys_ji $new_sysimage_source_path`
262-
@debug "running $cmd"
263-
cmd
264-
end
248+
cmd = `$(get_julia_cmd()) --cpu-target $cpu_target
249+
--sysimage=$tmp_corecompiler_ji
250+
$sysimage_build_args --output-ji=$tmp_sys_ji
251+
$new_sysimage_source_path`
252+
@debug "running $cmd"
253+
265254
read(cmd)
266255
finally
267256
rm(new_sysimage_source_path; force=true)
@@ -433,17 +422,11 @@ function create_sysimg_object_file(object_file::String,
433422
write(outputo_file, julia_code)
434423
# Read the input via stdin to avoid hitting the maximum command line limit
435424

436-
cmd = if isdefined(Base, :Linking) # pkgimages feature flag
437-
cmd = `$(get_julia_cmd()) $sysimage_build_args
438-
--sysimage=$base_sysimage --project=$project --output-o=$(object_file) $outputo_file`
439-
@debug "running $cmd" JULIA_CPU_TARGET = cpu_target
440-
addenv(cmd, "JULIA_CPU_TARGET" => cpu_target)
441-
else
442425
cmd = `$(get_julia_cmd()) --cpu-target=$cpu_target $sysimage_build_args
443-
--sysimage=$base_sysimage --project=$project --output-o=$(object_file) $outputo_file`
426+
--sysimage=$base_sysimage --project=$project --output-o=$(object_file)
427+
$outputo_file`
444428
@debug "running $cmd"
445-
cmd
446-
end
429+
447430
non = incremental ? "" : "non"
448431
spinner = TerminalSpinners.Spinner(msg = "PackageCompiler: compiling $(non)incremental system image")
449432
@monitor_oom TerminalSpinners.@spin spinner run(cmd)

0 commit comments

Comments
 (0)