重新打包档案时如何只修改一个文件?
How to modify just one file when repackaging an archive?
我正在尝试获取一个非 Bazel 生成的 zip 文件,修改其中的一些文件,保留其中的大部分文件,然后最终生成一个包含原始内容(加上我的修改)的新 tarball
我在以简洁的方式指定我的规则时遇到了问题,如果有关于如何操作的建议,那就太好了。
我正在通过 '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 组中取出,except对于其中的一些,我将进行修改。我看不出如何轻松做到这一点。似乎我想要修改的每个文件都应该从上面的 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",
)
有没有人有更好的方法来做到这一点?
谢谢,肖恩
你能使用像这样的变量吗:
MODIFIABLE_FILES = [
"some/file",
"another/file",
...
]
filegroup(
name = "static-files",
srcs = glob(["**"], exclude = MODIFIABLE_FILES)
)
filegroup(
name = "modifiable-files",
srcs = MODIFIABLE_FILES,
)
然后静态文件和可修改文件的列表将保持同步,如果您不小心指定了一个不存在的可修改文件,您将得到一个构建错误。
我正在尝试获取一个非 Bazel 生成的 zip 文件,修改其中的一些文件,保留其中的大部分文件,然后最终生成一个包含原始内容(加上我的修改)的新 tarball
我在以简洁的方式指定我的规则时遇到了问题,如果有关于如何操作的建议,那就太好了。
我正在通过 '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 组中取出,except对于其中的一些,我将进行修改。我看不出如何轻松做到这一点。似乎我想要修改的每个文件都应该从上面的 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",
)
有没有人有更好的方法来做到这一点?
谢谢,肖恩
你能使用像这样的变量吗:
MODIFIABLE_FILES = [
"some/file",
"another/file",
...
]
filegroup(
name = "static-files",
srcs = glob(["**"], exclude = MODIFIABLE_FILES)
)
filegroup(
name = "modifiable-files",
srcs = MODIFIABLE_FILES,
)
然后静态文件和可修改文件的列表将保持同步,如果您不小心指定了一个不存在的可修改文件,您将得到一个构建错误。