the_wildgoose

the_wildgoose

Compile error in syslog since upgrading to erlang 27

Since upgrading to erlang 27 my projects which import the syslog library fail to compile. This can be trivially reproduced with

  • mix new test
  • edit mix.exs to include dependency on: {:syslog, “~> 1.1.0”},
  • mix compile - will now error with:
===> Fetching pc v1.13.0
===> Analyzing applications...
===> Compiling pc
===> Compiling _build/default/plugins/pc/src/pc_port_env.erl failed
_build/default/plugins/pc/src/pc_port_env.erl:190:10: code:lib_dir/2 is deprecated; this functionality will be removed in a future release

===> Errors loading plugin pc. Run rebar3 with DEBUG=1 set to see errors.
===> Analyzing applications...
===> Compiling pc
===> Analyzing applications...
===> Compiling syslog
===> Uncaught error in rebar_core. Run with DIAGNOSTIC=1 to see stacktrace or consult rebar3.crashdump
===> When submitting a bug report, please include the output of `rebar3 report "your command"`
** (Mix) Could not compile dependency :syslog, "/Users/edward/.mix/elixir/1-17/rebar3 bare compile --paths /Users/edward/Documents/src/elixir/temp/test_syslog/_build/dev/lib/*/ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile syslog --force", update it with "mix deps.update syslog" or clean it with "mix deps.clean syslog"

I cannot make head nor tail of the debug or error reports. For completeness, here is the output from rebar3.crashdump (edit, it’s too long for the post. Here are the first few lines)

Error: undef
[{pc_port_env,construct,
     [{state_t,
          "/Users/edward/Documents/src/elixir/temp/test_syslog/deps/syslog",
          {dict,13,16,16,8,80,48,
              {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
              {{[],
                [[{deps,default}],
                 [{plugins,default},pc],
                 [{project_plugins,default}]],
                [[base_dir,47,85,115,101,114,115,47,101,100,119,97,114,100,47,
                  68,111,99,117,109,101,110,116,115,47,115,114,99,47,101,108,
                  105,120,105,114,47,116,101,109,112,47,116,101,115,116,95,
                  115,121,115,108,111,103,47,100,101,112,115,47,115,121,115,
                  108,111,103,47,95,98,117,105,108,100],
                 [deps_dir,108,105,98]],
                [[erl_opts,debug_info,warn_untyped_record,
                  {platform_define,"^[0-9]+",namespaced_types}],
                 [plugins,pc],
                 [artifacts,"priv/syslog_drv.so"],
                 [provider_hooks,
                  {post,[{compile,{pc,compile}},{clean,{pc,clean}}]}],
                 [overrides],
                 [profiles,
                  {test,
                      [{erl_opts,[{d,'TEST'}]},
                       {extra_src_dirs,[{"test",[{recursive,false}]}]}]}]],

Marked As Solved

jstimps

jstimps

I’ve also run into something similar lately but was not able to get to the root cause. However, the symptom appears to be that rebar is pulling version 1.13.0 of pc from hex instead of the latest 1.15.0.

Since rebar does not lock plugins, I’m not sure what its mechanism is for discovery of “latest version” from hex that is causing it to grab 1.13.0.

For my own purposes, I was able to workaround this by changing my rebar.config like so

% rebar.config
{project_plugins, [{pc, "1.15.0"}]}.

My actual commit here for the curious

Unfortunately this workaround won’t be directly helpful to you since the rebar.config is not under your control.

Also Liked

the_wildgoose

the_wildgoose

OK, thanks to both of you! That got me to the solution!

So it seems that rebar3 has a dependency cache and for whatever reason it doesn’t refresh it?! So blowing away the rebar3 cache is enough to resolve this problem!

Solutions are either (note I’m on Mac):

~/.mix/elixir/1-17/rebar3 clean --all
or
rm -rf ~/.cache

Then in my project I need to mix deps.clean syslog; mix deps.get in order to get it to notice the change

Thanks all!

Where Next?

Popular in Questions Top

qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
chokchit
** (DBConnection.ConnectionError) connection not available and request was dropped from queue after 2733ms. You can configure how long re...
New
Tee
can someone please explain to me how Enum.reduce works with maps
New
JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

Other popular topics Top

KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36352 110
New
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
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
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
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement