summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2019-02-02 15:59:29 +0100
committerJosé Valim <jose.valim@plataformatec.com.br>2019-02-02 16:51:14 +0100
commitd423deafdbbf81775ddb821bb93a6b11315b51c4 (patch)
treef15cd075a9fd8a8088fd27a8a1d38779c300e3e2
parentb38942a48221098e61a1d9ddda5022fd9b142289 (diff)
downloadelixir-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.ex34
-rw-r--r--lib/mix/lib/mix/tasks/release.ex16
-rw-r--r--lib/mix/test/mix/release_test.exs24
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