diff options
author | Joan Touzet <joant@atypical.net> | 2019-01-22 15:40:49 -0500 |
---|---|---|
committer | Joan Touzet <joant@atypical.net> | 2019-01-22 15:57:06 -0500 |
commit | d8c8d3e0b38241a022af3483f66606b8b77c82bd (patch) | |
tree | f556888f4bb0073649123ee01563cd31ff883f1a | |
parent | 00ce1c1610507caecf0a02e2301f4a6b91379c37 (diff) | |
download | couchdb-blacklist-versions.tar.gz |
Blacklist known bad Erlang releases, fixes #1857blacklist-versions
-rw-r--r-- | .travis.yml | 9 | ||||
-rw-r--r-- | rebar.config.script | 35 |
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`. |