【发布时间】:2012-06-12 02:36:58
【问题描述】:
我想知道reltool 的以下行为背后的原因是什么:
如果我的reltool.config 使用默认的mod_cond 和incl_cond 选项,并且如果我包含的一个应用程序有一个模块,该模块也恰好是我机器上安装的某些应用程序的一部分,但未包含在我的版本中@987654322 @返回:
{error, "Module <some_module> potentially included by two different applications: <system_app> and <my_app>."}
这很烦人,因为<system_app> 不是我发布的一部分(直接或间接)。 reltool 真的不能确定<system_app> 不会包含在我的版本中吗?这就是"potentially included"的原因吗?
无论如何,为了生成我的版本,我必须通过{app, <system_app> [{incl_cond, exclude}]} 明确排除<system_app>,这很难看,因为这个<system_app> 恰好安装在Erlang/OTP 系统的root_dir 中我进行构建的机器(它可能没有安装在其他构建机器上)并且与我的发布无关。实际示例:tsung-1.4.3 包含mochijson2 模块,因此我在构建自己的版本时遇到问题,该版本应在安装了tsung 的机器上包含mochiweb 应用程序(但不在其他机器上)。
另一种选择是将顶级incl_cond 从{incl_cond, derived} 更改为{incl_cond, exclude},然后手动包含我想成为我的发布的一部分的所有应用程序,这更好(适用于任何构建机器)但仍然不是很好因为它必须手动完成(我想依靠 relltool 来找出依赖关系)。
所以问题是为什么我们会遇到这样的情况?为什么仅仅在构建机器上存在一些应用程序就会导致上述reltool 错误?
PS 作为旁注,我认为当前版本的reltool_server.erl 的第 907-909 行包含一个错误:如果调用它,它将生成 bad argument。
【问题讨论】: