From 46afa565c7b319d1a8b23a7583da9d1d5e1e02e1 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Mon, 1 Apr 2019 09:20:02 -0600 Subject: include vm.args.src file in tarball if it exists (#698) * include vm.args.src in tarball if it exists * only check sys.config.src in tar on otp-21+ --- src/rlx_prv_archive.erl | 3 ++- test/rlx_archive_SUITE.erl | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/rlx_prv_archive.erl b/src/rlx_prv_archive.erl index e1735d1..8fd03c1 100644 --- a/src/rlx_prv_archive.erl +++ b/src/rlx_prv_archive.erl @@ -141,9 +141,10 @@ update_tar(State, TempDir, OutputDir, Name, Vsn, ErtsVersion) -> config_files(Vsn, OutputDir) -> VMArgs = {filename:join(["releases", Vsn, "vm.args"]), filename:join([OutputDir, "releases", Vsn, "vm.args"])}, + VMArgsSrc = {filename:join(["releases", Vsn, "vm.args.src"]), filename:join([OutputDir, "releases", Vsn, "vm.args.src"])}, VMArgsOrig = {filename:join(["releases", Vsn, "vm.args.orig"]), filename:join([OutputDir, "releases", Vsn, "vm.args.orig"])}, SysConfigOrig = {filename:join(["releases", Vsn, "sys.config.orig"]), filename:join([OutputDir, "releases", Vsn, "sys.config.orig"])}, - [{NameInArchive, Filename} || {NameInArchive, Filename} <- [VMArgs, VMArgsOrig, SysConfigOrig], filelib:is_file(Filename)]. + [{NameInArchive, Filename} || {NameInArchive, Filename} <- [VMArgsSrc, VMArgs, VMArgsOrig, SysConfigOrig], filelib:is_file(Filename)]. overlay_files(_, undefined, _) -> diff --git a/test/rlx_archive_SUITE.erl b/test/rlx_archive_SUITE.erl index 5122c11..68a5b07 100644 --- a/test/rlx_archive_SUITE.erl +++ b/test/rlx_archive_SUITE.erl @@ -55,11 +55,19 @@ basic_tar(Config) -> rlx_test_utils:create_app(LibDir1, "non_goal_1", "0.0.1", [stdlib,kernel], [lib_dep_1]), rlx_test_utils:create_app(LibDir1, "non_goal_2", "0.0.1", [stdlib,kernel], []), + SysConfigSrc = filename:join([LibDir1, "config", "sys.config.src"]), + rlx_test_utils:write_config(SysConfigSrc, [{this_is_a_test, "yup it is"}]), + + VmArgsSrc = filename:join([LibDir1, "config", "vm.args.src"]), + ec_file:write(VmArgsSrc, ""), + ConfigFile = filename:join([LibDir1, "relx.config"]), rlx_test_utils:write_config(ConfigFile, [{release, {foo, "0.0.1"}, [goal_app_1, - goal_app_2]}]), + goal_app_2]}, + {sys_config_src, SysConfigSrc}, + {vm_args_src, VmArgsSrc}]), OutputDir = filename:join([proplists:get_value(priv_dir, Config), rlx_test_utils:create_random_name("relx-output")]), {ok, State} = relx:do([{relname, foo}, @@ -84,6 +92,16 @@ basic_tar(Config) -> {ok, Files} = erl_tar:table(TarFile, [compressed]), ?assert(lists:any(fun(X) -> re:run(X, "lib/stdlib-.*/ebin/.*") =/= nomatch end, Files)), ?assert(lists:any(fun(X) -> re:run(X, "lib/kernel-.*/ebin/.*") =/= nomatch end, Files)), + + %% only works in otp-21 and above + case erlang:system_info(otp_release) of + R when R =:= "21" orelse R =:= "22" -> + ?assert(lists:member("releases/0.0.1/vm.args.src", Files)), + ?assert(lists:member("releases/0.0.1/sys.config.src", Files)); + _ -> + ok + end, + ?assert(filelib:is_regular(TarFile)). exclude_erts(Config) -> -- cgit v1.2.3