Resolving Hex dependencies... Resolution completed in 0.094s Unchanged: abacus 2.2.0 altar_ai 0.1.0 backoff 1.1.6 bandit 1.11.0 circular_buffer 1.0.0 crontab 1.2.0 db_connection 2.10.0 decimal 2.3.0 deep_merge 1.0.0 dns_cluster 0.2.0 ecto 3.13.6 ecto_sql 3.13.5 elixir_make 0.9.0 ex_dbug 2.1.0 expo 1.1.1 finch 0.21.0 gen_stage 1.3.2 gettext 0.26.2 hpax 1.0.3 interactive_cmd 0.1.4 jason 1.4.5 jido 1.2.0 jido_signal 1.0.0 mime 2.0.7 mint 1.7.1 msgpax 2.4.0 nerves 1.14.1 nerves_discovery 0.1.2 nerves_logging 0.2.4 nerves_runtime 0.13.12 nerves_system_bbb 2.29.4 nerves_system_br 1.33.7 nerves_system_grisp2 0.17.4 nerves_system_mangopi_mq_pro 0.15.4 nerves_system_osd32mp1 0.24.4 nerves_system_qemu_aarch64 0.3.4 nerves_system_rpi 2.0.3 nerves_system_rpi0 2.0.3 nerves_system_rpi0_2 2.0.3 nerves_system_rpi2 2.0.3 nerves_system_rpi3 2.0.3 nerves_system_rpi4 2.0.3 nerves_system_rpi5 2.0.3 nerves_system_x86_64 1.33.4 nerves_toolchain_aarch64_nerves_linux_gnu 13.2.0 nerves_toolchain_armv6_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_armv7_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_ctng 1.10.0 nerves_toolchain_riscv64_nerves_linux_gnu 13.2.0 nerves_toolchain_x86_64_nerves_linux_musl 13.2.0 nerves_uevent 0.1.5 nimble_options 1.1.1 nimble_parsec 1.4.2 nimble_pool 1.1.0 ok 2.3.0 phoenix_pubsub 2.2.0 plug 1.19.1 plug_crypto 2.1.1 postgrex 0.22.1 private 0.1.2 proper_case 1.3.1 property_table 0.3.3 quantum 3.5.3 req 0.5.17 ring_logger 0.11.5 shoehorn 0.9.3 synapse 0.1.1 synapse_ai 0.1.0 tablet 0.3.2 telemetry 1.4.1 telemetry_metrics 1.1.0 telemetry_registry 0.3.2 thousand_island 1.4.3 toolshed 0.4.2 typed_struct 0.3.0 typed_struct_nimble_options 0.1.1 uboot_env 1.0.2 uniq 0.6.2 websock 0.5.3 All dependencies have been fetched ==> tablet Compiling 2 files (.ex) Generated tablet app ==> elixir_make Compiling 8 files (.ex) Generated elixir_make app ==> nerves_discovery Compiling 5 files (.ex) Generated nerves_discovery app ==> decimal Compiling 4 files (.ex) Generated decimal app ==> jason Compiling 10 files (.ex) Generated jason app ==> interactive_cmd Compiling 1 file (.ex) Generated interactive_cmd app ==> nerves HOST_CC port.o HOST_LD port Compiling 50 files (.ex) Generated nerves app ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod Checking for prebuilt Nerves artifacts... Found nerves_system_rpi4 in cache /home/nerves/.nerves/artifacts/nerves_system_rpi4-portable-2.0.3 Found nerves_toolchain_aarch64_nerves_linux_gnu in cache /home/nerves/.nerves/artifacts/nerves_toolchain_aarch64_nerves_linux_gnu-linux_aarch64-13.2.0 ==> nerves ==> nerves_toolchain_ctng Compiling 1 file (.ex) Generated nerves_toolchain_ctng app ==> nerves_toolchain_aarch64_nerves_linux_gnu Generated nerves_toolchain_aarch64_nerves_linux_gnu app ==> nerves_system_br Generated nerves_system_br app ==> nerves_system_rpi4 Generated nerves_system_rpi4 app ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> typed_struct Compiling 2 files (.ex) Generated typed_struct app ==> gen_stage Compiling 10 files (.ex) Generated gen_stage app ==> mime Compiling 1 file (.ex) Generated mime app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nimble_options Compiling 3 files (.ex) Generated nimble_options app ==> plug_crypto Compiling 5 files (.ex) Generated plug_crypto app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> abacus Compiling 3 files (.erl) Compiling 5 files (.ex) warning: Abacus.parse/1 is undefined or private │ 36 │ Abacus.parse(without_parantheses), │ ~ │ └─ lib/format.ex:36:14: Abacus.Format.format/1 └─ lib/format.ex:37:14: Abacus.Format.format/1 └─ lib/format.ex:38:14: Abacus.Format.format/1 └─ lib/format.ex:39:14: Abacus.Format.format/1 └─ lib/format.ex:64:14: Abacus.Format.format/1 └─ lib/format.ex:65:14: Abacus.Format.format/1 └─ lib/format.ex:81:14: Abacus.Format.format/1 └─ lib/format.ex:82:14: Abacus.Format.format/1 └─ lib/format.ex:100:28: Abacus.Format.format/1 Generated abacus app ==> private Compiling 1 file (.ex) Generated private app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> proper_case Compiling 4 files (.ex) warning: redefining @doc attribute previously set at line 89. Please remove the duplicate docs. If instead you want to override a previously defined @doc, attach the @doc attribute to a function head (the function signature not followed by any do-block). For example: @doc """ new docs """ def snake_case(...) │ 102 │ @doc """ │ ~~~~~~~~ │ └─ lib/proper_case.ex:102: ProperCase.snake_case/1 warning: Jason.encode_to_iodata!/1 is undefined (module Jason is not available or is yet to be defined). Make sure the module name is correct and has been specified in full (or that an alias has been defined) │ 2 │ use ProperCase.JSONEncoder, transform: &ProperCase.to_camel_case/1 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/json_encoder/camel_case.ex:2: ProperCase.JSONEncoder.CamelCase.encode_to_iodata!/1 Generated proper_case app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> deep_merge Compiling 2 files (.ex) Generated deep_merge app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> nimble_parsec Compiling 4 files (.ex) Generated nimble_parsec app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry ==> db_connection Compiling 18 files (.ex) Generated db_connection app ==> ecto Compiling 56 files (.ex) Generated ecto app ==> uniq Compiling 4 files (.ex) Generated uniq app ==> crontab Compiling 7 files (.ex) Generated crontab app ==> thousand_island Compiling 18 files (.ex) Generated thousand_island app ==> telemetry_metrics Compiling 7 files (.ex) Generated telemetry_metrics app ==> telemetry_registry Compiling 1 file (.erl) Compiling 1 file (.ex) Generated telemetry_registry app ==> ok Compiling 3 files (.ex) Generated ok app ==> expo Compiling 2 files (.erl) Compiling 22 files (.ex) Generated expo app ==> gettext Compiling 18 files (.ex) Generated gettext app ==> phoenix_pubsub Compiling 12 files (.ex) Generated phoenix_pubsub app ==> dns_cluster Compiling 1 file (.ex) Generated dns_cluster app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling backoff ==> plug Compiling 1 file (.erl) Compiling 42 files (.ex) Generated plug app ==> msgpax Compiling 9 files (.ex) Generated msgpax app ==> postgrex Compiling 70 files (.ex) Generated postgrex app ==> ecto_sql Compiling 25 files (.ex) Generated ecto_sql app ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> nimble_pool Compiling 2 files (.ex) Generated nimble_pool app ==> finch Compiling 14 files (.ex) Generated finch app ==> req Compiling 19 files (.ex) Generated req app ==> quantum Compiling 39 files (.ex) Generated quantum app ==> ex_dbug Compiling 1 file (.ex) Generated ex_dbug app ==> jido_signal Compiling 44 files (.ex) warning: a struct for Jido.Signal.Router.TrieNode is expected on struct update: %Jido.Signal.Router.TrieNode{ node | handlers: %Jido.Signal.Router.NodeHandlers{ handlers: Enum.reduce( handlers, case node.handlers.handlers do x when x === false or x === nil -> [] x -> x end, fn handler, acc -> insert_handler_sorted(acc, handler) end ), matchers: node.handlers.matchers } } but got type: dynamic() where "node" was given the type: # type: dynamic() # from: lib/jido_signal/router/engine.ex:346:14 node when defining the variable "node", you must also pattern match on "%Jido.Signal.Router.TrieNode{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 363 │ %TrieNode{ │ ~ │ └─ lib/jido_signal/router/engine.ex:363:13: Jido.Signal.Router.Engine.do_add_path_route/3 warning: a struct for Jido.Signal.Router.TrieNode is expected on struct update: %Jido.Signal.Router.TrieNode{ node | handlers: %Jido.Signal.Router.NodeHandlers{ handlers: node.handlers.handlers, matchers: insert_matcher_sorted( case node.handlers.matchers do x when x === false or x === nil -> [] x -> x end, matcher ) } } but got type: dynamic() where "node" was given the type: # type: dynamic() # from: lib/jido_signal/router/engine.ex:407:14 node when defining the variable "node", you must also pattern match on "%Jido.Signal.Router.TrieNode{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 408 │ %TrieNode{ │ ~ │ └─ lib/jido_signal/router/engine.ex:408:13: Jido.Signal.Router.Engine.do_add_pattern_route/3 Generated jido_signal app ==> typed_struct_nimble_options Compiling 1 file (.ex) Generated typed_struct_nimble_options app ==> jido Compiling 47 files (.ex) warning: a struct for Jido.Actions.Tasks.Task is expected on struct update: %Jido.Actions.Tasks.Task{ task | completed: if task.completed do false else true end } but got type: dynamic() where "task" was given the type: # type: dynamic() # from: lib/jido/actions/tasks.ex:154:9 task when defining the variable "task", you must also pattern match on "%Jido.Actions.Tasks.Task{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 155 │ updated_task = %Task{task | completed: !task.completed} │ ~ │ └─ lib/jido/actions/tasks.ex:155:26: Jido.Actions.Tasks.ToggleTask.run/2 warning: a struct for Jido.Actions.Tasks.Task is expected on struct update: %Jido.Actions.Tasks.Task{task | title: params.title, deadline: params.deadline} but got type: dynamic() where "task" was given the type: # type: dynamic() # from: lib/jido/actions/tasks.ex:107:9 task when defining the variable "task", you must also pattern match on "%Jido.Actions.Tasks.Task{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 108 │ updated_task = %Task{task | title: params.title, deadline: params.deadline} │ ~ │ └─ lib/jido/actions/tasks.ex:108:26: Jido.Actions.Tasks.UpdateTask.run/2 Generated jido app ==> property_table Compiling 8 files (.ex) Generated property_table app ==> nerves_uevent CC uevent.o LD uevent Compiling 5 files (.ex) Generated nerves_uevent app ==> nerves_runtime Compiling 14 files (.ex) Generated nerves_runtime app ==> toolshed Compiling 5 files (.ex) Generated toolshed app ==> websock Compiling 1 file (.ex) Generated websock app ==> bandit Compiling 54 files (.ex) Generated bandit app ==> synapse Compiling 68 files (.ex) Generated synapse app ==> altar_ai Compiling 17 files (.ex) Generated altar_ai app ==> synapse_ai Compiling 10 files (.ex) Generated synapse_ai app ==> nerves_compatibility_test Compiling 2 files (.ex) Generated nerves_compatibility_test app |nerves| Building OTP Release... * [Nerves] validating vm.args * skipping runtime configuration (config/runtime.exs not found) * creating _build/rpi4/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/rpi4/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/rpi4/nerves/images/nerves_compatibility_test.fw... Firmware UUID: pen-expire (b45d19f8-98d1-5f97-5905-34f847d83098) Firmware built successfully! 🎉 Now you may install it to a MicroSD card using `mix burn` or upload it to a device with `mix upload` or `mix firmware.gen.script`+`./upload.sh`. * Cleaning synapse_ai ==> nerves ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> synapse_ai Compiling 10 files (.ex) Generated synapse_ai app ==> nerves_compatibility_test Generated nerves_compatibility_test app |nerves| Building OTP Release... * [Nerves] validating vm.args * skipping runtime configuration (config/runtime.exs not found) * creating _build/rpi4/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/rpi4/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/rpi4/nerves/images/nerves_compatibility_test.fw... Firmware UUID: spy-lonely (d78a053e-6af5-5522-5b97-55ffe37f90c3) Firmware built successfully! 🎉 Now you may install it to a MicroSD card using `mix burn` or upload it to a device with `mix upload` or `mix firmware.gen.script`+`./upload.sh`.