Skip to content

Commit 7ff5618

Browse files
authored
Merge pull request #2872 from MarkoMin/rebar_src_dirs_env
REBAR_SRC_DIRS and REBAR_APP_DIRS fix by making `rebar_dir:src_dirs/1` options default to `["src"]`
2 parents 06aaecd + bd42627 commit 7ff5618

14 files changed

+50
-28
lines changed

apps/rebar/src/rebar.hrl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
-define(DEFAULT_BASE_DIR, "_build").
1616
-define(DEFAULT_ROOT_DIR, ".").
17+
-define(DEFAULT_PROJECT_SRC_DIRS, ["src"]).
1718
-define(DEFAULT_PROJECT_APP_DIRS, ["apps/*", "lib/*", "."]).
1819
-define(DEFAULT_PROJECT_PLUGIN_DIRS, ["plugins/*"]).
1920
-define(DEFAULT_CHECKOUTS_DIR, "_checkouts").

apps/rebar/src/rebar_app_discover.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ do(State, LibDirs) ->
2424
BaseDir = rebar_state:dir(State),
2525
Dirs = [filename:join(BaseDir, LibDir) || LibDir <- LibDirs],
2626
RebarOpts = rebar_state:opts(State),
27-
SrcDirs = rebar_dir:src_dirs(RebarOpts, ["src"]),
27+
SrcDirs = rebar_dir:src_dirs(RebarOpts),
2828
Apps = find_apps(Dirs, SrcDirs, all, State),
2929
ProjectDeps = rebar_state:deps_names(State),
3030
DepsDir = rebar_dir:deps_dir(State),
@@ -318,7 +318,7 @@ find_app(AppInfo, AppDir, Validate, State) ->
318318
%% if no src dir is passed, figure it out from the app info, with a default
319319
%% of src/
320320
AppOpts = rebar_app_info:opts(AppInfo),
321-
SrcDirs = rebar_dir:src_dirs(AppOpts, ["src"]),
321+
SrcDirs = rebar_dir:src_dirs(AppOpts),
322322
find_app_(AppInfo, AppDir, SrcDirs, Validate, State).
323323

324324
%% @doc check that a given app in a directory is there, and whether it's

apps/rebar/src/rebar_compiler.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ clean_(CompilerMod, AppInfo, _Label) ->
375375
annotate_extras(AppInfo) ->
376376
AppOpts = rebar_app_info:opts(AppInfo),
377377
ExtraDirs = rebar_dir:extra_src_dirs(AppOpts, []),
378-
OldSrcDirs = rebar_dir:src_dirs(AppOpts, ["src"]),
378+
OldSrcDirs = rebar_dir:src_dirs(AppOpts),
379379
%% Re-annotate the directories with non-default options if it is the
380380
%% case; otherwise, later down the line, the options get dropped with
381381
%% profiles. All of this must be done with the rebar_dir functionality

apps/rebar/src/rebar_compiler_erl.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ context(AppInfo) ->
1717
Mappings = [{".beam", EbinDir}],
1818

1919
OutDir = rebar_app_info:dir(AppInfo),
20-
SrcDirs = rebar_dir:src_dirs(rebar_app_info:opts(AppInfo), ["src"]),
20+
SrcDirs = rebar_dir:src_dirs(rebar_app_info:opts(AppInfo)),
2121
ExistingSrcDirs = lists:filter(fun(D) ->
2222
ec_file:is_dir(filename:join(OutDir, D))
2323
end, SrcDirs),
@@ -31,7 +31,7 @@ context(AppInfo) ->
3131
%% all source directories are valid, and might also be recursive
3232
lists:append([
3333
find_recursive_incl(OutDir, Src, RebarOpts) ||
34-
Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])
34+
Src <- rebar_dir:all_src_dirs(RebarOpts)
3535
]) ++
3636
%% top-level dir for legacy stuff
3737
[OutDir],
@@ -84,7 +84,7 @@ needed_files(Graph, FoundFiles, _, AppInfo) ->
8484
),
8585

8686
PrivIncludes = [{i, filename:join(OutDir, Src)}
87-
|| Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])],
87+
|| Src <- rebar_dir:all_src_dirs(RebarOpts)],
8888
AdditionalOpts = PrivIncludes ++ [{i, filename:join(OutDir, "include")}, {i, OutDir}, return],
8989

9090
true = digraph:delete(SubGraph),
@@ -241,7 +241,7 @@ filename_to_atom(F) -> list_to_atom(filename:rootname(filename:basename(F))).
241241
%% dependencies induced by given graph G.
242242
needed_files(Graph, ErlOpts, RebarOpts, Dir, OutDir, SourceFiles) ->
243243
PrivIncludes = [{i, filename:join(Dir, Src)}
244-
|| Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])],
244+
|| Src <- rebar_dir:all_src_dirs(RebarOpts)],
245245
SharedOpts = [{i, filename:join(Dir, "include")},
246246
{i, Dir}] ++ PrivIncludes ++ ErlOpts,
247247
CompilerOptsSet = erl_compiler_opts_set(),

