Я пытаюсь взять zip-файл, созданный не Bazel, изменить некоторые файлы в нем, оставив большинство из них в покое, а затем в конечном итоге создать новый tarball с исходным содержимым (плюс мои модификации)
У меня проблемы с точным указанием моих правил, и было бы здорово, если бы было предложение, как это сделать.
Я импортирую исходный zip-файл с помощью правила WORKSPACE 'new_http_archive'. Это работает очень хорошо. Я помещаю файл сборки в пакет на один уровень ниже корня. Назовем это "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 выше, кроме некоторых из них, которые я изменю. Я не понимаю, как это легко сделать. Кажется, что каждый файл, который я хочу изменить, я должен исключить из приведенного выше глобуса и создать новое правило, определяющее этот файл. Это означает, что мне нужно продолжать изменять глобальное правило исключения 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",
)
Есть ли у кого-нибудь лучший способ сделать это?
Спасибо, Шон