Phoenix: Unable to compile Phoenix: Calendar.ISO conflict

Created on 12 Jul 2019  路  7Comments  路  Source: phoenixframework/phoenix

Environment

  • Elixir version (elixir -v):
Erlang/OTP 22 [erts-10.4] [source] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Elixir 1.9.0 (compiled with Erlang/OTP 20)
  • Phoenix version (mix deps): master (b9a1f84c3750cc6ae1181ea4eb4a11607ef618d5)
* ranch 1.7.1 (Hex package) (rebar3)
  locked at 1.7.1 (ranch) 6b1fab51
  ok
* telemetry 0.4.0 (Hex package) (rebar3)
  locked at 0.4.0 (telemetry) 8339bee3
  ok
* jason 1.0.0 (Hex package) (mix)
  locked at 1.0.0 (jason) 0f7cfa9b
  ok
* phoenix_pubsub 2.0.0-dev (https://github.com/phoenixframework/phoenix_pubsub.git) (mix)
  locked at 1bc0b25
  ok
* cowlib 2.7.3 (Hex package) (rebar3)
  locked at 2.7.3 (cowlib) a7ffcd09
  ok
* cowboy 2.6.3 (Hex package) (rebar3)
  locked at 2.6.3 (cowboy) 99aa50e9
  ok
* mime 1.3.1 (Hex package) (mix)
  locked at 1.3.1 (mime) 30ce04ab
  ok
* plug_crypto 1.0.0 (Hex package) (mix)
  locked at 1.0.0 (plug_crypto) 18e49317
  ok
* plug 1.8.2 (Hex package) (mix)
  locked at 1.8.2 (plug) 0bcce1da
  ok
* plug_cowboy 2.1.0 (Hex package) (mix)
  locked at 2.1.0 (plug_cowboy) b7576815
  ok
* phoenix_html 2.13.0 (Hex package) (mix)
  locked at 2.13.0 (phoenix_html) 3bad10de
  ok
  • NodeJS version (node -v): v10.16.0
  • NPM version (npm -v): 6.9.0
  • Operating system: Ubuntu GNU/Linux 18.04 32 bits

Expected behavior

To compile

Actual behavior

$ mix
Compiling 65 files (.ex)

03:36:42.032 [error] beam/beam_load.c(2314): Error loading function 'Elixir.Calendar.ISO':from_unix/2: op i_plus q x p x:
  no specific operation found



03:36:42.034 [error] Loading of /home/eksperimental/.asdf/installs/elixir/1.9.0/bin/../lib/elixir/ebin/Elixir.Calendar.ISO.beam failed: :badfile


03:36:44.271 [error] beam/beam_load.c(2314): Error loading function 'Elixir.Calendar.ISO':from_unix/2: op i_plus q x p x:
  no specific operation found



03:36:44.271 [error] Loading of /home/eksperimental/.asdf/installs/elixir/1.9.0/bin/../lib/elixir/ebin/Elixir.Calendar.ISO.beam failed: :badfile


== Compilation error in file lib/mix/phoenix/schema.ex ==
** (UndefinedFunctionError) function Calendar.ISO.parse_microsecond/1 is undefined (module Calendar.ISO is not available)
    (elixir) Calendar.ISO.parse_microsecond("")
    (elixir) lib/calendar/naive_datetime.ex:556: NaiveDateTime.raw_from_iso8601/2
    (elixir) lib/calendar/naive_datetime.ex:587: NaiveDateTime.from_iso8601!/2
    (elixir) expanding macro: Kernel.sigil_N/2
    lib/mix/phoenix/schema.ex:216: Mix.Phoenix.Schema.type_to_default/3                     

Most helpful comment

For the record, erlang 22.1.3 doesn't cause this issue anymore. So if you are hit by this, upgrade OTP

All 7 comments

This looks like an issue with your erlang/elixir install. Can you try reinstalling?

@chrismccord thanks for the guidance. It is Erlang 22 that is causing this. It is not Elixir, as I have tried with v1.8.2 and and v1.9.0 sucessfully with Erlang 21.
I have installed the latest Erlang version (22.0.7) and the problem persists.

This is definitely not a Phoenix issue. It seems an issue with .beam files compiled in older Erlang versions running on OTP 22. Unfortunately it only happens in certain cases. I tried to reproduce it for the OTP team but I always ended-up empty handed. :(

It could be that it only happens in the 32bit architecture, as that is the one I am running

That could be it, yeah, since the other failures I heard were from Raspberry PI.

For the record, erlang 22.1.3 doesn't cause this issue anymore. So if you are hit by this, upgrade OTP

Was this page helpful?
0 / 5 - 0 ratings