From 775261dd0b24d74e48f5873ef1ffff56c0c4829a Mon Sep 17 00:00:00 2001 From: Fred Hebert Date: Fri, 27 Apr 2018 09:32:39 -0400 Subject: Prevent copying or symlink non-existing src_dirs This would cause crashes on linux and force people to have a src_dirs config that is strictly matching what is on the file system rather than acting as a specification of those that are valid. To compare, if lib_dirs worked the same, then any repo that did not both have apps/ and lib/ would crash, as the spec mentions both options as valid. --- src/rebar_prv_compile.erl | 5 ++++- test/rebar_dir_SUITE.erl | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rebar_prv_compile.erl b/src/rebar_prv_compile.erl index 72320fb..1748118 100644 --- a/src/rebar_prv_compile.erl +++ b/src/rebar_prv_compile.erl @@ -236,7 +236,10 @@ copy_app_dirs(AppInfo, OldAppDir, AppDir) -> symlink_or_copy(OldAppDir, AppDir, Dir) -> Source = filename:join([OldAppDir, Dir]), Target = filename:join([AppDir, Dir]), - rebar_file_utils:symlink_or_copy(Source, Target). + case ec_file:is_dir(Source) of + true -> rebar_file_utils:symlink_or_copy(Source, Target); + false -> ok + end. copy(OldAppDir, AppDir, Dir) -> Source = filename:join([OldAppDir, Dir]), diff --git a/test/rebar_dir_SUITE.erl b/test/rebar_dir_SUITE.erl index f5ac0fc..81051e6 100644 --- a/test/rebar_dir_SUITE.erl +++ b/test/rebar_dir_SUITE.erl @@ -79,13 +79,10 @@ alt_src_dir_nested(Config) -> RebarConfig = [{src_dirs, ["src", "alt/nested"]}], AppsDir = ?config(apps, Config), Name1 = ?config(app_one, Config), - Name2 = ?config(app_two, Config), ModDir = filename:join([AppsDir, "apps", Name1, "alt", "nested"]), - ModDir2 = filename:join([AppsDir, "apps", Name2, "alt", "nested"]), Mod = "-module(altmod). -export([main/0]). main() -> ok.", ec_file:mkdir_path(ModDir), - ec_file:mkdir_path(ModDir2), ok = file:write_file(filename:join([ModDir, "altmod.erl"]), Mod), Ebin = filename:join([AppsDir, "_build", "default", "lib", Name1, "ebin", "altmod.beam"]), -- cgit v1.1