I am trying to cross-compile an Elixir release within a Docker container for amd64 on a M1 Macbook and I receive the following error when calling mix deps.compile:
The Docker image I am building from is elixir:latest with the --platform=amd64 flag set.
#0 3.446 Error while loading project :decimal at /app/deps/decimal
#0 3.480 ** (FunctionClauseError) no function clause matching in Keyword.merge/2
#0 3.480
#0 3.480 The following arguments were given to Keyword.merge/2:
#0 3.480
#0 3.480 # 1
#0 3.480 [app: nil, aliases: [], build_embedded: false, build_per_environment: true, build_scm: Mix.SCM.Path, config_path: "config/config.exs", consolidate_protocols: true, default_task: "run", deps: [], deps_path: "deps", elixirc_paths: ["lib"], erlc_paths: ["src"], erlc_include_path: "include", erlc_options: [], lockfile: "mix.lock", preferred_cli_env: [], start_permanent: false]
#0 3.480
#0 3.480 # 2
#0 3.480 Decimal.Mixfile
#0 3.480
#0 3.480 Attempted function clauses (showing 3 out of 3):
#0 3.480
#0 3.480 def merge(+keywords1+, -[]-) when +is_list(keywords1)+
#0 3.480 def merge(-[]-, +keywords2+) when -is_list(keywords2)-
#0 3.480 def merge(+keywords1+, +keywords2+) when +is_list(keywords1)+ and -is_list(keywords2)-
#0 3.480
#0 3.480 (elixir 1.14.4) lib/keyword.ex:979: Keyword.merge/2
#0 3.480 (mix 1.14.4) lib/mix/project.ex:141: Mix.Project.push/3
#0 3.480 (stdlib 4.3.1) lists.erl:1350: :lists.foldl/3
Any suggestions on how to solve this? It builds fine when trying on the same arm64 Docker image so I assume I am missing something.