diff options
author | José Valim <jose.valim@plataformatec.com.br> | 2019-02-02 15:59:29 +0100 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2019-02-02 16:51:14 +0100 |
commit | d423deafdbbf81775ddb821bb93a6b11315b51c4 (patch) | |
tree | f15cd075a9fd8a8088fd27a8a1d38779c300e3e2 | |
parent | b38942a48221098e61a1d9ddda5022fd9b142289 (diff) | |
download | elixir-d423deafdbbf81775ddb821bb93a6b11315b51c4.tar.gz |
Rename remote.boot to start_clean.boot
This will pave the way for the upcoming eval script.
-rw-r--r-- | lib/mix/lib/mix/release.ex | 34 | ||||
-rw-r--r-- | lib/mix/lib/mix/tasks/release.ex | 16 | ||||
-rw-r--r-- | lib/mix/test/mix/release_test.exs | 24 |
3 files changed, 42 insertions, 32 deletions
diff --git a/lib/mix/lib/mix/release.ex b/lib/mix/lib/mix/release.ex index 07df671f0..e5618583f 100644 --- a/lib/mix/lib/mix/release.ex +++ b/lib/mix/lib/mix/release.ex @@ -48,7 +48,7 @@ defmodule Mix.Release do options: keyword() } - @default_apps %{iex: :permanent, elixir: :permanent, sasl: :permanent} + @default_apps %{elixir: :permanent, sasl: :permanent} @safe_modes [:permanent, :temporary, :transient] @unsafe_modes [:load, :none] @significant_chunks ~w(Atom AtU8 Attr Code StrT ImpT ExpT FunT LitT Line)c @@ -75,9 +75,20 @@ defmodule Mix.Release do {include_erts, opts} = Keyword.pop(opts, :include_erts, true) {erts_source, erts_version} = erts_data(include_erts) - loaded_apps = apps |> Map.keys() |> load_apps(%{}, :code.lib_dir()) + erts_lib_dir = :code.lib_dir() + loaded_apps = apps |> Map.keys() |> load_apps(%{}, erts_lib_dir) + + # First we built the release without IEx, if IEx is included, + # then use it as is, otherwise add it as none. + {loaded_apps, apps} = + if Map.has_key?(loaded_apps, :iex) do + {loaded_apps, apps} + else + {load_apps([:iex], loaded_apps, erts_lib_dir), Map.put(apps, :iex, :none)} + end + start_boot = build_start_boot(loaded_apps, apps) - remote_boot = build_remote_boot() + start_clean_boot = build_start_clean_boot(start_boot) {path, opts} = Keyword.pop_lazy(opts, :path, fn -> @@ -103,7 +114,7 @@ defmodule Mix.Release do erts_source: erts_source, erts_version: erts_version, applications: loaded_apps, - boot_scripts: %{start: start_boot, remote: remote_boot}, + boot_scripts: %{start: start_boot, start_clean: start_clean_boot}, options: opts } end @@ -230,18 +241,13 @@ defmodule Mix.Release do end defp build_start_boot(apps, modes) do - for {app, _} <- apps, do: {app, Map.get(modes, app, :permanent)} + for {app, _properties} <- apps, do: {app, Map.get(modes, app, :permanent)} end - defp build_remote_boot() do - [ - kernel: :permanent, - stdlib: :permanent, - compiler: :permanent, - elixir: :permanent, - iex: :permanent, - logger: :permanent - ] + defp build_start_clean_boot(boot) do + (for {app, _mode} <- boot, do: {app, :none}) + |> Keyword.put(:kernel, :permanent) + |> Keyword.put(:stdlib, :permanent) end @doc """ diff --git a/lib/mix/lib/mix/tasks/release.ex b/lib/mix/lib/mix/tasks/release.ex index 459cec2f3..a167b977d 100644 --- a/lib/mix/lib/mix/tasks/release.ex +++ b/lib/mix/lib/mix/tasks/release.ex @@ -388,10 +388,10 @@ defmodule Mix.Tasks.Release do RELEASE_VSN/ elixir iex - remote.boot - remote.script start.boot start.script + start_clean.boot + start_clean.script sys.config vm.args COOKIE @@ -602,10 +602,10 @@ defmodule Mix.Tasks.Release do # VERSION/ # consolidated/ # NAME.rel - # remote.boot - # remote.script # start.boot # start.script + # start_clean.boot + # start_clean.script # sys.config # releases/ # COOKIE @@ -884,7 +884,7 @@ defmodule Mix.Tasks.Release do rpc () { exec "$REL_VSN_DIR/elixir" \ --hidden --name "rpc-$(gen_id)@127.0.0.1" --cookie "$RELEASE_COOKIE" \ - --boot "${REL_VSN_DIR}/remote" \ + --boot "${REL_VSN_DIR}/start_clean" \ --boot-var RELEASE_LIB "$RELEASE_ROOT/lib" \ --rpc-eval "$RELEASE_NODE" "$1" } @@ -913,7 +913,7 @@ defmodule Mix.Tasks.Release do remote) exec "$REL_VSN_DIR/iex" \ --werl --hidden --name "remote-$(gen_id)@127.0.0.1" --cookie "$RELEASE_COOKIE" \ - --boot "${REL_VSN_DIR}/remote" \ + --boot "${REL_VSN_DIR}/start_clean" \ --boot-var RELEASE_LIB "$RELEASE_ROOT/lib" \ --remsh "$RELEASE_NODE" ;; @@ -1020,7 +1020,7 @@ defmodule Mix.Tasks.Release do :remote "!REL_VSN_DIR!/iex.bat" ^ --werl --hidden --name "remote-!RANDOM!@127.0.0.1" --cookie "!RELEASE_COOKIE!" ^ - --boot "!REL_VSN_DIR!\remote" ^ + --boot "!REL_VSN_DIR!\start_clean" ^ --boot-var RELEASE_LIB "!RELEASE_ROOT!\lib" ^ --remsh "!RELEASE_NODE!" goto end @@ -1028,7 +1028,7 @@ defmodule Mix.Tasks.Release do :rpc "!REL_VSN_DIR!/elixir.bat" ^ --hidden --name "rpc-!RANDOM!@127.0.0.1" --cookie "!RELEASE_COOKIE!" ^ - --boot "!REL_VSN_DIR!\remote" ^ + --boot "!REL_VSN_DIR!\start_clean" ^ --boot-var RELEASE_LIB "!RELEASE_ROOT!\lib" ^ --rpc-eval "!RELEASE_NODE!" !REL_RPC! goto end diff --git a/lib/mix/test/mix/release_test.exs b/lib/mix/test/mix/release_test.exs index 6ae83e7ca..356481915 100644 --- a/lib/mix/test/mix/release_test.exs +++ b/lib/mix/test/mix/release_test.exs @@ -161,7 +161,7 @@ defmodule Mix.ReleaseTest do assert release.boot_scripts.start == [ compiler: :permanent, elixir: :permanent, - iex: :permanent, + iex: :none, kernel: :permanent, mix: :permanent, sasl: :permanent, @@ -178,18 +178,22 @@ defmodule Mix.ReleaseTest do test "configures other applications" do release = release(applications: [mix: :temporary]) assert release.boot_scripts.start[:mix] == :temporary + + release = release(applications: [iex: :temporary]) + assert release.boot_scripts.start[:iex] == :temporary end - test "generates a remote boot script only with elixir+logger+iex" do + test "generates a start_clean script with only kernel and stdlib starting up" do release = release([]) - assert release.boot_scripts.remote == [ - kernel: :permanent, + assert release.boot_scripts.start_clean == [ stdlib: :permanent, - compiler: :permanent, - elixir: :permanent, - iex: :permanent, - logger: :permanent + kernel: :permanent, + compiler: :none, + elixir: :none, + iex: :none, + mix: :none, + sasl: :none ] end end @@ -243,7 +247,7 @@ defmodule Mix.ReleaseTest do [ {:compiler, _, :permanent}, {:elixir, @elixir_version, :permanent}, - {:iex, @elixir_version, :permanent}, + {:iex, @elixir_version, :none}, {:kernel, _, :permanent}, {:mix, @elixir_version, :permanent}, {:sasl, _, :permanent}, @@ -327,7 +331,7 @@ defmodule Mix.ReleaseTest do {:error, message} = make_boot_script(release, @boot_script_path, release.boot_scripts.start) assert message =~ - "Application :iex has mode :permanent but it depends on :elixir which is set to :none" + "Application :mix has mode :permanent but it depends on :elixir which is set to :none" end end |