如何在bazel规则中获取WORKSPACE目录

2023-11-26

我命令使用 clang 工具,例如clang-format, clang-tidy或生成一个编译数据库 like this,我需要知道 .bzl 文件中的 WORKSPACE 目录。我怎样才能获得它?考虑以下示例,我只想打印工作区中所有 src 文件的完整路径:

# simple_example.bzl

def _impl(ctx):
  workspace_dir = // ---> what comes here? <---
  command = "\n".join([echo %s/%s" % (workspace_dir, f.short_path) 
                       for f in ctx.files.srcs])

  ctx.actions.write(
      output=ctx.outputs.executable,
      content=command,
      is_executable=True)


echo_full_path = rule(
    implementation=_impl,
    executable=True,
    attrs={
      "srcs": attr.label_list(allow_files=True),
    }
)

# BUILD

echo_full_path(
    name = "echo",
    srcs = glob(["src/**/*.cc"])
)

有没有更干净/更好的方法来做到这一点?


您可能可以通过使用来解决这个问题realpath。就像是:

def _impl(ctx):

  ctx.actions.run_shell(
    inputs = ctx.files.srcs,
    outputs = [ctx.outputs.executable],
    command = "\n".join(["echo echo $(realpath \"%s\") >> %s" % (f.path,
              ctx.outputs.executable.path) for f in ctx.files.srcs]),
    execution_requirements = {
        "no-sandbox": "1",
        "no-cache": "1",
        "no-remote": "1",
        "local": "1",
    },
  )

echo_full_path = rule(
    implementation=_impl,
    executable=True,
    attrs={
      "srcs": attr.label_list(allow_files=True),
    }
)

请注意execution_requirements解决我上面评论中的潜在问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在bazel规则中获取WORKSPACE目录 的相关文章

  • bazel一些用法

    1 编译东西 要在根目录下 xff0c 和WORKSPACE在同一级 例如 xff0c 对于bazelbuild examples 而BUILD文件一般与源文件并列 examples cpp tutorial stage1 main BUI
  • bazel在tensorflow中编译报错

    开始根据博文建议用了最新版的bazel 0 28 0 安装成功了 但在tensorflow编译 bazel build tensorflow tools graph transforms transform graph 报错 home ty
  • 如何从单个 java_test() 规则运行 Bazel 中的所有测试?

    我在 Bazel 中添加测试 但我不想为每个测试文件编写测试规则 但是 每个测试规则都需要一个 test class 正在运行的测试类 因此没有简单的方法可以使用单个 java test 规则运行所有测试 有没有一种解决方法可以让我不需要指
  • bazel 的张量流构建错误

    我正在尝试使用 python2 7 在 Ubuntu14 04 上从源代码构建张量流 没有 GPU 当我执行时bazel build c opt tensorflow tools pip package build pip package在
  • 如何使用 Bazel 构建使用 OpenCV 的项目 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用 Bazel 构建使用 OpenCV 库的 C 代码的最佳方法是什么 即 构建规则是什么样的 应该如
  • Tensorflow编译运行很长时间

    所以我正在尝试编译TensorFlow来自源头 使用 2019 年 1 月 31 日的 git 存储库中的克隆 我从他们的 shell 脚本安装了 Bazel https github com bazelbuild bazel releas
  • Bazel:如何获取输出二进制文件的路径?

    考虑somepath BUILD file load io grpc grpc java java grpc library bzl java grpc library proto library name bar proto srcs b
  • 如何在 bazel 中指定 cc_library 的输出工件?

    我想将 foo c 构建为库 然后在生成的 so上执行 readelf 而不是 a 我如何在bazel中编写它 以下 BUILD bazel 文件不起作用 cc library name foo srcs foo c genrule nam
  • 将 copts/defines 传播到目标的所有依赖项

    我有一个项目 在一个相当复杂的构建系统中的单个工作空间中涉及多个构建文件 简而言之 我的目标 对于某些特定目标 我希望使用一组额外的属性来构建其所有递归依赖项 copts defines 与以任 何其他方式构建这些依赖项目标时相比 我还没有
  • 如何解决 bazel“未声明的包含”错误?

    我是 bazel 新手 并且无法使用以下命令构建我的 C 包 错误 path to package BUILD linenumber 1 规则 path to package name 中未声明包含内容 此规则缺少 path to pack
  • 如何在 bazel 中生成 Python 覆盖率?

    我正在尝试在 bazel 中生成 Python 覆盖范围 我尝试运行此命令并生成了一个空文件 bazelisk coverage company libs foo test INFO Using default value for inst
  • bazel是否支持不同平台上的远程执行?

    具体来说 我想从 Mac 主机对 Windows 工作线程运行测试 评论在不同的机器上运行 bazel 远程执行器测试 https stackoverflow com questions 44354378 running bazel rem
  • 保存终端 Bazel 构建输出

    是否可以保存在终端中运行的 bazel build 命令的输出 命令是 bazel build tensorflow examples image retraining label image bazel bin tensorflow ex
  • 沙箱中的 Bazel 和 py_test - 有什么方法可以定义输出?

    我正在运行多个py test 项目数量的配置 由于它们数量众多 默认的沙箱机制似乎很方便 测试不会相互干扰 并且免费并行运行 不过 这是有代价的 据我了解 沙箱将导致 bazel 在临时目录中运行测试 结合py test规则未定义任何out
  • 如何在 Windows 10 x64 上使用 Bazel 构建和调试 C++ 可执行文件

    我想使用 bazel 生成的可执行文件来调试 C 代码 但由于某种原因 bazel 不会在 x64 架构上构建代码 或者可执行文件无法在调试模式下工作 我的文件是 main cpp include
  • Bazel远程缓存分析数据

    我正在 jenkins 上的 docker 容器内运行 bazel 通过 bazelisk 此外 我使用远程缓存 在不进行任何更改的后续运行中 我获得 100 的缓存命中 但每次创建新容器时都会运行分析阶段 约 60 秒 有没有办法远程缓存
  • Tensorflow构建量化工具-bazel构建错误

    我正在尝试编译量化脚本 如下所述皮特 沃登的博客 https petewarden com 2016 05 03 how to quantize neural networks with tensorflow 但是 在运行以下 bazel
  • 从tensorflow_cc和tensorflow_framework生成静态库

    据我了解 使用 bazel 我只能生产libtensorflow cc so and libtensorflow framework so 我需要生产静态库与位置无关 fPIC 因为稍后我会将它们链接到我自己的动态库 I found 这个答
  • Bazel run - 传递主要参数

    我使用 java image 创建了一个图像 但我想将参数传递给我的主函数 即 String args 当我使用 bazel run name of image 命令时 我该如何做到这一点 bazel run your rule arg1
  • 让 Bazel 使用 Python3 运行(语法错误)

    我正在尝试使用 Bazel 运行此代码 https github com google in silico labeling https github com google in silico labeling 这是关联的 Bazel BU

