Resolving Hex dependencies... Resolution completed in 0.07s Unchanged: backoff 1.1.6 circular_buffer 1.0.0 commanded 1.4.9 commanded_horde_registry 1.0.0-rc.1 delta_crdt 0.6.5 elixir_make 0.9.0 horde 0.10.0 interactive_cmd 0.1.4 jason 1.4.4 libring 1.7.0 merkle_map 0.2.2 nerves 1.14.1 nerves_discovery 0.1.2 nerves_logging 0.2.4 nerves_runtime 0.13.12 nerves_system_bbb 2.29.3 nerves_system_br 1.33.5 nerves_system_grisp2 0.17.3 nerves_system_mangopi_mq_pro 0.15.3 nerves_system_osd32mp1 0.24.3 nerves_system_qemu_aarch64 0.3.3 nerves_system_rpi 2.0.2 nerves_system_rpi0 2.0.2 nerves_system_rpi0_2 2.0.2 nerves_system_rpi2 2.0.2 nerves_system_rpi3 2.0.2 nerves_system_rpi4 2.0.2 nerves_system_rpi5 2.0.2 nerves_system_x86_64 1.33.3 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 property_table 0.3.3 ring_logger 0.11.5 shoehorn 0.9.3 tablet 0.3.2 telemetry 1.4.1 telemetry_poller 1.3.0 telemetry_registry 0.3.2 toolshed 0.4.2 uboot_env 1.0.2 All dependencies have been fetched ==> jason Compiling 10 files (.ex) Generated jason app ==> 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 ==> 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: x86_64 MIX_ENV: prod Checking for prebuilt Nerves artifacts... Found nerves_system_x86_64 in cache /home/nerves/.nerves/artifacts/nerves_system_x86_64-portable-1.33.3 Found nerves_toolchain_x86_64_nerves_linux_musl in cache /home/nerves/.nerves/artifacts/nerves_toolchain_x86_64_nerves_linux_musl-linux_aarch64-13.2.0 ==> nerves ==> nerves_system_br Generated nerves_system_br app ==> nerves_toolchain_ctng Compiling 1 file (.ex) Generated nerves_toolchain_ctng app ==> nerves_toolchain_x86_64_nerves_linux_musl Generated nerves_toolchain_x86_64_nerves_linux_musl app ==> nerves_system_x86_64 Generated nerves_system_x86_64 app ==> nerves_compatibility_test Nerves environment MIX_TARGET: x86_64 MIX_ENV: prod ==> libring Compiling 5 files (.ex) Generated libring app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> merkle_map Compiling 7 files (.ex) Generated merkle_map app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry ==> delta_crdt Compiling 5 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 81 │ Logger.warn( │ ~ │ └─ lib/delta_crdt.ex:81:14: DeltaCrdt.warn_low_sync_interval/1 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 31 │ Logger.warn("inefficient next_dot computation") │ ~ │ └─ lib/delta_crdt/aw_lww_map.ex:31:14: DeltaCrdt.AWLWWMap.Dots.next_dot/2 warning: a struct for DeltaCrdt.CausalCrdt.Diff is expected on struct update: %DeltaCrdt.CausalCrdt.Diff{diff | continuation: truncate(continuation, state.max_sync_size)} but got type: dynamic(%{..., from: term(), to: term()}) where "diff" was given the type: # type: dynamic(%{..., from: term(), to: term()}) # from: lib/delta_crdt/causal_crdt.ex:92:10 diff = reverse_diff(diff) when defining the variable "diff", you must also pattern match on "%DeltaCrdt.CausalCrdt.Diff{}". 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: │ 98 │ %Diff{diff | continuation: truncate(continuation, state.max_sync_size)} │ ~ │ └─ lib/delta_crdt/causal_crdt.ex:98:9: DeltaCrdt.CausalCrdt.handle_info/2 warning: a struct for DeltaCrdt.CausalCrdt.Diff is expected on struct update: %DeltaCrdt.CausalCrdt.Diff{diff | from: diff.to, to: diff.from} but got type: dynamic() where "diff" was given the type: # type: dynamic() # from: lib/delta_crdt/causal_crdt.ex:327:21 diff when defining the variable "diff", you must also pattern match on "%DeltaCrdt.CausalCrdt.Diff{}". 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: │ 328 │ %Diff{diff | from: diff.to, to: diff.from} │ ~ │ └─ lib/delta_crdt/causal_crdt.ex:328:5: DeltaCrdt.CausalCrdt.reverse_diff/1 Generated delta_crdt app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry_poller ==> horde Compiling 14 files (.ex) Generated horde app ==> telemetry_registry Compiling 1 file (.erl) Compiling 1 file (.ex) Generated telemetry_registry app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling backoff ==> commanded Compiling 69 files (.ex) warning: a struct for Commanded.Aggregates.Aggregate is expected on struct update: %Commanded.Aggregates.Aggregate{ state | aggregate_version: stream_version, aggregate_state: aggregate_module.apply(aggregate_state, data) } but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/commanded/aggregates/aggregate_state_builder.ex {state, count} when defining the variable "state", you must also pattern match on "%Commanded.Aggregates.Aggregate{}". 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: │ 99 │ state = %Aggregate{ │ ~ │ └─ lib/commanded/aggregates/aggregate_state_builder.ex:99:17: Commanded.Aggregates.AggregateStateBuilder.rebuild_from_event_stream/2 warning: a struct for Commanded.Aggregates.Aggregate is expected on struct update: %Commanded.Aggregates.Aggregate{state | lifespan_timeout: lifespan_timeout} but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/commanded/aggregates/aggregate.ex:322:21 {result, state} = execute_command(context, state) when defining the variable "state", you must also pattern match on "%Commanded.Aggregates.Aggregate{}". 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: │ 351 │ state = %Aggregate{state | lifespan_timeout: lifespan_timeout} │ ~ │ └─ lib/commanded/aggregates/aggregate.ex:351:17: Commanded.Aggregates.Aggregate.handle_call/3 Generated commanded app ==> commanded_horde_registry Compiling 3 files (.ex) Generated commanded_horde_registry app ==> uboot_env Compiling 5 files (.ex) Generated uboot_env 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 ==> 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/x86_64/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/x86_64/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/x86_64/nerves/images/nerves_compatibility_test.fw... Firmware UUID: uncover-ask (ef19a88b-4159-5e6c-c545-41e5d89a636a) 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 commanded_horde_registry ==> nerves ==> nerves_compatibility_test Nerves environment MIX_TARGET: x86_64 MIX_ENV: prod ==> commanded_horde_registry Compiling 3 files (.ex) Generated commanded_horde_registry 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/x86_64/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/x86_64/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/x86_64/nerves/images/nerves_compatibility_test.fw... Firmware UUID: can-say (2dcde0f2-ecd0-5f9e-41aa-9c50a08bcfa5) 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`.