如何在外部bazel依赖项中生成配置文件

时间:2018-01-05 15:30:16

标签: python external bazel

我是bazel的新手并尝试自动化MapIt数据库和代码中的更新。

我为我的bazel项目 bazel_mapit 命名了根文件夹,其中有WORKSPACE文件和此外部依赖项的BUILD文件,如下所示。

WORSPACE:

<div id="total">0</div>

mapit_reop.BUILD:

new_git_repository(
    name            = "mapit_repo",
    remote          = "https://github.com/mysociety/mapit",
    tag             = "v2.0",
    build_file      = "mapit_repo.BUILD",
    init_submodules = 1,

现在我想在MapIt源中生成配置文件 conf / general.yml 。现在的问题是,当我将以下代码添加到mapit_repo.BUILD文件时,我收到了bazel无法找到的错误

  

&#39; @bazel_mapit //:general_yml.bzl&#39;

mapit_repo.BUILD(扩展名):

package(default_visibility = ["//visibility:public"])

filegroup(
    name = "mapit_files",
    srcs = glob(
        [
            "**/*",
        ],
        exclude = [
            "**/LICENSE",
            "**/*.zip",
        ],
    ),
)

如何在外部依赖项中生成配置文件?

更新

这是工作mapit_repo.BUILD文件的内容:

load("@bazel_mapit//:general_yml.bzl", "general_yml")

general_yml(
    name = 'generate_general_yml',
    bzl_mapit_db_user = 'foo',
)

filegroup (
    name = 'mapit_general_yml',
    srcs = ['conf/general.yml'],
    data = ['conf/general.yml-example'],
)

1 个答案:

答案 0 :(得分:2)

我认为需要改变的是load() mapit_repo.BUILD。该构建文件将在外部工作区内进行评估,因此要引用主工作区中的bzl文件,可以使用@//:general_yml.bzl。 (即,空工作空间名称指的是主工作空间)