Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在外部bazel依赖项中生成配置文件_Python_External_Bazel - Fatal编程技术网

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

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

我是bazel的新手,正在尝试自动更新数据库和代码

我将我的bazel项目的根文件夹命名为bazel_mapit,其中包含此外部依赖项的工作区文件和生成文件,如下所示

工作空间:

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'],
)