Current section

Files

Jump to
nerves_bootstrap lib nerves_bootstrap.ex
Raw

lib/nerves_bootstrap.ex

# SPDX-FileCopyrightText: 2017 Justin Schneck
# SPDX-FileCopyrightText: 2022 Frank Hunleth
# SPDX-FileCopyrightText: 2022 Jon Carstens
#
# SPDX-License-Identifier: Apache-2.0
#
defmodule Nerves.Bootstrap do
@moduledoc false
use Application
@impl Application
def start(_type, _args) do
if Version.match?(System.version(), ">= 1.19.0") and has_compile_partition_count?() do
Mix.shell().error("""
Nerves does not support MIX_OS_DEPS_COMPILE_PARTITION_COUNT yet.
Disabling it for this build. To silence this warning, either unset
MIX_OS_DEPS_COMPILE_PARTITION_COUNT or set it to 1 before you build.
Follow https://github.com/nerves-project/nerves/issues/1093 to track
progress.
""")
System.delete_env("MIX_OS_DEPS_COMPILE_PARTITION_COUNT")
end
Nerves.Bootstrap.Aliases.init()
{:ok, self()}
end
defp has_compile_partition_count?() do
case System.fetch_env("MIX_OS_DEPS_COMPILE_PARTITION_COUNT") do
:error -> false
{:ok, "1"} -> false
_ -> true
end
end
@doc """
Returns the version of nerves_bootstrap
"""
@spec version() :: String.t()
def version(), do: unquote(Mix.Project.config()[:version])
@doc """
Read the Nerves dependency version of the bootstrapped project
"""
@spec nerves_version() :: String.t() | nil
def nerves_version() do
if path = Mix.Project.deps_paths()[:nerves] do
Mix.Project.in_project(:nerves, path, fn _ -> Mix.Project.config()[:version] end)
end
catch
_, _ -> nil
end
@doc """
Add the required Nerves bootstrap aliases to the existing ones
"""
defdelegate add_aliases(aliases), to: Nerves.Bootstrap.Aliases
end