Gio

Gio

Elixir_make - the dependency build is outdated

Hello

On a new project I did the following, but it wouldn’t compile without errors.
I also tried using the library locally, but had the same issue. {:hidraw, path: "../hidraw"}


First I added {:hidraw, "~> 0.2.2"} to the dependencies.

❯ mix deps.get

Resolving Hex dependencies…
Resolution completed in 0.134s
New:
hidraw 0.2.2
Unchanged:
bandit 1.10.3
cc_precompiler 0.1.11
db_connection 2.9.0
decimal 2.3.0
dns_cluster 0.2.0
ecto 3.13.5
ecto_sql 3.13.4
elixir_make 0.9.0
esbuild 0.10.0
expo 1.1.1
file_system 1.1.1
finch 0.21.0
fine 0.1.4
gettext 1.0.2
hpax 1.0.3
idna 6.1.1
jason 1.4.4
lazy_html 0.1.10
mime 2.0.7
mint 1.7.1
nimble_options 1.1.1
nimble_pool 1.1.0
phoenix 1.8.4
phoenix_ecto 4.7.0
phoenix_html 4.3.0
phoenix_live_dashboard 0.8.7
phoenix_live_reload 1.6.2
phoenix_live_view 1.1.24
phoenix_pubsub 2.2.0
phoenix_template 1.0.4
plug 1.19.1
plug_crypto 2.1.1
postgrex 0.22.0
req 0.5.17
swoosh 1.22.1
tailwind 0.4.1
telemetry 1.3.0
telemetry_metrics 1.1.0
telemetry_poller 1.3.0
thousand_island 1.4.3
unicode_util_compat 0.7.1
websock 0.5.3
websock_adapter 0.5.9

* Getting hidraw (Hex package)

❯ mix deps.compile
==> elixir_make
Compiling 8 files (.ex)
Generated elixir_make app
==> hidraw
Unchecked dependencies for environment prod:

* elixir_make (Hex package)
  the dependency build is outdated, please run “MIX_ENV=prod mix deps.compile”
  could not compile dependency :hidraw, “mix compile” failed. Errors may have been logged above. You can recompile this dependency with “mix deps.compile hidraw --force”, update it with “mix deps.update hidraw” or clean it with “mix deps.clean hidraw”
  ==> phoenix_hidraw_error
  \*\* (Mix) Can’t continue due to errors on dependencies

I could ‘temporarily fix’ it locally by running 2x mix deps.compile hidraw. But I’m looking for a solution which will let me use deps_nix without any issues.

   ❯ mix deps.compile hidraw
==> elixir_make
Compiling 8 files (.ex)
Generated elixir_make app
==> hidraw
Unchecked dependencies for environment prod:
* elixir_make (Hex package)
  could not find an app file at "/phoenix_hidraw_error/_build/dev/lib/elixir_make/ebin/elixir_make.app". This may happen if the dependency was not yet compiled or the dependency indeed has no app file (then you can pass app: false as option)
could not compile dependency :hidraw, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile hidraw --force", update it with "mix deps.update hidraw" or clean it with "mix deps.clean hidraw"
==> phoenix_hidraw_error
** (Mix) Can't continue due to errors on dependencies

❯ mix deps.compile hidraw
==> hidraw
mkdir -p /phoenix_hidraw_error/_build/dev/lib/hidraw/obj
mkdir -p /phoenix_hidraw_error/_build/dev/lib/hidraw/priv
gcc -c -I/nix/store/j106gi4wjl8kqr1yxgw35arb4jih4iw4-erlang-28.3.1/lib/erlang/usr/include -std=gnu99 -o /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/erlcmd.o src/erlcmd.c
gcc -c -I/nix/store/j106gi4wjl8kqr1yxgw35arb4jih4iw4-erlang-28.3.1/lib/erlang/usr/include -std=gnu99 -o /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/hidraw.o src/hidraw.c
gcc -c -I/nix/store/j106gi4wjl8kqr1yxgw35arb4jih4iw4-erlang-28.3.1/lib/erlang/usr/include -std=gnu99 -o /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/hidraw_enum.o src/hidraw_enum.c
src/hidraw_enum.c: In function âfind_hidraw_devicesâ:
src/hidraw_enum.c:130:30: warning: â%sâ directive output may be truncated writing up to 255 bytes into a region of size 59 [-Wformat-truncation=]
  130 |                          "%s/%s", DEV, namelist[i]->d_name);
      |                              ^~
