2017-04-26 4 views
0

Ich versuche eine Regel zu erstellen (vielleicht gibt es bereits eine?), Um eine Datei während eines Bazel-Build-Schritts zu tarnen.Untar als Build-Schritt in Bazel.

Wenn ich richtig verstanden habe, müssen alle Ausgabedateien während der "Analysephase" bekannt sein. Um dies zu umgehen habe ich eine Datei namens manifest.txt, die alle Dateien in der TAR-Datei auflistet. Allerdings verstehe ich nicht ganz, wie ich diese Datei als Listenausgänge für meine Himmelslarvenregel lesen kann? Gibt es eine einfache Möglichkeit, eine Datei zu lesen und jede Zeile eine generierte Ausgabe zu haben?

Danke.

+0

Hallo, wird diese Manifestdatei vor oder während des Builds generiert? –

Antwort

0

Dies ist nur möglich, wenn die Manifestdatei eine Quelldatei ist, d. H. Sie wird NICHT von einer Regel im Build generiert.

Regeln müssen alle ihre Ausgaben deklarieren, ohne auf den Inhalt der generierten Dateien angewiesen zu sein. Daher wird zum Beispiel keine Genrule unterstützt, deren outs basierend auf einer Manifestdatei berechnet wird, die von einer anderen Regel generiert wird.

Um mit einer TAR-Dateieingabe arbeiten zu können, muss die Regel den tar mit einer Aktion entpacken und schließlich eine vorhersagbare Menge an Ausgaben erzeugen (d. H. Unabhängig davon, wie viele Dateien sich im tar befinden). In der Regel erfolgt dies durch das erneute Packen der Ausgaben, dh die Regel würde einen Teer verbrauchen und einen anderen erzeugen.