Bazel抱怨对系统头文件的依赖性

我们的Bazel build抱怨 ERROR: XXX/BUILD:5:1: undeclared inclusion(s) in rule 'YYY': this rule is missing dependency declarations for the following files included by 'ZZZ.c': '/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h' '/usr/lib/gcc/x86_64-linux-

能否指示Bazel使用单个命令更新N个目标?

Google Bazel构建工具可以很容易地解释特定目录树中的每个CoffeeScript文件都需要编译为相应的输出JavaScript文件: [genrule( name = 'compile-' + f, srcs = [f], outs = [f.replace('src/', 'static/').replace('.coffee', '.js')], cmd = 'coffee --compile --map --output $$(dirname $@

Bazel能否将需要重建的N个M文件批处理为单个命令?

Google Bazel构建工具可以很容易地解释特定目录树中的每个CoffeeScript文件都需要编译为相应的输出JavaScript文件: # Runs "coffee" 100 times if there are 100 files: # will run slowly if most of them need rebuilding. [genrule( name = 'compile-' + f, srcs = [f], outs = [f.replace('src/',

Bazel 如何为maven_aar规则指定maven存储库?

如何为maven\u aar规则指定maven存储库?似乎maven\u aar无法识别我的maven\u服务器: maven_server( name = "default", url = "http://xxx" ) 多谢各位 它使用常规的maven构造,而不是maven_服务器。 从本期已发行的()开始: “…maven_服务器规则仅适用于本机maven_jar规则。我们对skylark maven_jar和mane_aar规则进行了不同的修改。相反,它使用标准的mave

为什么Bazel需要链接,我如何修复它?

我正在尝试用Bazel构建和打包。这适用于“构建”部分,但最终结果是外部使用者无法使用库(即“包”失败,因为包已损坏) LCM使用glib,我使用()导入它。更具体地说,LCM在内部使用glib,但不向用户公开。这意味着消费者不需要把油嘴滑舌联系起来liblcm。因此应该做到这一点,消费者只需要链接到LCM本身 这一切都适用于上游(它使用CMake并做正确的事情)。然而,出于某种未知的原因,Bazel似乎并没有将liblcm与glib联系起来。如果我在相同的总体环境中使用Bazel构建一个可执行

Bazel 名称';包装名称';未定义(您是指';包名';?)

我正在使用Bazel0.24.0构建一个现有的bzazel项目。 阅读bazel文档后,我将“PACKAGE_NAME”更改为“PACKAGE_NAME()”。 下面的问题显示 “名称‘package_name’未定义(您的意思是‘package_name’?)” 此外,“PACKAGE_NAME”显示错误,不起作用: 值“PACKAGE_NAME”已被删除,取而代之的是“PACKAGE_NAME()”,请使用后者() A有解决方案吗?您必须使用本机.package\u name(),而不是pa

如何通过bazel显示所有gtest案例,而不使用;测试“;指令

我想通过bazel查询所有gtest案例 参数“-gtest_filter”只能与“bazel test”cmd一起使用 我尝试使用“bazel query bazel query//xxx:all”,但它会显示构建文件中定义的测试列表,我想从xxx.cc文件中获取案例列表。这不是bazel query可以完成的工作。查询对目标的图形结构进行操作。Bazel的一个基本设计决策是,仅通过查看BUILD文件和它们所依赖的.bzl文件即可计算此图。特别是,不允许解析源文件 (指向--test_filt

使用bazel查询作为生成快捷方式?

假设你有: $ bazel query "filter('_image_publish$', attr(generator_function, go_server_v1, ...))" //helloworld/server:zurigo_server_image_publish //bababot:bababot_server_image_publish 是否可以创建规则或宏,让我执行单个bazel构建构建所有上述目标 我想做: $ bazel build :all-servers 它将

Bazel工作目录与Maven不同。如何迁移?

我有一个现有的项目是用Maven构建的。它通常定义几个模块。我想将此项目迁移到Bazel 在第一次尝试中,我使用 └── project ├── moduleA │   ├── BUILD │   ├── pom.xml │   └── src │   ├── main │   │   └── java │   └── test │   ├── data │   └──

Bazel:如何创建在linux上使用cmd,在windows上使用cmd_bat的genrule?

我想制定不依赖于Bash的Bazel规则 我看到在genrule中,可以使用cmd_bat代替cmd(需要bash)。但是我如何定义规则,以便有一个cmd属性和一个cmd_bat属性,并且在Windows上只使用cmd_bat,而在其他任何地方都使用cmd?在Bazel 3.2.0cmd_bat中,仅在Windows上考虑。在其他操作系统中,它只是被忽略cmd_bat的优先级高于Bazel 3.2.0中的cmd,cmd_bat仅在Windows上考虑。在其他操作系统中,它只是被忽略cmd\u b

如何脱机使用Bazel构建

我想用Bazel建立我的jsonnet。为此,我使用了jsonnet规则。不幸的是,在我的构建管道中,我无法从github中提取。所以,我一直在阅读脱机构建,但似乎找不到有效的解决方案。我已经提取了jsonnet规则repo,并尝试使用 $ bazel test //project ----distdir=<jsonnet_rules_repo> $bazel test//project----distdir= 但这不起作用。所以,我想知道是否有人知道正确的处理方法 更新: 这是

如何从bazel中的jar中提取资源

我的项目中有不同的模块,它们以JSON的形式生成配置文件,JSON是java_libarary的一部分。我需要使用bazel build将生成的JSON文件复制到一个新模块。我想这样做是因为: 从bazel读取所有依赖项(假设所有模块 生成json将作为依赖项添加) 在依赖关系中逐个提取JAR文件 将json复制到新位置 包将json复制到新tar作为输出 我不确定,我如何能在bazel做到这一点,让我知道,如果有任何一个类似的例子可用 提前感谢…我正在使用genrule实现以下功能: 在jav

基于--config有条件地创建Bazel规则

我正在处理一个问题,在这个问题中,如果指定了某个Bazel配置(通过'--config'),我只想创建一个特定的规则。我们从0.11开始使用Bazel,并且有一系列构建基础设施,这些基础设施可以绕过Bazel中以前的限制。我正在逐步地将我们移植到更新的版本。缺少的一个特性是编译器转换,因此我们使用配置和一些外部脚本实现了自己的功能 我解决问题的第一次尝试如下所示: load("@rules_cc//cc:defs.bzl", "cc_library")

无法在Linux中安装bazel

从git加载代码,运行sh compile.sh,然后 错误如下所示: INFO: You can skip this first step by providing a path to the bazel binary as second argument: INFO: compile.sh compile /path/to/bazel Building Bazel from scratch...... Building Bazel with Bazel. WARNING: /sear

是否可以从Bazel.bzl规则中获取$pwd值?

我试图从.bzl规则中获取完整当前目录路径的值。我尝试过以下方法: ctx.host\u配置。默认shell\u环境路径返回“/Users/[user\u name]/.rbenv/shimmers:/usr/local/bin:/usr/bin:/bin:… ctx.bin_dir.path返回bazel out/local fastbuild/bin pwd=ctx.expand\u make\u variables(“cmd”、“$$pwd”、{})返回字符串$pwd-我认为这条规则对我没

Bazel 确定文件是否是任何包的一部分

如果我有一个文件列表,例如foo/src/main.cpp、foo/src/bar.cpp、foo/README.md是否可以确定哪些文件是bazel包的一部分? 在我的示例中,由于README.md不是构建的一部分,因此输出可能是foo/src/main.cpp、foo/src/bar.cpp 一种方法是对每个文件调用bazel query,看看它是否会产生输出,但这非常低效,因此我想知道是否有更简单的方法 背景:我试图确定一组文件中的更改是否对目标有影响,我想使用bazel query so

Bazel 整个项目的Linting/格式规则

我正试图制定一个规则,使我的所有代码(我在这个项目中使用的每种语言)都可以lint。 但我很难做到这一点 正如我所说的,我脑海中对整个项目进行lint的最佳想法是创建一个lint规则,并将每个lint规则都放在其中(eslint用于js&ts,golang/lint用于go等等) 以下是我目前的规则: #/:rules/lint.bzl 加载(“@npm//eslint:index.bzl”,“eslint”) def_lint(ctx): #js/ts 埃斯林特( name=“eslint”,

Bazel 配置环境

bazel构建--配置cxx20--配置选项… 我希望默认设置为--config cxx20--config opts。但是,我无法更改.bazelrc,因为其他用户使用不同的配置。是否有类似于BAZEL_cxopts的配置环境变量 export BAZEL_254;?=“--config cx20--config opts”通常的解决方案是创建一个 .BZELRC。用户< /C>文件并添加一个行尝试导入%%工作区%./BZELRC。用户< /C> >到您的 BZELRC 文件。 < p>您可以

使用Bazel Build发送静态编译的特定编译标志

在我的项目中,我们有一些代码,当编译静态链接时,必须在编译代码时添加一个define。让我们假设它是-DSTATIC_编译 我的问题是:在请求静态链接或任何基于链接绑定的编译标志时,是否可以控制编译标志 认为我知道我能做到: 将--copt'-DSTATIC_COMPILATION'添加到命令行bazel build 通过传递bazel build--config=static\u comp,配置一个可以提供这种配置的bazelrc文件,这很好,但我不确定当将此包作为外部包时它是否会传递给其他包

Bazel 如何从存储库规则调用持久工作程序?

我需要编写一个Bazel存储库规则,根据现有库中存在的一些逻辑下载mysql二进制文件(它还做其他事情) 我正在考虑启动一个持久性jvm工作程序的选项,它将托管这个库,并要求它在某个地方下载归档文件,避免代码重复 我的问题是: 1.我需要做些什么才能与坚持不懈的员工一起工作?未找到教程。 2.我可以告诉工作人员将归档文件下载到哪个正确(bazel-wise)位置 请随时告诉我,您认为我将此任务委托给工作人员是犯了一个可怕的错误:)您无法轻松地从存储库规则与持久工作人员交谈,但我认为这不是您想要的

Bazel中的全局标头暂存

我们目前的项目结构如下: thirdparty(ws_root) |_WORKSPACE |_comp1 | |_BUILD | |_src | |_ a.c | |_include | |_ a.h |_comp2 | |_BUILD | |_src | |_ b.c | |_include |

Bazel运行传递主参数

我使用java_image创建了一个映像,但我想将参数传递给我的主函数(即字符串args[])。当我使用“bazel run name_of_image”命令时,我如何做到这一点 bazel运行//您的:规则--arg1 arg2。。。argN --之后的所有内容都会传递到二进制文件。使用java\u image时,bazel run//my\u image只会将映像加载到Docker守护进程中,而不会运行它。要运行它,您应该使用: docker run bazel/my_image:my_im

Bazel 依赖项的依赖项必须在根工作区中声明?

我写了一个例子: git clone git@github.com:rynz/test-app.git bazel test //... 它将出错,抱怨com_google_absl无法解决 编辑工作区并取消注释com_google_absl依赖项,现在它将成功构建和测试 rynz_应用程序仅依赖于rynz_协议,但rynz_协议也依赖于com_google_absl。为什么我必须在rynz_应用程序工作区中重新声明com_google_absl,而它已经在rynz_协议工作区中声明了 亲切问

Bazel rules_foreign_cc-在构建时使用从源代码构建的cmake二进制文件

我正在尝试运行一个Bazel构建,它使用rules_foreign_cc的cmake_external规则。我的理解是,通过将适当的参数传递给rules_foreign_cc_dependencies(…)workspace函数,我可以指示构建使用预构建版本的cmake,而不是使用本地安装在构建服务器上的cmake 我尝试过以下方法,但没有效果: rules_foreign_cc_dependencies( ["//:built_cmake_toolchain"], False,

Bazel构建文件内省

是否有任何工具可用于内省Bazel构建文件集合,以便对代码库运行查询?我正在考虑一个简单的案例,收集代码库中使用的所有已定义标记。某种bazel元查询功能,它可以让我通过大量的构建文件在repo中确定约定和用法 能够根据它们的集合标记对cc\u test和py\u test规则进行交叉制表,这将是一件好事。理想情况下,应该有一个python客户端来内省bazel文件。bazel query使用一种高度表达的查询语言提供有关目标依赖关系图的信息。它可以输出为各种格式,如点、XML、Protobuf

Bazel 将maven工件下载到存储库的推荐规则(maven\u安装vs jvm\u导入\u外部)

从maven下载依赖项的推荐方法是什么。目前有三种方法可以做到这一点(不推荐使用mvn_jar)。未来的maven\u安装()还是jvm\u导入\u外部()?这里是规则\u jvm\u外部的作者 无论是jvm import还是outernal和maven\u install都是获取maven工件的有效和受支持的方法。它们还提供不同的用例和样式:jvm\u import\u external不进行可传递的依赖项解析,因此如果您不希望使用maven\u install,可以将其用于更细粒度的工件处理

如何从bazel命令行传递docker图像标记

是否可以从命令行传递docker图像标记,如: bazel run :myimage_push --tag=foo_tag 这样效果就相当于 container_push( name = "myimage_push", format = "Docker", image = ":myimage", registry = "some.registry", repository = "some/repository", tag = "foo_tag", ) 你可以这样说:

为Bazel中的Git_存储库指定多个Git Remote

我们的Bazel项目从GitHub上托管的私有Git存储库中提取代码 在某些环境中(碰巧都是macOS),我们希望使用SSH身份验证来访问repo。因此,对于这些环境,我们可以指定remote=git@github.com:orgname/reponame.git在new\u git\u repository规则中 在其他环境中(碰巧都是Linux),我们希望使用令牌身份验证通过HTTPS访问repo。对于这些环境,我们可以使用remote=https://github.com/orgname/

如何从bazel查询并找出maven包的名称和版本?

如果使用grep运行此命令,我可以从maven存储库中检索项目所需的依赖项列表 bazel query "deps(//my-project-server)" | grep "@maven" 我将获得每个依赖项的输出列表,如下所示: @maven//:com_thoughtworks_paranamer_paranamer @maven//:v1/https/repo.maven.apache.org/maven2/com/thoughtworks/pa

Bazel 如何设置//external:android/sdk,当它没有绑定到任何东西时

在尝试构建使用bazel的git repo时,我遇到了一个错误,即//external:android/sdk没有绑定到任何东西,我无法找到该配置的位置,因此我可以修复它 我已经加载了一个新的ubuntu 14.04,我正试图从源代码构建github.com/google/shipshape。我已经按照给出的说明安装了构建它所需的一切 基本上安装了golang、openjdk-8-jdk、openjdk-8-source、bazel,并运行了以下程序: mkdir -p github.com/g

链接到外部Bazel依赖项 问题 我试图修改编译一个TysFROUM网络,用于C++。目前,它要求您将网络文件复制到TensorFlow源代码中,以便找到依赖项,但我不希望这样做。请注意,TensorFlow也是使用Bazel构建的

这是我的构建文件: cc_binary( name = "mnistpredict_keras", srcs = ["mnist_keras.cc", "MNIST.h"], deps = [ "//tensorflow/core:tensorflow", ], ) 当我尝试运行$bazel build:mnistpredict\u keras时,我得到错误: ERROR: /home/saubin/git/tf-keras-speed-test

Bazel 简单的cc_库规则作为云雀规则

我有一个非常简单的cc_library()规则,我想将其转换为Skylark规则 cc\u library()规则是: cc_library( name = 'cc_library_a', srcs = [ 'a.c' ], ) 我面临的挑战是涉及通过不同方法传递的编译标志,例如命令行。 因此,假设我运行以下命令行: #bazel构建:a--copt-H 这将在编译命令中添加-H标志。这里的问题是如何将-H标志传播到云雀规则 我尝试了以下方法,但无效: def _my_rule(ctx

如何在bazel中的源代码树上运行测试?

我正在将一个项目从cmake迁移到bazel。我有一个文件夹,其中包含一些python代码和一些genrules。 我让一个测试脚本递归地运行这个文件夹中的所有python测试。 所以基本上我需要这个文件夹下的所有py文件作为测试脚本的data。但是考虑到我需要运行一些genrule,所以有一些构建文件,glob([“***.py”])无法通过 例如,我们有一个文件夹python包含以下文件 python/BUILD python/test\u a.py python/folder\u a/B

如何在bazel中指定来自cc_库的输出工件?

我想将“foo.c”构建为一个库,然后在生成的.a文件上执行“readelf”,但不是“.a”,我如何在bazel中编写它呢 以下BUILD.bazel文件不起作用: cc_library( name = "foo", srcs = ["foo.c"], ) genrule( name = "readelf_foo", srcs = ["libfoo.so"], outs = ["readelf_foo.txt"], cmd = "readelf

Bazel:混合Linux远程执行平台和MacOS本地平台 目标 我使用Bazel来构建多平台C++客户端(iOS、OSX、Android、Windows)。

iOS和OSX是在我的Mac上本地构建的(出于需要)。Android和Windows构建在Docker容器中 在构建结束时,我有一个Bazel规则,它为每个平台获取每个cc_binary规则,并将它们放在.zip中 我想利用Bazel的远程执行API在容器中构建一些二进制文件,在本地构建其他二进制文件,然后引用共享缓存将它们整理在一起——所有这些都需要一个Bazel build命令 巴泽尔支架 Bazel声称这些类型的多平台构建是可能的,其中主机(OSX x64)、执行(Linux x64)和目

如何升级bazel?

我成功构建了bazel-0.4.0。 然后我尝试使用升级工具将其升级到最新版本bazel-0.5.1 $ ./compile.sh compile ../bazel-0.4.0/output/bazel.exe 它给了我一个错误,bazel-0.5.0,bazel-0.4.5给了我同样的错误 错误日志: $。/compile.sh compile../bazel-0.4.0/output/bazel.exe 如果已经安装了bazel,则可以通过在的新克隆上运行bazel build//src:

Bazel 是否要在自定义venv python环境中运行docker规则或通过变量添加cacert?

我使用docker规则在bazel构建中推送图像。docker存储库使用自定义cacert。为了能够将图像上传到它,我必须创建一个自定义的cacerts.txt文件,其中包含一个额外的cacerts,该文件通过venv python2环境中带有函数get()的模块ca_certs_locater安装。这将覆盖docker规则使用的httplib2提供的默认cacerts.txt 我的问题是,在自定义的.venv环境下运行docker规则是否仍然存在?或者最好为自定义cacert提供一个附加变量

Bazel工作区依赖于*.deb

在您看来,一个项目依赖于另一个通过debian包分发的预编译项目的最佳方式是什么 自定义(新的)debian_软件包()工作区规则?事实上,我要介绍一个新的debian_软件包规则,它模仿了debian_软件包的功能

Bazel 用参数包装py_二进制文件

包//foo具有py二进制文件: py_binary( name = "foo", srcs = ["foo.py"], visibility = ["//visibility:public"], ) foo.py接受2个位置命令行参数 现在,在一个包//bar中,我想创建一个“别名”,用于调用带有特定参数的foo二进制文件 遗憾的是,以下措施不起作用: py_binary( name = "bar", deps = [ "//foo:foo", ], ar

用Bazel包装独立的罐子

我正在尝试构建一个相对独立的发布包(假设它是一个tarball,但也可以是一个RPM/Deb),它既包含我的代码(打包到一个jar中),也包含我的代码在编译和运行时使用的jar。(假设为了简单起见,它们是相同的集合。) 我有一个MyPackage(它有一堆.java文件),假设它直接依赖于外部jar a和B,B依赖于外部jar C。我从maven_jar得到a、B和C 我已经制定了如下规则: 在MyPackage/BUILD中: java_library( name = "MyPacka

Bazel 如何使用workspace\u status\u命令的输出构建自定义规则?

bazel build标志--workspace\u status\u命令支持调用脚本来检索例如存储库元数据,这也称为构建戳记,在java\u binary等规则中可用 我想使用此元数据创建一个自定义规则。 我想用它来实现一个通用的支持功能。它应该接收git版本和一些其他属性,并创建一个可用作依赖项的version.go输出文件 所以我开始了一段旅程,在各种bazel存储库中寻找规则 像Rules\u docker这样的规则支持在container\u image中使用stamp进行戳记,并允许

如何编写与外部存储库一起工作的Bazel规则?

Bazel Starlark API对外部存储库中的文件执行奇怪的操作。我有以下Starlark片段: print(ctx.genfiles_dir) print(ctx.genfiles_dir.path) print(output_filename) ret = ctx.new_file(ctx.genfiles_dir, output_filename) print(ret.path) 它正在创建以下输出: DEBUG: build_defs.bz

如何使用Bazel获得python的代码覆盖率

我想使用Bazel为所有python测试生成代码覆盖率报告。目前我正在使用Bazel版本0.19.1,但不久我将升级到0.22.0。我在2017年发现了这个开放性bug,这个bug已经研究了一段时间,但是这个页面上的通信突然中断()。有人知道bazel coverage在哪里支持py_测试和py_二进制文件的代码覆盖吗 当前,当我运行命令bazel coverage//path/to/python/tests/… (verb_py3) joshsullivan@VERB790-Linux:~/v

从Bazel中的目标/提供者列表中提取/收集文件的最有效方法是什么?

随着我的进步,我正在写一些规则并学习Starlark 假设我有自己的提供商: ModularResources=提供程序( doc=“模块化资源”, 字段={ “artifactId”:“前Maven工件id(别问我为什么)”, “SRC”:“标签列表(一个全局(..)事物)”, }, ) def模块化资源导入(ctx): 返回源( artifactId=ctx.attr.artifactId, srcs=ctx.attr.srcs, ) 模块化资源=规则( 实现=\u模块化\u资源\u实施,

Bazel等效于包含您使用的内容?

有一个巴泽尔相当于?我正在寻找一种工具,通过从构建文件中删除依赖项并检查项目是否仍在构建来消除bazel构建中的错误依赖项 有没有任何理由说明这种方法不起作用

Bazel 模拟字符串以标记dict

由于Bazel不提供将标签映射到字符串的方法,我想知道如何通过Skylark解决这个问题 遵循我的部分可怕的解决方法 首先是静力学: _INDEX_COUNT = 50 def _build_label_mapping(): lmap = {} for i in range(_INDEX_COUNT): lmap ["map_name%s" % i] = attr.string() lmap ["map_label%s" % i] = attr

Bazel 如何在不同的子项目中使用相同的文件组定义

我需要为一些子项目声明特定的资源,我正在按照下面的方式进行 filegroup( name = "some_resources", visibility = ["//:app"], srcs = glob([ "src/my/resources/**/*.resources", ]), ) 但是,在任何子项目中,可以找到资源的路径都是相同的。我的问题是-在这种特殊情况下,减少代码重复的最巴泽尔(巴泽尔语?)的方法是什么 基本上我想要的是 在相关子

Bazel真的需要Python吗?

Bazel安装说明指出Python是必需的。但是,我使用了没有Python的Linux安装程序,它似乎可以工作 BaZeL是否实际上需要Python来构建非Python构建,比如C++和Go? < P>我相信它没有,并且你成功的构建了没有Python的证明。 < P>我相信它没有,而且你成功的没有Python的构建证明了。

为第三方依赖项创建Bazel distdir

我在一个代码库上使用Bazel,该代码库在一个空的环境中使用SpringBoot和JUnit。以下是获取所有第三方依赖项所需运行的命令: bazel fetch '@bazel_tools//tools/build_defs/repo:*' bazel fetch '@rules_java//java:*' bazel fetch '@rules_cc//cc:*' bazel fetch @local_config_platform//... bazel fetch @local_config

Bazel 如何将规则限制为cpp工具链的子集?

我有这样的规定 行动=规则 实现=_impl, 属性={ ... _cc_工具链:attr.labeldefault=Label@bazel_tools//工具/cpp:当前的工具链, }, 片段=[cpp], 工具链=[ @bazel_工具//工具/cpp:工具链类型, ], 我为自定义cpu定义了自定义cc_工具链: 工具链 name=cc toolchain-%{toolchain_name}, toolchain=:cc编译器-%{toolchain_name}, 可以在这个平台上运行

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 14 页