Python 如何在外部bazel依赖项中生成配置文件
我是bazel的新手,正在尝试自动更新数据库和代码 我将我的bazel项目的根文件夹命名为bazel_mapit,其中包含此外部依赖项的工作区文件和生成文件,如下所示 工作空间:Python 如何在外部bazel依赖项中生成配置文件,python,external,bazel,Python,External,Bazel,我是bazel的新手,正在尝试自动更新数据库和代码 我将我的bazel项目的根文件夹命名为bazel_mapit,其中包含此外部依赖项的工作区文件和生成文件,如下所示 工作空间: new_git_repository( name = "mapit_repo", remote = "https://github.com/mysociety/mapit", tag = "v2.0", build_file
new_git_repository(
name = "mapit_repo",
remote = "https://github.com/mysociety/mapit",
tag = "v2.0",
build_file = "mapit_repo.BUILD",
init_submodules = 1,
)
mapit_reop.BUILD:
package(default_visibility = ["//visibility:public"])
filegroup(
name = "mapit_files",
srcs = glob(
[
"**/*",
],
exclude = [
"**/LICENSE",
"**/*.zip",
],
),
)
现在,我想在MapIt源代码中生成配置文件conf/general.yml。现在的问题是,当我将以下代码添加到mapit_repo.BUILD文件时,我遇到了bazel找不到的错误
“@bazel_mapit/:general_yml.bzl”
mapit_repo.BUILD(扩展名):
如何在外部依赖项中生成配置文件
更新:
这是工作mapit_repo.BUILD文件的内容:
package(default_visibility = ["//visibility:public"])
filegroup(
name = "mapit_files",
srcs = glob(
[
"**/*",
],
exclude = [
"**/LICENSE",
"**/*.zip",
],
),
)
load("@//conf: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.tmpl'],
)
我认为需要更改的只是
load()
mapit\u repo.BUILD。该构建文件将从外部工作区中进行评估,因此要在主工作区中引用bzl文件,可以使用@/:general_yml.bzl
。(也就是说,空工作区名称指的是主工作区)我按照您的建议更改了mapit_repo.BUILD,并修复了问题。剩下的唯一问题是-外部存储库的源现在位于bazel-bazel_-mapit/external/mapit_-repo下,而生成的配置文件general.yml位于bazel-bazel_-mapit/bazel-out/k8 fastbuild/bin/external/mapit中_repo/conf。为什么不是同一个文件夹?出于几个原因,Bazel没有将生成的文件放入源文件夹。这对于源代码管理来说会很烦人,因为现在您必须排除生成的文件。它可能会干扰globbing,因为globs可能会开始拾取生成的文件。这些文件也可能开始作为源显示在IDE中。你遇到了什么问题?
package(default_visibility = ["//visibility:public"])
filegroup(
name = "mapit_files",
srcs = glob(
[
"**/*",
],
exclude = [
"**/LICENSE",
"**/*.zip",
],
),
)
load("@//conf: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.tmpl'],
)