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 6 years ago

  • Bug Fixes
    • Nerves.Artifact.BuildRunners.Docker was running as root and caused file
      permission issues with the deps directory of the root mix project.
      The Docker build runner now executes as the same user id and group id as
      the host.

To fix docker permissions you will need to pull the latest docker image
docker pull nervesproject/nerves_system_br:latest

nerves -

Published by mobileoverlord over 6 years ago

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 to System.cmd("which", ["command"]). This addressed an issue with
      NodeJS breaking anything that called into which resulting in an obscure error.
nerves -

Published by mobileoverlord over 6 years ago

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 :prefix artifact_sites
      helper.

      Example:
      {:prefix, "https://my_server.com/", headers: [{"Authorization", "Basic 1234"}]}
      {:prefix, "https://my_server.com/", query_params: %{"id" => "1234"}}

    • Added github_apito artifact_sites for 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_DISABLED is set.
      This makes it easier to execute mix tasks without building the system.

      Example:
      NERVES_ENV_DISABLED=1 mix docs

nerves -

Published by mobileoverlord over 6 years ago

Update Guide

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_package compiler
      attempts to run and the nerves_bootstrap application has not been
      started. This also produces more informative errors when trying to
      compile from the top of an umbrella.
nerves -

Published by mobileoverlord over 6 years ago

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

Published by mobileoverlord over 6 years ago

  • Bug Fixes
    • Ensure the artifact cache dir is clean and created before putting artifacts.
nerves -

Published by mobileoverlord over 6 years ago

  • Enhancements

    • Call bootstrap/1 on any package that defines a platform
    • Added Nerves.Utils.File.tar helper for creating archives
    • Only apply the host tuple portable to packages with type system
    • Packages other then toolchains and systems can override their artifact
      paths using an env var of ther app name. For example. a package called
      :host_tool would be able to override the artifact path by setting
      HOST_TOOL in the environment.
    • Allow any package that declares a provider to create an artifact.
    • Fixed up test fixtures and added integration test.
  • 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
nerves -

Published by mobileoverlord over 6 years ago

  • Bug Fixes
    • Fix artifact archiver to use Artifact.download_name/1 instead of
      Artifact.name/1. Fixes issues with the Docker provider and
      mix nerves.artifact
    • Fix issue with nerves.system.shell not rendering properly
nerves -

Published by mobileoverlord over 6 years ago

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

Published by fhunleth over 6 years ago

  • Bug Fixes
    • Fixed issue where env var artifact path overides were being calculated
      instead of honored.
nerves -

Published by mobileoverlord over 6 years ago

  • Bug Fixes
    • Fixed issue with artifact default path containing duplicate names
    • Nerves.Env.host_os can be set from $HOST_OS for use with canadian
      cross compile
    • Nerves.Env.host_arch can be set from $HOST_ARCH for use with canadian
      cross compile
    • mkdir -p on Artifact.base_dir before trying to link to build path artifacts
    • raise if artifact_urls are not binaries.
nerves -

Published by mobileoverlord over 6 years ago

  • Update Notes

Upgrade guide

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 local.nerves. 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()
  end

Also, update your nerves dependency to:

{:nerves, "~> 0.9", runtime: false}

  • API Changes

    • Moved Nerves.Package.Providers to Nerves.Artifact.Providers
    • Moved Nerves.Package.Providers.HTTP to Nerves.Artifact.Resolver
    • Nerves.Artifact.Resolver no longer implements the
      Nerves.Artifact.Provider behaviour.
  • Enhancements

    • Added Mix task nerves.artifact.get. Use to fetch the artifact archive from an
      artifact_url location. Once downloaded its checksum will be checked against
      artifact_checksum from the nerves_package config in mix.exs. The Mix task
      nerves.deps.get will recursively call nerves.artifact.get to fetch archives.

    • Added Mix task nerves.artifact.archive. This task will produce the
      artifact archive and artifact checksum file which are used when calling
      nerves.artifact.get.

    • Nerves packages can override the Provider in the nerves_package config
      in mix.exs using the keys provider and provider_opts. This is
      useful to force a package to build using a specific provider like
      Nerves.Artifact.Providers.Docker. See the package configuration docs
      for more information.

    • Added artifact_sites to the nerves_package config. Artifact sites
      are helpers that are useful for cleanly specifying locations where artifacts
      can be fetched. If you are hosting your artifacts using Github relases
      you can specify it like this:

      artifact_sites: [
        {:github_releases, "orginization/project"}
      ]
      

      You can also specify your own custom server location by using the :prefix
      helper 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.HTTPResolver crashing when missing the
      content-disposition and content-length headers.
    • Run integrity check on tar files to validate they are not corrupted on
      download.
nerves -

Published by mobileoverlord almost 7 years ago

  • 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.39
      
      You can fix this by updating and regenerating the new project.
nerves -

Published by mobileoverlord almost 7 years ago

  • Bug Fixes
    • Fixed an error in the Nerves Distillery plugin that was causing the following error message:
      Plugin failed: no function clause matching in IO.chardata_to_string/1
      
    • Don't override the output_dir in the Distillery Plugin.
  • Enhancements
    • Added contributing guide
    • Improved error messages when NERVES_SYSTEM or NERVES_TOOLCHAIN are unset.
nerves -

Published by mobileoverlord almost 7 years ago

  • Enhancements

    • Removed legacy compiler key from the package struct. The nerves_package compiler will be chosen by default.
    • Simplified the distillery relase 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
  • Bug Fixes

    • raise an exception when the artifact build encounters an error
nerves -

Published by mobileoverlord about 7 years ago

  • Bug Fixes
    • Make sure the path NERVES_DL_DIR exists before writing artifacts to it.
nerves -

Published by mobileoverlord about 7 years ago

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

Published by mobileoverlord about 7 years ago

  • 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.
  • Bug Fixes

    • Docker
      • Fixed issue where moving the project location on the host would require
        the container to be force deleted.
nerves - Nerves v0.7.2

Published by mobileoverlord about 7 years ago

Nerves v0.7.2

  • Bug Fixes
    • Fixed issue where nerves.system.shell would hang and load improperly.
  • Enhancements
    • Deprecated the rootfs_additions configuration option, to be superseded by
      the rootfs_overlay option, which matches the convention used by the
      Buildroot community.
nerves - Nerves v0.7.1 Bootstrap v0.6.1

Published by mobileoverlord about 7 years ago

Nerves v0.7.1

  • Bug Fixes
    • The nerves.system.shell Mix task should not do make clean by default.
  • Enhancements
    • The "Customizing Your Own Nerves System" documentation has been updated to
      include the mix nerves.system.shell functionality, including a blurb to
      recommend running a clean build any time it's not working as expected.

Nerves.Bootstrap v0.6.1

  • Enhancements
    • Improved error messages in nerves.system.shell Mix task. In particular,
      it now reminds you to set MIX_TARGET.
  • Bug Fixes
    • The nerves.env Mix task (used internally by Nerves) now checks that your
      deps have been fetched before trying to load.
    • Fix extraneous whitespace in mix.exs generated by mix nerves.new
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