Reltool错误"可能包含在两个不同的应用程序中"

Ed'*_*'ka 6 erlang reltool

我想知道reltool的以下行为背后的原因是什么:

如果我reltool.config使用默认mod_condincl_cond选项,并且我的一个包含的应用程序有一个模块,它也恰好是我的机器上安装的某个应用程序的一部分但未包含在我的发行版reltool中:get_target_spec/1返回:

{error, "Module <some_module> potentially included by two different applications: <system_app> and <my_app>."}

这很烦人,因为<system_app>它不是我发布的一部分(既不直接也不间接).难道reltool实际上<system_app>不知道我的发布中不会包含这些内容吗?这是为什么会这样"potentially included"

无论如何,为了生成我的版本,我必须明确地排除<system_app>通过{app, <system_app> [{incl_cond, exclude}]}哪个是丑陋的,因为这<system_app>恰好安装在root_dir我进行构建的机器的Erlang/OTP系统中(它可能不安装在其他建立机器)并与我的发布无关.实际示例:tsung-1.4.3包含mochijson2模块,因此我在构建自己的版本时遇到问题,该版本应该包含mochiwebtsung安装的计算机上的应用程序(但不包括在其他计算机上).另一种选择是改变顶级incl_cond{incl_cond, derived}{incl_cond, exclude},然后手动包括我想成为一个部分我的版本,这是更好(将任何构建机器上工作),但仍然不是很大,因为它有(我必须手动完成所有的应用想依靠relltool找出依赖关系).

所以问题是为什么我们有这样的情况呢?为什么仅仅在构建机器上存在某些应用程序会导致上述reltool错误?

PS作为附注,我相信当前版本的reltool_server.erl的第907-909行包含一个错误:bad argument如果它被调用它将生成它.

Ale*_*lev 1

我相信您会看到该错误消息,因为在应用程序包含的 {include_cond,派生} 策略的情况下,reltool 使用 erlang 的 lib 目录作为 erlang 库的规范源。Tsung 仅将其安装到系统库目录中这一事实就污染了它,现在不允许任何其他应用程序将 mochijson2 模块作为发布的一部分包含在内。

我不会称其为 reltool 中的错误,而是 tsung 安装自身方式中的错误。