首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bazel构建系统:如何在工作空间中引用外部http_archive的构建文件?

Bazel构建系统是一个开源的构建工具,用于构建和测试软件项目。它具有高度可扩展性和灵活性,适用于各种规模的项目。

在Bazel中,可以使用http_archive规则来引用外部的构建文件。http_archive规则允许从远程仓库下载构建文件,并将其添加到当前工作空间中。

要在工作空间中引用外部http_archive的构建文件,需要执行以下步骤:

  1. 在工作空间的根目录下创建一个名为WORKSPACE的文件(如果已存在,则跳过此步骤)。
  2. WORKSPACE文件中,使用http_archive规则引用外部构建文件。例如,假设要引用一个名为my_library的构建文件,可以使用以下代码:
代码语言:txt
复制
http_archive(
    name = "my_library",
    url = "https://example.com/my_library.tar.gz",
    sha256 = "abcdef123456...",
)

其中,name是引用的构建文件的名称,url是构建文件的下载链接,sha256是构建文件的SHA256哈希值(用于校验文件完整性)。

  1. 运行Bazel命令,以确保构建文件被正确引用和下载。例如,可以运行以下命令来列出所有可用的外部依赖项:
代码语言:txt
复制
bazel query @my_library//:all

这将显示与my_library相关的所有目标和规则。

需要注意的是,具体的引用方式可能因构建文件的类型和来源而有所不同。上述示例是一个简单的引用外部构建文件的示例,实际情况可能更加复杂。在实际使用中,可以根据具体的需求和情况进行调整。

关于Bazel构建系统的更多信息和详细用法,请参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Istio实战系列-Envoy Proxy构建分析

Bazel定义构建依赖关系和规则,并管理构建生成临时文件及二进制文件,具体编译工作是调用各个语言编译工具GCC, JAVAC等完成。...为了理解Envoy编译过程,我们需要先了解Bazel几个基础概念 workspace: 文件系统一个目录,该目录中包含了用于编译软件所需所有源文件。...每个工作间中有一个WORKSPACE文件,该文件用于描述该工作空间外部依赖,例如依赖Github上第三方代码。...另外target还可以依赖外部Repository中另一个target,这个外部Repository可以是文件系统上另一个文件夹下项目,github项目或者http下载代码。...http_archive定义了一个外部repository,bazel在执行//src/envoy:envoy这个target时,发现该target依赖这个外部repository,根据http_archive

1.6K10

构建Golang项目

gazelle 另一种方式就是直接和 Bazel 集成使用,作为一个外部规则导入使用,WORKSPACE 文件中:。...文件: # 自动添加一个外部依赖项目(非 go.mod 导入) $ bazel run tools/cli:gazelle update-repos {repo-uri} # 生成 BUILD.bazel...Bazel Go 规则集,可以让我们很方便地管理 Go 工具链和外部库,而无需依赖于本地安装库。...Bazel 本身具有的构建特性包括分布式缓存和构建、增量构建,只有当我们工程代码发生改变或某些依赖发生变化时,才会触发构建并更新缓存,从而对大型项目可以实现快速构建。...且 Bazel 沙箱特性,保证每个开发者构建环境一致。 Go 本身 Go Modules 依赖管理已经变得成熟,我们可以很方便管理我们依赖包和版本。

3.7K10

repository_rule() vs rule()

通过 $(bazel info output_base)/external/{工作区名称} 可以看到新建工作区。...repository_ctx APIs 提供规则可直接访问主机系统而无需沙箱,因此为了构建在不同环境下可复制性,需要注意不要引入系统相关信息,比如时间戳或者特定目录名或者环境变量等。...相关规则:@bazel_tools//tools/build_defs/repo:git.bzl git_repository:克隆一个外部 git 仓库 new_git_repository:克隆一个外部...git 仓库 与 http 相关规则:@bazel_tools//tools/build_defs/repo:http.bzl http_archive:将 Bazel 相关压缩存档文件远程仓库下载下来...BUILD 文件 # Tip: 如果需要引用工作空间内 bzl 文件,需要创建 BUILD 文件,即创建包 repository_ctx.file("BUILD.bazel", ""

