nerves

Craft and deploy bulletproof embedded software in Elixir

APACHE-2.0 License

Downloads
454.3K
Stars
2.2K
Committers
100
nerves -

Published by mobileoverlord over 4 years ago

  • Enhancements

    • Add mix firmware.unpack to unpack generated .fw files. This is useful
      to inspect the contents of the target root filesystem and other .fw info
      on the host.
    • Update mix burn to accept the path to a .fw file with --firmware | -i.
  • Bug fixes

    • Invoke mix firmware when calling mix firmware.image. This matches the
      behavior of mix 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.
nerves -

Published by mobileoverlord over 4 years ago

  • Bug fixes
    • Fix various erlinit option parsing/formatting issues.
nerves -

Published by mobileoverlord almost 5 years ago

  • 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_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

    • Do not require sudo on mix burn if 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.
nerves -

Published by mobileoverlord over 5 years ago

  • Bug fixes
    • Update compiler check on mix firmware to 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.
nerves -

Published by mobileoverlord over 5 years ago

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.
nerves -

Published by mobileoverlord over 5 years ago

  • Enhancements

    • Updated docs.
  • Bug fixes

    • Updated the requirement for distillery to ~> 2.0.12. This fixes an issue
      where nerves would downgrade to 1.4.0 when updating shoehorn.
    • Empty priv directories are not added to the squashfs sort ordering list.
nerves -

Published by fhunleth over 5 years ago

nerves -

Published by mobileoverlord over 5 years ago

  • 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
      
nerves -

Published by mobileoverlord over 5 years ago

  • 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.
nerves -

Published by mobileoverlord over 5 years ago

  • Improvements
    • Improve error message when artifacts can't be found
nerves -

Published by mobileoverlord over 5 years ago

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.

nerves -

Published by mobileoverlord almost 6 years ago

  • Bug fixes
    • Fixed issue where specifying build_runner_opts without build_runner
      would prevent build_runner_opts from being set.
    • Allow http_opts to 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.
nerves -

Published by mobileoverlord almost 6 years ago

nerves -

Published by mobileoverlord almost 6 years ago

  • Bug fixes
    • Improved handling for burning firmware with Windows Subsystem for Linux.
    • mix nerves.deps.get will raise if a download was incomplete or corrupt
      after trying all resolvers.
    • mix firmware.burn will call mix firmware to ensure the firmware is the
      latest.
    • mix burn was added to allow for burning the latest built firmware without
      calling mix firmware.
nerves -

Published by mobileoverlord about 6 years ago

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"}.

nerves -

Published by mobileoverlord about 6 years ago

  • Enhancements
    • Update minimum required version for fwup to at least 1.2.5
nerves -

Published by mobileoverlord about 6 years ago

  • 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 delgate it to an app that sets nerves_provisioning: "path/to/file"
      
      config :nerves, :firmware,
        provisioning: :nerves_hub
      
    • Bug Fixes

      • Fix issue with setting provisioning environment vairables when calling
        mix firmware.burn on Linux systems. Environment variables prefixed with
        NERVES_ and the variable SERIAL_NUMBER will be copied into the environment.
nerves -

Published by mobileoverlord about 6 years ago

  • Enhancements

    • Updated docs to bump required versions of tools.
  • Bug Fixes

    • Docker build runner
      • Use the version of the nerves_system_br as 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.
nerves -

Published by mobileoverlord over 6 years ago

  • Enhancements

    • mix firmware.burn can run within Windows Subsystem for Linux
    • Added make_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
    
nerves -

Published by mobileoverlord over 6 years ago

  • 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.
Package Rankings
Top 1.51% on Hex.pm
Top 9.55% on Proxy.golang.org
Badges
Extracted from project README
Backers on Open Collective Sponsors on Open Collective CircleCI Hex version Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm Hex.pm