2012-06-08 3 views
6

Ich habe mich gefragt, was der Grund für das folgende Verhalten von reltool war:Reltool Fehler „möglicherweise durch zwei verschiedene Anwendungen enthalten“

Wenn mein reltool.config verwendet Standard mod_cond und incl_cond Optionen und wenn einer meiner enthalten Anwendungen hat ein Modul die auch ein Teil einer Anwendung auf meinem Rechner installiert sein geschieht aber nicht in meinem Release reltool:get_target_spec/1 kehrt enthalten:

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

welche ist ärgerlich, da <system_app> ist NICHT ein Teil meiner Veröffentlichung (weder direkt noch indirekt). Kann reltool tatsächlich nicht herausfinden, dass <system_app> nicht in meiner Version enthalten sein wird? Ist es deshalb "potentially included"?

Wie auch immer, um meine Freilassung zu erzeugen, muss ich entweder explizit <system_app> über {app, <system_app> [{incl_cond, exclude}]} auszuschließen, die hässlich ist, da dies <system_app> geschieht, ist nur in der root_dir des Erlang/OTP-System der Maschine installiert werden, wo ich den Build tun (Es ist möglicherweise nicht auf anderen Build-Maschinen installiert) und hat nichts mit meiner Veröffentlichung zu tun. Das eigentliche Beispiel: tsung-1.4.3 enthält mochijson2 Modul, so habe ich ein Problem, meine eigene Version zu bauen, die mochiweb App auf der Maschine, die tsung installiert hat (aber nicht auf anderen Maschinen) enthalten sollte. Eine andere Option wäre, die oberste Ebene incl_cond von {incl_cond, derived} zu {incl_cond, exclude} zu ändern und dann manuell alle Anwendungen einzuschließen, die Teil meiner Version sein sollen. Das ist besser (funktioniert auf jedem Build-Rechner), aber immer noch nicht großartig, da es sein muss manuell erledigt (ich möchte auf Reltool verlassen, um die Abhängigkeiten herauszufinden).

Also die Frage ist, warum haben wir eine solche Situation? Warum führt nur eine bloße Anwesenheit einer Anwendung auf der Build-Maschine zu dem obigen reltool Fehler?

PS Als eine Randbemerkung glaube ich, dass die Zeile 907-909 der aktuellen Version von reltool_server.erl einen Fehler enthält: es wird bad argument erzeugen, sollte es jemals aufgerufen werden.

Antwort

1

Ich glaube, Sie sehen die Fehlermeldung, weil reltool im Falle der {include_cond, derived} -Richtlinie für die Einbeziehung der Anwendungen das lib-Verzeichnis von erlang als die kanonische Quelle von erlang-Bibliotheken verwendet. Tsung hat es durch die bloße Tatsache seiner Installation in das Verzeichnis der Systembibliothek verschmutzt und erlaubt es nun anderen Anwendungen nicht, das mochijson2-Modul als Teil eines Releases einzuschließen.

Ich würde das nicht als Bug im Reltool bezeichnen, sondern als Bug in der Art, wie sich tsung selbst installiert.

Verwandte Themen