Packages
nerves
0.4.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/package/providers/local.ex
defmodule Nerves.Package.Providers.Local do
@moduledoc """
Builds an artifact locally.
This provider will only function on certain Linux host configurations
"""
@behaviour Nerves.Package.Provider
alias Nerves.Package.Artifact
import Mix.Nerves.Utils
@doc """
Builds an artifact locally.
"""
@spec artifact(Nerves.Package.t, Nerves.Package.t, term) :: :ok
def artifact(pkg, toolchain, opts) do
{_, type} = :os.type
build(type, pkg, toolchain, opts)
end
defp build(:linux, pkg, toolchain, _opts) do
System.delete_env("BINDIR")
dest = Artifact.dir(pkg, toolchain)
File.rm_rf(dest)
File.mkdir_p!(dest)
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)
shell(script, [defconfig, dest])
{:ok, pid} = Nerves.Utils.Stream.start_link(file: "build.log")
stream = IO.stream(pid, :line)
shell "make", [], [cd: dest, stream: stream]
:ok
end
defp build(type , _pkg, _toolchain, _opts) do
{:error, """
Local provider is not available for host system: #{type}
Please use the Docker provider to build this package artifact
"""}
end
# def shell(_pkg, _opts) do
# :ok
# end
#
# def clean(_pkg, _opts) do
# :ok
# end
end