Packages
nerves
1.0.0-rc.2
1.15.0
1.14.3
1.14.2
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.3
1.9.2
retired
1.9.1
1.9.0
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
retired
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
retired
1.7.1
retired
1.7.0
retired
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.4.0-rc.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
Craft and deploy bulletproof embedded software
Current section
Files
Jump to
Current section
Files
lib/nerves/artifact/build_runners/local.ex
defmodule Nerves.Artifact.BuildRunners.Local do
@moduledoc """
Builds an artifact locally.
This build_runner will only function on certain Linux host configurations
"""
alias Nerves.Artifact
alias Nerves.Artifact.BuildRunner
@behaviour BuildRunner
@doc """
Builds an artifact locally.
"""
@spec build(Nerves.Package.t(), Nerves.Package.t(), term) :: BuildRunner.build_result()
def build(pkg, toolchain, opts) do
pkg.platform.build(pkg, toolchain, opts)
end
@doc """
Builds an artifact locally.
"""
@spec archive(Nerves.Package.t(), Nerves.Package.t(), term) :: BuildRunner.archive_result()
def archive(pkg, toolchain, opts) do
pkg.platform.archive(pkg, toolchain, opts)
end
@doc """
Builds an artifact locally.
"""
@callback clean(package :: Nerves.Package.t()) :: BuildRunner.clean_result()
def clean(pkg) do
pkg.platform.clean(pkg)
end
@doc """
Connect to a system configuration sub-shell
"""
@spec system_shell(Nerves.Package.t()) :: :ok
def system_shell(pkg) do
dest = Artifact.build_path(pkg)
shell = System.get_env("SHELL") || "/bin/bash"
script = Path.join(Nerves.Env.package(:nerves_system_br).path, "create-build.sh")
platform_config = pkg.config[:platform_config][:defconfig]
defconfig = Path.join("#{pkg.path}", platform_config)
initial_input = [
"echo Updating build directory.",
"echo This will take a while if it is the first time...",
"#{script} #{defconfig} #{dest} >/dev/null",
"cd #{dest}"
]
Mix.Nerves.Shell.open(shell, initial_input)
end
end