2.3K20

百度Apollo源码学习之Bazel编译介绍

workspace需要包含必要文件: WORKSPACE文件,用于指定当前文件夹就是一个Bazel工作区。所以WORKSPACE文件总是存在于项目的根目录下。...(如果工作区中一个目录包含BUILD文件,那么它就是一个package) 要指定一个目录为Bazel工作区,就只要在该目录下创建一个WORKSPACE文件即可。...: 一个工作区是在文件系统包含文件构建软件,以及符号链接到包含生成输出目录目录。...每个工作空间目录都有一个名为文本文件WORKSPACE,该文件可以为,或者可以包含 对构建输出所需外部依赖项引用。 包含名为文件 WORKSPACE目录被视为工作空间根。...因此,Bazel会忽略工作间中任何目录树,这些工作树植根于包含WORKSPACE文件子目录(因为它们形成另一个工作空间)。

3.1K40

重构基于CMake构建工具链

很多老式系统和工具都会尝试去走相对标准化安装过程,比如说用 pkg-config 或者用系统自带包管理工具装在系统默认路径里。 当然这样很不方便,也不容易定制组件。...所以产生了把构建系统配置和包管理抽离出来单独维护想法。 其实现在已经有挺多C/C++包管理系统了。比较主流bazel, vcpkg 等。...Bazel问题 bazel 号称是原生支持分布式编译构建系统。...但是 bazel 有一些问题。首先,他需要所有的依赖包都提供 bazel 构建系统支持。现有支持 bazel 包并不是特别多,而且即便支持,也并不是都支持得很好(有些环境编译还是有问题)。...而 bazel 构建包,大多情况下由那个包本身去提供一些config,来实现不同功能组,而编译时候需要用户去设置使用哪些功能组。

4.9K10

Bazel 7 发布:全新模块化依赖管理、无字节构建与多目标构建性能提升

作者 | Sergio De Simone 译者 | Sambodhi 策划 | 丁晓昀 最近在 BazelCon 23 上宣布,Bazel 7 推出了多年来一直在开发中一系列新功能,其中包括全新模块化外部依赖管理系统...Bzlmod 作为一个全新模块化外部依赖管理系统,取代了旧 WORKSPACE 机制。...相反,它从模块构建依赖图,运行在图顶部扩展,并相应地定义 repos。Bzlmod 现在默认启用,这意味着如果一个项目没有 MODULE.bazel 文件Bazel 将创建一个空文件。...无字节构建(Build without the Bytes,BwoB)通过只下载中间文件子集,有效减少了 Bazel 在远程构建中传输数据量。...在过去,Bazel 默认行为是在远程执行操作后,或者在命中远程缓存后下载操作每个输出文件。然而,在大型构建中,所有输出文件总和通常会达到数十甚至数百吉字节。

19410

Bazel 7 发布:全新模块化依赖管理、无字节构建与多目标构建性能提升

作者 | Sergio De Simone 译者 | Sambodhi 策划 | 丁晓昀 最近在 BazelCon 23 上宣布,Bazel 7 推出了多年来一直在开发中一系列新功能,其中包括全新模块化外部依赖管理系统...Bzlmod 作为一个全新模块化外部依赖管理系统,取代了旧 WORKSPACE 机制。...相反,它从模块构建依赖图,运行在图顶部扩展,并相应地定义 repos。Bzlmod 现在默认启用,这意味着如果一个项目没有 MODULE.bazel 文件Bazel 将创建一个空文件。...无字节构建(Build without the Bytes,BwoB)通过只下载中间文件子集,有效减少了 Bazel 在远程构建中传输数据量。...在过去,Bazel 默认行为是在远程执行操作后,或者在命中远程缓存后下载操作每个输出文件。然而,在大型构建中,所有输出文件总和通常会达到数十甚至数百吉字节。

13210

来自谷歌前员工软件开发工具指南

