File 1089-ct-Search-PATH-for-old-erlang-versions-for-compat-te.patch of Package erlang

From 4fa4a5369ef5b042010295a5d9b48f8d993e2438 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Thu, 14 Jan 2021 09:49:03 +0100
Subject: [PATCH 2/2] ct: Search PATH for old erlang versions for compat
 testing

---
 lib/common_test/src/test_server_node.erl | 33 +++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/lib/common_test/src/test_server_node.erl b/lib/common_test/src/test_server_node.erl
index 8deea353d7..edfb1fbd92 100644
--- a/lib/common_test/src/test_server_node.erl
+++ b/lib/common_test/src/test_server_node.erl
@@ -645,7 +645,38 @@ find_release(latest) ->
 find_release(previous) ->
     "kaka";
 find_release(Rel) ->
-    find_release(os:type(), Rel).
+    case find_release(os:type(), Rel) of
+        none ->
+            find_release_path(Rel);
+        Else ->
+            Else
+    end.
+
+find_release_path(Rel) ->
+    Paths = string:lexemes(os:getenv("PATH"), ":"),
+    find_release_path(Paths, Rel).
+find_release_path([Path|T], Rel) ->
+    case os:find_executable("erl", Path) of
+        false ->
+            find_release_path(T, Rel);
+        ErlExec ->
+            Pattern = filename:join([Path,"..","releases","*","OTP_VERSION"]),
+            case filelib:wildcard(Pattern) of
+                [VersionFile] ->
+                    {ok, VsnBin} = file:read_file(VersionFile),
+                    [MajorVsn|_] = string:lexemes(VsnBin, "."),
+                    case unicode:characters_to_list(MajorVsn) of
+                        Rel ->
+                            ErlExec;
+                        _Else ->
+                            find_release_path(T, Rel)
+                    end;
+                _Else ->
+                    find_release_path(T, Rel)
+            end
+    end;
+find_release_path([], _) ->
+    none.
 
 find_release({unix,sunos}, Rel) ->
     case os:cmd("uname -p") of
-- 
2.26.2

openSUSE Build Service is sponsored by