Resolving Hex dependencies... Resolution completed in 0.085s Unchanged: circular_buffer 1.0.0 cowboy 2.14.2 cowlib 2.16.0 elixir_make 0.9.0 flow 1.2.4 flyte 2.0.13 gen_stage 1.3.2 googleapis 0.1.0 grpc 0.11.5 gun 2.2.0 hpax 1.0.3 interactive_cmd 0.1.3 jason 1.4.4 mint 1.7.1 nerves 1.14.0 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.3 property_table 0.3.3 protobuf 0.16.0 ranch 2.2.0 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 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 51 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_toolchain_ctng Compiling 1 file (.ex) Generated nerves_toolchain_ctng app ==> nerves_system_br Generated nerves_system_br 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 ==> gen_stage Compiling 10 files (.ex) Generated gen_stage app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling ranch ==> protobuf Compiling 46 files (.ex) warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ ctx | comments: Protobuf.Protoc.Generator.Comment.parse(desc), syntax: syntax(desc.syntax), package: desc.package, dep_type_mapping: get_dep_type_mapping(ctx, desc.dependency, desc.name) } but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/generator.ex:35:36 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 37 │ %Context{ │ ~ │ └─ lib/protobuf/protoc/generator.ex:37:7: Protobuf.Protoc.Generator.generate_module_definitions/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ Protobuf.Protoc.Context.append_comment_path(ctx, <<"6.", to_string(index)::binary>>) | namespace: ctx.namespace ++ [Macro.camelize(desc.name)] } but got type: dynamic(%{..., current_comment_path: term()}) where "ctx" was given the type: # type: dynamic(%Protobuf.Protoc.Context{}) # from: lib/protobuf/protoc/generator/extension.ex:84:48 %Protobuf.Protoc.Context{} = ctx where "index" was given the type: # type: dynamic() # from: lib/protobuf/protoc/generator/extension.ex {desc, index} you must assign "Protobuf.Protoc.Context.append_comment_path(ctx, <<"6.", String.Chars.to_string(index)::binary>>)" to variable and pattern match on "%Protobuf.Protoc.Context{}". 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: │ 90 │ %Context{ │ ~ │ └─ lib/protobuf/protoc/generator/extension.ex:90:11: Protobuf.Protoc.Generator.Extension.get_extensions_from_messages/3 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | plugins: String.split(plugins, "+")} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:105:43 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 106 │ %Context{ctx | plugins: String.split(plugins, "+")} │ ~ │ └─ lib/protobuf/protoc/cli.ex:106:5: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | gen_descriptors?: true} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:109:49 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 112 │ %Context{ctx | gen_descriptors?: true} │ ~ │ └─ lib/protobuf/protoc/cli.ex:112:9: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | package_prefix: package} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:119:50 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 123 │ %Context{ctx | package_prefix: package} │ ~ │ └─ lib/protobuf/protoc/cli.ex:123:7: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | transform_module: Module.concat([module])} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:127:51 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 128 │ %Context{ctx | transform_module: Module.concat([module])} │ ~ │ └─ lib/protobuf/protoc/cli.ex:128:5: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | one_file_per_module?: true} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:131:53 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 134 │ %Context{ctx | one_file_per_module?: true} │ ~ │ └─ lib/protobuf/protoc/cli.ex:134:9: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | include_docs?: true} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/protobuf/protoc/cli.ex:141:46 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 144 │ %Context{ctx | include_docs?: true} │ ~ │ └─ lib/protobuf/protoc/cli.ex:144:9: Protobuf.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | optional?: optional?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:328:31 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 329 │ %FieldProps{acc | optional?: optional?} │ ~ │ └─ lib/protobuf/dsl.ex:329:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | proto3_optional?: proto3_optional?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:331:45 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 332 │ %FieldProps{acc | proto3_optional?: proto3_optional?} │ ~ │ └─ lib/protobuf/dsl.ex:332:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | required?: required?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:334:31 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 335 │ %FieldProps{acc | required?: required?} │ ~ │ └─ lib/protobuf/dsl.ex:335:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | enum?: enum?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:337:23 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 338 │ %FieldProps{acc | enum?: enum?} │ ~ │ └─ lib/protobuf/dsl.ex:338:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | map?: map?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:340:21 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 341 │ %FieldProps{acc | map?: map?} │ ~ │ └─ lib/protobuf/dsl.ex:341:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | repeated?: repeated?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:343:31 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 344 │ %FieldProps{acc | repeated?: repeated?} │ ~ │ └─ lib/protobuf/dsl.ex:344:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | embedded?: embedded} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:346:30 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 347 │ %FieldProps{acc | embedded?: embedded} │ ~ │ └─ lib/protobuf/dsl.ex:347:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | deprecated?: deprecated?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:349:35 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 350 │ %FieldProps{acc | deprecated?: deprecated?} │ ~ │ └─ lib/protobuf/dsl.ex:350:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | packed?: packed?} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:352:27 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 353 │ %FieldProps{acc | packed?: packed?} │ ~ │ └─ lib/protobuf/dsl.ex:353:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | type: type} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:355:22 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 356 │ %FieldProps{acc | type: type} │ ~ │ └─ lib/protobuf/dsl.ex:356:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | default: default} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:358:28 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 359 │ %FieldProps{acc | default: default} │ ~ │ └─ lib/protobuf/dsl.ex:359:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | oneof: oneof} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:361:24 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 362 │ %FieldProps{acc | oneof: oneof} │ ~ │ └─ lib/protobuf/dsl.ex:362:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{acc | json_name: json_name} but got type: dynamic() where "acc" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:364:32 acc when defining the variable "acc", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 365 │ %FieldProps{acc | json_name: json_name} │ ~ │ └─ lib/protobuf/dsl.ex:365:9: Protobuf.DSL.parse_field_opts_to_field_props/2 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{props | json_name: props.name} but got type: dynamic() where "props" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:390:22 props when defining the variable "props", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 390 │ defp cal_json_name(props), do: %FieldProps{props | json_name: props.name} │ ~ │ └─ lib/protobuf/dsl.ex:390:34: Protobuf.DSL.cal_json_name/1 warning: a struct for Protobuf.FieldProps is expected on struct update: %Protobuf.FieldProps{props | packed?: false} but got type: dynamic() where "props" was given the type: # type: dynamic() # from: lib/protobuf/dsl.ex:426:19 props when defining the variable "props", you must also pattern match on "%Protobuf.FieldProps{}". 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: │ 426 │ defp cal_packed(props, _syntax), do: %FieldProps{props | packed?: false} │ ~ │ └─ lib/protobuf/dsl.ex:426:40: Protobuf.DSL.cal_packed/2 Generated protobuf app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling cowlib ===> Analyzing applications... ===> Compiling gun ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> googleapis Compiling 45 files (.ex) Generated googleapis app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry ==> flow Compiling 9 files (.ex) Generated flow app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling cowboy ==> grpc Compiling 1 file (.erl) Compiling 65 files (.ex) warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ ctx | syntax: syntax(desc.syntax), package: desc.package, dep_type_mapping: get_dep_type_mapping(ctx, desc.dependency, desc.name) } but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/generator.ex:43:36 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 45 │ %Context{ │ ~ │ └─ lib/grpc/protoc/generator.ex:45:7: GRPC.Protoc.Generator.generate_module_definitions/2 warning: a struct for GRPC.Client.Connection is expected on struct update: %GRPC.Client.Connection{ base_state | lb_mod: lb_mod, lb_state: new_lb_state, virtual_channel: ch, real_channels: real_channels } but got type: dynamic() where "base_state" was given the type: # type: dynamic() # from: lib/grpc/client/connection.ex:397:29 base_state when defining the variable "base_state", you must also pattern match on "%GRPC.Client.Connection{}". 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: │ 423 │ %__MODULE__{ │ ~ │ └─ lib/grpc/client/connection.ex:423:12: GRPC.Client.Connection.build_balanced_state/6 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | plugins: String.split(plugins, "+")} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/cli.ex:86:43 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 87 │ %Context{ctx | plugins: String.split(plugins, "+")} │ ~ │ └─ lib/grpc/protoc/cli.ex:87:5: GRPC.Protoc.CLI.parse_param/2 warning: a struct for GRPC.Client.Connection is expected on struct update: %GRPC.Client.Connection{ base_state | virtual_channel: ch, real_channels: %{<> => ch} } but got type: dynamic() where "base_state" was given the type: # type: dynamic() # from: lib/grpc/client/connection.ex:439:27 base_state when defining the variable "base_state", you must also pattern match on "%GRPC.Client.Connection{}". 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: │ 446 │ %__MODULE__{ │ ~ │ └─ lib/grpc/client/connection.ex:446:10: GRPC.Client.Connection.build_direct_state/4 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | gen_descriptors?: true} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/cli.ex:90:49 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 93 │ %Context{ctx | gen_descriptors?: true} │ ~ │ └─ lib/grpc/protoc/cli.ex:93:9: GRPC.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | package_prefix: package} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/cli.ex:100:50 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 104 │ %Context{ctx | package_prefix: package} │ ~ │ └─ lib/grpc/protoc/cli.ex:104:7: GRPC.Protoc.CLI.parse_param/2 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | transform_module: Module.concat([module])} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/cli.ex:108:51 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 109 │ %Context{ctx | transform_module: Module.concat([module])} │ ~ │ └─ lib/grpc/protoc/cli.ex:109:5: GRPC.Protoc.CLI.parse_param/2 warning: a struct for GRPC.Channel is expected on struct update: %GRPC.Channel{virtual_channel | host: host, port: port} but got type: dynamic() where "virtual_channel" was given the type: # type: dynamic() # from: lib/grpc/client/connection.ex:457:39 virtual_channel when defining the variable "virtual_channel", you must also pattern match on "%GRPC.Channel{}". 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: │ 460 │ %Channel{virtual_channel | host: host, port: port}, │ ~ │ └─ lib/grpc/client/connection.ex:460:14: GRPC.Client.Connection.build_real_channels/4 warning: a struct for Protobuf.Protoc.Context is expected on struct update: %Protobuf.Protoc.Context{ctx | one_file_per_module?: true} but got type: dynamic() where "ctx" was given the type: # type: dynamic() # from: lib/grpc/protoc/cli.ex:112:53 ctx when defining the variable "ctx", you must also pattern match on "%Protobuf.Protoc.Context{}". 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: │ 115 │ %Context{ctx | one_file_per_module?: true} │ ~ │ └─ lib/grpc/protoc/cli.ex:115:9: GRPC.Protoc.CLI.parse_param/2 warning: a struct for GRPC.Channel is expected on struct update: %GRPC.Channel{vc | host: host, port: port} but got type: dynamic() where "vc" was given the type: # type: dynamic() # from: lib/grpc/client/connection.ex:525:29 vc when defining the variable "vc", you must also pattern match on "%GRPC.Channel{}". 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: │ 526 │ %Channel{vc | host: host, port: port} │ ~ │ └─ lib/grpc/client/connection.ex:526:5: GRPC.Client.Connection.connect_real_channel/5 Generated grpc app ==> flyte Compiling 88 files (.ex) Generated flyte 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 3 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: fan-idea (50651eaf-3c0a-5ae3-b441-e6b877f1d20b) 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 flyte ==> nerves ==> nerves_compatibility_test Nerves environment MIX_TARGET: x86_64 MIX_ENV: prod ==> flyte Compiling 88 files (.ex) Generated flyte 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: thunder-credit (e53adb34-0e1c-5e84-be73-1fd2fd2c4233) 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`.