通过与客户紧密合作,我们了解到他们迫切需要填补空白,进而去构建 Sourcegraph 功能来满足他们需求。谷歌前员工正在探索如何在当前组织中使用新开发工具模式。...这一工作灵感源自于他们使用谷歌开发工具而具备经验。当然,一些探索是成功,也有些折戟沉沙。 就此问题,我认为撰写一份着眼于实操和实用外部开发工具指南是非常有意义。...如果系统扩大团队并在整个组织中强制更严格审核策略,该特性非常好用; Gerrit 便于审核大量差异,支持对逐个文件、上一轮审核后更改以及积压 CR 审核,提供更快、更全面的审核。...想要早发现苗头早解决的话,Blaze 是最好工具,谷歌甚至为 Blaze 衍生产品 Bazel 开源提供帮助。但 Bazel 终究并非 Blaze,谷歌外部环境也并非适用谷歌工具。...在 Bazel 首次发布时,Go 社区中很多开源项目出于对标准 Go 构建工具喜爱而纷纷转向使用 Bazel

85680

构建抽象

增量构建相关资源: tup 是用于 Linux、OSX 和 Windows 基于文件构建系统。它输入文件更改列表和有向无环图(DAG),然后处理DAG 以执行更新依赖文件所需适当命令。...ninja 是一个专注于速度小型构建系统,类似于GNU Make。 SCons 是一套由Python 语言编写开源构建系统,类似于GNU Make。...自制外部 DSL 语言。 Gradle 所使用 Groovy、多语言 Bazel。...PS:看来有空,我也应该写一个规则引擎 构建扩展 对于主流构建系统来说,他们都支持不同形式扩展支持: 外部 DSL 扩展 插件化接口编程 项目内编程语言扩展 项目外编程语言扩展 大部分东西,...结论 应用构建是一个相当有意思过程。 设计一个构建系统也变得颇为有趣

91630

如何挖掘 Bazel 极致性能

当用户告诉 Bazel构建某个 Target 时候,Bazel 会分析这个文件如何构建构建动作定义为 Action,和其他构建系统 Task 大同小异),如果 Target 依赖了其他 Target...但对于几万个文件大型工程,如果不修改一行代码,只有 Bazel 能在一秒以内构建完毕,其他系统都至少需要几十秒时间,这简直就是 降维打击 了。 Bazel 是如何做到呢?...当用户第二次发起构建时,Bazel 会检测工作空间哪些文件发生了改变,并更新 ActionGraph。如果没有文件改变,就会直接复用上一次 ActionGraph 进行分析。...除此之外,针对工作空间完整 ActionGraph 内存缓存机制 (skyframe),使得 Bazel 对大型项目拥有秒级构建速度,这也是其他主流构建系统远远达不到。...作者简介 : 孙雄,曾就职于多家头部互联网企业,2015 年开始从事 devops 领域相关工作,在构建领域拥有丰富经验,对多款构建系统(例如 Bazel,Gradle)有源码级理解。

40920

扩展 Bazel 构建语言

本篇介绍何使用宏和规则扩展 Bazel 构建语言。 在学习更高级概念之前,先了解以下几个知识点: 了解 BUILD 和 .bzl 文件中使用 Starlark 语言。...BUILD 三个阶段 了解如何在两个 BUILD 文件之间共享变量。...一个操作描述了如何从一组输入生成一组输出,“在 hello.c 上运行 gcc 和获取 hello.o”。分析阶段接受由加载阶段生成图并生成操作图。 执行阶段。...需要至少一项输出时,系统才会执行操作。如果文件缺失,或者某个命令无法生成一条输出,则构建会失败。在此阶段可选运行测试。...BUILD example 创建一个空目录,WORKSPACE文件,成功执行bazel build,没有报错,只是没有targets,没有做任何build。

1.6K10

Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验

例如,Buck 提供了 apple_library 和 apple_binary 等规则,而 Bazel 根据外部规则集不同提供了 swift_library 和 apple_framework 等规则...在 Airbnb 案例中,解决这个问题方法是创建一个包装本地和外部规则薄片(shim)层。...为了在过渡阶段同时处理两个薄片,Airbnb 工程师创建了一个包含两个不同目录rules_shim/buck和rules_shim/bazel存储库,然后为每个构建系统定义了一个规则,将rules_shim...第一步,将新生成器与他们现有的基于 Buck 解决方案集成,确保一切都按预期工作。在第二阶段,他们添加了新 Bazel 命令,这些命令与 Buck 中使用命令相同,并可以在两者之间切换。...除此之外,新基于 Bazel 构建系统缩短了构建时间,特别增量构建时间,并支持进行进一步优化,以改善共享和协作流程。如果你对完整细节感兴趣,请务必阅读原文。

