Weird build failure

certifi is found, yet it is not found

building release
Running dependency resolution
A new Hex version is available (0.14.1 < 0.15.0), please update with `mix local.hex`
...
* Getting certifi (Hex package)**
  Checking package (https://repo.hex.pm/tarballs/certifi-0.7.0.tar)**
  Fetched package**
...
===> Compiling certifi
===> Rebar3 detected a lock file from a newer version. It will be loaded in compatibility mode, but important information may be missing or lost. It is recommended to upgrade Rebar3.
===> Package certifi-0.7.0 not found. Fetching registry updates and trying again...
===> {rebar_prv_update,package_index_write}
==> url_fetcher_http
** (Mix) Could not compile dependency :hackney, "/.mix/rebar3 bare compile --paths "/build/_build/prod/lib/*/ebin"" command failed. You can recompile this dependency with "mix deps.compile hackney", update it with "mix deps.update hackney" or clean it with "mix deps.clean hackney"

???

1 Like

Just as a first off, you should both update hex and update rebar. Then try again?

2 Likes

It turns out to be a weird permissions thing. I was really thrown off at first because it builds fine on my Mac, had been building fine on our build farm, and I’d made absolutely no changes to dependencies or versions of tools.

But after thinking about it, I had changed one thing, the user of the docker container that hosts Elixir. (Needed to change it because it was leaving files on the build server owned by root.) So although certifi clearly does not require root privileges to build, it needs something that our build user doesn’t have.

I suppose the next step would be to find any & all verbose flags that might exist and use them.

2 Likes

Hmm, unfortunately mix deps.compile doesn’t seem to support a verbose mode.

1 Like