summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoan Touzet <joant@atypical.net>2019-01-22 15:40:49 -0500
committerJoan Touzet <joant@atypical.net>2019-01-22 15:57:06 -0500
commitd8c8d3e0b38241a022af3483f66606b8b77c82bd (patch)
treef556888f4bb0073649123ee01563cd31ff883f1a
parent00ce1c1610507caecf0a02e2301f4a6b91379c37 (diff)
downloadcouchdb-blacklist-versions.tar.gz
Blacklist known bad Erlang releases, fixes #1857blacklist-versions
-rw-r--r--.travis.yml9
-rw-r--r--rebar.config.script35
2 files changed, 43 insertions, 1 deletions
diff --git a/.travis.yml b/.travis.yml
index 45ff9edd2..1c29820f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,8 +3,14 @@ os: linux
dist: trusty
otp_release:
+ - 21.2.3
+ - 21.2
- 21.1
- - 20.3
+ - 21.0
+ - 20.3.8.18
+ - 20.3.8
+ - 20.3.7
+ - 20.0
- 19.3
addons:
@@ -47,6 +53,7 @@ env:
# Then comment this section out
before_script:
+ - kerl list installations
- rm -rf /tmp/couchjslogs
- mkdir -p /tmp/couchjslogs
- ./configure -c --disable-docs --disable-fauxton
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`.