diff options
| author | Emile Joubert <emile@rabbitmq.com> | 2010-11-23 13:45:59 +0000 |
|---|---|---|
| committer | Emile Joubert <emile@rabbitmq.com> | 2010-11-23 13:45:59 +0000 |
| commit | 16cb47891d6aa3fa924501025e07addbb598b17e (patch) | |
| tree | e43f0c8a7cad4816292370f2da45a79d84dd6e48 /generate_deps | |
| parent | 2f65c78ef22d2480055f2cc2f2895e40b3c332db (diff) | |
| parent | 5375bc5c6f1821e063bb2ea5da600aa7b755ee3e (diff) | |
| download | rabbitmq-server-git-16cb47891d6aa3fa924501025e07addbb598b17e.tar.gz | |
Merged bug23293 into default (again)
Diffstat (limited to 'generate_deps')
| -rw-r--r-- | generate_deps | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/generate_deps b/generate_deps index 29587b5a5f..ddfca816b4 100644 --- a/generate_deps +++ b/generate_deps @@ -2,18 +2,21 @@ %% -*- erlang -*- -mode(compile). -main([IncludeDir, ErlDir, EbinDir, TargetFile]) -> - ErlDirContents = filelib:wildcard("*.erl", ErlDir), - ErlFiles = [filename:join(ErlDir, FileName) || FileName <- ErlDirContents], +%% We expect the list of Erlang source and header files to arrive on +%% stdin, with the entries colon-separated. +main([TargetFile, EbinDir]) -> + ErlsAndHrls = [ string:strip(S,left) || + S <- string:tokens(io:get_line(""), ":\n")], + ErlFiles = [F || F <- ErlsAndHrls, lists:suffix(".erl", F)], Modules = sets:from_list( [list_to_atom(filename:basename(FileName, ".erl")) || - FileName <- ErlDirContents]), - Headers = sets:from_list( - [filename:join(IncludeDir, FileName) || - FileName <- filelib:wildcard("*.hrl", IncludeDir)]), + FileName <- ErlFiles]), + HrlFiles = [F || F <- ErlsAndHrls, lists:suffix(".hrl", F)], + IncludeDirs = lists:usort([filename:dirname(Path) || Path <- HrlFiles]), + Headers = sets:from_list(HrlFiles), Deps = lists:foldl( fun (Path, Deps1) -> - dict:store(Path, detect_deps(IncludeDir, EbinDir, + dict:store(Path, detect_deps(IncludeDirs, EbinDir, Modules, Headers, Path), Deps1) end, dict:new(), ErlFiles), @@ -33,8 +36,8 @@ main([IncludeDir, ErlDir, EbinDir, TargetFile]) -> ok = file:sync(Hdl), ok = file:close(Hdl). -detect_deps(IncludeDir, EbinDir, Modules, Headers, Path) -> - {ok, Forms} = epp:parse_file(Path, [IncludeDir], [{use_specs, true}]), +detect_deps(IncludeDirs, EbinDir, Modules, Headers, Path) -> + {ok, Forms} = epp:parse_file(Path, IncludeDirs, [{use_specs, true}]), lists:foldl( fun ({attribute, _LineNumber, Attribute, Behaviour}, Deps) when Attribute =:= behaviour orelse Attribute =:= behavior -> |
