Skip to content

Commit 854206e

Browse files
authored
Merge pull request #167 from NHDaly/julia_cmd_flexibility-v1.1
Fix for julia `v1.1`: allow `Base.julia_cmd()` to contain unexpected flags (adds future-compatibility)
2 parents d49e006 + d44aa1c commit 854206e

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

src/static_julia.jl

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -211,24 +211,36 @@ function build_julia_cmd(
211211
# TODO: `startup_file` may be removed in future with `julia-compile`, see: https://github.com/JuliaLang/julia/issues/15864
212212
startup_file == nothing && (startup_file = "no")
213213
julia_cmd = `$(Base.julia_cmd())`
214-
if length(julia_cmd.exec) != 5 || !all(startswith.(julia_cmd.exec[2:5], ["-C", "-J", "--compile", "--depwarn"]))
215-
error("Unexpected format of \"Base.julia_cmd()\", you may be using an incompatible version of Julia:\n$julia_cmd")
214+
function get_flag_idx(julia_cmd, flag_str)
215+
findfirst(f->(length(f) > length(flag_str) &&
216+
f[1:length(flag_str)]==flag_str), julia_cmd.exec)
216217
end
217-
sysimage == nothing || (julia_cmd.exec[3] = "-J$sysimage")
218-
home == nothing || push!(julia_cmd.exec, "-H=$home")
219-
startup_file == nothing || push!(julia_cmd.exec, "--startup-file=$startup_file")
220-
handle_signals == nothing || push!(julia_cmd.exec, "--handle-signals=$handle_signals")
221-
sysimage_native_code == nothing || push!(julia_cmd.exec, "--sysimage-native-code=$sysimage_native_code")
222-
compiled_modules == nothing || push!(julia_cmd.exec, "--compiled-modules=$compiled_modules")
223-
depwarn == nothing || (julia_cmd.exec[5] = "--depwarn=$depwarn")
224-
warn_overwrite == nothing || (julia_cmd.exec[5] = "--warn-overwrite=$warn_overwrite")
225-
compile == nothing || (julia_cmd.exec[4] = "--compile=$compile")
226-
cpu_target == nothing || (julia_cmd.exec[2] = "-C$cpu_target")
227-
optimize == nothing || push!(julia_cmd.exec, "-O$optimize")
228-
debug == nothing || push!(julia_cmd.exec, "-g$debug")
229-
inline == nothing || push!(julia_cmd.exec, "--inline=$inline")
230-
check_bounds == nothing || push!(julia_cmd.exec, "--check-bounds=$check_bounds")
231-
math_mode == nothing || push!(julia_cmd.exec, "--math-mode=$math_mode")
218+
function set_flag(julia_cmd, flag_str, val)
219+
flag_idx = get_flag_idx(julia_cmd, flag_str)
220+
if flag_idx != nothing
221+
julia_cmd.exec[flag_idx] = "$flag_str$val"
222+
else
223+
push!(julia_cmd.exec, "$flag_str$val")
224+
end
225+
end
226+
sysimage == nothing || set_flag(julia_cmd, "-J", sysimage)
227+
home == nothing || set_flag(julia_cmd, "-H=", home)
228+
startup_file == nothing || set_flag(julia_cmd, "--startup-file=", startup_file)
229+
handle_signals == nothing || set_flag(julia_cmd, "--handle-signals=", handle_signals)
230+
sysimage_native_code == nothing || set_flag(julia_cmd, "--sysimage-native-code=", sysimage_native_code)
231+
compiled_modules == nothing || set_flag(julia_cmd, "--compiled-modules=", compiled_modules)
232+
depwarn == nothing || set_flag(julia_cmd, "--depwarn=", depwarn)
233+
warn_overwrite == nothing || set_flag(julia_cmd, "--warn-overwrite=", warn_overwrite)
234+
compile == nothing || set_flag(julia_cmd, "--compile=", compile)
235+
cpu_target == nothing || set_flag(julia_cmd, "-C", cpu_target)
236+
optimize == nothing || set_flag(julia_cmd, "-O", optimize)
237+
debug == nothing || set_flag(julia_cmd, "-g", debug)
238+
inline == nothing || set_flag(julia_cmd, "--inline=", inline)
239+
check_bounds == nothing || set_flag(julia_cmd, "--check-bounds=", check_bounds)
240+
math_mode == nothing || set_flag(julia_cmd, "--math-mode=", math_mode)
241+
# Disable incompatible flags
242+
set_flag(julia_cmd, "--code-coverage=", "none")
243+
232244
julia_cmd
233245
end
234246

0 commit comments

Comments
 (0)