Skip to content

Commit a8ae009

Browse files
committed
Fix: Packbeam support runtime: false & avoid duplicates
Signed-off-by: Peter M <[email protected]>
1 parent cbd2fb6 commit a8ae009

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/mix/tasks/packbeam.ex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,12 @@ defmodule Mix.Tasks.Atomvm.Packbeam do
158158
end
159159
end
160160

161-
def runtime_deps(deps) do
161+
def runtime_deps(deps, is_runtime_dep \\ false) do
162162
Enum.reduce(deps, [], fn dep, acc ->
163-
if Keyword.get(dep.opts, :runtime, true) do
164-
["#{dep.opts[:build]}/ebin" | runtime_deps(dep.deps) ++ acc]
163+
if Keyword.get(dep.opts, :runtime, true) and
164+
(is_runtime_dep == true or dep.top_level == true) and
165+
dep.app != :exatomvm do
166+
["#{dep.opts[:build]}/ebin" | runtime_deps(dep.deps, true) ++ acc]
165167
else
166168
acc
167169
end

lib/packbeam.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ defmodule ExAtomVM.PackBEAM do
130130
end
131131

132132
defp pack_files(modules) do
133-
Enum.reduce_while(modules, {:ok, []}, fn {module, opts}, {:ok, acc} ->
133+
modules
134+
|> Enum.uniq()
135+
|> Enum.reduce_while({:ok, []}, fn {module, opts}, {:ok, acc} ->
134136
case pack_file(module, opts) do
135137
{:ok, res} -> {:cont, {:ok, [acc | res]}}
136138
error -> {:halt, error}

0 commit comments

Comments
 (0)