我想在bazel中创建以下结构.
dir1
|_ file1
|_ file2
|_ dir2
|_file3
创建一个特定的结构似乎并不重要.
我希望有一个简单且可重复使用的规则.
就像是:
makedir(
name = "dir1",
path = "dir1",
)
makedir(
name = "dir2",
path = "dir1/dir2",
deps = [":dir1"],
)
我尝试过的:
>我可以使用python脚本创建一个宏,但想要更清洁的东西.
>我尝试使用mkdir -p path / to / directoy创建一个genrule,但这不起作用
编辑:
用例是我想使用bazel创建一个squashfs.
重要的是要注意Bazel provides some packaging的功能.
到create a squashfs,该命令需要填充有工件的目录结构.
解决方法:
在我的例子中,我想创建一个目录结构并运行mksquashfs来生成一个squashfs文件.
为了实现这一点,我最终修改了bazel’s docs on packaging的基本示例.
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
genrule(
name = "file1",
outs = ["file1.txt"],
cmd = "echo exampleText > $@",
)
pkg_tar(
name = "dir1",
strip_prefix = ".",
package_dir = "/usr/bin",
srcs = [":file1"],
mode = "0755",
)
pkg_tar(
name = "dir2",
strip_prefix = ".",
package_dir = "/usr/share",
srcs = ["//main:file2.txt", "//main:file3.txt"],
mode = "0644",
)
pkg_tar(
name = "pkg",
extension = "tar.gz",
deps = [
":dir1",
":dir2",
],
)
如果有一种更简单的方法来创建tar或目录结构而不需要中间的tars,我会做出最佳答案.