Nerves#
サポートするデバイス#
https://github.com/nerves-project に nerves_system_*** が存在すれば使用することができる。
tips#
targetにのみ依存するコードとhostでも動作するコードを分けてコンパイルする方法#
警告
非推奨です。開発時の手間が多くなるので使うのをやめました。
https://elixirforum.com/t/how-to-exclude-compilation-of-module-which-is-only-works-on-target/34084
elixirc_paths については https://hexdocs.pm/mix/Mix.Tasks.Compile.Elixir.html#module-configuration を参照
:mnesiaを使うには#
mix.exsのextra_applicationsに追加する
extra_applications: [:logger, :runtime_tools, :mnesia]
ホストでの開発時にターゲットにしかないライブラリのundefined warningを出さないようにする#
elixirc_options の no_warn_undefined を使う。
https://hexdocs.pm/mix/Mix.Tasks.Compile.Elixir.html#module-configuration
defp elixirc_options(:host, _env),
do: [
no_warn_undefined: [
Nerves.Runtime,
Nerves.Runtime.KV,
NervesHubLink,
VintageNet
]
]
Gitの情報をFirmwareと紐付ける#
defp set_firmware_info() do
:ok = System.put_env("NERVES_FW_VCS_IDENTIFIER", vcs(:commit))
:ok = System.put_env("NERVES_FW_MISC", "env: #{Mix.env()}, branch: #{vcs(:branch)}")
end
defp vcs(:branch) do
{branch, 0} = System.cmd("git", ~w"rev-parse --abbrev-ref --verify HEAD")
String.trim(branch)
end
defp vcs(:commit) do
{commit, 0} = System.cmd("git", ~w"rev-parse --verify HEAD")
String.trim(commit)
end
ポンチョの依存プロジェクトの環境変数をメインプロジェクトに合わせる#
{:poncho_app, path: "../poncho_app", env: Mix.env()},
vm.argsの設定はどこでできるか?#
Nervesプロジェクトのrel/vm.args.eex
iexのhistoryをdisableしたい場合はこのファイルを編集する