From 31cc213b813c7d7ed7bc1df072fa5b733975d5e1 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Sat, 31 Oct 2015 12:07:02 -0700 Subject: prevent rebar3 from reloading it's own path and terminating itself prevents code reloading by temporary marking of rebar3's ebin dir as sticky during code refresh --- src/rebar_utils.erl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index 4fd4bd1..d00a46f 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -654,13 +654,19 @@ update_code(Paths) -> code:add_patha(Path), ok; {ok, Modules} -> + %% stick rebar ebin dir before purging to prevent + %% inadvertent termination + RebarBin = code:lib_dir(rebar, ebin), + ok = code:stick_dir(RebarBin), %% replace_path causes problems when running %% tests in projects like erlware_commons that rebar3 %% also includes %code:replace_path(App, Path), code:del_path(App), code:add_patha(Path), - [begin code:purge(M), code:delete(M) end || M <- Modules] + [begin code:purge(M), code:delete(M) end || M <- Modules], + %% unstick rebar dir + ok = code:unstick_dir(RebarBin) end end, Paths). -- cgit v1.1