The end-user project is always recompiled when MIX_TARGET is set
axelson opened this issue · 5 comments
Environment
- Elixir version (
elixir -v
): Elixir 1.9.4 (compiled with Erlang/OTP 22) - Nerves environment:
mix nerves.env --info
==> nerves
/usr/bin/make -C src all
make[1]: Entering directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/src'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/src'
if [ -f test/fixtures/port/Makefile ]; then /usr/bin/make -C test/fixtures/port; fi
==> blinky
|nerves_bootstrap| Environment Package List
Pkg: nerves_system_br
Vsn: 1.11.4
Type: system_platform
BuildRunner: {nil, []}
Pkg: nerves_system_rpi3
Vsn: 1.11.2
Type: system
BuildRunner: {Nerves.Artifact.BuildRunners.Local, []}
Pkg: nerves_toolchain_arm_unknown_linux_gnueabihf
Vsn: 1.3.2
Type: toolchain
BuildRunner: {Nerves.Artifact.BuildRunners.Local, []}
Pkg: nerves_toolchain_ctng
Vsn: 1.7.2
Type: toolchain_platform
BuildRunner: {nil, []}
|nerves_bootstrap| Loadpaths Start
Nerves environment
MIX_TARGET: rpi3
MIX_ENV: dev
|nerves_bootstrap| Environment Variable List
target: rpi3
toolchain: /home/jason/.local/share/nerves/artifacts/nerves_toolchain_arm_unknown_linux_gnueabihf-linux_x86_64-1.3.2
system: /home/jason/.local/share/nerves/artifacts/nerves_system_rpi3-portable-1.11.2
app: /home/jason/dev/forks/nerves_examples/blinky
|nerves_bootstrap| Loadpaths End
- Additional information about your host, target hardware or environment that
may help
Current behavior
Reproduction repo (includes steps)
https://github.com/axelson/nerves_examples/tree/test-regression
Expected behavior
Project is only recompiled once when running mix compile
(unless changes are made of course)
A weird thing is that if I use nerves as a :path
dependency ec5ae3f then the project still always gets recompiled, but without the make output.
MIX_DEBUG=true mix compile --verbose # with nerves :path dep pointing to good commit (does recompile but no make output)
** Running mix loadconfig (inside Blinky.MixProject)
** Running mix compile --verbose (inside Blinky.MixProject)
** Running mix loadpaths --verbose (inside Blinky.MixProject)
** Running mix archive.check --verbose (inside Blinky.MixProject)
** Running mix nerves.loadpaths (inside Blinky.MixProject)
** Running mix nerves.precompile (inside Blinky.MixProject)
** Running mix deps.precompile (inside Blinky.MixProject)
==> nerves
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
==> nerves_system_br
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
==> nerves_toolchain_ctng
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
==> nerves_system_linter
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
==> nerves_toolchain_arm_unknown_linux_gnueabihf
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
==> nerves_system_rpi3
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
==> blinky
** Running mix will_recompile (inside Blinky.MixProject)
** Running mix nerves.loadpaths (inside Blinky.MixProject)
Nerves environment
MIX_TARGET: rpi3
MIX_ENV: dev
** Running mix nerves.env (inside Blinky.MixProject)
** Running mix deps.loadpaths --verbose (inside Blinky.MixProject)
** Running mix compile.all --verbose (inside Blinky.MixProject)
** Running mix compile.yecc --verbose (inside Blinky.MixProject)
** Running mix compile.leex --verbose (inside Blinky.MixProject)
** Running mix compile.erlang --verbose (inside Blinky.MixProject)
** Running mix compile.elixir --verbose (inside Blinky.MixProject)
Compiling 1 file (.ex)
Compiled lib/blinky.ex
** Running mix compile.xref --verbose (inside Blinky.MixProject)
** Running mix compile (inside Blinky.MixProject)
** Running mix compile.app --verbose (inside Blinky.MixProject)
Generated blinky app
** Running mix compile.protocols --verbose (inside Blinky.MixProject)
Consolidated Socket.Datagram.Protocol
Consolidated Socket.Stream.Protocol
Consolidated List.Chars
Consolidated Socket.Protocol
Consolidated Collectable
Consolidated String.Chars
Consolidated Enumerable
Consolidated IEx.Info
Consolidated Inspect
MIX_DEBUG=true mix compile --verbose # on github dep 40a77d8 (does recompile, and shows make output)
** Running mix loadconfig (inside Blinky.MixProject)
** Running mix compile --verbose (inside Blinky.MixProject)
** Running mix loadpaths --verbose (inside Blinky.MixProject)
** Running mix archive.check --verbose (inside Blinky.MixProject)
** Running mix nerves.loadpaths (inside Blinky.MixProject)
** Running mix nerves.precompile (inside Blinky.MixProject)
** Running mix deps.precompile (inside Blinky.MixProject)
==> elixir_make
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside ElixirMake.Mixfile)
==> nerves
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.elixir_make --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
/usr/bin/make -C src all
make[1]: Entering directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/src'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/src'
if [ -f test/fixtures/port/Makefile ]; then /usr/bin/make -C test/fixtures/port; fi
make[1]: Entering directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/test/fixtures/port'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/jason/dev/forks/nerves_examples/blinky/deps/nerves/test/fixtures/port'
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
==> blinky
** Running mix will_recompile (inside Blinky.MixProject)
==> nerves_system_br
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
==> nerves_system_linter
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
==> nerves_toolchain_ctng
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
==> nerves_toolchain_arm_unknown_linux_gnueabihf
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
==> nerves_system_rpi3
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
==> blinky
** Running mix nerves.loadpaths (inside Blinky.MixProject)
Nerves environment
MIX_TARGET: rpi3
MIX_ENV: dev
** Running mix nerves.env (inside Blinky.MixProject)
** Running mix deps.loadpaths --verbose (inside Blinky.MixProject)
** Running mix compile.all --verbose (inside Blinky.MixProject)
** Running mix compile.yecc --verbose (inside Blinky.MixProject)
** Running mix compile.leex --verbose (inside Blinky.MixProject)
** Running mix compile.erlang --verbose (inside Blinky.MixProject)
** Running mix compile.elixir --verbose (inside Blinky.MixProject)
Compiling 1 file (.ex)
Compiled lib/blinky.ex
** Running mix compile.xref --verbose (inside Blinky.MixProject)
** Running mix compile (inside Blinky.MixProject)
** Running mix compile.app --verbose (inside Blinky.MixProject)
Generated blinky app
** Running mix compile.protocols --verbose (inside Blinky.MixProject)
Consolidated Socket.Datagram.Protocol
Consolidated Socket.Stream.Protocol
Consolidated Socket.Protocol
Consolidated List.Chars
Consolidated Collectable
Consolidated String.Chars
Consolidated Enumerable
Consolidated IEx.Info
Consolidated Inspect
MIX_DEBUG=true mix compile --verbose # with github dep on ec5ae3f (does not recompile)
** Running mix loadconfig (inside Blinky.MixProject)
** Running mix compile --verbose (inside Blinky.MixProject)
** Running mix loadpaths --verbose (inside Blinky.MixProject)
** Running mix archive.check --verbose (inside Blinky.MixProject)
** Running mix nerves.loadpaths (inside Blinky.MixProject)
** Running mix nerves.precompile (inside Blinky.MixProject)
** Running mix deps.precompile (inside Blinky.MixProject)
==> nerves
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.MixProject)
==> nerves_system_br
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.BR.Mixfile)
==> nerves_toolchain_ctng
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.Toolchain.Ctng.MixProject)
==> nerves_system_linter
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside Nerves.System.Linter.Mixfile)
==> nerves_toolchain_arm_unknown_linux_gnueabihf
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesToolchainArmUnknownLinuxGnueabihf.MixProject)
==> nerves_system_rpi3
** Running mix compile --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix loadpaths --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.all --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.yecc --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.leex --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.erlang --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.elixir --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.xref --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.app --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
** Running mix compile.nerves_package --no-deps --no-archives-check --no-elixir-version-check --no-warnings-as-errors (inside NervesSystemRpi3.MixProject)
==> blinky
** Running mix nerves.loadpaths (inside Blinky.MixProject)
Nerves environment
MIX_TARGET: rpi3
MIX_ENV: dev
** Running mix nerves.env (inside Blinky.MixProject)
** Running mix deps.loadpaths --verbose (inside Blinky.MixProject)
** Running mix compile.all --verbose (inside Blinky.MixProject)
** Running mix compile.yecc --verbose (inside Blinky.MixProject)
** Running mix compile.leex --verbose (inside Blinky.MixProject)
** Running mix compile.erlang --verbose (inside Blinky.MixProject)
** Running mix compile.elixir --verbose (inside Blinky.MixProject)
** Running mix compile.xref --verbose (inside Blinky.MixProject)
** Running mix compile (inside Blinky.MixProject)
** Running mix compile.app --verbose (inside Blinky.MixProject)
So it looks like the main issue is that elixir_make
always returns {:ok, []}
(source link), which is indicating that nerves
was "recompiled", which means mix will_recompile
is run on the user's application which forces recompilation of all modules.
So it seems that we would need to teach elixir_make
how to detect if anything was actually compiled or not. Which in the general case is most likely not determinable. But I believe it might be possible by creating a specification for the makefile, or perhaps nerves could detect that no files are changed and skip running the elixir_make compiler.
Okay, the above info is correct, but I was thrown off for a bit because :path
dependencies are treated rather differently when it comes to detecting if recompilation is needed.
Here is a Proof of Concept workaround for this issue:
axelson/elixir_make@3c618a7
But since all it does is always return :noop
, it is not a solution
But here is a potential working approach 🎉:
axelson/elixir_make@fc5b0bf
There's some relevant comments and questions inline and I would appreciate any feedback before submitting it as a PR to elixir_make
Here is the commit that uses the patched version of elixir_make that I used to verify that the PoC fix works
axelson/nerves_examples@45b1d63
Here is the commit that uses the potential working fix in blinky:
axelson/nerves_examples@b793671
That's a lot of links! Hopefully I didn't mess up any of them 😃
Thanks for all of the debug. My only idea so for is to add an option to :elixir_make
to specify an output file to check. :elixir_make
would check the file before calling make
and afterwards. If :make
returns success AND the file has the same timestamp before and afterwards, then return :noop
.