diff --git a/src/rlx_assemble.erl b/src/rlx_assemble.erl index 20ee353de..1292b03f2 100644 --- a/src/rlx_assemble.erl +++ b/src/rlx_assemble.erl @@ -663,18 +663,17 @@ include_erts(State, Release, OutputDir, RelDir) -> ok = rlx_file_utils:copy(ErtsBinDir, LocalErtsBin, [recursive, {file_info, [mode, time]}]), - case OsFamily of + Result = case OsFamily of unix -> DynErl = filename:join([LocalErtsBin, "dyn_erl"]), - Erl = filename:join([LocalErtsBin, "erl"]); + Erl = filename:join([LocalErtsBin, "erl"]), + ok = rlx_file_utils:ensure_writable(Erl), + rlx_file_utils:copy(DynErl, Erl); win32 -> - DynErl = filename:join([LocalErtsBin, "dyn_erl.ini"]), - Erl = filename:join([LocalErtsBin, "erl.ini"]) + ok end, - ok = rlx_file_utils:ensure_writable(Erl), - - case rlx_file_utils:copy(DynErl, Erl) of + case Result of ok -> %% drop yielding_c_fun binary if it exists %% it is large (1.1MB) and only used at compile time diff --git a/src/rlx_util.erl b/src/rlx_util.erl index 1b26f0682..9047b4b59 100644 --- a/src/rlx_util.erl +++ b/src/rlx_util.erl @@ -72,7 +72,12 @@ parse_vsn(Vsn) -> {match, [Major, Minor, Patch, PreRelease, Build]} -> {{list_to_integer(Major), list_to_integer(Minor), list_to_integer(Patch)}, {PreRelease, Build}}; _ -> - 0 + try list_to_integer(Vsn) of + Major -> + {{Major, 0, 0}, {"", ""}} + catch _:_ -> + {{0, 0, 0}, {"", ""}} + end end. %% less than or equal to comparison for versions parsed with `parse_vsn'