6

我想知道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模块,因此我在构建自己的版本时遇到问题,该版本应mochiweb在已tsung安装的机器上包含应用程序(但不在其他机器上)。另一种选择是将顶级incl_cond从更改{incl_cond, derived}{incl_cond, exclude}然后手动包含所有我想成为我发布的一部分的应用程序,它更好(可以在任何构建机器上工作)但仍然不是很好,因为它必须手动完成(我想依靠 relltool 来找出依赖关系) .

那么问题来了,为什么我们会出现这样的情况?为什么仅仅在构建机器上存在一些应用程序就会导致上述reltool错误?

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

4

1 回答 1

1

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

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

于 2014-04-30T21:55:48.943 回答