apps/rebar/src/rebar_dir.erl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ do_make_relative_path(Source, Target) ->
250250
%%% the given directory, no matter if it is configured as `src_dirs' or
251251
%%% `extra_src_dirs'.
252252
-spec src_dirs(rebar_dict()) -> list(file:filename_all()).
253-
src_dirs(Opts) -> src_dirs(Opts, []).
253+
src_dirs(Opts) -> src_dirs(Opts, ?DEFAULT_PROJECT_SRC_DIRS).
254254

255255
%% @doc same as `src_dirs/1', but allows to pass in a list of default options.
256256
-spec src_dirs(rebar_dict(), list(file:filename_all())) -> list(file:filename_all()).
@@ -287,7 +287,9 @@ raw_src_dirs(Type, Opts, Default) ->
287287
%% @doc returns all the source directories (`src_dirs' and
288288
%% `extra_src_dirs').
289289
-spec all_src_dirs(rebar_dict()) -> list(file:filename_all()).
290-
all_src_dirs(Opts) -> all_src_dirs(Opts, [], []).
290+
all_src_dirs(Opts) -> all_src_dirs(Opts,
291+
?DEFAULT_PROJECT_SRC_DIRS,
292+
[]).
291293

292294
%% @doc returns all the source directories (`src_dirs' and
293295
%% `extra_src_dirs') while being able to configure defaults for both.

apps/rebar/src/rebar_env.erl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
%% REBAR_GLOBAL_CONFIG_DIR = rebar_dir:global_config_dir/1
1818
%% REBAR_GLOBAL_CACHE_DIR = rebar_dir:global_cache_dir/1
1919
%% REBAR_TEMPLATE_DIR = rebar_dir:template_dir/1
20+
%%
21+
%% (relative paths):
2022
%% REBAR_APP_DIRS = rebar_dir:lib_dirs/1
21-
%% REBAR_SRC_DIRS = rebar_dir:src_dirs/1
23+
%% REBAR_SRC_DIRS = rebar_dir:all_src_dirs/1
2224
%%
2325
%% autoconf compatible variables
2426
%% (see: http://www.gnu.org/software/autoconf/manual/autoconf.html#Erlang-Libraries):
@@ -28,6 +30,8 @@
2830
%% ERLANG_LIB_VER_erl_interface = version part of path returned by code:lib_dir(erl_interface)
2931
%% ERL = ERLANG_ROOT_DIR/bin/erl
3032
%% ERLC = ERLANG_ROOT_DIR/bin/erl
33+
%% ERLANG_ARCH = rebar_api:wordsize/0
34+
%% ERLANG_TARGET = rebar_api:get_arch/0
3135
%%
3236

3337
-spec create_env(rebar_state:t()) -> proplists:proplist().
@@ -37,7 +41,6 @@ create_env(State) ->
3741

3842
-spec create_env(rebar_state:t(), rebar_dict()) -> proplists:proplist().
3943
create_env(State, Opts) ->
40-
BaseDir = rebar_dir:base_dir(State),
4144
EnvVars = [
4245
{"REBAR_DEPS_DIR", filename:absname(rebar_dir:deps_dir(State))},
4346
{"REBAR_BUILD_DIR", filename:absname(rebar_dir:base_dir(State))},
@@ -48,8 +51,8 @@ create_env(State, Opts) ->
4851
{"REBAR_GLOBAL_CONFIG_DIR", filename:absname(rebar_dir:global_config_dir(State))},
4952
{"REBAR_GLOBAL_CACHE_DIR", filename:absname(rebar_dir:global_cache_dir(Opts))},
5053
{"REBAR_TEMPLATE_DIR", filename:absname(rebar_dir:template_dir(State))},
51-
{"REBAR_APP_DIRS", join_dirs(BaseDir, rebar_dir:lib_dirs(State))},
52-
{"REBAR_SRC_DIRS", join_dirs(BaseDir, rebar_dir:all_src_dirs(Opts))},
54+
{"REBAR_APP_DIRS", join_dirs(rebar_dir:lib_dirs(State))},
55+
{"REBAR_SRC_DIRS", join_dirs(rebar_dir:all_src_dirs(Opts))},
5356
{"ERLANG_ERTS_VER", erlang:system_info(version)},
5457
{"ERLANG_ROOT_DIR", code:root_dir()},
5558
{"ERL", filename:join([code:root_dir(), "bin", "erl"])},
@@ -79,8 +82,8 @@ create_erl_interface_env() ->
7982
%% Internal functions
8083
%% ====================================================================
8184

82-
join_dirs(BaseDir, Dirs) ->
83-
rebar_string:join([filename:join(BaseDir, Dir) || Dir <- Dirs], ":").
85+
join_dirs(Dirs) ->
86+
rebar_string:join(Dirs, ":").
8487

8588
re_version(Path) ->
8689
case re:run(Path, "^.*-(?<VER>[^/-]*)$", [{capture,[1],list}, unicode]) of

apps/rebar/src/rebar_erlc_compiler.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ compile(AppInfo, CompileOpts) when element(1, AppInfo) == app_info_t ->
118118
compile_mib(AppInfo), MibsOpts),
119119

120120
SrcDirs = lists:map(fun(SrcDir) -> filename:join(Dir, SrcDir) end,
121-
rebar_dir:src_dirs(RebarOpts, ["src"])),
121+
rebar_dir:src_dirs(RebarOpts)),
122122
OutDir = filename:join(Dir, outdir(RebarOpts)),
123123
compile_dirs(RebarOpts, Dir, SrcDirs, OutDir, CompileOpts),
124124

@@ -151,7 +151,7 @@ compile(State, BaseDir, OutDir, CompileOpts) when element(1, State) == state_t -
151151
compile(RebarOpts, BaseDir, OutDir, CompileOpts) ->
152152
warn_deprecated(),
153153
SrcDirs = lists:map(fun(SrcDir) -> filename:join(BaseDir, SrcDir) end,
154-
rebar_dir:src_dirs(RebarOpts, ["src"])),
154+
rebar_dir:src_dirs(RebarOpts)),
155155
compile_dirs(RebarOpts, BaseDir, SrcDirs, OutDir, CompileOpts),
156156

157157
ExtraDirs = rebar_dir:extra_src_dirs(RebarOpts),
@@ -563,7 +563,7 @@ internal_erl_compile(Opts, Dir, Module, OutDir, ErlOpts, RebarOpts) ->
563563
Target = target_base(OutDir, Module) ++ ".beam",
564564
ok = filelib:ensure_dir(Target),
565565
PrivIncludes = [{i, filename:join(Dir, Src)}
566-
|| Src <- rebar_dir:all_src_dirs(RebarOpts, ["src"], [])],
566+
|| Src <- rebar_dir:all_src_dirs(RebarOpts)],
567567
AllOpts = [{outdir, filename:dirname(Target)}, no_spawn_compiler_process]
568568
++ ErlOpts ++ PrivIncludes ++
569569
[{i, filename:join(Dir, "include")}, {i, Dir}, return],

apps/rebar/src/rebar_otp_app.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ ebin_modules(AppInfo, Dir) ->
182182

183183
extra_dirs(State) ->
184184
Extras = rebar_dir:extra_src_dirs(rebar_app_info:opts(State)),
185-
SrcDirs = rebar_dir:src_dirs(rebar_app_info:opts(State), ["src"]),
185+
SrcDirs = rebar_dir:src_dirs(rebar_app_info:opts(State)),
186186
%% remove any dirs that are defined in `src_dirs` from `extra_src_dirs`
187187
Extras -- SrcDirs.
188188

apps/rebar/src/rebar_plugins.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ discover_plugins(State) ->
205205
LibDirs = rebar_dir:project_plugin_dirs(State),
206206
Dirs = [filename:join(BaseDir, LibDir) || LibDir <- LibDirs],
207207
RebarOpts = rebar_state:opts(State),
208-
SrcDirs = rebar_dir:src_dirs(RebarOpts, ["src"]),
208+
SrcDirs = rebar_dir:src_dirs(RebarOpts),
209209
Found = rebar_app_discover:find_apps(Dirs, SrcDirs, all, State),
210210
?DEBUG("Found local plugins: ~p~n"
211211
"\tusing config: {project_plugin_dirs, ~p}",
@@ -233,7 +233,7 @@ is_umbrella(State) ->
233233
%% we know this is not an umbrella application.
234234
Root = rebar_dir:root_dir(State),
235235
LibPaths = lists:usort(rebar_dir:lib_dirs(State)) -- ["."],
236-
SrcPaths = rebar_dir:src_dirs(rebar_state:opts(State), ["src"]),
236+
SrcPaths = rebar_dir:src_dirs(rebar_state:opts(State)),
237237
lists:any(fun(Dir) -> [] == filelib:wildcard(filename:join(Root, Dir)) end, LibPaths)
238238
andalso
239239
lists:all(fun(Dir) -> not filelib:is_dir(filename:join(Root, Dir)) end, SrcPaths).

apps/rebar/src/rebar_prv_compile.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ delete_if_symlink(Path) ->
513513
end.
514514

515515
resolve_src_dirs(Opts) ->
516-
SrcDirs = rebar_dir:src_dirs(Opts, ["src"]),
516+
SrcDirs = rebar_dir:src_dirs(Opts),
517517
ExtraDirs = rebar_dir:extra_src_dirs(Opts, []),
518518
normalize_src_dirs(SrcDirs, ExtraDirs).
519519

0 commit comments

Comments
 (0)