我試圖帶一個非Bazel製作的zipfile,修改其中的大部分文件,然後最終生成一個新的包含〜原創內容的tarball(加上我的修改)如何在重新打包檔案時僅修改一個文件?
I'我很難以一種乾淨的方式指定我的規則,如果有關於如何做到這一點的建議,它會很棒。
我正在通過'new_http_archive'WORKSPACE規則導入原始zip文件。這工作得很好。我把構建文件放在根目錄下的一個包中。我們稱之爲'foo_repackage'。
在foo_repackage/BUILD.root_archive:
package(default_visibility = ["//visibility:public"])
filegroup(
name = "all_files",
srcs = glob(
["**"],
exclude = ["*", "share/doc/api/**"]
),
)
更大的問題是在foo_repackage/BUILD文件,我想帶的所有文件上面的all_files組,除了爲我會修改其中的一些。我看不出如何輕鬆做到這一點。看起來好像我想要修改的每個文件都應該從上面的glob中排除並制定一個指定該文件的新規則。這意味着我必須不斷修改全局all_files排除規則。
如果我可以創建一個新的文件組,其中包含排除某些文件的所有上述文件,那將是理想的。
我應該提到的是,最後一步當然是使用pkg_tar重新包裝的結果 - 這是foo_repackage/BUILD
pkg_tar(
name = "OutputTarball",
files = ["@root_archive//:all_files"],
deps = [":layers_of_modified_files"],
strip_prefix = "/../root_archive",
)
有沒有人有更好的方式來做到這一點?
謝謝,肖恩
這對我來說似乎很合理。你最關心的是什麼?排除名單將變得很長? 您可能會遇到一個問題,您嘗試使用文件系統上存在的同名文件(來自zip)生成文件。巴澤爾不會那樣。 – zlalanne