View Source Changelog
v1.11.1 - 2024-08-05
- Fix Docker builds for nerves_system_br v1.28.0 and later (see #997)
- Documentation updates and improvements
v1.11.0 - 2024-07-05
This release includes support for Elixir 1.17 and is generally safe for most, but some setups may be broken and require small changes:
Minimum Elixir version is now
1.13If using Elixir >= 1.17,
vm.args.eexneeds to be updated to use the run function-run elixir start_cli. Firmware builds will fail ifvm.args.eexsettings are incompatible with the current Elixir version to prevent unbootable images.Bug Fix
- Docker build runner changed to mount
~/.sshinstead of attempting to usessh-agentwhich would run into issues compiling systems on MacOS
- Docker build runner changed to mount
v1.10.5 - 2023-12-26
Improvements
- Support Elixir 1.16
- Add support for
:gitea_releasesand:gitea_apiartifact sites
Bug Fix
- Ensure a package is loaded before
compile.nerves_package
- Ensure a package is loaded before
v1.10.4 - 2023-09-13
Improvements
- Adjust compilation error when
nerves_bootstrapis missing
- Adjust compilation error when
Bug Fix
- Adjust
mix nerves.system.shellfor OTP 26- With OTP 26, this task cannot completely handle the shell and instead prints out the command to run manually for the same effect.
- Adjust
v1.10.3 - 2023-07-07
- Improvements
- Support Elixir 1.15 / OTP 26
- Fix misleading
%IO.Stream{}error when building firmware - Add validations for
vm.args.eexduring firmware build
v1.10.2 - 2023-04-11
- Improvements
- Change
BuildRunners.Dockerto use GitHub Container Registry by default
- Change
v1.10.1 - 2023-03-08
- Improvements
- Use
GitHubAPIfor public release artifacts for helpful reports on error - Allow
castore: v1.0to be used
- Use
v1.10.0 - 2023-03-03
This release removes the ability to specify an alternative JSON codec with
:json_codec config option and defaults to using Jason. If set, everything
will function as normal but you will see a compiler warning.
- Bug fix
- Prevent accidentally installing
:nervesas an archive - Add default mksquashfs flags when none specified
- Prevent accidentally installing
v1.9.3 - 2023-02-11
- Bug fix
- Temporarily revert GitHub release update in v1.9.2. It produces an error on
new projects when downloading artifacts. It's easily fixed by adding a
jason, but a better fix will be coming.
- Temporarily revert GitHub release update in v1.9.2. It produces an error on
new projects when downloading artifacts. It's easily fixed by adding a
v1.9.2 - 2023-02-05
Improvements
:github_apiartifact site resolver was completely refactored- More contextual error messages
GITHUB_TOKENandGH_TOKENenvironment variables supported (They were previously ignored despite the error message suggesting them to be used):useroption no longer required, but still supported (effectively ignored by GitHub if the token is supplied)
:github_releaseswitched to use the same GitHub resolver as:github_apiin order to have the same benefits- Remove duplicate artifact request with 64 byte checksum name
Bug Fix
mix firmwarenow places temporary build products inMIX_BUILD_PATHwhich prevents them from being stored in_build/root and compiling different targets in different terminals. See #576- Check if supplied rootfs_overlays have incompatible directories. See nerves-project/nerves_system_br#495.
v1.9.1 - 2022-09-11
This is a patch release that fixes trivial tooling issues found when using Elixir 1.14 and Erlang 25.0.4. It's expected to be a safe update from v1.9.0.
v1.9.0 - 2022-08-23
This release removes warnings when using Elixir 1.14 rc releases since they appear to work fine.
- Improvements
- Added
mix nerves.artifact.detailsto list information in Nerves system and toolchain projects. Thanks to @udoschneider for this feature. - Many documentation updates including version charts for Nerves systems. Thanks to @mnishiguchi.
- Added
v1.8.0 - 2022-05-11
This release requires Elixir 1.11.2 or later. It has no new features. This is the first batch of updates to improve our ability to maintain Nerves tooling long term now that we can remove old features and workaround.
- Bug fix
- Fix missing space in
CFLAGSandCXXFLAGS. It would sometimes cause compiler warnings.
- Fix missing space in
v1.7.16
- Bug fix
- Fix Erlang compiler check so that Erlang/OTP 24.3 does not trigger an error when building projects.
v1.7.15
- Bug fix
- Fix
TARGET_GCC_FLAGSissue that inadvertently removedCFLAGSoptions on Nerves systems that used it.
- Fix
v1.7.14
- Improvements
- Unset environment variables set by Erlang that can confuse some C/C++ libraries when building.
- Add experimental support for
TARGET_GCC_FLAGSfor enabling CPU-specific features in NIFs and ports via Nerves package definitions. This is similar in intent toTARGET_CPU, etc.
v1.7.13
- Improvements
- Verify the remote website when downloading artifacts. This fixes the warning about unverified HTTPS connections.
- Fix error message printout when Nerves toolchain builds fail
v1.7.12
- Improvements
- Allow Elixir 1.13.0-rc.0 to be used to build projects. It looks like it works fine and doesn't cause issues with Nerves.
- Add message after the build completes to let you know what to do next.
v1.7.11
- Bug fixes
- Don't set xattrs when running
mix firmware.unpack. This fixes filesystem permission errors during extraction for some users.
- Don't set xattrs when running
v1.7.10
- Improvements
- Update
mix firmware.unpackto be more flexible with input firmware and output directories. If you're usingmix firmware.unpackin a script, you may need to update the script. - Reduce C compiler build prints
- Update
v1.7.9
- Improvements
- Add helper script generator for using gdb to analyze core dumps. Nerves systems ship with debug symbols (target images have these stripped) that can be used to get stack traces and more from core dumps from the Erlang VM and other C/C++ programs. See the Debugging C in Nerves blog post for an example.
- Support the new
:limitsoption in erlinit so that it's possible to set the core dump limits (i.e., enable core dumps) before Erlang starts.
v1.7.8
- Bug fixes
- Fix toolchain downloads when using Erlang/OTP 24 on Apple M1 macs.
v1.7.7
- Bug fixes
- Fix compiler version check error when using Erlang/OTP 24
v1.7.6
- Enhancements
- Update supported Elixir version to include 1.12
v1.7.5
- Bug fixes
- Fixes an issue where query parameters would be percent-encoded twice.
Packages that use
query_paramsargument option toartifact_sitescould be impacted. For example, packages storing build artifacts in AWS S3 require theX-Amz-Credentialquery parameter key whose value includes the reserved character/. This symbol is double encoded to%252F. This failed on systems with Erlang OTP-23.2 and above. See https://github.com/nerves-project/nerves/issues/604 for additional context.
- Fixes an issue where query parameters would be percent-encoded twice.
Packages that use
v1.7.4
- Experimental features
- Packages can provide custom system environment variables to be exported. The initial use case for this feature is to export system specific information for llvm-based tools.
v1.7.3
Bug fixes
Fixes a hang when downloading artifacts from GitHub. The hang looked like this and affected artifact downloads from public GitHub repositories:
Resolving Nerves artifacts... Resolving nerves_toolchain_xyz => Trying https:...
v1.7.2
- Bug fixes
- Fix Elixir semver requirements to produce warnings on unsupported versions.
- Produce better errors on HTTP timeouts
v1.7.1
- Enhancements
- Documentation and docker improvements for Windows Subsystem for Linux 2
v1.7.0
Nerves 1.7.0 removes support for creating OTP releases using Distillery and only supports using Elixir releases. As a result, the minimum supported version of Elixir is now version 1.9.
Official Nerves systems now support applying firmware using patches. This greatly reduces the amount of data that required to push firmware updates to devices. The minimum requirement for fwup has been updated to 1.8 to enable support for this feature.
- Bug fixes
- Pass all unspecified erlinit args to the generator instead of silently ignoring them.
- Use host CC when compiling the port.
v1.6.5
- Bug fixes
- Fix issues with executing system commands on non mac hosts.
v1.6.4
Experimental features
Added
mix firmware.patchto locally create firmware patch files for feature testing. This feature is under development. See the experimental features doc for more info.Added
:mksquashfs_flagsto the nerves firmware config to allow passing additional flags to themksquashfscall that produces the final rootfs. If you are experimenting with creating patchable firmware, you should use this feature to disable squashfs compression.config :nerves, :firmware mksquashfs_flags: ["-noI", "-noD", "-noF", "-noX"]
Bug fixes
- Replace calls to
System.cmdwith aNerves.Port.cmd. This code was provided bymuontrapand is used to clean up spawned system processes when the vm exits. This fixes issues with the docker build runner executing multiple times and multiple calls tomix firmwareafter breaking out of the VM before the first call finishes. - Fix issue where SD card detection may fail while calling
mix burnwhenfwupreturns additional fields. - Clean the release directory when calling
mix firmware. This prevents OTP releases from accumulating unnecessary libraries and OTP applications over time.
- Replace calls to
v1.6.3
- Bug fixes
- Fix required key validation on github_api resolver.
v1.6.2
Bug fixes
Improve error message returned when calling
mix firmwarewhen the local system artifact cannot be found and possibly needs to be built.GitHub API artifact resolver will no longer raise if missing required opts.
The GitHub API artifact resolver is useful when you want to enable access to artifacts added to GitHub releases in private GitHub repositories. Fetching an artifact from a private GitHub repo requires the passing
username, token, tagas options. If any of these options were omitted, the resolver would raise and prevent compilation from continuing. This is problematic when you are trying to actually compile the system in CI. Artifact resolvers should make a best effort on downloading the artifacts, and return{:error, reason}if they are unsuccessful. This will allow the system to fall back to performing a compile.
v1.6.1
- Enhancements
- Updated documentation to reflect changes in
nerves_bootstrap 1.8Updates references tonerves_init_gadgetand replace withnerves_pack. This change shifts new projects and main documentation to promote the use ofvintage_netfor device networking. - Bump the host installed
fwupversion requirement to~> 1.5.
- Updated documentation to reflect changes in
v1.6.0
Nerves 1.6.0 adds support for Elixir 1.10.
As part of the update to Elixir 1.10, it became more difficult to support old
Elixir and Erlang versions. Therefore, Nerves 1.6.0 requires at least Elixir
v1.7.0 and Erlang/OTP 21. If your project requires an older version of Elixir or
Erlang/OTP you can pin the version of nerves to an older version.
For example, set your nerves dependency in your mix.exs to:
{:nerves, "~> 1.5.0", runtime: false},- Enhancements
- Add support for aarch64 host architecture.
- Add
mix firmware.metadatafor listing firmware metadata values.
v1.5.4
Enhancements
- Add
mix firmware.unpackto unpack generated.fwfiles. This is useful to inspect the contents of the target root filesystem and other .fw info on the host. Update
mix burnto accept the path to a.fwfile with--firmware | -i.
- Add
Bug fixes
- Invoke
mix firmwarewhen callingmix firmware.image. This matches the behavior ofmix firmware.burn. - Fix issue with artifact base_dir expansion. This fixes an issue where mix would attempt to resolve the nerves dependency artifacts even though they have already been downloaded.
- Always generate
erlinit.config, even if there are no config override in mix config. This fixes an issue where removing overrides from mix config would not update the erlinit.config.
- Invoke
v1.5.3
- Bug fixes
- Fix various erlinit option parsing/formatting issues.
v1.5.2
Enhancements
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_epochin 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
- Do not require sudo on
mix burnif already privileged. - Keep all boot scripts. Previously, extraneous boot scripts from the OTP release process were removed. Keeping them makes it possible to start Erlang slave nodes and support use cases where triggers at device boot time launch different scripts.
- Do not require sudo on
v1.5.1
- Bug fixes
- Update compiler check on
mix firmwareto use the system OTP version when recommending an Elixir install. - Check if using Distillery when calling
mix nerves.release.init. This is no longer required for Elixir 1.9+ releases.
- Update compiler check on
v1.5.0
Updating to Nerves v1.5.0 requires modifications to your project See the project update guide to learn how to migrate your project.
Enhancements
- Added support for Elixir 1.9+ releases.
Bug fixes
- Do not include empty priv directories when constructing rootfs priorities.
v1.4.5
Enhancements
- Updated docs.
Bug fixes
- Updated the requirement for
distilleryto~> 2.0.12. This fixes an issue wherenerveswould downgrade to1.4.0when updatingshoehorn. - Empty
privdirectories are not added to the squashfs sort ordering list.
- Updated the requirement for
v1.4.4
- Bug fixes
- This improves the path fix in v1.4.3 (see https://github.com/nerves-project/nerves/issues/389) to cover the local build runner as well.
v1.4.3
Bug fixes
Raise an exception if the artifact cache fails to create a directory
Fixes
ArgumentErrorwhen using OTP >= 21.3.0 and callingmix nerves.system.shellFixes issue with
mix nerves.system.shellusingasdf>= 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
v1.4.2
- Improvements
- Generate rootfs.priorities file. This is used internally when constructing the squashfs filesystem to arrange the contents in the order the files are loaded at runtime which improves boot performance.
v1.4.1
- Improvements
- Improve error message when artifacts can't be found
v1.4.0
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.
v1.3.4
- Bug fixes
- Fixed issue where specifying
build_runner_optswithoutbuild_runnerwould preventbuild_runner_optsfrom being set. - Allow
http_optsto be merged in from the artifact site opts. This fixes an issue with downloading artifacts from github enterprise by specifying[autoredirect: true]in the artifact site opts.
- Fixed issue where specifying
v1.3.3
- Bug fixes
- Lock dependency on distillery to
2.0.10to work around: https://github.com/bitwalker/distillery/issues/585
- Lock dependency on distillery to
v1.3.2
- Bug fixes
- Improved handling for burning firmware with Windows Subsystem for Linux.
mix nerves.deps.getwill raise if a download was incomplete or corrupt after trying all resolvers.mix firmware.burnwill callmix firmwareto ensure the firmware is the latest.mix burnwas added to allow for burning the latest built firmware without callingmix firmware.
v1.3.1
- Bug fixes
- Fix
fwupinvocations for NixOS users - Add
--verboseoption onmix firmwareto help debug OTP release generation - Force users to run Elixir 1.7.3 or later if using Elixir 1.7. This avoids a known issue in Elixir 1.7.2 and Distillery 2.0.
- Remove unused cookies in default
rel/config.exsfiles
- Fix
v1.3.0
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
endTo this:
release :my_app do
set version: current_version(:my_app)
plugin Shoehorn
plugin Nerves
endUpdate shoehorn
You will need to update your version of shoehorn to {:shoehorn, "~> 0.4"}.
v1.2.1
- Enhancements
- Update minimum required version for fwup to at least 1.2.5
v1.2.0
- Enhancements
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 delegate it to an app that sets nerves_provisioning: "path/to/file" config :nerves, :firmware, provisioning: :nerves_hubBug Fixes
- Fix issue with setting provisioning environment variables when calling
mix firmware.burnon Linux systems. Environment variables prefixed withNERVES_and the variableSERIAL_NUMBERwill be copied into the environment.
- Fix issue with setting provisioning environment variables when calling
v1.1.1
Enhancements
- Updated docs to bump required versions of tools.
Bug Fixes
- Docker build runner
- Use the version of the
nerves_system_bras the tag for the docker image to pull by default. - Create and set the user id and group id in the docker entrypoint. This fixes issues with building buildroot packages that require access to the users home folder.
- Use the version of the
- Docker build runner
v1.1.0
Enhancements
mix firmware.burncan run within Windows Subsystem for Linux- Added
make_argstobuild_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
v1.0.1
- Enhancements
- General documentation updates.
- Bug fixes
- Do not fetch artifacts on deps.get if they are overridden using environment
variables like
NERVES_SYSTEM=/path/to/system.
- Do not fetch artifacts on deps.get if they are overridden using environment
variables like
v1.0.0
- Bug Fixes
Nerves.Artifact.BuildRunners.Dockerwas running as root and caused file permission issues with thedepsdirectory of the rootmixproject. TheDockerbuild runner now executes as the same user id and group id as the host.
v1.0.0-rc.2
This version renames the module Nerves.Artifact.Provider to
Nerves.Artifact.BuildRunner. This change should only affect custom systems
and host tools that override the defaults in nerves_package config.
- Enhancements
- Allow specifying multiple rootfs_overlay directories in the config.
- Automatically remove corrupt files from the download directory.
- Updated System documentation.
- Bug Fixes
- Check the download directory before attempting to download the artifact.
- Changed the host tool check to use
System.find_executable("command")instead of calling out toSystem.cmd("which", ["command"]). This addressed an issue with NodeJS breaking anything that called intowhichresulting in an obscure error.
v1.0.0-rc.1
This rc contains documentation cleanup and updates through out.
Enhancements
Support forwarding the ssh-agent through Docker for the Nerves system shell.
Allow headers and query params to be passed to the
:prefixartifact_siteshelper.Example:
{:prefix, "https://my_server.com/", headers: [{"Authorization", "Basic 1234"}]}{:prefix, "https://my_server.com/", query_params: %{"id" => "1234"}}Added
github_apitoartifact_sitesfor accessing release artifacts on private github repositories.Example:
{:github_api, "owner/repo", username: "skroob", token: "1234567", tag: "v0.1.0"}
Bug Fixes
Disable the nerves_package compiler if the
NERVES_ENV_DISABLEDis set. This makes it easier to executemixtasks without building the system.Example:
NERVES_ENV_DISABLED=1 mix docs
v1.0.0-rc.0
Nerves no longer automatically compiles any nerves_package that is missing its
pre-compiled artifact. This turned out to rarely be desired and caused
unexpectedly long compilation times when things like the Linux kernel or gcc got
compiled.
When a pre-compiled artifact is missing, Nerves will now tell you what your
options are to resolve this. It could be retrying mix deps.get to download it
again. If you want to force compilation to happen, add a :nerves option for
the desired package in your top level project:
{:nerves_system_rpi0, "~> 1.0-rc", nerves: [compile: true]}- Bug Fixes
- Mix raises a more informative error if the
nerves_packagecompiler attempts to run and thenerves_bootstrapapplication has not been started. This also produces more informative errors when trying to compile from the top of an umbrella.
- Mix raises a more informative error if the
v0.11.0
- Bug Fixes
- Including the entire artifact checksum in artifact download file name was causing issues with file encryption libraries. Fixed by changing the artifact download name to only use the first 7 of the artifact checksum.
v0.10.1
- Bug Fixes
- Ensure the artifact cache dir is clean and created before putting artifacts.
v0.10.0
Enhancements
- Call
bootstrap/1on any package that defines a platform - Added Nerves.Utils.File.tar helper for creating archives
- Only apply the host tuple
portableto packages with typesystem - Packages other then toolchains and systems can override their artifact
paths using an env var of their app name. For example. a package called
:host_toolwould be able to override the artifact path by settingHOST_TOOLin the environment. - Allow any package that declares a provider to create an artifact.
- Fixed up test fixtures and added integration test.
- Call
Bug Fixes
- Do not raise when trying to make a directory when putting an artifact in the global cache.
- Ensure the Nerves environment has been started when calling
nerves artifact
v0.9.4
- Bug Fixes
- Fix artifact archiver to use
Artifact.download_name/1instead ofArtifact.name/1. Fixes issues with the Docker provider andmix nerves.artifact - Fix issue with
nerves.system.shellnot rendering properly
- Fix artifact archiver to use
v0.9.3
- Bug Fixes
- Artifact download_path should use download_name. This was causing a mismatch between dl files from buildroot and the resolver causing it to have to download them twice
- Fixed issue with compiling certain nerves packages when calling
mix deps.compile
v0.9.2
- Bug Fixes
- Fixed issue where env var artifact path overides were being calculated instead of honored.
v0.9.1
- Bug Fixes
- Fixed issue with artifact default path containing duplicate names
Nerves.Env.host_oscan be set from$HOST_OSfor use with canadian cross compileNerves.Env.host_archcan be set from$HOST_ARCHfor use with canadian cross compile- mkdir -p on
Artifact.base_dirbefore trying to link to build path artifacts - raise if artifact_urls are not binaries.
v0.9.0
- Update Notes
Starting in Nerves v0.9.0, artifacts will no longer be fetched during mix compile. Artifact archives are intended to be fetched following mix deps.get.
To handle this, you will need to update your installed version of
nerves_bootstrap by calling mix nerves.local. After updating
nerves_bootstrap, you should update your mix.exs file to add the new
required mix aliases found there. A helper function is available named
Nerves.Bootstrap.add_aliases that you can pipe your existing aliases to like
this:
defp aliases(_target) do
[
# Add custom mix aliases here
]
|> Nerves.Bootstrap.add_aliases()
endAlso, update your nerves dependency to:
{:nerves, "~> 0.9", runtime: false}
API Changes
- Moved
Nerves.Package.ProviderstoNerves.Artifact.Providers - Moved
Nerves.Package.Providers.HTTPtoNerves.Artifact.Resolver Nerves.Artifact.Resolverno longer implements theNerves.Artifact.Providerbehaviour.
- Moved
Enhancements
Added Mix task
nerves.artifact.get. Use to fetch the artifact archive from anartifact_urllocation. Once downloaded its checksum will be checked againstartifact_checksumfrom thenerves_packageconfig inmix.exs. The Mix tasknerves.deps.getwill recursively callnerves.artifact.getto fetch archives.Added Mix task
nerves.artifact. This task will produce the artifact archive file which are used when callingnerves.artifact.get.Nerves packages can override the Provider in the
nerves_packageconfig inmix.exsusing the keysproviderandprovider_opts. This is useful to force a package to build using a specific provider likeNerves.Artifact.Providers.Docker. See the package configuration docs for more information.Added
artifact_sitesto thenerves_packageconfig. Artifact sites are helpers that are useful for cleanly specifying locations where artifacts can be fetched. If you are hosting your artifacts using Github releases you can specify it like this:artifact_sites: [ {:github_releases, "organization/project"} ]You can also specify your own custom server location by using the
:prefixhelper by passing a url or file path:artifact_sites: [ {:prefix, "/path/to/artifacts"} {:prefix, "https://my_bucket.s3-east.amazonaws.com/artifacts"} ]Artifact sites will be tried in order until one successfully downloads the artifact.
Bug Fixes
- Fixed issue with
Nerves.Utils.HTTPResolvercrashing when missing thecontent-dispositionandcontent-lengthheaders. - Run integrity check on tar files to validate they are not corrupted on download.
- Fixed issue with
v0.8.3
Bug Fixes
Revert plugin Nerves in new project generator until the fix can be made in distillery. This issue was causing the release to contain compiled libraries from the host instead of the target. The error would look similar to this
Got: ELF 64-bit LSB relocatable, x86-64, version 1 If binary, expecting: ELF 32-bit LSB executable, ARM, EABI5 version 1, interpreter /lib/ld-linux.so.3, for GNU/Linux 4.1.39You can fix this by updating and regenerating the new project.
v0.8.2
Enhancements
- Added contributing guide
- Improved error messages when
NERVES_SYSTEMorNERVES_TOOLCHAINare unset.
Bug Fixes
- Don't override the output_dir in the Distillery Plugin.
v0.8.1
Bug Fixes
Fixed an error in the
NervesDistillery plugin that was causing the following error message:Plugin failed: no function clause matching in IO.chardata_to_string/1
v0.8.0
Enhancements
- Removed legacy compiler key from the package struct. The
nerves_packagecompiler will be chosen by default. - Simplified the distillery release config by making Nerves a distillery plugin
- Skip archival phase when making firmware.
- Allow the progress bar to be disabled for use in CI systems by setting
NERVES_LOG_DISABLE_PROGRESS_BAR=1 - Deprecate nerves.exs. The contents of nerves.exs files have been moved into mix.exs under the project key
nerves_package
- Removed legacy compiler key from the package struct. The
Bug Fixes
- raise an exception when the artifact build encounters an error
v0.7.5
Enhancements
- Docker
- Reduced the image size by optimizing docker file.
- Images are pulled from Docker Hub instead of building locally.
- Containers are transient and build files are stored in docker volumes.
- NERVES_BR_DL_DIR is mounted as a host volume instead of a docker volume.
- Docker
Bug Fixes
- Docker
- Fixed issue where moving the project location on the host would require the container to be force deleted.
- Docker
v0.7.4
- Bug Fixes
- Make sure the path NERVES_DL_DIR exists before writing artifacts to it.
v0.7.3
- Enhancements
- [mix firmware.image] remove the need to pass an image name. Default to the app name.
- [mix] added shortdocs to all mix tasks.
- [fwup] bumped requirement to ~> 0.15 and support 1.0.0 pre release.
- Cache downloads to ~/.nerves/dl or $NERVES_DL_DIR if defined.
v0.7.2
- Bug Fixes
- Fixed issue where
nerves.system.shellwould hang and load improperly.
- Fixed issue where
- Enhancements
- Deprecated the
rootfs_additionsconfiguration option, to be superseded by therootfs_overlayoption, which matches the convention used by the Buildroot community.
- Deprecated the
v0.7.1
- Bug Fixes
- The
nerves.system.shellMix task should not domake cleanby default.
- The
- Enhancements
- The "Customizing Your Own Nerves System" documentation has been updated to
include the
mix nerves.system.shellfunctionality, including a blurb to recommend running a clean build any time it's not working as expected.
- The "Customizing Your Own Nerves System" documentation has been updated to
include the
0.7.0
- Bug Fixes
- Try to include the parent project when loading Nerves packages
- Better error message from the Docker provider when Docker is not installed
- Delete system artifact directories only when instructed by
mix nerves.cleanon Linux. This prevents triggering a full rebuild for every change made to a custom system.
- Enhancements
- Added support for the new
nerves.system.shelltask, provided bynerves_bootstrap, toNerves.Package.Providers.DockerandNerves.Package.Providers.Local, which provides a consistent way to configure a Buildroot-based Nerves system on both OSX and Linux. This replaces thenerves.shellMix task, which had not been fully implemented. mix firmware.burnno longer asks for your password if using Linux and have read/write permissions on the SD card device.
- Added support for the new
0.6.1
- Bug Fixes
- Docker Provider: Fix version parsing issue when major, minor, or patch contains leading zeros.
0.6.0
- Bug Fixes
- Require Nerves Packages to have a version
- Enhancements
- Propagate Mix.Project.config settings into the firmware metadata
- Removed checksum from docker container name. Docker provider now only builds changes
- Added Nerves.Env.clean for cleaning package providers
0.5.2
- BugFixes
- Handle redirects manually as a fix to OTP 19.3 caused by ERL-316
0.5.1
- BugFixes
- Handle redirects manually as a fix to OTP 19.3 caused by ERL-316
0.5.0
- Bug Fixes
:nocachethe HTTP provider if the download list is empty- return an error when tar is unsuccessful at decompressing an artifact
- return
:errorfor any error in downloading artifacts - clean up temp files after downloading artifacts
- expand path before comparing for dep type: Fixes path deps in umbrella
- clean up artifact dir before copying new artifact
- Enhancements
- changed console output for higher visibility Nerves compiler messages
- added ability to specify the images_path in the Mix.Project config
- changed default images_path to
#{build_path}/nerves/images - updated docs to reflect changes made to project structure
- added
mix nerves.infotask. Can be used to gain information about the Nerves env
0.4.8
- Bug Fixes
- removed
--silentfrommix release.cleanfor compatibility with:distillery ~> 1.2.0
- removed
0.4.7
- Bug Fixes
- [Providers.Local] Fix return error on non zero exit status code
- Fixed IO stream split to handle ANSI code case regression
0.4.6
- Bug Fixes
- fix artifact http download manager to take as long as it needs unless idle for more than 2 minutes.
- [Providers.Docker] Fixed IO stream parsing to handle occasions where ANSI codes are not being passed.
- loosened dependency on distillery
0.4.5
- Bug Fixes
- catch exits from mix release.clean when calling mix firmware
0.4.4
- Bug Fixes
- return an
{:error, message}response from the http provider when a resource is not found
- return an
0.4.3
Enhancements
- Mix will display a progress bar, percentage, and total / expected bytes when downloading artifacts.
- Added task
mix firmware.image my_app.imgfor producing images for use with applications like dd - Silenced output from distillery which would contain misleading information for the nerves project
Bug Fixes
- Docker provider could potentially produce application id's that were invalid
0.4.2
- Bug Fixes
- Fixed issue where artifact paths could not be set by system env var
- Mix Task
nerves.release.initwas failing due to missing template. Include priv in hex package files.
0.4.1
- Bug Fixes
- Do not stop the Nerves.Env at the end of the package compiler. This would cause the packages to resolve the wrong dep type.
- Fixed issue where remote artifacts would not be globally cached
- Fixed issue with package compiler where it would always force systems to be built
0.4.0
- Enhancements
- Improved test suite
- Added documentation for modules
- Consolidated the Nerves Environment to the Nerves package
0.4.0-rc.0
- Enhancements
- Consolidated compilers into
nerves_package. - Removed dependency for
nerves_system - Removed dependency for
nerves_toolchain - Added Docker provider for building custom systems on machines other than linux
- Consolidated compilers into
0.3.4
- Bug Fixes
- Fixed regression with
mix firmware.burnto allow prompts
- Fixed regression with
- Enhancements
- Added ability to override task in
mix firmware.burn. You can now pass-tor--taskto performupgradeor anything else. Default iscomplete
- Added ability to override task in
0.3.3
- Bug Fixes
- Updated nerves.precompile / loadpaths to support Elixir 1.3.x aliases.
- Enhancements
- Removed dependency on porcelain
0.3.2
- Bug Fixes
- Support for elixir 1.3.0-dev
- Invoke
nerves.loadpathson preflight ofmix firmwareandmix firmware.burn. FixesERROR: It looks like the system hasn't been built!
0.3.1
- Enhancements
- Perform host tool checks before executing scripts
0.3.0
- Enhancements
- Added nerves_bootstrap archive
mix firmwareCreate firmware bundles from mixmix firmware.burnBurn Firmware bundles to SD cards
0.2.0
- Enhancements
- Added support for 0.4.0 system paths