2012-06-08 8 views
6

me preguntaba cuál era la razón detrás de la siguiente comportamiento de reltool:error Reltool "potencialmente incluido por dos aplicaciones diferentes"

Si mi reltool.config utiliza por defecto mod_cond y incl_cond opciones y si uno de mis aplicaciones en las instalaciones Tiene un módulo que también pasa a ser una parte de una aplicación instalada en mi máquina, pero no incluido en mi liberación reltool:get_target_spec/1 rendimientos:

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

lo cual es molesto ya <system_app> NO es parte de mi versión (ni directa ni indirectamente). ¿No puede reltool darse cuenta de que <system_app> no se incluirá en mi versión? ¿Es por eso que es "potentially included"?

De todos modos, con el fin de generar mi liberación Tengo que sea explícitamente excluye <system_app> través {app, <system_app> [{incl_cond, exclude}]} que es fea ya que este <system_app> es sólo pasa a ser instalado en el root_dir del sistema Erlang/OTP de la máquina donde hago la acumulación (Puede que no esté instalado en otras máquinas de construcción) y no tiene nada que ver con mi versión. El ejemplo real: tsung-1.4.3 incluye el módulo mochijson2, así que tengo un problema al crear mi propia versión que debe incluir la aplicación mochiweb en la máquina que tiene tsung instalado (pero no en otras máquinas). Otra opción sería cambiar el nivel superior incl_cond de {incl_cond, derived} a {incl_cond, exclude} y luego incluir manualmente todas las aplicaciones que quiera ser parte de mi versión, lo que es mejor (funcionará en cualquier máquina de compilación) pero aún no es genial ya que tiene que ser hecho manualmente (quiero confiar en relltool para descubrir las dependencias).

Entonces, la pregunta es ¿por qué tenemos tal situación? ¿Por qué solo la mera presencia de alguna aplicación en la máquina de compilación lleva al error reltool anterior?

PD Como nota al margen, creo que la línea 907-909 de la versión actual de reltool_server.erl contiene un error: generará bad argument en caso de que se llame.

Respuesta

1

Creo que ve el mensaje de error porque en el caso de la política {include_cond, derived} para la inclusión de aplicaciones, reltool usa el directorio lib de erlang como fuente canónica de las bibliotecas erlang. Tsung por el solo hecho de su instalación en el directorio de la biblioteca del sistema lo contaminó y ahora no permite que otras aplicaciones incluyan el módulo mochijson2 como parte de un lanzamiento.

No lo llamaría un error en la reltool, sino que es un error en la forma en que se instala.

Cuestiones relacionadas