LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File 0488-Make-reltool-correctly-handle-Windows-ERL_LIBS.patch of Package erlang (Project home:Ledest:erlang:20)

From 1acc5db0b50e66fdc72a1fbcf3ea7c3f2bc239c8 Mon Sep 17 00:00:00 2001
From: Stavros Aronis <aronisstav@gmail.com>
Date: Fri, 26 Oct 2018 23:01:49 +0200
Subject: [PATCH 1/2] Make reltool correctly handle Windows 'ERL_LIBS'

Without this patch reltool would try to split strings like "C:\foo"
into ["C","\foo"].
---
 lib/reltool/src/reltool_utils.erl         | 13 ++++++++++++-
 lib/reltool/test/reltool_server_SUITE.erl | 16 ++++++++++++++--
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/lib/reltool/src/reltool_utils.erl b/lib/reltool/src/reltool_utils.erl
index 060a0912f9..2afa386cb3 100644
--- a/lib/reltool/src/reltool_utils.erl
+++ b/lib/reltool/src/reltool_utils.erl
@@ -47,6 +47,9 @@
 
 	 call/2, cast/2, reply/3]).
 
+%% For testing
+-export([erl_libs/2]).
+
 -include_lib("kernel/include/file.hrl").
 -include_lib("wx/include/wx.hrl").
 -include("reltool.hrl").
@@ -55,7 +58,15 @@ root_dir() ->
     code:root_dir().
 
 erl_libs() ->
-    string:lexemes(os:getenv("ERL_LIBS", ""), ":;").
+    erl_libs(os:getenv("ERL_LIBS", ""), os:type()).
+
+erl_libs(ErlLibs, OsType) when is_list(ErlLibs) ->
+  Sep =
+    case OsType of
+      {win32, _} -> ";";
+      _          -> ":"
+    end,
+  string:lexemes(ErlLibs, Sep).
 
 lib_dirs(Dir) ->
     case erl_prim_loader:list_dir(Dir) of
diff --git a/lib/reltool/test/reltool_server_SUITE.erl b/lib/reltool/test/reltool_server_SUITE.erl
index 4e1937d479..e7a9c82777 100644
--- a/lib/reltool/test/reltool_server_SUITE.erl
+++ b/lib/reltool/test/reltool_server_SUITE.erl
@@ -142,7 +142,8 @@ all() ->
      use_selected_vsn,
      use_selected_vsn_relative_path,
      non_standard_vsn_id,
-     undefined_regexp].
+     undefined_regexp,
+     windows_erl_libs].
 
 groups() -> 
     [].
@@ -2541,11 +2542,22 @@ undefined_regexp(_Config) ->
                                                 {add, ["^priv"]}}]}]}])),
     ok.
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Checks that reltool_utils can correctly read Windows ERL_LIBS
+
+windows_erl_libs(_Config) ->
+    WinErlLibs =
+        "C:\Program Files\Erlang Libs;C:\Program Files\More Erlang Libs",
+    Ret = reltool_utils:erl_libs(WinErlLibs, {win32, nt}),
+    ?m(["C:\Program Files\Erlang Libs","C:\Program Files\More Erlang Libs"],
+       Ret),
+    ok.
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% Library functions
 
 erl_libs() ->
-    string:tokens(os:getenv("ERL_LIBS", ""), ":;").
+    reltool_utils:erl_libs().
 
 datadir(Config) ->
     %% Removes the trailing slash...
-- 
2.16.4