я задавался вопросом, что стало причиной следующего поведения reltool:Reltool ошибка «потенциально включены два разных приложения»
Если мой reltool.config
использует по умолчанию mod_cond
и incl_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 В качестве боковой заметки я считаю, что в строке 907-909 текущей версии reltool_server.erl содержится ошибка: она будет генерировать bad argument
, если она когда-либо будет вызвана.