8510

Spotify 如何切换到 Bazel 进行 iOS App 构建

作者 | Sergio De Simone 译者 | 平川 策划 | 丁晓昀 经过三年试用,2020 年,Spotify 决定采用 Bazel 作为 Spotify iOS 应用程序官方构建系统...在采用 Bazel 之前,Spotify 使用基于 YAML 自定义 Ruby DSL,开发人员可以声明式地添加新模块,包括构建目标的规范、构建它所需文件、资源和依赖项。...根据 Balestra 说法,这种改进主要得益于 Bazel 高效远程缓存以及它对多台机器并行构建支持。 不过,这个过程并不是说直接将构建文件输入到 Bazel 就可以了。...这使得他们可以直接从 Bazel 构建文件生成 Xcode 项目,而不是使用遗留 Ruby/YAML 构建系统,这样就可以减少在本地构建成功但在 CI 中失败情况,从而降低维护和故障排除成本。...向 Bazel 迁移最后一步是定义一个发布策略,在将 Bazel 构建直接部署到员工设备上两周之后,再将其推送给外部 Alpha 和 Beta 测试人员,最后向普通用户发布。

18720

Angular8稳定版修改概述

新功能 差分加载 根据您browserlist 文件,在构建期间,Angular将为其创建单独包polyfills。所以基本上你会有: ? 使用此功能将减小捆绑包大小。 ?...但这是如何工作? 基本上,Angular将使用polyfill构建其他文件,并且它们将注入nomodule 属性。...这允许在现代用户代理和旧用户代理中经典脚本中选择性地执行模块脚本. SVG作为模板 您现在可以将SVG文件用作模板。到目前为止,我们只能选择使用内联HTML或外部HTML作为模板。...Bazel将提供以下优势: 更快构建时间(对于第一次构建需要时间,但并发构建将更快),Angular已经在使用它,现在CI在7.5分钟内完成,而不是在Bazel之前60分钟。...增量构建:您将能够仅构建和部署已更改内容而不是整个应用程序。 您可以弹出Bazel文件,默认情况下它们是隐藏

4.5K20

2024年JavaScript新潮流:探索5大构建系统,让你项目更加高效!

这不仅仅是一篇文章,而是一扇通往未来前端开发世界窗户。我决定将其翻译并整理,与大家一同探索这些可能改变我们工作方式工具。在这篇文章中,我们将一起揭开2024年构建系统神秘面纱。...让我们一起开始这场技术之旅,看看这些构建系统何在一年里助我们一臂之力。以下,是我为您准备精彩内容。...如果从零开始,这一系列工作需要几个月时间来设置,且需要持续监控以不断优化构建系统。这意味着,你花在提供业务价值上时间减少了,同时也让竞争对手有了超越机会。...Bazel:支持多语言构建系统 简介 Bazel构建系统中以其对多种编程语言支持而著称,允许开发者构建和测试用各种语言编写项目。...可复用开发环境:Bit提供包含所有必要工具和配置可复用开发环境,减少配置文件需求,tsconfig.json、ecliptic或prettier,促进开发设置一致性。

16710

面向机器智能TensorFlow实践:产品环境中模型部署

Bazel工作区 由于TensorFlow服务程序是用C++编写,因此在构建时应使用GoogleBazel构建工具。我们将从最近创建容器内部运行Bazel。...Bazel在代码级管理着第三方依赖项,而且只要它们也需要用Bazel构建Bazel便会自动下载和构建它们。...为此,需要将代码保存到之前启动bazel工作区内exporter.py中。...它从外部导入protobuf库中导入了cc_proto_library规则定义。然后,利用它为proto文件定义了一个构建规则。.../opt/classification_server bazel clean 现在,在容器外部,我们必须将其状态提交给一个新Docker镜像,基本含义是创建一个记录其虚拟文件系统变化快照。

