Resolving Hex dependencies... Resolution completed in 0.081s Unchanged: btrz_ex_webhooks_emitter 1.1.4 btrz_webhooks_denied_fields 0.1.4 certifi 2.15.0 circular_buffer 1.0.0 elixir_make 0.9.0 ex_aws 2.6.1 ex_aws_sqs 2.0.1 ezstd 1.2.3 hackney 1.25.0 idna 6.1.1 interactive_cmd 0.1.4 jason 1.4.4 metrics 1.0.1 mime 2.0.7 mimerl 1.5.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.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 parse_trans 3.4.1 poison 3.1.0 property_table 0.3.3 ring_logger 0.11.5 shoehorn 0.9.3 ssl_verify_fun 1.1.7 sweet_xml 0.7.5 tablet 0.3.2 telemetry 1.4.1 toolshed 0.4.2 uboot_env 1.0.2 unicode_util_compat 0.7.1 uuid 1.1.8 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: rpi4 MIX_ENV: prod Checking for prebuilt Nerves artifacts... warning: String.strip/1 is deprecated. Use String.trim/1 instead │ 4 │ @version File.read!("VERSION") |> String.strip │ ~ │ └─ /work/proj/deps/poison/mix.exs:4:44: Poison.Mixfile (module) Found nerves_system_rpi4 in cache /home/nerves/.nerves/artifacts/nerves_system_rpi4-portable-2.0.2 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 warning: String.strip/1 is deprecated. Use String.trim/1 instead │ 4 │ @version File.read!("VERSION") |> String.strip │ ~ │ └─ /work/proj/deps/poison/mix.exs:4:44: Poison.Mixfile (module) ==> nerves_system_br Generated nerves_system_br app ==> 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_rpi4 Generated nerves_system_rpi4 app ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> mime Compiling 1 file (.ex) Generated mime app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> poison Compiling 4 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 93 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:93:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 93 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:93:48 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 139 │ defp chunk_size(<> <> _, _mode, acc) when char <= 0x1F or char in '"\\' do │ ~ │ └─ lib/poison/encoder.ex:139:75 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 77 │ defp value(<> = string, pos, _keys) when char in '-0123456789' do │ ~ │ └─ lib/poison/parser.ex:77:71 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ defp number_int(<> = string, pos, acc) when char in '123456789' do │ ~ │ └─ lib/poison/parser.ex:155:74 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 171 │ defp number_exp(<> <> rest, frac, pos, acc) when e in 'eE' do │ ~ │ └─ lib/poison/parser.ex:171:60 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 197 │ defp number_digits(<> <> rest = string, pos) when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:197:67 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 205 │ defp number_digits_count(<> <> rest, acc) when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:205:64 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 229 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:229:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 229 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:229:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 239 │ when a1 in 'dD' and a2 in 'dD' │ ~ │ └─ lib/poison/parser.ex:239:16 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 239 │ when a1 in 'dD' and a2 in 'dD' │ ~ │ └─ lib/poison/parser.ex:239:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 240 │ and (b1 in '89abAB') │ ~ │ └─ lib/poison/parser.ex:240:16 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 274 │ defp skip_whitespace(<> <> rest, pos) when char in '\s\n\t\r' do │ ~ │ └─ lib/poison/parser.ex:274:60 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 22 │ if Application.get_env(:poison, :native) do │ ~ │ └─ lib/poison/parser.ex:22:18: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 26 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/parser.ex:26: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 83 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/encoder.ex:83: Poison.Encoder.BitString (module) warning: Integer.to_char_list/2 is deprecated. Use Integer.to_charlist/2 instead │ 173 │ case Integer.to_char_list(char, 16) do │ ~ │ └─ lib/poison/encoder.ex:173:18: Poison.Encoder.BitString.seq/1 Generated poison app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling mimerl ==> ssl_verify_fun Compiling 7 files (.erl) Generated ssl_verify_fun app ==> nerves_compatibility_test 🖥️ Detected system configuration: ➤ OS Type : Linux ➤ OS Name : DISTRIB_ID=Ubuntu ➤ CPU Cores : 10 ✅ zstd already exists at _build/deps/zstd/lib/libzstd.a To rebuild, delete: _build/deps/zstd make[1]: Entering directory '/work/proj/deps/ezstd/c_src' LD ezstd_nif.so make[1]: Leaving directory '/work/proj/deps/ezstd/c_src' ===> Analyzing applications... ===> Compiling ezstd ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging 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 unicode_util_compat ===> Analyzing applications... ===> Compiling idna ===> Analyzing applications... ===> Compiling telemetry ===> Analyzing applications... ===> Compiling certifi ==> btrz_webhooks_denied_fields Compiling 1 file (.ex) Generated btrz_webhooks_denied_fields app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling parse_trans ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling metrics ===> Analyzing applications... ===> Compiling hackney ==> 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 ==> sweet_xml Compiling 2 files (.ex) warning: a struct for SweetXpath is expected on struct update: %SweetXpath{xpath | namespaces: [{to_charlist(prefix), to_charlist(uri)} | xpath.namespaces]} but got type: dynamic() where "xpath" was given the type: # type: dynamic() # from: lib/sweet_xml.ex:245:21 xpath when defining the variable "xpath", you must also pattern match on "%SweetXpath{}". 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: │ 246 │ %SweetXpath{xpath | namespaces: [{to_charlist(prefix), to_charlist(uri)} │ ~ │ └─ lib/sweet_xml.ex:246:5: SweetXml.add_namespace/3 Generated sweet_xml app ==> ex_aws Compiling 29 files (.ex) Generated ex_aws app ==> ex_aws_sqs Compiling 2 files (.ex) warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 273 │ def parse(_val, _), do: raise ExAws.Error, "Missing XML parser. Please see docs" │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/ex_aws/sqs/parsers.ex:273 Generated ex_aws_sqs app ==> uuid Compiling 1 file (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 2 │ use Bitwise, only_operators: true │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/uuid.ex:2: UUID (module) Generated uuid app ==> btrz_ex_webhooks_emitter Compiling 4 files (.ex) Generated btrz_ex_webhooks_emitter 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: observe-energy (9f53ea42-73e6-5c62-a78f-51b2e5dee065) 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 btrz_ex_webhooks_emitter ==> nerves warning: String.strip/1 is deprecated. Use String.trim/1 instead │ 4 │ @version File.read!("VERSION") |> String.strip │ ~ │ └─ /work/proj/deps/poison/mix.exs:4:44: Poison.Mixfile (module) ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> btrz_ex_webhooks_emitter Compiling 4 files (.ex) Generated btrz_ex_webhooks_emitter 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: oak-bitter (a51c6c37-e832-51af-880a-df4cd42503cf) 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`.