In file included from /nix/store/1k8f0lkj10gsbb1fh0idr1423l37yj69-glibc-2.40-218-dev/include/stdio.h:970,
                 from src/hidraw_enum.c:29:
In function âsnprintfâ,
    inlined from âfind_hidraw_devicesâ at src/hidraw_enum.c:129:3:
/nix/store/1k8f0lkj10gsbb1fh0idr1423l37yj69-glibc-2.40-218-dev/include/bits/stdio2.h:68:10: note: â__builtin___snprintf_chkâ output between 6 and 261 bytes into a destination of size 64
   68 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   69 |                                    __glibc_objsize (__s), __fmt,
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   70 |                                    __va_arg_pack ());
      |                                    ~~~~~~~~~~~~~~~~~
gcc /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/erlcmd.o /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/hidraw.o /phoenix_hidraw_error/_build/dev/lib/hidraw/obj/hidraw_enum.o -L/nix/store/j106gi4wjl8kqr1yxgw35arb4jih4iw4-erlang-28.3.1/lib/erlang/usr/lib -lei  -o /phoenix_hidraw_error/_build/dev/lib/hidraw/priv/hidraw
echo "Not crosscompiling. To test locally, the port binary needs extra permissions."; echo "Set SUDO=sudo to set permissions. The default is to skip this step."; echo "SUDO_ASKPASS=/usr/bin/ssh-askpass"; echo "SUDO=true"; SUDO_ASKPASS=/usr/bin/ssh-askpass true -- sh -c 'chown root:root  /phoenix_hidraw_error/_build/dev/lib/hidraw/priv/hidraw; chmod +s  /phoenix_hidraw_error/_build/dev/lib/hidraw/priv/hidraw'
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 1 file (.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.
    │
  9 │     executable = :code.priv_dir(:hidraw) ++ '/hidraw'
    │                                             ~
    │
    └─ lib/hidraw.ex:9:45

    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.
    │
 34 │     executable = :code.priv_dir(:hidraw) ++ '/hidraw'
    │                                             ~
    │
    └─ lib/hidraw.ex:34:45
❯ uname -a
Linux sl-p16 6.18.13 #1-NixOS SMP PREEMPT_DYNAMIC Thu Feb 19 15:31:37 UTC 2026 x86_64 GNU/Linux
Generated hidraw app


❯ elixir --version
Erlang/OTP 28 \[erts-16.2\] \[source\] \[64-bit\] \[smp:32:32\] \[ds:32:32:10\] \[async-threads:1\] \[jit:ns\]

Elixir 1.19.5 (compiled with Erlang/OTP 28)

❯ uname -a
Linux laptop 6.18.13 [#1](/nerves-web-kiosk/hidraw/issues/1)-NixOS SMP PREEMPT_DYNAMIC Thu Feb 19 15:31:37 UTC 2026 x86_64 GNU/Linux

First Post!

Gio

Gio

The following does run, But why? and How can this be solved.
I’d expect we can run compile once for all deps. Apparently the order isn’t right?

rm -rf _build deps
mix deps.get
mix deps.compile elixir_make
mix deps.compile

Most Liked

NobbZ

NobbZ

As nix is involved, it might help to give us a full reproducer.

I can not see anything obvious in the posted output, though I do not know anything about hidraw or how it gets used, to spin up an appropriate shell spontaniously.

NobbZ

NobbZ

This is weird.

I can totally reproduce your issue, but I don’t have an explanation nor fix for this behaviour.

I am sorry.

Last Post!

Gio

Gio

Thank you.

My guess is, it’s unrelated to deps_nix / nix.


@linux_users
Could someone test the following on their elixir project?

# Add the following to your mix.exs
  defp deps do
    [
      #...
      {:hidraw, "~> 0.2.2"}
      #...
    ]
  end
# Run the following commands
mix deps.get
mix deps.compile

compile will probably fail on all Linux systems, if elixir_make hasn’t been compiled before.


I don’t have enough Elixir knowledge either. The cause could be at one of these three.

  • compiler: mix deps.compile , the order is wrong
  • elixir_make library
  • hidraw library

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

Other popular topics Top

vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 42576 114
New