From 087718c47a1da1871e3eda1bdee80be0eb9d350a Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Tue, 11 Mar 2025 15:05:54 +0100 Subject: [PATCH] fix greedy include path (fixes #4359) --- src/ext_mod.erl | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ext_mod.erl b/src/ext_mod.erl index 451467c66..387ef1bd4 100644 --- a/src/ext_mod.erl +++ b/src/ext_mod.erl @@ -573,7 +573,7 @@ compile_and_install(Module, Spec, Config) -> true -> case compile_deps(SrcDir) of ok -> - case compile(SrcDir) of + case compile(SrcDir, filename:join(SrcDir, "deps")) of ok -> install(Module, Spec, SrcDir, LibDir, Config); Error -> Error end; @@ -589,25 +589,28 @@ compile_and_install(Module, Spec, Config) -> end. compile_deps(LibDir) -> - Deps = filename:join(LibDir, "deps"), - case filelib:is_dir(Deps) of + DepsDir = filename:join(LibDir, "deps"), + case filelib:is_dir(DepsDir) of true -> ok; % assume deps are included false -> fetch_rebar_deps(LibDir) end, - Rs = [compile(Dep) || Dep <- filelib:wildcard(filename:join(Deps, "*"))], + Rs = [compile(Dep, DepsDir) || Dep <- filelib:wildcard(filename:join(DepsDir, "*"))], compile_result(Rs). -compile(LibDir) -> +compile(LibDir, DepsDir) -> Bin = filename:join(LibDir, "ebin"), Lib = filename:join(LibDir, "lib"), Src = filename:join(LibDir, "src"), - Includes = [{i, Inc} || Inc <- filelib:wildcard(LibDir++"/../../**/include")], + Includes = [{i, Inc} || Inc <- filelib:wildcard(DepsDir++"/**/include")], Options = [{outdir, Bin}, {i, LibDir++"/.."} | Includes ++ compile_options()], + ?DEBUG("compile options: ~p", [Options]), filelib:ensure_dir(filename:join(Bin, ".")), [copy(App, filename:join(Bin, filename:basename(App, ".src"))) || App <- filelib:wildcard(Src++"/*.app*")], compile_c_files(LibDir), + ErlFiles = filelib:wildcard(Src++"/**/*.erl"), + ?DEBUG("erl files to compile: ~p", [ErlFiles]), Er = [compile_erlang_file(Bin, File, Options) - || File <- filelib:wildcard(Src++"/**/*.erl")], + || File <- ErlFiles], Ex = compile_elixir_files(Bin, filelib:wildcard(Lib ++ "/**/*.ex")), compile_result(lists:flatten([Er, Ex])).