We recently released Nerves 1.4.0 and an update to the Nerves new project generator, nerves_bootstrap. The biggest change is support for Elixir 1.8’s Mix target feature. This feature not only cleans up a Nerves project’s mix.exs file, it also makes switching between compiling for your device and testing on your laptop easier. Dependencies are versioned together now rather than in multiple files where library versions could diverge between targets and your host.
If you have an existing Nerves project, you can upgrade to Nerves 1.4.0 without making any changes to your mix.exs. It will still work, but without the new mix target support. When you’re ready, update instructions are at Updating Projects — nerves v1.9.1.
After you update, be aware that the build output directory has changed. You may need to update any scripts that publish the firmware bundle file (.fw file). For example, the nerves_firmware_ssh library’s upload script needed to change due to this. Be sure to update that library when you update.
Just trying nerves for the first time on ubuntu 18.04 and when i run
mix nerves.new mygadget --init-gadget
i get:
(Mix) Nerves v1.0 requires at least Elixir ~> 1.8.
You have 1.7.4. Please update accordingly
As i want to build this for a target system of the raspberry pi3 (a pi3b+) and currently i can only seem to get elixir 1.7.4 and erlang 20.1.3 from erlang solutions - how does nerves resolve this?? i.e. if i update my local elixir and erlang to 1.8 and 21 on my dev machine how does the build process resolve this to run on the pi3 i.e. which versions of erlang and elixir will run on the pi3?
Yes thats the exact page i followed - but before I update my dev machine elixir and erlang to the versions required on the page - i wanted to know what versions of those would be deployed to the rpi3 as 1.7.4 and 20.1.3 are the latest versions for the rpi3 at erlang solutions and hence 1.8 and 21.x dont seem to be supported for the rpi3?? or does the nerves build and deploy system have 1.8 and 21.x versions built in for the rpi3?
Using nerves does not require having Elixir installed on the raspberry pi at all. Nor does nerves use Ubuntu on the raspberry pi.
Nerves builds custom firmware that runs an erlang release and a minimalist buildroot linux installation. It does not do any compilation on the raspberry pi, consequently it doesn’t need Elixir or Erlang installed. The entire built image is only ~20mb.
Ah thanks for the clarification. I assumed it had libraries and a beam run time the facilities of which were dependent on the erlang version used on the device.
I guess i need to give it ago and see how it works.
Thanks for reporting this. I hope that you’ve found the installation page and that it helped. So that you know, I’ve made several PRs based on your post. Several of them have made it into the online docs and one is working it’s way into nerves_bootstrap to improve the error message. I appreciate getting feedback on this and I’m sure it will help someone else in the future.