summaryrefslogtreecommitdiff
path: root/rebar.config.script
diff options
context:
space:
mode:
Diffstat (limited to 'rebar.config.script')
-rw-r--r--rebar.config.script35
1 files changed, 35 insertions, 0 deletions
diff --git a/rebar.config.script b/rebar.config.script
index 019e6f182..731503fe9 100644
--- a/rebar.config.script
+++ b/rebar.config.script
@@ -1,3 +1,4 @@
+%% -*- erlang -*-
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
@@ -10,6 +11,40 @@
% License for the specific language governing permissions and limitations under
% the License.
+%
+% Blacklist some bad releases.
+%
+{ok, Version} = file:read_file(filename:join(
+ [code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"]
+)).
+
+% Version may be binary if file has /n at end :(
+% there is no string:trim/1 in Erlang 19 :(
+VerString = case Version of
+ V when is_binary(V) -> string:strip(binary_to_list(V), right, $\n);
+ _ -> string:strip(Version, right, $\n)
+end.
+VerList = lists:map(fun(X) -> {Int, _} = string:to_integer(X), Int end,
+ string:tokens(VerString, ".")).
+
+NotSupported = fun(Ver) ->
+ io:fwrite("CouchDB does not support this version of Erlang (~p)~n.", [Ver]),
+ io:fwrite("Check https://docs.couchdb.org/en/latest/whatsnew/index.html for the"),
+ io:fwrite("latest information on supported releases."),
+ halt()
+end.
+
+case VerList of
+ [20] -> NotSupported(VerString);
+ [20, _] -> NotSupported(VerString);
+ [20, _, _] -> NotSupported(VerString);
+ [20, 3, 8, N] when N >= 11 -> ok;
+ [20, 3, 9 | _] -> ok;
+ [21, 2] -> NotSupported(VerString);
+ [21, 2, N | _] when N < 3 -> NotSupported(VerString);
+ _ -> ok
+end.
+
% Set the path to the configuration environment generated
% by `./configure`.