diff options
Diffstat (limited to 'src/rlx_prv_assembler.erl')
-rw-r--r-- | src/rlx_prv_assembler.erl | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/rlx_prv_assembler.erl b/src/rlx_prv_assembler.erl index ee5854a..fba21ca 100644 --- a/src/rlx_prv_assembler.erl +++ b/src/rlx_prv_assembler.erl @@ -115,6 +115,10 @@ format_error({relup_generation_error, CurrentName, UpFromName}) -> format_error({relup_generation_warning, Module, Warnings}) -> ["Warnings generating relup \s", rlx_util:indent(2), Module:format_warning(Warnings)]; +format_error({no_upfrom_release_found, undefined}) -> + io_lib:format("No earlier release for relup found", []); +format_error({no_upfrom_release_found, Vsn}) -> + io_lib:format("Upfrom release version (~s) for relup not found", [Vsn]); format_error({relup_script_generation_error, {relup_script_generation_error, systools_relup, {missing_sasl, _}}}) -> @@ -167,6 +171,7 @@ create_output_dir(OutputDir) -> copy_app_directories_to_output(State, Release, OutputDir) -> LibDir = filename:join([OutputDir, "lib"]), ok = ec_file:mkdir_p(LibDir), + IncludeSrc = rlx_state:include_src(State), Apps = prepare_applications(State, rlx_release:application_details(Release)), Result = lists:filter(fun({error, _}) -> true; @@ -174,7 +179,7 @@ copy_app_directories_to_output(State, Release, OutputDir) -> false end, lists:flatten(ec_plists:map(fun(App) -> - copy_app(LibDir, App) + copy_app(LibDir, App, IncludeSrc) end, Apps))), case Result of [E | _] -> @@ -191,7 +196,7 @@ prepare_applications(State, Apps) -> Apps end. -copy_app(LibDir, App) -> +copy_app(LibDir, App, IncludeSrc) -> AppName = erlang:atom_to_list(rlx_app_info:name(App)), AppVsn = rlx_app_info:original_vsn(App), AppDir = rlx_app_info:dir(App), @@ -202,16 +207,16 @@ copy_app(LibDir, App) -> %% a release dir ok; true -> - copy_app(App, AppDir, TargetDir) + copy_app(App, AppDir, TargetDir, IncludeSrc) end. -copy_app(App, AppDir, TargetDir) -> +copy_app(App, AppDir, TargetDir, IncludeSrc) -> remove_symlink_or_directory(TargetDir), case rlx_app_info:link(App) of true -> link_directory(AppDir, TargetDir); false -> - copy_directory(AppDir, TargetDir) + copy_directory(AppDir, TargetDir, IncludeSrc) end. remove_symlink_or_directory(TargetDir) -> @@ -235,16 +240,21 @@ link_directory(AppDir, TargetDir) -> ok end. -copy_directory(AppDir, TargetDir) -> +copy_directory(AppDir, TargetDir, IncludeSrc) -> ec_plists:map(fun(SubDir) -> copy_dir(AppDir, TargetDir, SubDir) end, ["ebin", "include", "priv", - "src", - "c_src", "README", - "LICENSE"]). + "LICENSE" | + case IncludeSrc of + true -> + ["src", + "c_src"]; + false -> + [] + end]). copy_dir(AppDir, TargetDir, SubDir) -> SubSource = filename:join(AppDir, SubDir), @@ -447,8 +457,9 @@ make_script(Options, RunFun) -> end. make_relup(State, Release) -> + Vsn = rlx_state:upfrom(State), UpFrom = - case rlx_state:upfrom(State) of + case Vsn of undefined -> get_last_release(State, Release); Vsn -> @@ -456,7 +467,7 @@ make_relup(State, Release) -> end, case UpFrom of undefined -> - ?RLX_ERROR(no_upfrom_release_found); + ?RLX_ERROR({no_upfrom_release_found, Vsn}); _ -> make_upfrom_script(State, Release, UpFrom) end. @@ -574,7 +585,7 @@ get_up_release(State, Release, Vsn) -> try ec_dictionary:get({Name, Vsn}, rlx_state:realized_releases(State)) catch - throw:notfound -> + throw:not_found -> undefined end. |