summaryrefslogtreecommitdiff
path: root/src/rebar_utils.erl
diff options
context:
space:
mode:
authorTuncer Ayaz <tuncer.ayaz@gmail.com>2014-07-17 18:53:58 +0200
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2014-07-17 18:53:58 +0200
commit873d236ce9b4b88d46c4bb1c6868df70363e8a57 (patch)
tree753db9fbbbca8d098e39d32b913b3c0b8b7439f3 /src/rebar_utils.erl
parent6f60256138a6608df4cd9bc4ea62a35775c8b1b9 (diff)
Adapt arch string to versioning scheme changes (>= 17.x)
Diffstat (limited to 'src/rebar_utils.erl')
-rw-r--r--src/rebar_utils.erl23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index 0ff1267..be16610 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -66,6 +66,9 @@
processing_base_dir/2,
patch_env/2]).
+%% for internal use only
+-export([otp_release/0]).
+
-include("rebar.hrl").
%% ====================================================================
@@ -86,7 +89,7 @@ is_arch(ArchRegex) ->
get_arch() ->
Words = wordsize(),
- erlang:system_info(otp_release) ++ "-"
+ otp_release() ++ "-"
++ erlang:system_info(system_architecture) ++ "-" ++ Words.
wordsize() ->
@@ -372,6 +375,24 @@ patch_env(Config, [E | Rest]) ->
%% Internal functions
%% ====================================================================
+otp_release() ->
+ otp_release1(erlang:system_info(otp_release)).
+
+%% If OTP <= R16, otp_release is already what we want.
+otp_release1([$R,N|_]=Rel) when is_integer(N) ->
+ Rel;
+%% If OTP >= 17.x, erlang:system_info(otp_release) returns just the
+%% major version number, we have to read the full version from
+%% a file. See http://www.erlang.org/doc/system_principles/versions.html
+otp_release1(Rel) ->
+ File = filename:join([code:root_dir(), "releases", Rel, "OTP_VERSION"]),
+ {ok, Vsn} = file:read_file(File),
+ %% NOTE: It's fine to rely on the binary module here because we
+ %% can be sure that it's available when the otp_release string
+ %% does not begin with $R.
+ %% Return as list without the "\n".
+ binary:bin_to_list(Vsn, {0, byte_size(Vsn) - 1}).
+
get_deprecated_3(Get, Config, OldOpt, NewOpt, Default, When) ->
case Get(Config, NewOpt, Default) of
Default ->