You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wo...@apache.org on 2019/01/23 00:49:33 UTC

[couchdb] branch master updated: Blacklist known bad Erlang releases, fixes #1857 (#1871)

This is an automated email from the ASF dual-hosted git repository.

wohali pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/master by this push:
     new feaf3da  Blacklist known bad Erlang releases, fixes #1857 (#1871)
feaf3da is described below

commit feaf3dafe7ac4a7a1ac341d27eee14fc1ff214a7
Author: Joan Touzet <wo...@users.noreply.github.com>
AuthorDate: Tue Jan 22 19:49:29 2019 -0500

    Blacklist known bad Erlang releases, fixes #1857 (#1871)
---
 .travis.yml         |  3 ++-
 rebar.config.script | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index dd414ce..44ecb99 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,7 +4,7 @@ dist: trusty
 
 otp_release:
    - 21.2.3
-   - 20.3
+   - 20.3.8.5
    - 19.3
 
 addons:
@@ -47,6 +47,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 c82049e..61fde88 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,42 @@
 % 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~n"),
+    io:fwrite("latest information on supported releases.~n"),
+    case os:getenv("TRAVIS") of
+        "true" -> 
+            io:fwrite("Travis run, ignoring bad release. You have been warned!~n"),
+            ok;
+        _ -> halt(1)
+    end
+end.
+
+case VerList of
+    [20 | _] = V20 when V20 < [20, 3, 8, 11] -> NotSupported(VerString);
+    [20 | _] = V20 when V20 >= [20, 3, 8, 11] -> 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`.