2.1K60

自定义工具链

//tools/cpp:toolchain 3 Platform 方式 3.1 平台 3.1.1 概述 Bazel 可以在各种硬件、操作系统系统配置上构建和测试代码,使用许多不同版本构建工具,比如链接器和编译器...约束是构建或生产环境可能不同维度,比如 CPU 架构、GPU 存在或缺失,或者系统安装编译器版本。第一章所述,平台是这些约束指定选择集合,表示在某些环境中可用特定资源。...Bazel 支持以下针对平台构建场景: 单平台构建(默认):主机、执行和目标平台是相同。例如,在运行在 Intel x64 CPU 上 Ubuntu 上构建 Linux 可执行文件。...简单来说,constraint_setting 和 constraint_value 就是一个单键多值 map ,例如,下面的构建文件片段为系统 glibc 版本引入了具有两个可能值约束。...3.1.3 通用约束和平台 为了保持生态系统一致性,Bazel 团队维护了一个存储库,其中包含最流行 CPU 架构和操作系统约束定义。

4.4K31

现代 CI 系统太复杂,方向跑偏了

前面我说过,CI 系统是一种远程执行代码服务。虽然从传统上看,构建系统是在本地运行 (因此不是服务),但现代构建系统 Bazel、Buck、Gradle) 完全不一样。...定义特定工作单元唯一方法是将工作流 YAML 文件提交到代码库中。 GitLab Pipelines 要好一些。...有人会将现有的可扩展构建系统 Bazel、Buck 和 Gradle)中节点转换为平台计算任务,这样就可以实现构建系统和 CI 系统 (可能还有数据管道之类东西) 统一。...一些公司和项目将采用先进构建系统 Bazel),因为他们有资源、技术知识和效率激励机制,但其他很多公司不会这么做。相对于简单构建系统,高级构建系统所提供额外好处往往是微不足道。...定义 Starlark 方言,这样就可以像 Bazel构建工具中原语一样定义 CI/ 发布任务。 迫使其他构建工具( Bazel)做出改进,缩短构建时间。

88510

如何仅使用TensorFlow C+来训练深度神经网络

但从使用 TF C ++ 构建神经网络开始,我就意识到即使是在简单 DNN 中,也有很多东西会丢失。 请记住这一点,进行外部操作训练网络肯定是不可行,因为你很可能将丢失梯度运算。...从头开始构建 TensorFlow 会避免这些问题,而且需要确保使用是最新版本 API。 接下来只需要安装 bazel构建工具就可以了,然后遵照你操作系统指示进行操作。...非核心 C ++ TF代码在 / tensorflow / cc中,这是我们创建模型文件位置,另外还需要一个 BUILD文件,以便 bazel可以建立 model.cc。...我们把 bazel指示添加到 BUILD文件中: 一般它会使用 model.cc建立一个二元模型。现在,我们已经做好为模型编写代码所有准备。...用来规范化数据元数据被保存在 CSV文件第一行,我需要它们重新构建网络输出价格。我创建了一个 data_set.h和 data_set.cc文件,防止代码被打乱。

85850

2024年JavaScript新潮流:探索5大构建系统,让你项目更加高效!

这不仅仅是一篇文章,而是一扇通往未来前端开发世界窗户。我决定将其翻译并整理,与大家一同探索这些可能改变我们工作方式工具。在这篇文章中,我们将一起揭开2024年构建系统神秘面纱。...让我们一起开始这场技术之旅,看看这些构建系统何在一年里助我们一臂之力。以下,是我为您准备精彩内容。...如果从零开始,这一系列工作需要几个月时间来设置,且需要持续监控以不断优化构建系统。这意味着,你花在提供业务价值上时间减少了,同时也让竞争对手有了超越机会。...Bazel:支持多语言构建系统 简介 Bazel构建系统中以其对多种编程语言支持而著称,允许开发者构建和测试用各种语言编写项目。...可复用开发环境:Bit提供包含所有必要工具和配置可复用开发环境,减少配置文件需求,tsconfig.json、ecliptic或prettier,促进开发设置一致性。

27110
领券