diff --git a/lib/mix/lib/mix/release.ex b/lib/mix/lib/mix/release.ex index dc0906c38f8..b7614b7d5f3 100644 --- a/lib/mix/lib/mix/release.ex +++ b/lib/mix/lib/mix/release.ex @@ -174,7 +174,7 @@ defmodule Mix.Release do version_path: Path.join([path, "releases", version]), erts_source: erts_source, erts_version: erts_version, - applications: Map.delete(loaded_apps, :erts), + applications: loaded_apps, boot_scripts: %{start: start_boot, start_clean: start_clean_boot}, config_providers: config_providers, options: opts, diff --git a/lib/mix/lib/mix/tasks/release.ex b/lib/mix/lib/mix/tasks/release.ex index 34253f79d7c..0e9eeae81a4 100644 --- a/lib/mix/lib/mix/tasks/release.ex +++ b/lib/mix/lib/mix/tasks/release.ex @@ -1131,8 +1131,8 @@ defmodule Mix.Tasks.Release do {consolidation_path, release} = build_rel(release, config) [ - # erts-VSN/ - :erts, + # erts-VSN/ - written as __MODULE__ to avoid conflicting with :erts app + __MODULE__, # releases/VERSION/consolidated {:consolidated, consolidation_path}, # bin/ @@ -1392,7 +1392,7 @@ defmodule Mix.Tasks.Release do ## Copy operations - defp copy(:erts, release) do + defp copy(__MODULE__, release) do _ = Mix.Release.copy_erts(release) :ok end diff --git a/lib/mix/test/mix/release_test.exs b/lib/mix/test/mix/release_test.exs index 39835dc351d..c4c7cce1aa2 100644 --- a/lib/mix/test/mix/release_test.exs +++ b/lib/mix/test/mix/release_test.exs @@ -84,9 +84,10 @@ defmodule Mix.ReleaseTest do assert release.applications.kernel[:otp_app?] end - test "does not include erts in applications" do + test "includes erts in applications when requested" do release = from_config!(nil, config(releases: [foo: [applications: [erts: :permanent]]]), []) - assert release.applications[:erts] == nil + assert release.applications.erts[:otp_app?] + assert release.applications.erts[:vsn] == to_charlist(@erts_version) end test "allows release to be given as an anonymous function" do diff --git a/lib/mix/test/mix/tasks/release_test.exs b/lib/mix/test/mix/tasks/release_test.exs index aebcb44a548..737053a7d86 100644 --- a/lib/mix/test/mix/tasks/release_test.exs +++ b/lib/mix/test/mix/tasks/release_test.exs @@ -370,6 +370,25 @@ defmodule Mix.Tasks.ReleaseTest do end) end + test "assembles a bootable release with :erts as one of its applications" do + in_fixture("release_test", fn -> + config = [releases: [release_test: [applications: [erts: :permanent]]]] + + Mix.Project.in_project(:release_test, ".", config, fn _ -> + root = Path.absname("_build/dev/rel/release_test") + Mix.Task.run("release") + + assert root |> Path.join("erts-#{@erts_version}/bin/erl") |> File.exists?() + assert root |> Path.join("lib/erts-#{@erts_version}/ebin/erts.app") |> File.exists?() + + open_port(Path.join(root, "bin/release_test"), [~c"start"]) + + assert %{release_name: "release_test"} = + wait_until_decoded(Path.join(root, "RELEASE_BOOTED")) + end) + end) + end + test "assembles a rebootable release with runtime configuration" do in_fixture("release_test", fn -> config = [releases: [runtime_config: [reboot_system_after_config: true]]]