aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobi458 <[email protected]>2016-10-05 10:56:34 +0200
committerobi458 <[email protected]>2016-10-05 10:56:34 +0200
commitf80731ef6c9250f34dd1084c521495ea02dcf4f3 (patch)
treef6f84625aef8d1550c0b5ef24a0e3517c555713b
parentcf68577c1499c64c7b154160fffe14cd57fbb6ec (diff)
downloadrelx-f80731ef6c9250f34dd1084c521495ea02dcf4f3.tar.gz
relx-f80731ef6c9250f34dd1084c521495ea02dcf4f3.tar.bz2
relx-f80731ef6c9250f34dd1084c521495ea02dcf4f3.zip
win32 cross release on unix
-rw-r--r--src/rlx_prv_assembler.erl4
-rw-r--r--src/rlx_util.erl27
2 files changed, 29 insertions, 2 deletions
diff --git a/src/rlx_prv_assembler.erl b/src/rlx_prv_assembler.erl
index 53b7dfa..e942b64 100644
--- a/src/rlx_prv_assembler.erl
+++ b/src/rlx_prv_assembler.erl
@@ -335,7 +335,7 @@ write_bin_file(State, Release, OutputDir, RelDir) ->
VsnRel = filename:join(BinDir, rlx_release:canonical_name(Release)),
BareRel = filename:join(BinDir, RelName),
ErlOpts = rlx_state:get(State, erl_opts, ""),
- {OsFamily, _OsName} = os:type(),
+ {OsFamily, _OsName} = rlx_util:os_type(State),
StartFile = case rlx_state:get(State, extended_start_script, false) of
false ->
@@ -483,7 +483,7 @@ include_erts(State, Release, OutputDir, RelDir) ->
ErtsVersion = rlx_release:erts(Release),
ErtsDir = filename:join([Prefix, "erts-" ++ ErtsVersion]),
LocalErts = filename:join([OutputDir, "erts-" ++ ErtsVersion]),
- {OsFamily, _OsName} = os:type(),
+ {OsFamily, _OsName} = rlx_util:os_type(State),
case ec_file:is_dir(ErtsDir) of
false ->
?RLX_ERROR({specified_erts_does_not_exist, ErtsVersion});
diff --git a/src/rlx_util.erl b/src/rlx_util.erl
index efad792..b3fc2b7 100644
--- a/src/rlx_util.erl
+++ b/src/rlx_util.erl
@@ -41,6 +41,8 @@
intensity/0,
symlink_or_copy/2]).
+-export([os_type/1]).
+
-define(DFLT_INTENSITY, high).
-define(ONE_LEVEL_INDENT, " ").
%%============================================================================
@@ -326,6 +328,31 @@ intensity() ->
Mode
end.
+os_type(State) ->
+ case include_erts_is_win32(State) of
+ true -> {win32,nt};
+ false -> os:type()
+ end.
+
+include_erts_is_win32(State) ->
+ case rlx_state:get(State, include_erts, true) of
+ true -> false;
+ false -> false;
+ Path -> is_win32_erts(Path,State)
+ end.
+
+is_win32_erts(Path,State) ->
+ case filelib:wildcard(filename:join([Path,"bin","erl.exe"])) of
+ [] -> false;
+ _ ->
+ ec_cmd_log:info(rlx_state:log(State),
+ "Including Erts is win32 ~n", []),
+ true
+ end.
+
+
+
+
%%%===================================================================
%%% Test Functions
%%%===================================================================