Resolving Hex dependencies... Resolution completed in 0.073s Unchanged: axon 0.7.0 bumblebee 0.6.3 castore 1.0.18 cc_precompiler 0.1.11 circular_buffer 1.0.0 complex 0.6.0 decimal 2.3.0 elixir_make 0.9.0 hnswlib 0.1.7 interactive_cmd 0.1.4 jason 1.4.4 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 nimble_options 1.1.1 nx 0.10.0 nx_image 0.1.2 nx_signal 0.2.0 polaris 0.1.0 progress_bar 3.0.0 property_table 0.3.3 ring_logger 0.11.5 rustler_precompiled 0.9.0 safetensors 0.1.3 scholar 0.4.1 shoehorn 0.9.3 stephen 1.0.0 tablet 0.3.2 telemetry 1.4.1 text_chunker 0.6.1 tokenizers 0.5.1 toolshed 0.4.2 uboot_env 1.0.2 unpickler 0.1.0 unzip 0.12.0 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: 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 ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nimble_options Compiling 3 files (.ex) Generated nimble_options app ==> unpickler Compiling 3 files (.ex) Generated unpickler app ==> complex Compiling 2 files (.ex) Generated complex app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> castore Compiling 1 file (.ex) Generated castore app ==> unzip Compiling 6 files (.ex) warning: a struct for Unzip.FileBuffer is expected on struct update: %Unzip.FileBuffer{ buffer | buffer: <>, buffer_position: new_buffer_pos } but got type: dynamic() where "buffer" was given the type: # type: dynamic() # from: lib/unzip/file_buffer.ex:59:18 buffer when defining the variable "buffer", you must also pattern match on "%Unzip.FileBuffer{}". 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: │ 70 │ buffer = %FileBuffer{ │ ~ │ └─ lib/unzip/file_buffer.ex:70:18: Unzip.FileBuffer.next_chunk/2 warning: a struct for Unzip.FileBuffer is expected on struct update: %Unzip.FileBuffer{ buffer | buffer: binary_part(buffer.buffer, 0, byte_size(buffer.buffer) - count) } but got type: dynamic() where "buffer" was given the type: # type: dynamic() # from: lib/unzip/file_buffer.ex:87:24 buffer when defining the variable "buffer", you must also pattern match on "%Unzip.FileBuffer{}". 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: │ 89 │ %FileBuffer{ │ ~ │ └─ lib/unzip/file_buffer.ex:89:6: Unzip.FileBuffer.move_backward_by/2 warning: a struct for Unzip.FileBuffer is expected on struct update: %Unzip.FileBuffer{ buffer | buffer: binary_part(buffer.buffer, count, byte_size(buffer.buffer) - count), buffer_position: min(buffer.buffer_position + count, buffer.limit) } but got type: dynamic() where "buffer" was given the type: # type: dynamic() # from: lib/unzip/file_buffer.ex:98:23 buffer when defining the variable "buffer", you must also pattern match on "%Unzip.FileBuffer{}". 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 │ %FileBuffer{ │ ~ │ └─ lib/unzip/file_buffer.ex:100:6: Unzip.FileBuffer.move_forward_by/2 Generated unzip app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> progress_bar Compiling 10 files (.ex) Generated progress_bar app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry ==> nx Compiling 38 files (.ex) warning: ~~~ is deprecated. Use Bitwise.bnot/1 instead for clarity │ 655 │ def ~~~tensor when is_number(tensor), do: Bitwise.~~~(tensor) │ ~ │ └─ lib/nx/defn/kernel.ex:655:7 warning: ~~~ is deprecated. Use Bitwise.bnot/1 instead for clarity │ 656 │ def ~~~tensor, do: Nx.bitwise_not(tensor) │ ~ │ └─ lib/nx/defn/kernel.ex:656:7 Generated nx app ==> nx_image Compiling 1 file (.ex) Generated nx_image app ==> safetensors Compiling 3 files (.ex) Generated safetensors app ==> polaris Compiling 5 files (.ex) Generated polaris app ==> axon Compiling 27 files (.ex) warning: incompatible types given to Kernel.apply/2: apply(Axon.Initializers, []) given types: -Axon.Initializers-, empty_list() but expected one of: fun(), list(term()) typing violation found at: │ 135 │ apply(Axon.Initializers, []) │ ~ │ └─ lib/axon/quantization.ex:135:17: Axon.Quantization.weight_only_quantized_dense/3 warning: a struct for Axon.Loop.State is expected on struct update: %Axon.Loop.State{ state | epoch: epoch + 1, metrics: zero_metrics, iteration: 0, max_iteration: state.max_iteration } but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/axon/loop.ex {:continue, state} when defining the variable "state", you must also pattern match on "%Axon.Loop.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: │ 1695 │ ... %State{ │ ~ │ └─ lib/axon/loop.ex:1695:29: Axon.Loop.run/4 warning: a struct for Axon.Loop.State is expected on struct update: %Axon.Loop.State{state | epoch: epoch + 1, iteration: 0} but got type: dynamic(%{..., epoch: term(), metrics: term()}) where "state" was given the type: # type: dynamic(%{..., epoch: term(), metrics: term()}) # from: lib/axon/loop.ex {:halt_epoch, %{epoch: epoch, metrics: metrics} = state} when defining the variable "state", you must also pattern match on "%Axon.Loop.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: │ 1927 │ {:cont, {batch_fn, final_metrics_map, %State{state | epoch: epoch + 1, iteration: 0}}} │ ~ │ └─ lib/axon/loop.ex:1927:47: Axon.Loop.halt_epoch/5 warning: Tuple.append/2 is deprecated. Use insert_at instead │ 49 │ Nx.reshape(scales, Tuple.append(ones, :auto)) │ ~ │ └─ lib/axon/quantization/layers.ex:49:30: Axon.Quantization.Layers.reshape_scales/2 └─ lib/axon/quantization/layers.ex:54:23: Axon.Quantization.Layers.reshape_output/2 warning: got "@impl true" for function __stream__/7 but no behaviour specifies such callback. The known callbacks are: * Nx.Defn.Compiler.__compile__/4 (function) * Nx.Defn.Compiler.__jit__/5 (function) * Nx.Defn.Compiler.__partitions_options__/1 (function) * Nx.Defn.Compiler.__to_backend__/1 (function) │ 18 │ def __stream__(_, _, _, _, _, _, _), do: raise("not implemented") │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/axon/defn.ex:18: Axon.Defn (module) Generated axon app ==> scholar Compiling 68 files (.ex) Generated scholar app ==> rustler_precompiled Compiling 4 files (.ex) Generated rustler_precompiled app ==> tokenizers Compiling 18 files (.ex) 15:08:48.749 [debug] Downloading NIF from https://github.com/elixir-nx/tokenizers/releases/download/v0.5.1/libex_tokenizers-v0.5.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz 15:08:49.905 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libex_tokenizers-v0.5.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz and extracted to /work/proj/_build/x86_64/lib/tokenizers/priv/native/libex_tokenizers-v0.5.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz Generated tokenizers app ==> text_chunker Compiling 5 files (.ex) Generated text_chunker app ==> nx_signal Compiling 5 files (.ex) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 739 │ |> Tuple.append(out_len) │ ~ │ └─ lib/nx_signal.ex:739:14: NxSignal.overlap_and_add_output_shape/2 Generated nx_signal app ==> bumblebee Compiling 95 files (.ex) Generated bumblebee app ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> cc_precompiler Compiling 3 files (.ex) Generated cc_precompiler app ==> hnswlib CMake Warning: Ignoring empty string ("") provided on the command line. Not searching for unused variables given on the command line. -- The C compiler identification is GNU 13.2.0 -- The CXX compiler identification is GNU 13.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /home/nerves/.nerves/artifacts/nerves_toolchain_x86_64_nerves_linux_musl-linux_aarch64-13.2.0/bin/x86_64-nerves-linux-musl-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /home/nerves/.nerves/artifacts/nerves_toolchain_x86_64_nerves_linux_musl-linux_aarch64-13.2.0/bin/x86_64-nerves-linux-musl-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using PRIV_DIR: /work/proj/_build/x86_64/lib/hnswlib/priv -- Using ERTS_INCLUDE_DIR: /home/nerves/.nerves/artifacts/nerves_system_x86_64-portable-1.33.3/staging/usr/lib/erlang/erts-16.3.1/include -- CMAKE_TOOLCHAIN_FILE: /work/proj/deps/nerves_system_br/nerves-env.cmake -- Configuring done (0.4s) -- Generating done (0.0s) -- Build files have been written to: /work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib make[1]: Entering directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' make[2]: Entering directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' make[3]: Entering directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' make[3]: Leaving directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' make[3]: Entering directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' [ 33%] Building CXX object CMakeFiles/hnswlib_nif.dir/c_src/nif_utils.cpp.o [ 66%] Building CXX object CMakeFiles/hnswlib_nif.dir/c_src/hnswlib_nif.cpp.o In file included from /work/proj/deps/hnswlib/c_src/hnswlib_nif.cpp:6: In member function 'void BFIndex::addItems(float*, size_t, size_t, const uint64_t*, size_t) [with dist_t = float; data_t = float]', inlined from 'ERL_NIF_TERM hnswlib_bfindex_add_items(ErlNifEnv*, int, const ERL_NIF_TERM*)' at /work/proj/deps/hnswlib/c_src/hnswlib_nif.cpp:616:29: /work/proj/deps/hnswlib/c_src/hnswlib_index.hpp:508:37: warning: 'ids_count' may be used uninitialized [-Wmaybe-uninitialized] 508 | uint64_t id = ids_count ? ids[row] : cur_l + row; | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ /work/proj/deps/hnswlib/c_src/hnswlib_nif.cpp: In function 'ERL_NIF_TERM hnswlib_bfindex_add_items(ErlNifEnv*, int, const ERL_NIF_TERM*)': /work/proj/deps/hnswlib/c_src/hnswlib_nif.cpp:580:12: note: 'ids_count' was declared here 580 | size_t ids_count; | ^~~~~~~~~ [100%] Linking CXX shared library hnswlib_nif.so make[3]: Leaving directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' [100%] Built target hnswlib_nif make[2]: Leaving directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' make[1]: Leaving directory '/work/proj/_build/x86_64/lib/hnswlib/cmake_hnswlib' Compiling 4 files (.ex) Generated hnswlib app ==> stephen Compiling 10 files (.ex) Generated stephen 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: ask-genuine (196d2857-3439-51e5-6ae3-b4fdf8823fd5) 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 stephen ==> nerves ==> nerves_compatibility_test Nerves environment MIX_TARGET: x86_64 MIX_ENV: prod ==> stephen Compiling 10 files (.ex) Generated stephen 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: emotion-annual (540d94be-da7f-558b-dd31-113164823421) 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`.