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.