Craft and deploy bulletproof embedded software in Elixir
APACHE-2.0 License
Enhancements
mix firmware.unpack
to unpack generated .fw
files. This is usefulmix burn
to accept the path to a .fw
file with --firmware | -i
.Bug fixes
mix firmware
when calling mix firmware.image
. This matches themix firmware.burn
.erlinit.config
, even if there are no config override inEnhancements
erlinit.config options can be overridden using the application config now.
For example, in your config.exs you can now add:
config :nerves, :erlinit,
ctty: "ttyAMA0"
Nerves tooling now supports setting the SOURCE_DATE_EPOCH
environment
variable for reproducible builds during compilation via :source_date_epoch
in your application config. This removes timestamp differences between
builds. See reproducible-builds.org for more information.
Windows Subsystem for Linux improvements
Support XDG_DATA_HOME
. If XDG_DATA_HOME
is set, Nerves will now store its
data under that directory.
Bug fixes
mix burn
if already privileged.Updating to Nerves v1.5.0 requires modifications to your project
See the project update guide to learn how to migrate your project.
Enhancements
Bug fixes
Raise an exception if the artifact cache fails to create a directory
Fixes ArgumentError
when using OTP >= 21.3.0 and calling mix nerves.system.shell
Fixes issue with mix nerves.system.shell
using asdf
>= 0.7.0 where the
path would contain ::
and Buildroot would raise the error:
You seem to have the current working directory in your
PATH environment variable. This doesn't work.
support/dependencies/dependencies.mk:21: recipe for target 'dependencies' failed
Version v1.4.0 adds support for Elixir 1.8's new built-in support for mix
targets. In Nerves, the MIX_TARGET
was used to select the appropriate set of
dependencies for a device. This lets you switch between building for different
boards and your host. Elixir 1.8 pulls this support into mix
and lets you
annotate dependencies for which targets they should be used.
See the project update guide to learn how to migrate your project.
build_runner_opts
without build_runner
build_runner_opts
from being set.http_opts
to be merged in from the artifact site opts. This fixes[autoredirect: true]
in the artifact site opts.2.0.10
to work around:mix nerves.deps.get
will raise if a download was incomplete or corruptmix firmware.burn
will call mix firmware
to ensure the firmware is themix burn
was added to allow for burning the latest built firmware withoutmix firmware
.This version adds support for Elixir ~> 1.7 which requires updates to your
Mix project.
Modify the release config
It is required to modify the rel/config.exs
file.
Change this:
release :my_app do
set version: current_version(:my_app)
plugin Shoehorn
if System.get_env("NERVES_SYSTEM") do
set dev_mode: false
set include_src: false
set include_erts: System.get_env("ERL_LIB_DIR")
set include_system_libs: System.get_env("ERL_SYSTEM_LIB_DIR")
set vm_args: "rel/vm.args"
end
end
To this:
release :my_app do
set version: current_version(:my_app)
plugin Shoehorn
plugin Nerves
end
Update shoehorn
You will need to update your version of shoehorn to {:shoehorn, "~> 0.4"}
.
Added ability to override provisioning.conf in the project mix config.
This can be done by setting the key provisioning
.
Example:
config :nerves, :firmware,
provisioning: "config/provisioning.conf"
# or delgate it to an app that sets nerves_provisioning: "path/to/file"
config :nerves, :firmware,
provisioning: :nerves_hub
Bug Fixes
mix firmware.burn
on Linux systems. Environment variables prefixed withNERVES_
and the variable SERIAL_NUMBER
will be copied into the environment.Enhancements
Bug Fixes
nerves_system_br
as the tag for the docker imageEnhancements
mix firmware.burn
can run within Windows Subsystem for Linuxmake_args
to build_runner_opts
For example:
You can configure the number of parallel jobs that buildroot
can use for execution. This is useful for situations where you may
have a machine with a lot of CPUs but not enough ram.
# mix.exs
defp nerves_package do
[
# ...
build_runner_opts: [make_args: ["PARALLEL_JOBS=8"]],
]
end