Resolving Hex dependencies... Resolution completed in 0.07s Unchanged: bonny 1.5.0 castore 1.0.18 circular_buffer 1.0.0 elixir_make 0.9.0 hpax 1.0.3 inflex 2.1.0 interactive_cmd 0.1.4 jason 1.4.4 k8s 2.8.0 mint 1.7.1 mint_web_socket 1.0.5 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 owl 0.13.0 pluggable 1.1.0 poolboy 1.5.2 property_table 0.3.3 ring_logger 0.11.5 shoehorn 0.9.3 tablet 0.3.2 telemetry 1.4.1 toolshed 0.4.2 uboot_env 1.0.2 yamerl 0.10.0 yaml_elixir 2.12.1 ymlr 5.1.5 All dependencies have been fetched ==> pluggable Compiling 4 files (.ex) Generated pluggable app ==> ymlr Compiling 3 files (.ex) Generated ymlr app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> jason Compiling 10 files (.ex) Generated jason app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling yamerl ==> tablet Compiling 2 files (.ex) Generated tablet app ==> inflex Compiling 6 files (.ex) Generated inflex app ==> owl Compiling 19 files (.ex) Generated owl app ==> elixir_make Compiling 8 files (.ex) Generated elixir_make app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Not crosscompiling. To test locally, the port binary needs extra permissions. Set SUDO=sudo to set permissions. The default is to skip this step. SUDO_ASKPASS=/usr/bin/ssh-askpass SUDO=true Compiling 5 files (.ex) Generated nerves_logging app ==> castore Compiling 1 file (.ex) Generated castore app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> mint_web_socket Compiling 7 files (.ex) Generated mint_web_socket app ==> nerves_discovery Compiling 5 files (.ex) Generated nerves_discovery app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling poolboy ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> yaml_elixir Compiling 6 files (.ex) Generated yaml_elixir 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 ===> Analyzing applications... ===> Compiling telemetry ==> k8s Compiling 61 files (.ex) warning: a struct for K8s.Conn.Auth.ServiceAccountWorker.State is expected on struct update: %K8s.Conn.Auth.ServiceAccountWorker.State{ starting_state | timer: start_refresh_timer(starting_state.error_refresh_interval) } but got type: dynamic() where "starting_state" was given the type: # type: dynamic() # from: lib/k8s/conn/auth/service_account_worker.ex:65:20 starting_state = struct!(K8s.Conn.Auth.ServiceAccountWorker.State, args) when defining the variable "starting_state", you must also pattern match on "%K8s.Conn.Auth.ServiceAccountWorker.State{}". 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: │ 69 │ %State{starting_state | timer: start_refresh_timer(starting_state.error_refresh_interval)}} │ ~ │ └─ lib/k8s/conn/auth/service_account_worker.ex:69:6: K8s.Conn.Auth.ServiceAccountWorker.init/1 warning: a struct for K8s.Conn.Auth.ServiceAccountWorker.State is expected on struct update: %K8s.Conn.Auth.ServiceAccountWorker.State{ without_timer | token: token_data, timer: start_refresh_timer(state.refresh_interval) } but got type: dynamic(%{..., timer: nil}) where "without_timer" was given the type: # type: dynamic(%{..., timer: nil}) # from: lib/k8s/conn/auth/service_account_worker.ex:97:23 without_timer = reset_timer(state) when defining the variable "without_timer", you must also pattern match on "%K8s.Conn.Auth.ServiceAccountWorker.State{}". 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: │ 100 │ %State{ │ ~ │ └─ lib/k8s/conn/auth/service_account_worker.ex:100:10: K8s.Conn.Auth.ServiceAccountWorker.handle_call/3 warning: a struct for K8s.Conn.Auth.ServiceAccountWorker.State is expected on struct update: %K8s.Conn.Auth.ServiceAccountWorker.State{ without_timer | token: token_data, timer: start_refresh_timer(state.refresh_interval) } but got type: dynamic(%{..., timer: nil}) where "without_timer" was given the type: # type: dynamic(%{..., timer: nil}) # from: lib/k8s/conn/auth/service_account_worker.ex:117:23 without_timer = reset_timer(state) when defining the variable "without_timer", you must also pattern match on "%K8s.Conn.Auth.ServiceAccountWorker.State{}". 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: │ 120 │ %State{ │ ~ │ └─ lib/k8s/conn/auth/service_account_worker.ex:120:10: K8s.Conn.Auth.ServiceAccountWorker.handle_info/2 warning: a struct for K8s.Conn.Auth.ServiceAccountWorker.State is expected on struct update: %K8s.Conn.Auth.ServiceAccountWorker.State{ without_timer | timer: start_refresh_timer(without_timer.error_refresh_interval) } but got type: dynamic(%{..., timer: nil}) where "without_timer" was given the type: # type: dynamic(%{..., timer: nil}) # from: lib/k8s/conn/auth/service_account_worker.ex:127:23 without_timer = reset_timer(state) when defining the variable "without_timer", you must also pattern match on "%K8s.Conn.Auth.ServiceAccountWorker.State{}". 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: │ 130 │ %State{without_timer | timer: start_refresh_timer(without_timer.error_refresh_interval)}} │ ~ │ └─ lib/k8s/conn/auth/service_account_worker.ex:130:10: K8s.Conn.Auth.ServiceAccountWorker.handle_info/2 warning: a struct for K8s.Conn.Auth.ServiceAccountWorker.State is expected on struct update: %K8s.Conn.Auth.ServiceAccountWorker.State{state | timer: nil} but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/k8s/conn/auth/service_account_worker.ex:155:20 state when defining the variable "state", you must also pattern match on "%K8s.Conn.Auth.ServiceAccountWorker.State{}". 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: │ 160 │ %State{state | timer: nil} │ ~ │ └─ lib/k8s/conn/auth/service_account_worker.ex:160:5: K8s.Conn.Auth.ServiceAccountWorker.reset_timer/1 Generated k8s app ==> bonny Compiling 41 files (.ex) Generated bonny 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 Not crosscompiling. To test locally, the port binary needs extra permissions. Set SUDO=sudo to set permissions. The default is to skip this step. SUDO_ASKPASS=/usr/bin/ssh-askpass SUDO=true 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 Nerves environment MIX_TARGET: host MIX_ENV: prod Checking for prebuilt Nerves artifacts... Compiling 2 files (.ex) Generated nerves_compatibility_test app