diff options
author | Tristan Sloughter <t@crashfast.com> | 2015-07-25 11:43:54 -0500 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2015-07-25 16:07:45 -0500 |
commit | 90fbd6dbb9a1a8d1185fc521ffd2d391e8befcdf (patch) | |
tree | 0e7ee4b49d666f583d93d87708bb10279b532def /src | |
parent | 6e9df6cc577f84cac330065c26ba2ada7bc56a32 (diff) |
add support for old format otp versions
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_app_discover.erl | 4 | ||||
-rw-r--r-- | src/rebar_prv_install_deps.erl | 3 | ||||
-rw-r--r-- | src/rebar_utils.erl | 31 |
3 files changed, 23 insertions, 15 deletions
diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl index f55a4d5..95b3273 100644 --- a/src/rebar_app_discover.erl +++ b/src/rebar_app_discover.erl @@ -51,6 +51,10 @@ merge_deps(AppInfo, State) -> rebar_state:apply_profiles( rebar_state:new(reset_hooks(rebar_state:opts(State, Default)), C, rebar_app_info:dir(AppInfo)), CurrentProfiles), Name), + + rebar_utils:check_min_otp_version(rebar_state:get(AppState, minimum_otp_vsn, undefined)), + rebar_utils:check_blacklisted_otp_versions(rebar_state:get(AppState, blacklisted_otp_vsns, [])), + AppState1 = rebar_state:set(AppState, artifacts, []), AppInfo1 = rebar_app_info:state(AppInfo, AppState1), diff --git a/src/rebar_prv_install_deps.erl b/src/rebar_prv_install_deps.erl index 8bb394a..69956f0 100644 --- a/src/rebar_prv_install_deps.erl +++ b/src/rebar_prv_install_deps.erl @@ -386,6 +386,9 @@ handle_dep(State, Profile, DepsDir, AppInfo, Locks, Level) -> S4 = rebar_state:set(S3, {plugins, Profile}, Plugins), AppInfo1 = rebar_app_info:state(AppInfo, S4), + rebar_utils:check_min_otp_version(rebar_state:get(S4, minimum_otp_vsn, undefined)), + rebar_utils:check_blacklisted_otp_versions(rebar_state:get(S4, blacklisted_otp_vsns, [])), + %% Dep may have plugins to install. Find and install here. S5 = rebar_plugins:install(S4), AppInfo2 = rebar_app_info:state(AppInfo1, S5), diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index c71808d..5763718 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -306,16 +306,16 @@ check_min_otp_version(undefined) -> check_min_otp_version(MinOtpVersion) -> %% Fully-qualify with ?MODULE so the function can be meck'd in rebar_utils_SUITE OtpRelease = ?MODULE:otp_release(), - {MinMajor, MinMinor} = version_tuple(MinOtpVersion), - {OtpMajor, OtpMinor} = version_tuple(OtpRelease), + ParsedMin = version_tuple(MinOtpVersion), + ParsedVsn = version_tuple(OtpRelease), - case {OtpMajor, OtpMinor} >= {MinMajor, MinMinor} of + case ParsedVsn >= ParsedMin of true -> ?DEBUG("~s satisfies the requirement for minimum OTP version ~s", - [OtpRelease, MinOtpVersion]); + [OtpRelease, MinOtpVersion]); false -> - ?ABORT("OTP release ~s or later is required. Verion in use: ~s", - [MinOtpVersion, OtpRelease]) + ?ABORT("OTP release ~s or later is required. Version in use: ~s", + [MinOtpVersion, OtpRelease]) end. check_blacklisted_otp_versions(undefined) -> @@ -331,10 +331,10 @@ abort_if_blacklisted(BlacklistedRegex, OtpRelease) -> case re:run(OtpRelease, BlacklistedRegex, [{capture, none}]) of match -> ?ABORT("OTP release ~s matches blacklisted version ~s", - [OtpRelease, BlacklistedRegex]); - nomatch -> - ?DEBUG("~s does not match blacklisted OTP version ~s", - [OtpRelease, BlacklistedRegex]) + [OtpRelease, BlacklistedRegex]); + nomatch -> + ?DEBUG("~s does not match blacklisted OTP version ~s", + [OtpRelease, BlacklistedRegex]) end. @@ -342,14 +342,15 @@ abort_if_blacklisted(BlacklistedRegex, OtpRelease) -> %% Internal functions %% ==================================================================== version_tuple(OtpRelease) -> - case re:run(OtpRelease, "R?(\\d+)B?-?(\\d+)?", [{capture, all, list}]) of + case re:run(OtpRelease, "R?(\\d+)B?.?-?(\\d+)?.?-?(\\d+)?", [{capture, all, list}]) of + {match, [_Full, Maj, Min, Patch]} -> + {list_to_integer(Maj), list_to_integer(Min), list_to_integer(Patch)}; {match, [_Full, Maj, Min]} -> - {list_to_integer(Maj), list_to_integer(Min)}; + {list_to_integer(Maj), list_to_integer(Min), 0}; {match, [_Full, Maj]} -> - {list_to_integer(Maj), 0}; + {list_to_integer(Maj), 0, 0}; nomatch -> - ?WARN("", []), - {0,0} + ?ABORT("Minimum OTP release unable to be parsed: ~s", [OtpRelease]) end. otp_release() -> |