Bazel 问题:`filegroup` 到 `declare_directory`

Bazel Question: `filegroup` to `declare_directory`

我有一个关于如何将 filegroup 变成 declare_directory 的一般性问题。

所以我能想到的是, filegroup -> pkg_tar -> untar_to_dir(将 tar 球打入 declare_directory 的规则)。

它会起作用,我已经证明了。但是,我想知道是否还有其他更优雅的方法来避免 tar 和取消 tar 文件组?

我尝试过一个想法,但很复杂,就是将它们逐个文件复制到 declare_directory 文件中。但棘手的一点是,它无法优雅地处理在新目录中保持相同目录结构的问题。 (就像我必须在 cp 之前 mkdir 很多子目录)。

来自另一个线程

You can just use `cp` instead of `tar`, like this rule does https://github.com/aspect-build/bazel-lib/blob/main/docs/copy_to_directory.md
it takes sources which can include filegroup, and outputs a TreeArtifact (ctx.actions_declare_directory)

实际上我写了一个 func files_to_dir 并做了同样的事情。