随机推荐

  • 想要将我现有的 mysql 数据库与 django 一起使用

    我已经创建了一个 django 项目 现在正在渲染模板 我已经有一个 mysql 数据库 里面有大量的表和数据 从我在教程中看到的 Python 的模型概念很有趣而且简单 但是我无法在这里使用它 因为我猜没有可用的模型 假设 django
  • 如何编译 jrxml 以获得 jasper?

    I have jrxml文件 我想编译它以获得 jasper 我如何编译并得到它jasper file 将jrxml编译为jasper有3种方法 您可以通过iReport设计器上的编译按钮 锤子标志 直接编译 您可以使用 ant 进行编译
  • R 中带有 addCircleMarkers 的传单地图图例中的圆圈 - 没有闪亮

    我正在 R 中创建传单地图 我不需要构建一个闪亮的应用程序 并且还没有解决该特定技能集 我试图按照这里的这篇文章在我的图例中创建圆圈 用圆圈传单 R 创建图例 但是 我不确定如何合并tags style将我的 R 代码属性为 K 罗德建议确
  • 如何在后台线程上运行 ListenableWorker 工作?

    由于我需要在 WorkManager 中异步执行工作 因此我需要使用ListenableWorker 默认情况下在主 UI 线程上运行 由于这项工作可能是一个很长的处理任务 可能会冻结界面 因此我想在后台线程上执行它 在里面使用 WorkM
  • Python 中的枚举无法按预期工作

    我在 Python 的 Enum 类中发现了一个非常奇怪的行为 所以枚举类型很简单 from enum import Enum Analysis Enum Analysis static dynamic 因此 我在步骤对象中使用此枚举类型
  • 如何将 auto_increment 添加到 SQL Server 2008 中的列

    我正在使用 SQL Server 2008 并且我使用的数据库表的主键不是IDENTITY列 不知道为什么 我需要改变这一点 我在 SQL Server Management Studio 的设计视图中的列属性下 由于某种原因 我无法将标识
  • 如何在 SQLite 中使用序列?

    我正在编写一个基于 PHP 的 Web 应用程序 该应用程序应该与多个数据库系统一起使用 最重要的是 MySQL 和 SQLite 但 PostgreSQL 和其他也不错 为此 我尝试尽可能使用可移植的 SQL 如果这是不可能的 我在查询中
  • QtWebEngine - 同步执行JavaScript以读取函数结果

    我的 C 类之一有以下方法 使用 QtWebEngine QString get QString result view gt page gt runJavaScript test this const QVariant v result
  • Android:编辑图像意图

    我发现了很多关于如何裁剪图像的问题 但是 有没有办法通过意图启动编辑图像活动 我尝试过com android camera action EDIT但它不起作用 我想要做的是 当我单击按钮时 启动编辑图像的活动 如下图所示 就像我从图库中打开
  • Python附加到csv文件而不带白线

    我正在用 python 写一个游戏 每轮游戏结束后 是的 游戏有多轮 我想将数据写入 CSV 文件 这是我的代码 with open data csv a as fp for player in self players a csv wri
  • 如何在 WinRT 中的 ItemContainerStyle 中进行绑定?

    我试图将集合绑定到 ItemsControl 使用 Canvas 作为项目面板 并将每个项目的 Canvas Left 和 Top 绑定到项目对象的属性 基本上我正在尝试重新创建我在中描述的二维数据绑定我的博客上的这篇文章 但这次是在 Wi
  • matplotlib 在某些数据集上生成奇怪的 y 轴?

    我正在编写一个 python 2 7 脚本 它在循环中生成多个 matplotlib 图 import matplotlib pyplot as plt import numpy as np 这里我对数据进行了缩放 因此第一个点是 100
  • Play Framework Scala:如何流式传输请求正文

    我正在使用 Scala 使用 Play Framework 2 3 x 构建微服务 我是两者的初学者 但我无法找到一种流式传输请求正文的方法 问题是这样的 我需要一个端点 transform我可以在其中收到一个巨大的 TSV 文件 我将解析
  • WPF 通知

    如何为我的 WPF 应用程序创建通知 例如浏览器上的通知 它们通过浏览器顶部的 工具栏 显示消息 或者通过浏览器右下角向上 向下滑动的弹出窗口显示 MSN 样式通知屏幕 也许在应用程序中心淡入 淡出的面板可以 你的问题有点模糊 因为对于 W
  • ASP.NET MVC:从数据库加载图像并在视图中显示它们

    我们的数据库中有一些图像并希望在视图中显示它们 我发现two way去做这个 首先 我们在控制器中创建操作方法 从数据库获取图像并返回 FileContentResult public ActionResult GetImage int i
  • Git 仅将主文件中的单个文件合并到当前分支中[重复]

    这个问题在这里已经有答案了 我刚刚开始使用 git 我从 master 创建了分支 A 我已经在branch A中创建了文件abc txt 并成功将branch A合并到master中 现在我正在分支 A 中处理相同的文件 并希望将主文件
  • 为什么 make 打印“make: Nothing to be do for ‘all’.”? [复制]

    这个问题在这里已经有答案了 这是一个 Hello c 模块和 Makefile 执行后make从 woking 目录中我收到以下消息 make 无需为 全部 执行任何操作 这是 Hello c 文件 include
  • 无法将 List 传递给需要 List 的方法,其中 Foo : IFoo

    我有课Foo实施IFoo界面 我有一个方法List
  • Kotlin:获取两个日期之间的差异(现在和上一个日期)

    很抱歉 如果类似的问题被问了太多次 但我发现的每个答案似乎都存在一个或多个问题 我有一个字符串形式的日期 例如 04112005 这是一次约会 2005 年 11 月 4 日 我想获得当前日期和此日期之间的差异 以年和日为单位 到目前为止
  • 如何在bazel规则中获取WORKSPACE目录

    我命令使用 clang 工具 例如clang format clang tidy或生成一个编译数据库 like this 我需要知道 bzl 文件中的 WORKSPACE 目录 我怎样才能获得它 考虑以下示例 我只想打印工作区中所有 src