diff options
author | Tristan Sloughter <t@crashfast.com> | 2019-10-16 08:57:12 -0600 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2020-02-07 10:56:57 -0700 |
commit | f89c871e19ad0c02c3d37fc9480b20378c427b6a (patch) | |
tree | 082dcc234273f498bfa338739e7388242feef518 /lib/sasl | |
parent | 48ddbe2448bc25168625e77f77de93e0b68ceff7 (diff) | |
download | erlang-f89c871e19ad0c02c3d37fc9480b20378c427b6a.tar.gz |
make_tar: support including arbitrary files and directories
Diffstat (limited to 'lib/sasl')
-rw-r--r-- | lib/sasl/src/systools_make.erl | 13 | ||||
-rw-r--r-- | lib/sasl/test/systools_SUITE.erl | 58 |
2 files changed, 61 insertions, 10 deletions
diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl index 85531f22ef..5a4e4b84c1 100644 --- a/lib/sasl/src/systools_make.erl +++ b/lib/sasl/src/systools_make.erl @@ -1676,8 +1676,17 @@ mk_tar(Tar, RelName, Release, Appls, Flags, Path1) -> add_applications(Appls, Tar, Variables, Flags, false), add_variable_tars(Variables, Appls, Tar, Flags), add_system_files(Tar, RelName, Release, Path1), - add_erts_bin(Tar, Release, Flags). - + add_erts_bin(Tar, Release, Flags), + add_additional_files(Tar, Flags). + +add_additional_files(Tar, Flags) -> + case get_flag(extra_files, Flags) of + {extra_files, ToAdd} -> + [add_to_tar(Tar, From, To) || {From, To} <- ToAdd]; + _ -> + ok + end. + add_applications(Appls, Tar, Variables, Flags, Var) -> Res = foldl(fun({{Name,Vsn},App}, Errs) -> case catch add_appl(to_list(Name), Vsn, App, diff --git a/lib/sasl/test/systools_SUITE.erl b/lib/sasl/test/systools_SUITE.erl index 72f881c9e5..4e89fbb42a 100644 --- a/lib/sasl/test/systools_SUITE.erl +++ b/lib/sasl/test/systools_SUITE.erl @@ -57,7 +57,7 @@ all() -> groups() -> [{script, [], - [script_options, normal_script, unicode_script, no_mod_vsn_script, + [script_options, normal_script, start_script, unicode_script, no_mod_vsn_script, wildcard_script, variable_script, abnormal_script, no_sasl_script, no_dot_erlang_script, src_tests_script, crazy_script, @@ -66,10 +66,10 @@ groups() -> duplicate_modules_script, otp_3065_circular_dependenies, included_and_used_sort_script]}, {tar, [], - [tar_options, normal_tar, no_mod_vsn_tar, system_files_tar, + [tar_options, relname_tar, normal_tar, no_mod_vsn_tar, system_files_tar, system_src_file_tar, invalid_system_files_tar, variable_tar, src_tests_tar, var_tar, exref_tar, link_tar, no_sasl_tar, - otp_9507_path_ebin]}, + otp_9507_path_ebin, additional_files_tar]}, {relup, [], [normal_relup, restart_relup, abnormal_relup, no_sasl_relup, no_appup_relup, bad_appup_relup, app_start_type_relup, regexp_relup @@ -252,7 +252,7 @@ start_script(Config) when is_list(Config) -> ok = file:set_cwd(LatestDir), - ok = systools:make_script(filename:basename(LatestName), [{script_name, start}]), + ok = systools:make_script(filename:basename(LatestName), [{script_name, "start"}]), {ok, _} = read_script_file("start"), % Check readabillity ok = file:set_cwd(OldDir), @@ -892,7 +892,7 @@ tar_options(Config) when is_list(Config) -> ok. -%% make_tar: Check normal case +%% make_tar: Check case of start.boot normal_tar(Config) when is_list(Config) -> {ok, OldDir} = file:get_cwd(), @@ -905,7 +905,7 @@ normal_tar(Config) when is_list(Config) -> ok = file:set_cwd(LatestDir), - {ok, _, []} = systools:make_script(LatestName, [silent, {path, P}]), + {ok, _, []} = systools:make_script(LatestName, [silent, {path, P}, {script_name, "start"}]), ok = systools:make_tar(LatestName, [{path, P}]), ok = check_tar(fname([lib,'db-2.1',ebin,'db.app']), LatestName), {ok, _, []} = systools:make_tar(LatestName, [{path, P}, silent]), @@ -914,8 +914,8 @@ normal_tar(Config) when is_list(Config) -> ok = file:set_cwd(OldDir), ok. -%% make_tar: Check legacy case of relname.boot -legacy_tar(Config) when is_list(Config) -> +%% make_tar: Check case of relname.boot +relname_tar(Config) when is_list(Config) -> {ok, OldDir} = file:get_cwd(), {LatestDir, LatestName} = create_script(latest,Config), @@ -990,6 +990,48 @@ system_files_tar(Config) -> ok. +%% make_tar: Check that extra_files are included in the tarball +additional_files_tar(Config) -> + {ok, OldDir} = file:get_cwd(), + + {LatestDir, LatestName} = create_script(latest,Config), + + DataDir = filename:absname(?copydir), + LibDir = fname([DataDir, d_normal, lib]), + P = [fname([LibDir, 'db-2.1', ebin]), + fname([LibDir, 'fe-3.1', ebin])], + + ok = file:set_cwd(LatestDir), + + %% Add dummy relup and sys.config + ok = file:write_file("sys.config","[].\n"), + ok = file:write_file("relup","{\"LATEST\",[],[]}.\n"), + + %% unrelated files that must be included explicitly + RandomFile = "somefile", + ok = file:write_file(RandomFile,"hello\n"), + + {ok, _, []} = systools:make_script(LatestName, [silent, {path, P}]), + ok = systools:make_tar(LatestName, [{path, P}]), + ok = check_tar(fname(["releases","LATEST","sys.config"]), LatestName), + ok = check_tar(fname(["releases","LATEST","relup"]), LatestName), + %% random file should not be in this tarball + {error, _} = check_tar(fname(["releases","LATEST",RandomFile]), LatestName), + + RandomFilePathInTar = filename:join("releases", "LATEST", RandomFile), + {ok, _, []} = systools:make_tar(LatestName, + [{path, P}, silent, + {extra_files, [{RandomFile, RandomFilePathInTar}]}]), + ok = check_tar(fname(["releases","LATEST","sys.config"]), LatestName), + ok = check_tar(fname(["releases","LATEST","relup"]), LatestName), + + %% random file should be in this tarball + ok = check_tar(fname(["releases","LATEST",RandomFile]), LatestName), + + ok = file:set_cwd(OldDir), + + ok. + system_files_tar(cleanup,Config) -> Dir = ?privdir, |