Запуск смеси deps.get throws: ошибка аргумента erlang.binary_to_atom - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю проект Nerves и пытаюсь проверить, будет ли моя специальная прошивка встроена в основное приложение Nerves, следуя инструкциям здесь . Я настроил проект пользовательского интерфейса с Phoenix и у меня есть собственный образ в его собственном каталоге в каталоге проекта. Основной проект Nerves здесь , а пользовательская прошивка здесь Я установил свой MIX_TARGET равным имени пользовательского образа (rpi0_wiringPi) и при запуске:

mix deps.get

Я получаю ошибку

* (ArgumentError) argument error
:erlang.binary_to_atom(nil, :utf8)
(stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5
(stdlib) erl_eval.erl:232: :erl_eval.expr/5
(stdlib) erl_eval.erl:233: :erl_eval.expr/5
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5

И теперь все, что я делаю в отношении mix в этом каталоге, выдает ту же ошибку, включая help mix. Это могло бы сказать мне, что что-то не так в файле mix.exs для этого проекта, но он ниже и выглядит хорошо для меня

defmodule Fw.MixProject do
  use Mix.Project

  @target System.get_env("MIX_TARGET") || "host"

  def project do
    [
      app: :fw,
      version: "0.1.0",
      elixir: "~> 1.4",
      target: @target,
      archives: [nerves_bootstrap: "~> 1.0"],
      deps_path: "deps/#{@target}",
      build_path: "_build/#{@target}",
      lockfile: "mix.lock.#{@target}",
      start_permanent: Mix.env() == :prod,
      aliases: [loadconfig: [&bootstrap/1]],
      deps: deps()
    ]
  end

  # Starting nerves_bootstrap adds the required aliases to Mix.Project.config()
  # Aliases are only added if MIX_TARGET is set.
  def bootstrap(args) do
    Application.start(:nerves_bootstrap)
    Mix.Task.run("loadconfig", args)
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
    mod: {Fw.Application, []},
    extra_applications: [:logger, :runtime_tools]
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:nerves, "~> 1.3", runtime: false},
      {:nerves_network, "~> 0.3"},
      {:ui, path: "../ui"},
      {:shoehorn, "~> 0.2"}
    ] ++ deps(@target)
  end

  # Specify target specific dependencies
  defp deps("host"), do: []

  defp deps(target) do
    [
      {:nerves_runtime, "~> 0.8"}
    ] ++ system(target)
  end

  defp system("rpi"), do: [{:nerves_system_rpi, "~> 1.0", runtime: false}]
  defp system("rpi0"), do: [{:nerves_system_rpi0, "~> 1.0", runtime: false}]
  defp system("rpi0_wiringPi"), do: [{:nerves_system_rpi0_wiringPi, path: "../nerves_system_rpi0_wiringPi", runtime: false}]
  defp system("rpi2"), do: [{:nerves_system_rpi2, "~> 1.0", runtime: false}]
  defp system("rpi3"), do: [{:nerves_system_rpi3, "~> 1.0", runtime: false}]
  defp system("bbb"), do: [{:nerves_system_bbb, "~> 1.0", runtime: false}]
  defp system("ev3"), do: [{:nerves_system_ev3, "~> 1.0", runtime: false}]
  defp system("qemu_arm"), do: [{:nerves_system_qemu_arm, "~> 1.0", runtime: false}]
  defp system("x86_64"), do: [{:nerves_system_x86_64, "~> 1.0", runtime: false}]
  defp system(target), do: Mix.raise("Unknown MIX_TARGET: #{target}")
end

Это структура каталогов:

clicky
  fw
  ui
  nerves_system_rpi0_wiringPi

Поскольку микс вызывает ошибку независимо от того, что я делаю, я не могу получить от нее никакой помощи. Есть ли способ заставить mix записать журнал того, что он делает, или что-то еще, что помогло бы мне решить проблему?

1 Ответ

0 голосов
/ 15 ноября 2018

Я тоже столкнулся с этой ошибкой.Оказывается, не было проблем с mix.exs.Я пренебрег установкой переменных сетевого окружения Nerves (NERVES_NETWORK_SSID, NERVES_NETWORK_PSK и NERVES_NETWORK_MGMT) в config.exs.Как только я исправил этот микс, deps.get работал.

...