From 3cc6e52f99520683fe11e0e50d3f3b30d6896ab7 Mon Sep 17 00:00:00 2001 From: Luper Rouch Date: Mon, 29 Apr 2024 19:00:54 +0200 Subject: [PATCH] Add support for path dependencies Adding a path dependency to a rustler Cargo.toml gives this cryptic error: == Compilation error in file lib/multiplayer_backend/project_mutator.ex == ** (Protocol.UndefinedError) protocol Enumerable not implemented for nil of type Atom (elixir 1.16.1) lib/enum.ex:1: Enumerable.impl_for!/1 (elixir 1.16.1) lib/enum.ex:166: Enumerable.reduce/3 (elixir 1.16.1) lib/enum.ex:4399: Enum.filter/2 (rustler 0.32.1) lib/rustler/compiler/config.ex:130: Rustler.Compiler.Config.gather_local_crates/4 (rustler 0.32.1) lib/rustler/compiler/config.ex:108: Rustler.Compiler.Config.external_resources/3 (rustler 0.32.1) lib/rustler/compiler/config.ex:79: Rustler.Compiler.Config.build/1 (rustler 0.32.1) lib/rustler/compiler.ex:8: Rustler.Compiler.compile_crate/3 lib/multiplayer_backend/project_mutator.ex:2: (module) Somehow this dependency slips nil's in the specs, so we just filter them out. --- rustler_mix/lib/rustler/compiler/config.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rustler_mix/lib/rustler/compiler/config.ex b/rustler_mix/lib/rustler/compiler/config.ex index dc508fe0..2ff908b3 100644 --- a/rustler_mix/lib/rustler/compiler/config.ex +++ b/rustler_mix/lib/rustler/compiler/config.ex @@ -132,7 +132,10 @@ defmodule Rustler.Compiler.Config do paths = Enum.map(local_deps, & &1["path"]) ++ paths_acc - as_specs = Enum.map(local_deps, &get_spec(packages, &1["name"])) + as_specs = + local_deps + |> Enum.map(&get_spec(packages, &1["name"])) + |> Enum.reject(&is_nil/1) visited = local_deps