Current section

Files

Jump to
nerves_bootstrap lib mix tasks nerves precompile.ex
Raw

lib/mix/tasks/nerves/precompile.ex

defmodule Mix.Tasks.Nerves.Precompile do
use Mix.Task
import Mix.Nerves.IO
def run(_args) do
debug_info "Precompile Start"
# Note: We have to directly use the environment variable here instead of
# calling Nerves.Env.enabled?/0 because the nerves.precompile step happens
# before the nerves dependency is compiled, which is where Nerves.Env
# currently lives. This would be improved by moving Nerves.Env to
# nerves_bootstrap.
unless System.get_env("NERVES_ENV_DISABLED") do
System.put_env("NERVES_PRECOMPILE", "1")
Mix.Tasks.Nerves.Env.run []
parent = Mix.Project.config[:app]
system_app = Nerves.Env.system.app
{m, f, a} =
if parent == system_app do
Mix.Tasks.Deps.Compile.run [Nerves.Env.toolchain.app, "--include-children"]
{Mix.Tasks.Compile, :run, [["--no-deps-check"]]}
else
system_app_name = to_string(system_app)
{Mix.Tasks.Deps.Compile, :run, [[system_app_name, "--include-children"]]}
end
apply(m, f, a)
Mix.Task.reenable "deps.compile"
Mix.Task.reenable "compile"
System.put_env("NERVES_PRECOMPILE", "0")
Mix.Tasks.Nerves.Loadpaths.run []
end
debug_info "Precompile End"
end
end