Picosat_elixir - repeatedly fails to compile in Ash projects

It appears almost random as to when it will compile.

Currently I’m stuck trying to compile it for this:

The error is always the same regardless of the project I try to compile it for:

==> picosat_elixir
│Makefile:35: *** target pattern contains no ‘%’. Stop.
could not compile dependency :picosat_elixir, “mix compile” failed. Errors may have been logged above. You can recompile this dependency with “mix deps.compile picosat_elixir --force”, update it with “mix deps.update picosat_elixir” or clean it with “mix deps.clean picosat_elixir”

==> realworld
** (Mix) Could not compile with “make” (exit status: 2).
You need to have gcc and make installed. Try running the
commands “gcc --version” and / or “make --version”. If these programs
are not installed, you will be prompted to install them.

I’ve tried the suggested fixes and that didn’t fix the error.

gcc --version gives:

gcc (GCC) 13.3.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

make --version gives:

GNU Make 4.4.1 │Built for aarch64-apple-darwin24.3.0 │Copyright (C) 1988-2023 Free Software Foundation, Inc. │License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html> │This is free software: you are free to change and redistribute it. │There is NO WARRANTY, to the extent permitted by law.

Line 35 from the picosat_elixir Makefile is:

all: $(PICOSAT_BUILD_OUTPUT)

It looks identical to what’s in: GitHub - bitwalker/picosat_elixir: Elixir + Erlang bindings for the PicoSAT solver

I’ve seen others encounter similar errors, and i’ve somehow fixed this in the past (I think from just a reinstall/clone, but that isn’t working now, although I can get this to work in a clean ash + phoenix + ash_auth project). I may try copying the Makefile from that clean project to my Realworld clone/repo to see if it fixes this, but I have tried that before and it didn’t work. Update: I’ve just tried this and it failed.

PS: Thanks for moving this post here @AstonJ!

1 Like

Very strange. Try using simple_sat instead of picosat_elixir, and do a full recompile rm -rf _build

2 Likes

Many thanks @zachdaniel,

I got picosat_elixir working (no idea how), but great to know of simple_sat as an alternative to save time trouble shooting this again!

The only thing I can think of, is that I updated out of date dependencies in mix.exs before encountering the failed compile of picosat_elixir, but I would have thought that wouldn’t have mattered as that would be no different from updating via mix deps.get anyways? I guess that’s where simple_sat shines because (the only thing I know about) it, is that it’s dependency-free?