CINXE.COM
Bazel Glossary
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Bazel"> <meta property="og:type" content="website"><meta name="theme-color" content="#0c713a"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/bazel/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/favicon-prod.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/touchicon-180.png"><link rel="canonical" href="https://bazel.build/versions/7.2.0/reference/glossary"><link rel="search" type="application/opensearchdescription+xml" title="Bazel" href="https://bazel.build/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://bazel.build/versions/7.2.0/reference/glossary" /><link rel="alternate" hreflang="x-default" href="https://bazel.build/versions/7.2.0/reference/glossary" /><link rel="alternate" hreflang="zh-Hans" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=zh-tw" /><link rel="alternate" hreflang="hi" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=hi" /><link rel="alternate" hreflang="id" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=id" /><link rel="alternate" hreflang="ja" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=ja" /><link rel="alternate" hreflang="ko" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=ko" /><link rel="alternate" hreflang="pt-BR" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=pt-br" /><link rel="alternate" hreflang="es-419" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=es-419" /><link rel="alternate" hreflang="th" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=th" /><link rel="alternate" hreflang="tr" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=tr" /><link rel="alternate" hreflang="vi" href="https://bazel.build/versions/7.2.0/reference/glossary?hl=vi" /><link rel="alternate" hreflang="en-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary" /><link rel="alternate" hreflang="x-default" href="https://bazel.google.cn/versions/7.2.0/reference/glossary" /><link rel="alternate" hreflang="zh-Hans-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=zh-tw" /><link rel="alternate" hreflang="hi-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=hi" /><link rel="alternate" hreflang="id-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=id" /><link rel="alternate" hreflang="ja-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=ja" /><link rel="alternate" hreflang="ko-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=ko" /><link rel="alternate" hreflang="pt-BR-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=pt-br" /><link rel="alternate" hreflang="es-419-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=es-419" /><link rel="alternate" hreflang="th-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=th" /><link rel="alternate" hreflang="tr-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=tr" /><link rel="alternate" hreflang="vi-cn" href="https://bazel.google.cn/versions/7.2.0/reference/glossary?hl=vi" /><title>Bazel Glossary</title> <meta property="og:title" content="Bazel Glossary"><meta property="og:url" content="https://bazel.build/versions/7.2.0/reference/glossary"><meta property="og:locale" content="en"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Bazel Glossary" } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="bazel-theme" type="article" layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="bazel" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/lockup.svg" class="devsite-site-logo" alt="Bazel"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://bazel.build/versions/7.2.0/about" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/about" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - about bazel" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: About Bazel" track-name="about bazel" > About Bazel </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/start" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/start" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - getting started" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Getting started" track-name="getting started" > Getting started </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/docs" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - user guide" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: User guide" track-name="user guide" > User guide </a> </tab> <tab class="devsite-active"> <a href="https://bazel.build/versions/7.2.0/reference" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - reference" track-metadata-module="primary nav" aria-label="Reference, selected" data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" > Reference </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/extending" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/extending" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - extending" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Extending" track-name="extending" > Extending </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/community" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> <tab class="devsite-dropdown "> <a href="https://bazel.build/versions" track-metadata-eventdetail="https://bazel.build/versions" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - versions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Versions" track-name="versions" > Versions </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Versions" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions" track-metadata-position="nav - versions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Versions" track-name="versions" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/7.4.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/7.4.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 7.4 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/7.3.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/7.3.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 7.3 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/7.2.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/7.2.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 7.2 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/7.1.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/7.1.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 7.1 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/7.0.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/7.0.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 7.0 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions/6.5.0" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions/6.5.0" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 6.5 </div> </a> </li> <li class="devsite-nav-item"> <a href="https://docs.bazel.build/versions/5.4.1/bazel-overview.html" track-type="nav" track-metadata-eventdetail="https://docs.bazel.build/versions/5.4.1/bazel-overview.html" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> 5.4.1 </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://bazel.build/" track-type="nav" track-metadata-eventdetail="https://bazel.build/" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Nightly </div> </a> </li> <li class="devsite-nav-item"> <a href="https://bazel.build/versions" track-type="nav" track-metadata-eventdetail="https://bazel.build/versions" track-metadata-position="nav - versions" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> More… </div> </a> </li> </ul> </div> </div> </div> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Bazel" tenant-name="Bazel" > <form class="devsite-search-form" action="https://bazel.build/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//github.com/bazelbuild/bazel/" data-category="Site-Wide Custom Events" data-label="Site header link" > GitHub </a> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://bazel.build/versions/7.2.0/reference" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Searchable reference documents generated from Bazel's code </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://bazel.build/versions/7.2.0/reference/be/overview" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/reference/be/overview" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - build encyclopedia" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build encyclopedia" track-name="build encyclopedia" > Build encyclopedia </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/reference/command-line-reference" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/reference/command-line-reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - command line reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Command line reference" track-name="command line reference" > Command line reference </a> </tab> <tab > <a href="https://bazel.build/versions/7.2.0/query/language" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/query/language" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - query language" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Query language" track-name="query language" > Query language </a> </tab> <tab class="devsite-active"> <a href="https://bazel.build/versions/7.2.0/reference/glossary" track-metadata-eventdetail="https://bazel.build/versions/7.2.0/reference/glossary" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - glossary" track-metadata-module="primary nav" aria-label="Glossary, selected" data-category="Site-Wide Custom Events" data-label="Tab: Glossary" track-name="glossary" > Glossary </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter" hidden> <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="bazel" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/lockup.svg" class="devsite-site-logo" alt="Bazel"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/versions/7.2.0/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: About Bazel" track-name="about bazel" data-category="Site-Wide Custom Events" data-label="Responsive Tab: About Bazel" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About Bazel </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/start" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Getting started" track-name="getting started" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Getting started" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Getting started </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: User guide" track-name="user guide" data-category="Site-Wide Custom Events" data-label="Responsive Tab: User guide" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User guide </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/reference" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Reference </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/versions/7.2.0/reference/be/overview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Build encyclopedia" track-name="build encyclopedia" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build encyclopedia" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build encyclopedia </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/reference/command-line-reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Command line reference" track-name="command line reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Command line reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Command line reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/query/language" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Query language" track-name="query language" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Query language" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Query language </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/reference/glossary" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Glossary" track-name="glossary" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Glossary" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Glossary </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/extending" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Extending" track-name="extending" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Extending" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Extending </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Versions" track-name="versions" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Versions" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Versions </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Versions" track-name="versions" > <span class="devsite-nav-text" tooltip menu="Versions"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Versions"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="//github.com/bazelbuild/bazel/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: GitHub" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > GitHub </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="Versions" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/versions/7.4.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 7.4" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 7.4 </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.3.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 7.3" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 7.3 </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.2.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 7.2" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 7.2 </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.1.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 7.1" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 7.1 </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/7.0.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 7.0" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 7.0 </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions/6.5.0" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 6.5" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 6.5 </span> </a> </li> <li class="devsite-nav-item"> <a href="https://docs.bazel.build/versions/5.4.1/bazel-overview.html" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: 5.4.1" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > 5.4.1 </span> </a> </li> <li class="devsite-nav-item"> <a href="/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Nightly" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Nightly </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: More…" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > More… </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://bazel.build/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Bazel" > Bazel </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://bazel.build/versions/7.2.0/reference" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Reference </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://bazel.build/versions/7.2.0/reference/glossary" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="" > Glossary </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Bazel" product-id="5052038" bucket="https-bazel-build" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/touchicon-180.png" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Bazel Glossary </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/issues/new?title=%5Bbazel.build%5D+Problem+with+/versions/7.2.0/reference/glossary&template=doc_issue.yml&link=https%3A%2F%2Fbazel.build/versions/7.2.0/reference/glossary" target="_blank"> Report an issue<span class="material-icons icon-after" aria-hidden="true" translate="no">open_in_new</span> </a> <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/tree/master/site/en/versions/7.2.0/reference/glossary.md" target="_blank"> View source<span class="material-icons icon-after" aria-hidden="true" translate="no">open_in_new</span> </a> <span style="float: right; line-height: 36px"> <a href="/reference/glossary">Nightly</a> <!-- The lines below are updated by //scripts/docs:gen_new_toc --> <!-- BEGIN_VERSION_INDICATOR --> · <a href="/versions/7.4.0/reference/glossary">7.4</a> . <a href="/versions/7.3.0/reference/glossary">7.3</a> · <strong>7.2</strong> · <a href="/versions/7.1.0/reference/glossary">7.1</a> · <a href="/versions/7.0.0/reference/glossary">7.0</a> · <a href="/versions/6.5.0/reference/glossary">6.5</a> <!-- END_VERSION_INDICATOR --> </span> <p/> <h3 id="action" data-text="Action" tabindex="-1">Action</h3> <p>A command to run during the build, for example, a call to a compiler that takes <a href="#artifact">artifacts</a> as inputs and produces other artifacts as outputs. Includes metadata like the command line arguments, action key, environment variables, and declared input/output artifacts.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/rules#actions">Rules documentation</a></p> <h3 id="action-cache" data-text="Action cache" tabindex="-1">Action cache</h3> <p>An on-disk cache that stores a mapping of executed <a href="#action">actions</a> to the outputs they created. The cache key is known as the <a href="#action-key">action key</a>. A core component for Bazel's incrementality model. The cache is stored in the output base directory and thus survives Bazel server restarts.</p> <h3 id="action-graph" data-text="Action graph" tabindex="-1">Action graph</h3> <p>An in-memory graph of <a href="#action">actions</a> and the <a href="#artifact">artifacts</a> that these actions read and generate. The graph might include artifacts that exist as source files (for example, in the file system) as well as generated intermediate/final artifacts that are not mentioned in <code translate="no" dir="ltr">BUILD</code> files. Produced during the <a href="#analysis-phase">analysis phase</a> and used during the <a href="#execution-phase">execution phase</a>.</p> <h3 id="action-graph-query" data-text="Action graph query (aquery)" tabindex="-1">Action graph query (aquery)</h3> <p>A <a href="#query-concept">query</a> tool that can query over build <a href="#action">actions</a>. This provides the ability to analyze how <a href="#rule">build rules</a> translate into the actual work builds do.</p> <h3 id="action-key" data-text="Action key" tabindex="-1">Action key</h3> <p>The cache key of an <a href="#action">action</a>. Computed based on action metadata, which might include the command to be executed in the action, compiler flags, library locations, or system headers, depending on the action. Enables Bazel to cache or invalidate individual actions deterministically.</p> <h3 id="analysis-phase" data-text="Analysis phase" tabindex="-1">Analysis phase</h3> <p>The second phase of a build. Processes the <a href="#target-graph">target graph</a> specified in <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> files</a> to produce an in-memory <a href="#action-graph">action graph</a> that determines the order of actions to run during the <a href="#execution-phase">execution phase</a>. This is the phase in which rule implementations are evaluated.</p> <h3 id="artifact" data-text="Artifact" tabindex="-1">Artifact</h3> <p>A source file or a generated file. Can also be a directory of files, known as <a href="#tree-artifact">tree artifacts</a>.</p> <p>An artifact may be an input to multiple actions, but must only be generated by at most one action.</p> <p>An artifact that corresponds to a <a href="#target">file target</a> can be addressed by a label.</p> <h3 id="aspect" data-text="Aspect" tabindex="-1">Aspect</h3> <p>A mechanism for rules to create additional <a href="#action">actions</a> in their dependencies. For example, if target A depends on B, one can apply an aspect on A that traverses <em>up</em> a dependency edge to B, and runs additional actions in B to generate and collect additional output files. These additional actions are cached and reused between targets requiring the same aspect. Created with the <code translate="no" dir="ltr">aspect()</code> Starlark Build API function. Can be used, for example, to generate metadata for IDEs, and create actions for linting.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/aspects">Aspects documentation</a></p> <h3 id="aspect-on-aspect" data-text="Aspect-on-aspect" tabindex="-1">Aspect-on-aspect</h3> <p>A composition mechanism whereby aspects can be applied to the results of other aspects. For example, an aspect that generates information for use by IDEs can be applied on top of an aspect that generates <code translate="no" dir="ltr">.java</code> files from a proto.</p> <p>For an aspect <code translate="no" dir="ltr">A</code> to apply on top of aspect <code translate="no" dir="ltr">B</code>, the <a href="#provider">providers</a> that <code translate="no" dir="ltr">B</code> advertises in its <a href="/versions/7.2.0/rules/lib/globals#aspect.provides"><code translate="no" dir="ltr">provides</code></a> attribute must match what <code translate="no" dir="ltr">A</code> declares it wants in its <a href="/versions/7.2.0/rules/lib/globals#aspect.required_aspect_providers"><code translate="no" dir="ltr">required_aspect_providers</code></a> attribute.</p> <h3 id="attribute" data-text="Attribute" tabindex="-1">Attribute</h3> <p>A parameter to a <a href="#rule">rule</a>, used to express per-target build information. Examples include <code translate="no" dir="ltr">srcs</code>, <code translate="no" dir="ltr">deps</code>, and <code translate="no" dir="ltr">copts</code>, which respectively declare a target's source files, dependencies, and custom compiler options. The particular attributes available for a given target depend on its rule type.</p> <h3 id="bazelrc" data-text=".bazelrc" tabindex="-1">.bazelrc</h3> <p>Bazel’s configuration file used to change the default values for <a href="#startup-flags">startup flags</a> and <a href="#command-flags">command flags</a>, and to define common groups of options that can then be set together on the Bazel command line using a <code translate="no" dir="ltr">--config</code> flag. Bazel can combine settings from multiple bazelrc files (systemwide, per-workspace, per-user, or from a custom location), and a <code translate="no" dir="ltr">bazelrc</code> file may also import settings from other <code translate="no" dir="ltr">bazelrc</code> files.</p> <h3 id="blaze" data-text="Blaze" tabindex="-1">Blaze</h3> <p>The Google-internal version of Bazel. Google’s main build system for its mono-repository.</p> <h3 id="build-file" data-text="BUILD File" tabindex="-1">BUILD File</h3> <p>A <code translate="no" dir="ltr">BUILD</code> file is the main configuration file that tells Bazel what software outputs to build, what their dependencies are, and how to build them. Bazel takes a <code translate="no" dir="ltr">BUILD</code> file as input and uses the file to create a graph of dependencies and to derive the actions that must be completed to build intermediate and final software outputs. A <code translate="no" dir="ltr">BUILD</code> file marks a directory and any sub-directories not containing a <code translate="no" dir="ltr">BUILD</code> file as a <a href="#package">package</a>, and can contain <a href="#target">targets</a> created by <a href="#rule">rules</a>. The file can also be named <code translate="no" dir="ltr">BUILD.bazel</code>.</p> <h3 id="build-bazel-file" data-text="BUILD.bazel File" tabindex="-1">BUILD.bazel File</h3> <p>See <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> File</a>. Takes precedence over a <code translate="no" dir="ltr">BUILD</code> file in the same directory.</p> <h3 id="bzl-file" data-text=".bzl File" tabindex="-1">.bzl File</h3> <p>A file that defines rules, <a href="#macro">macros</a>, and constants written in <a href="#starlark">Starlark</a>. These can then be imported into <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> files</a> using the <code translate="no" dir="ltr">load()</code> function.</p> <!-- TODO: ### Build event protocol --> <!-- TODO: ### Build flag --> <h3 id="build-graph" data-text="Build graph" tabindex="-1">Build graph</h3> <p>The dependency graph that Bazel constructs and traverses to perform a build. Includes nodes like <a href="#target">targets</a>, <a href="#configured-target">configured targets</a>, <a href="#action">actions</a>, and <a href="#artifact">artifacts</a>. A build is considered complete when all <a href="#artifact">artifacts</a> on which a set of requested targets depend are verified as up-to-date.</p> <h3 id="build-setting" data-text="Build setting" tabindex="-1">Build setting</h3> <p>A Starlark-defined piece of <a href="#configuration">configuration</a>. <a href="#transition">Transitions</a> can set build settings to change a subgraph's configuration. If exposed to the user as a <a href="#command-flags">command-line flag</a>, also known as a build flag.</p> <h3 id="clean-build" data-text="Clean build" tabindex="-1">Clean build</h3> <p>A build that doesn't use the results of earlier builds. This is generally slower than an <a href="#incremental-build">incremental build</a> but commonly considered to be more <a href="#correctness">correct</a>. Bazel guarantees both clean and incremental builds are always correct.</p> <h3 id="client-server-model" data-text="Client-server model" tabindex="-1">Client-server model</h3> <p>The <code translate="no" dir="ltr">bazel</code> command-line client automatically starts a background server on the local machine to execute Bazel <a href="#command">commands</a>. The server persists across commands but automatically stops after a period of inactivity (or explicitly via bazel shutdown). Splitting Bazel into a server and client helps amortize JVM startup time and supports faster <a href="#incremental-build">incremental builds</a> because the <a href="#action-graph">action graph</a> remains in memory across commands.</p> <h3 id="command" data-text="Command" tabindex="-1">Command</h3> <p>Used on the command line to invoke different Bazel functions, like <code translate="no" dir="ltr">bazel build</code>, <code translate="no" dir="ltr">bazel test</code>, <code translate="no" dir="ltr">bazel run</code>, and <code translate="no" dir="ltr">bazel query</code>.</p> <h3 id="command-flags" data-text="Command flags" tabindex="-1">Command flags</h3> <p>A set of flags specific to a <a href="#command">command</a>. Command flags are specified <em>after</em> the command (<code translate="no" dir="ltr">bazel build <command flags></code>). Flags can be applicable to one or more commands. For example, <code translate="no" dir="ltr">--configure</code> is a flag exclusively for the <code translate="no" dir="ltr">bazel sync</code> command, but <code translate="no" dir="ltr">--keep_going</code> is applicable to <code translate="no" dir="ltr">sync</code>, <code translate="no" dir="ltr">build</code>, <code translate="no" dir="ltr">test</code> and more. Flags are often used for <a href="#configuration">configuration</a> purposes, so changes in flag values can cause Bazel to invalidate in-memory graphs and restart the <a href="#analysis-phase">analysis phase</a>.</p> <h3 id="configuration" data-text="Configuration" tabindex="-1">Configuration</h3> <p>Information outside of <a href="#rule">rule</a> definitions that impacts how rules generate <a href="#action">actions</a>. Every build has at least one configuration specifying the target platform, action environment variables, and command-line <a href="#command-flags">build flags</a>. <a href="#transition">Transitions</a> may create additional configurations, such as for host tools or cross-compilation.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/rules#configurations">Configurations</a></p> <!-- TODO: ### Configuration fragment --> <h3 id="config-trimming" data-text="Configuration trimming" tabindex="-1">Configuration trimming</h3> <p>The process of only including the pieces of <a href="#configuration">configuration</a> a target actually needs. For example, if you build Java binary <code translate="no" dir="ltr">//:j</code> with C++ dependency <code translate="no" dir="ltr">//:c</code>, it's wasteful to include the value of <code translate="no" dir="ltr">--javacopt</code> in the configuration of <code translate="no" dir="ltr">//:c</code> because changing <code translate="no" dir="ltr">--javacopt</code> unnecessarily breaks C++ build cacheability.</p> <h3 id="configured-query" data-text="Configured query (cquery)" tabindex="-1">Configured query (cquery)</h3> <p>A <a href="#query-concept">query</a> tool that queries over <a href="#configured-target">configured targets</a> (after the <a href="#analysis-phase">analysis phase</a> completes). This means <code translate="no" dir="ltr">select()</code> and <a href="#command-flags">build flags</a> (such as <code translate="no" dir="ltr">--platforms</code>) are accurately reflected in the results.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/query/cquery">cquery documentation</a></p> <h3 id="configured-target" data-text="Configured target" tabindex="-1">Configured target</h3> <p>The result of evaluating a <a href="#target">target</a> with a <a href="#configuration">configuration</a>. The <a href="#analysis-phase">analysis phase</a> produces this by combining the build's options with the targets that need to be built. For example, if <code translate="no" dir="ltr">//:foo</code> builds for two different architectures in the same build, it has two configured targets: <code translate="no" dir="ltr"><//:foo, x86></code> and <code translate="no" dir="ltr"><//:foo, arm></code>.</p> <h3 id="correctness" data-text="Correctness" tabindex="-1">Correctness</h3> <p>A build is correct when its output faithfully reflects the state of its transitive inputs. To achieve correct builds, Bazel strives to be <a href="#hermeticity">hermetic</a>, reproducible, and making <a href="#analysis-phase">build analysis</a> and <a href="#execution-phase">action execution</a> deterministic.</p> <h3 id="dependency" data-text="Dependency" tabindex="-1">Dependency</h3> <p>A directed edge between two <a href="#target">targets</a>. A target <code translate="no" dir="ltr">//:foo</code> has a <em>target dependency</em> on target <code translate="no" dir="ltr">//:bar</code> if <code translate="no" dir="ltr">//:foo</code>'s attribute values contain a reference to <code translate="no" dir="ltr">//:bar</code>. <code translate="no" dir="ltr">//:foo</code> has an <em>action dependency</em> on <code translate="no" dir="ltr">//:bar</code> if an action in <code translate="no" dir="ltr">//:foo</code> depends on an input <a href="#artifact">artifact</a> created by an action in <code translate="no" dir="ltr">//:bar</code>.</p> <p>In certain contexts, it could also refer to an <em>external dependency</em>; see <a href="#module">modules</a>.</p> <h3 id="depset" data-text="Depset" tabindex="-1">Depset</h3> <p>A data structure for collecting data on transitive dependencies. Optimized so that merging depsets is time and space efficient, because it’s common to have very large depsets (hundreds of thousands of files). Implemented to recursively refer to other depsets for space efficiency reasons. <a href="#rule">Rule</a> implementations should not "flatten" depsets by converting them to lists unless the rule is at the top level of the build graph. Flattening large depsets incurs huge memory consumption. Also known as <em>nested sets</em> in Bazel's internal implementation.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/depsets">Depset documentation</a></p> <h3 id="disk-cache" data-text="Disk cache" tabindex="-1">Disk cache</h3> <p>A local on-disk blob store for the remote caching feature. Can be used in conjunction with an actual remote blob store.</p> <h3 id="distdir" data-text="Distdir" tabindex="-1">Distdir</h3> <p>A read-only directory containing files that Bazel would otherwise fetch from the internet using repository rules. Enables builds to run fully offline.</p> <h3 id="dynamic-execution" data-text="Dynamic execution" tabindex="-1">Dynamic execution</h3> <p>An execution strategy that selects between local and remote execution based on various heuristics, and uses the execution results of the faster successful method. Certain <a href="#action">actions</a> are executed faster locally (for example, linking) and others are faster remotely (for example, highly parallelizable compilation). A dynamic execution strategy can provide the best possible incremental and clean build times.</p> <h3 id="execution-phase" data-text="Execution phase" tabindex="-1">Execution phase</h3> <p>The third phase of a build. Executes the <a href="#action">actions</a> in the <a href="#action-graph">action graph</a> created during the <a href="#analysis-phase">analysis phase</a>. These actions invoke executables (compilers, scripts) to read and write <a href="#artifact">artifacts</a>. <em>Spawn strategies</em> control how these actions are executed: locally, remotely, dynamically, sandboxed, docker, and so on.</p> <h3 id="execution-root" data-text="Execution root" tabindex="-1">Execution root</h3> <p>A directory in the <a href="#workspace">workspace</a>’s <a href="#output-base">output base</a> directory where local <a href="#action">actions</a> are executed in non-<a href="#sandboxing">sandboxed</a> builds. The directory contents are mostly symlinks of input <a href="#artifact">artifacts</a> from the workspace. The execution root also contains symlinks to external repositories as other inputs and the <code translate="no" dir="ltr">bazel-out</code> directory to store outputs. Prepared during the <a href="#loading-phase">loading phase</a> by creating a <em>symlink forest</em> of the directories that represent the transitive closure of packages on which a build depends. Accessible with <code translate="no" dir="ltr">bazel info execution_root</code> on the command line.</p> <h3 id="file" data-text="File" tabindex="-1">File</h3> <p>See <a href="#artifact">Artifact</a>.</p> <h3 id="hermeticity" data-text="Hermeticity" tabindex="-1">Hermeticity</h3> <p>A build is hermetic if there are no external influences on its build and test operations, which helps to make sure that results are deterministic and <a href="#correctness">correct</a>. For example, hermetic builds typically disallow network access to actions, restrict access to declared inputs, use fixed timestamps and timezones, restrict access to environment variables, and use fixed seeds for random number generators</p> <h3 id="incremental-build" data-text="Incremental build" tabindex="-1">Incremental build</h3> <p>An incremental build reuses the results of earlier builds to reduce build time and resource usage. Dependency checking and caching aim to produce correct results for this type of build. An incremental build is the opposite of a clean build.</p> <!-- TODO: ### Install base --> <h3 id="label" data-text="Label" tabindex="-1">Label</h3> <p>An identifier for a <a href="#target">target</a>. Generally has the form <code translate="no" dir="ltr">@repo//path/to/package:target</code>, where <code translate="no" dir="ltr">repo</code> is the (apparent) name of the <a href="#repository">repository</a> containing the target, <code translate="no" dir="ltr">path/to/package</code> is the path to the directory that contains the <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> file</a> declaring the target (this directory is also known as the <a href="#package">package</a>), and <code translate="no" dir="ltr">target</code> is the name of the target itself. Depending on the situation, parts of this syntax may be omitted.</p> <p><strong>See also</strong>: <a href="/versions/7.2.0/concepts/labels">Labels</a></p> <h3 id="loading-phase" data-text="Loading phase" tabindex="-1">Loading phase</h3> <p>The first phase of a build where Bazel executes <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> files</a> to create <a href="#package">packages</a>. <a href="#macro">Macros</a> and certain functions like <code translate="no" dir="ltr">glob()</code> are evaluated in this phase. Interleaved with the second phase of the build, the <a href="#analysis-phase">analysis phase</a>, to build up a <a href="#target-graph">target graph</a>.</p> <h3 id="macro" data-text="Macro" tabindex="-1">Macro</h3> <p>A mechanism to compose multiple <a href="#rule">rule</a> target declarations together under a single <a href="#starlark">Starlark</a> function. Enables reusing common rule declaration patterns across <code translate="no" dir="ltr">BUILD</code> files. Expanded to the underlying rule target declarations during the <a href="#loading-phase">loading phase</a>.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/macros">Macro documentation</a></p> <h3 id="mnemonic" data-text="Mnemonic" tabindex="-1">Mnemonic</h3> <p>A short, human-readable string selected by a rule author to quickly understand what an <a href="#action">action</a> in the rule is doing. Mnemonics can be used as identifiers for <em>spawn strategy</em> selections. Some examples of action mnemonics are <code translate="no" dir="ltr">Javac</code> from Java rules, <code translate="no" dir="ltr">CppCompile</code> from C++ rules, and <code translate="no" dir="ltr">AndroidManifestMerger</code> from Android rules.</p> <h3 id="module" data-text="Module" tabindex="-1">Module</h3> <p>A Bazel project that can have multiple versions, each of which can have dependencies on other modules. This is analogous to familiar concepts in other dependency management systems, such as a Maven <em>artifact</em>, an npm <em>package</em>, a Go <em>module</em>, or a Cargo <em>crate</em>. Modules form the backbone of Bazel's external dependency management system.</p> <p>Each module is backed by a <a href="#repository">repo</a> with a <code translate="no" dir="ltr">MODULE.bazel</code> file at its root. This file contains metadata about the module itself (such as its name and version), its direct dependencies, and various other data including toolchain registrations and <a href="#module-extension">module extension</a> input.</p> <p>Module metadata is hosted in Bazel registries.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/external/module">Bazel modules</a></p> <h3 id="module-extension" data-text="Module Extension" tabindex="-1">Module Extension</h3> <p>A piece of logic that can be run to generate <a href="#repository">repos</a> by reading inputs from across the <a href="#module">module</a> dependency graph and invoking <a href="#repository-rule">repo rules</a>. Module extensions have capabilities similar to repo rules, allowing them to access the internet, perform file I/O, and so on.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/external/extension">Module extensions</a></p> <h3 id="native-rules" data-text="Native rules" tabindex="-1">Native rules</h3> <p><a href="#rule">Rules</a> that are built into Bazel and implemented in Java. Such rules appear in <a href="#bzl-file"><code translate="no" dir="ltr">.bzl</code> files</a> as functions in the native module (for example, <code translate="no" dir="ltr">native.cc_library</code> or <code translate="no" dir="ltr">native.java_library</code>). User-defined rules (non-native) are created using <a href="#starlark">Starlark</a>.</p> <h3 id="output-base" data-text="Output base" tabindex="-1">Output base</h3> <p>A <a href="#workspace">workspace</a>-specific directory to store Bazel output files. Used to separate outputs from the <em>workspace</em>'s source tree (the <a href="#repository">main repo</a>). Located in the <a href="#output-user-root">output user root</a>.</p> <h3 id="output-groups" data-text="Output groups" tabindex="-1">Output groups</h3> <p>A group of files that is expected to be built when Bazel finishes building a target. <a href="#rule">Rules</a> put their usual outputs in the "default output group" (e.g the <code translate="no" dir="ltr">.jar</code> file of a <code translate="no" dir="ltr">java_library</code>, <code translate="no" dir="ltr">.a</code> and <code translate="no" dir="ltr">.so</code> for <code translate="no" dir="ltr">cc_library</code> targets). The default output group is the output group whose <a href="#artifact">artifacts</a> are built when a target is requested on the command line. Rules can define more named output groups that can be explicitly specified in <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> files</a> (<code translate="no" dir="ltr">filegroup</code> rule) or the command line (<code translate="no" dir="ltr">--output_groups</code> flag).</p> <h3 id="output-user-root" data-text="Output user root" tabindex="-1">Output user root</h3> <p>A user-specific directory to store Bazel's outputs. The directory name is derived from the user's system username. Prevents output file collisions if multiple users are building the same project on the system at the same time. Contains subdirectories corresponding to build outputs of individual workspaces, also known as <a href="#output-base">output bases</a>.</p> <h3 id="package" data-text="Package" tabindex="-1">Package</h3> <p>The set of <a href="#target">targets</a> defined by a <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> file</a>. A package's name is the <code translate="no" dir="ltr">BUILD</code> file's path relative to the <a href="#repository">repo</a> root. A package can contain subpackages, or subdirectories containing <code translate="no" dir="ltr">BUILD</code> files, thus forming a package hierarchy.</p> <h3 id="package-group" data-text="Package group" tabindex="-1">Package group</h3> <p>A <a href="#target">target</a> representing a set of packages. Often used in <code translate="no" dir="ltr">visibility</code> attribute values.</p> <h3 id="platform" data-text="Platform" tabindex="-1">Platform</h3> <p>A "machine type" involved in a build. This includes the machine Bazel runs on (the "host" platform), the machines build tools execute on ("exec" platforms), and the machines targets are built for ("target platforms").</p> <h3 id="provider" data-text="Provider" tabindex="-1">Provider</h3> <p>A schema describing a unit of information to pass between <a href="#rule-target">rule targets</a> along dependency relationships. Typically this contains information like compiler options, transitive source or output files, and build metadata. Frequently used in conjunction with <a href="#depset">depsets</a> to efficiently store accumulated transitive data. An example of a built-in provider is <code translate="no" dir="ltr">DefaultInfo</code>.</p> <aside class="note"><strong>Note:</strong><span> The object holding specific data for a given rule target is referred to as a "provider instance", although sometimes this is conflated with "provider".</span></aside> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/rules#providers">Provider documentation</a></p> <h3 id="query-concept" data-text="Query (concept)" tabindex="-1">Query (concept)</h3> <p>The process of analyzing a <a href="#build-graph">build graph</a> to understand <a href="#target">target</a> properties and dependency structures. Bazel supports three query variants: <a href="#query-command">query</a>, <a href="#configured-query">cquery</a>, and <a href="#action-graph-query">aquery</a>.</p> <h3 id="query-command" data-text="query (command)" tabindex="-1">query (command)</h3> <p>A <a href="#query-concept">query</a> tool that operates over the build's post-<a href="#loading-phase">loading phase</a> <a href="#target-graph">target graph</a>. This is relatively fast, but can't analyze the effects of <code translate="no" dir="ltr">select()</code>, <a href="#command-flags">build flags</a>, <a href="#artifact">artifacts</a>, or build <a href="#action">actions</a>.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/query/guide">Query how-to</a>, <a href="/versions/7.2.0/query/language">Query reference</a></p> <h3 id="repository" data-text="Repository" tabindex="-1">Repository</h3> <p>A directory tree with a boundary marker file at its root, containing source files that can be used in a Bazel build. Often shortened to just <strong>repo</strong>.</p> <p>A repo boundary marker file can be <code translate="no" dir="ltr">MODULE.bazel</code> (signaling that this repo represents a Bazel module), <code translate="no" dir="ltr">REPO.bazel</code>, or in legacy contexts, <code translate="no" dir="ltr">WORKSPACE</code> or <code translate="no" dir="ltr">WORKSPACE.bazel</code>. Any repo boundary marker file will signify the boundary of a repo; multiple such files can coexist in a directory.</p> <p>The <em>main repo</em> is the repo in which the current Bazel command is being run.</p> <p><em>External repos</em> are defined by specifying <a href="#module">modules</a> in <code translate="no" dir="ltr">MODULE.bazel</code> files, or invoking <a href="#repository-rule">repo rules</a> in <a href="#module-extension">module extensions</a>. They can be fetched on demand to a predetermined "magical" location on disk.</p> <p>Each repo has a unique, constant <em>canonical</em> name, and potentially different <em>apparent</em> names when viewed from other repos.</p> <p><strong>See also</strong>: <a href="/versions/7.2.0/external/overview">External dependencies overview</a></p> <h3 id="repo-cache" data-text="Repository cache" tabindex="-1">Repository cache</h3> <p>A shared content-addressable cache of files downloaded by Bazel for builds, shareable across <a href="#workspace">workspaces</a>. Enables offline builds after the initial download. Commonly used to cache files downloaded through <a href="#repository-rule">repository rules</a> like <code translate="no" dir="ltr">http_archive</code> and repository rule APIs like <code translate="no" dir="ltr">repository_ctx.download</code>. Files are cached only if their SHA-256 checksums are specified for the download.</p> <h3 id="repository-rule" data-text="Repository rule" tabindex="-1">Repository rule</h3> <p>A schema for repository definitions that tells Bazel how to materialize (or "fetch") a <a href="#repository">repository</a>. Often shortened to just <strong>repo rule</strong>. Repo rules are invoked by Bazel internally to define repos backed by <a href="#module">modules</a>, or can be invoked by <a href="#module-extension">module extensions</a>. Repo rules can access the internet or perform file I/O; the most common repo rule is <code translate="no" dir="ltr">http_archive</code> to download an archive containing source files from the internet.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/repo">Repo rule documentation</a></p> <h3 id="reproducibility" data-text="Reproducibility" tabindex="-1">Reproducibility</h3> <p>The property of a build or test that a set of inputs to the build or test will always produce the same set of outputs every time, regardless of time, method, or environment. Note that this does not necessarily imply that the outputs are <a href="#correctness">correct</a> or the desired outputs.</p> <h3 id="rule" data-text="Rule" tabindex="-1">Rule</h3> <p>A schema for defining <a href="#rule-target">rule targets</a> in a <code translate="no" dir="ltr">BUILD</code> file, such as <code translate="no" dir="ltr">cc_library</code>. From the perspective of a <code translate="no" dir="ltr">BUILD</code> file author, a rule consists of a set of <a href="#attributes">attributes</a> and black box logic. The logic tells the rule target how to produce output <a href="#artifact">artifacts</a> and pass information to other rule targets. From the perspective of <code translate="no" dir="ltr">.bzl</code> authors, rules are the primary way to extend Bazel to support new programming languages and environments.</p> <p>Rules are instantiated to produce rule targets in the <a href="#loading-phase">loading phase</a>. In the <a href="#analysis-phase">analysis phase</a> rule targets communicate information to their downstream dependencies in the form of <a href="#provider">providers</a>, and register <a href="#action">actions</a> describing how to generate their output artifacts. These actions are run in the <a href="#execution-phase">execution phase</a>.</p> <aside class="note"><strong>Note:</strong><span> Historically the term "rule" has been used to refer to a rule target. This usage was inherited from tools like Make, but causes confusion and should be avoided for Bazel.</span></aside> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/rules">Rules documentation</a></p> <h3 id="rule-target" data-text="Rule target" tabindex="-1">Rule target</h3> <p>A <a href="#target">target</a> that is an instance of a rule. Contrasts with file targets and package groups. Not to be confused with <a href="#rule">rule</a>.</p> <h3 id="runfiles" data-text="Runfiles" tabindex="-1">Runfiles</h3> <p>The runtime dependencies of an executable <a href="#target">target</a>. Most commonly, the executable is the executable output of a test rule, and the runfiles are runtime data dependencies of the test. Before the invocation of the executable (during bazel test), Bazel prepares the tree of runfiles alongside the test executable according to their source directory structure.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/rules#runfiles">Runfiles documentation</a></p> <h3 id="sandboxing" data-text="Sandboxing" tabindex="-1">Sandboxing</h3> <p>A technique to isolate a running <a href="#action">action</a> inside a restricted and temporary <a href="#execution-root">execution root</a>, helping to ensure that it doesn’t read undeclared inputs or write undeclared outputs. Sandboxing greatly improves <a href="#hermeticity">hermeticity</a>, but usually has a performance cost, and requires support from the operating system. The performance cost depends on the platform. On Linux, it's not significant, but on macOS it can make sandboxing unusable.</p> <h3 id="skyframe" data-text="Skyframe" tabindex="-1">Skyframe</h3> <p><a href="/versions/7.2.0/reference/skyframe">Skyframe</a> is the core parallel, functional, and incremental evaluation framework of Bazel.</p> <!-- TODO: ### Spawn strategy --> <h3 id="stamping" data-text="Stamping" tabindex="-1">Stamping</h3> <p>A feature to embed additional information into Bazel-built <a href="#artifact">artifacts</a>. For example, this can be used for source control, build time and other workspace or environment-related information for release builds. Enable through the <code translate="no" dir="ltr">--workspace_status_command</code> flag and <a href="/versions/7.2.0/extending/rules">rules</a> that support the stamp attribute.</p> <h3 id="starlark" data-text="Starlark" tabindex="-1">Starlark</h3> <p>The extension language for writing <a href="/versions/7.2.0/extending/rules">rules</a> and <a href="#macro">macros</a>. A restricted subset of Python (syntactically and grammatically) aimed for the purpose of configuration, and for better performance. Uses the <a href="#bzl-file"><code translate="no" dir="ltr">.bzl</code> file</a> extension. <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> files</a> use an even more restricted version of Starlark (such as no <code translate="no" dir="ltr">def</code> function definitions), formerly known as Skylark.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/rules/language">Starlark language documentation</a></p> <!-- TODO: ### Starlark rules --> <!-- TODO: ### Starlark rule sandwich --> <h3 id="startup-flags" data-text="Startup flags" tabindex="-1">Startup flags</h3> <p>The set of flags specified between <code translate="no" dir="ltr">bazel</code> and the <a href="#query-command">command</a>, for example, bazel <code translate="no" dir="ltr">--host_jvm_debug</code> build. These flags modify the <a href="#configuration">configuration</a> of the Bazel server, so any modification to startup flags causes a server restart. Startup flags are not specific to any command.</p> <h3 id="target" data-text="Target" tabindex="-1">Target</h3> <p>An object that is defined in a <a href="#build-file"><code translate="no" dir="ltr">BUILD</code> file</a> and identified by a <a href="#label">label</a>. Targets represent the buildable units of a workspace from the perspective of the end user.</p> <p>A target that is declared by instantiating a <a href="#rule">rule</a> is called a <a href="#rule-target">rule target</a>. Depending on the rule, these may be runnable (like <code translate="no" dir="ltr">cc_binary</code>) or testable (like <code translate="no" dir="ltr">cc_test</code>). Rule targets typically depend on other targets via their <a href="#attribute">attributes</a> (such as <code translate="no" dir="ltr">deps</code>); these dependencies form the basis of the <a href="#target-graph">target graph</a>.</p> <p>Aside from rule targets, there are also file targets and <a href="#package-group">package group</a> targets. File targets correspond to <a href="#artifact">artifacts</a> that are referenced within a <code translate="no" dir="ltr">BUILD</code> file. As a special case, the <code translate="no" dir="ltr">BUILD</code> file of any package is always considered a source file target in that package.</p> <p>Targets are discovered during the <a href="#loading-phase">loading phase</a>. During the <a href="#analysis-phase">analysis phase</a>, targets are associated with <a href="#configuration">build configurations</a> to form <a href="#configured-target">configured targets</a>.</p> <h3 id="target-graph" data-text="Target graph" tabindex="-1">Target graph</h3> <p>An in-memory graph of <a href="#target">targets</a> and their dependencies. Produced during the <a href="#loading-phase">loading phase</a> and used as an input to the <a href="#analysis-phase">analysis phase</a>.</p> <h3 id="target-pattern" data-text="Target pattern" tabindex="-1">Target pattern</h3> <p>A way to specify a group of <a href="#target">targets</a> on the command line. Commonly used patterns are <code translate="no" dir="ltr">:all</code> (all rule targets), <code translate="no" dir="ltr">:*</code> (all rule + file targets), <code translate="no" dir="ltr">...</code> (current <a href="#package">package</a> and all subpackages recursively). Can be used in combination, for example, <code translate="no" dir="ltr">//...:*</code> means all rule and file targets in all packages recursively from the root of the <a href="#workspace">workspace</a>.</p> <h3 id="tests" data-text="Tests" tabindex="-1">Tests</h3> <p>Rule <a href="#target">targets</a> instantiated from test rules, and therefore contains a test executable. A return code of zero from the completion of the executable indicates test success. The exact contract between Bazel and tests (such as test environment variables, test result collection methods) is specified in the <a href="/reference/test-encyclopedia">Test Encyclopedia</a>.</p> <h3 id="toolchain" data-text="Toolchain" tabindex="-1">Toolchain</h3> <p>A set of tools to build outputs for a language. Typically, a toolchain includes compilers, linkers, interpreters or/and linters. A toolchain can also vary by platform, that is, a Unix compiler toolchain's components may differ for the Windows variant, even though the toolchain is for the same language. Selecting the right toolchain for the platform is known as toolchain resolution.</p> <h3 id="top-level-target" data-text="Top-level target" tabindex="-1">Top-level target</h3> <p>A build <a href="#target">target</a> is top-level if it’s requested on the Bazel command line. For example, if <code translate="no" dir="ltr">//:foo</code> depends on <code translate="no" dir="ltr">//:bar</code>, and <code translate="no" dir="ltr">bazel build //:foo</code> is called, then for this build, <code translate="no" dir="ltr">//:foo</code> is top-level, and <code translate="no" dir="ltr">//:bar</code> isn’t top-level, although both targets will need to be built. An important difference between top-level and non-top-level targets is that <a href="#command-flags">command flags</a> set on the Bazel command line (or via <a href="#bazelrc">.bazelrc</a>) will set the <a href="#configuration">configuration</a> for top-level targets, but might be modified by a <a href="#transition">transition</a> for non-top-level targets.</p> <h3 id="transition" data-text="Transition" tabindex="-1">Transition</h3> <p>A mapping of <a href="#configuration">configuration</a> state from one value to another. Enables <a href="#target">targets</a> in the <a href="#build-graph">build graph</a> to have different configurations, even if they were instantiated from the same <a href="#rule">rule</a>. A common usage of transitions is with <em>split</em> transitions, where certain parts of the <a href="#target-graph">target graph</a> is forked with distinct configurations for each fork. For example, one can build an Android APK with native binaries compiled for ARM and x86 using split transitions in a single build.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/extending/config#user-defined-transitions">User-defined transitions</a></p> <h3 id="tree-artifact" data-text="Tree artifact" tabindex="-1">Tree artifact</h3> <p>An <a href="#artifact">artifact</a> that represents a collection of files. Since these files are not themselves artifacts, an <a href="#action">action</a> operating on them must instead register the tree artifact as its input or output.</p> <h3 id="visibility" data-text="Visibility" tabindex="-1">Visibility</h3> <p>One of two mechanisms for preventing unwanted dependencies in the build system: <em>target visibility</em> for controlling whether a <a href="#target">target</a> can be depended upon by other targets; and <em>load visibility</em> for controlling whether a <code translate="no" dir="ltr">BUILD</code> or <code translate="no" dir="ltr">.bzl</code> file may load a given <code translate="no" dir="ltr">.bzl</code> file. Without context, usually "visibility" refers to target visibility.</p> <p><strong>See also:</strong> <a href="/versions/7.2.0/concepts/visibility">Visibility documentation</a></p> <h3 id="workspace" data-text="Workspace" tabindex="-1">Workspace</h3> <p>The environment shared by all Bazel commands run from the same <a href="#repository">main repository</a>.</p> <p>Note that historically the concepts of "repository" and "workspace" have been conflated; the term "workspace" has often been used to refer to the main repository, and sometimes even used as a synonym of "repository". Such usage should be avoided for clarity.</p> </div> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Bazel" product-id="5052038" bucket="https-bazel-build" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/touchicon-180.png" > <button> Send feedback </button> </devsite-feedback> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-10-22 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Bazel" product-id="5052038" bucket="https-bazel-build" context="" version="t-devsite-webserver-20241114-r00-rc02.464921008191574316" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/touchicon-180.png" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-22 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">About</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/community/users" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Who's using Bazel </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/contribute/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Contribute </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/contribute/contribution-policy" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Governance model </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/release" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Release model </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/brand" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Brand guidelines </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//blog.bazel.build" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//github.com/bazelbuild/bazel" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > GitHub </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/bazelbuild" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//youtube.com/user/googleOSPO" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/help" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//github.com/bazelbuild/bazel/issues" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Issue tracker </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//slack.bazel.build" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Slack </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//stackoverflow.com/questions/tagged/bazel" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Stack Overflow </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension4": "en", "dimension1": "Signed out", "dimension3": "en", "dimension5": false, "dimension2": false}, "gaid": "UA-61082125-3", "metrics": {}, "purpose": 0}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-GBZW986TQ3", "purpose": 0}], "ga4p": [{"id": "G-GBZW986TQ3", "purpose": 0}], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Bazel", "signedIn": "False", "tenant": "bazel", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="zdVw+xVss7eU8BpbcM5TkIdiAMTfJi"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/js/app_loader.js', '[40,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel","https://bazel-dot-devsite-v2-prod-3p.appspot.com",null,null,["/_pwa/bazel/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/favicon-prod.png","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/bazel/images/lockup.svg","https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY","bazel.build","AIzaSyB9bqgQ2t11WJsOX8qNsCQ6U-w91mmqF-I","AIzaSyAdYnStPdzjcJJtQ0mvIaeaMKj7_t6J_Fg",null,null,null,["Cloud__enable_legacy_calculator_redirect","Search__enable_dynamic_content_confidential_banner","CloudShell__cloud_code_overflow_menu","Profiles__enable_awarding_url","Profiles__enable_completecodelab_endpoint","Experiments__reqs_query_experiments","Cloud__enable_free_trial_server_call","Cloud__enable_cloud_dlp_service","CloudShell__cloud_shell_button","Concierge__enable_pushui","BookNav__enable_tenant_cache_key","TpcFeatures__enable_required_headers","Cloud__enable_cloudx_ping","SignIn__enable_oauth_multi_account_support","MiscFeatureFlags__developers_footer_dark_image","Cloud__enable_cloud_facet_chat","Profiles__require_profile_eligibility_for_signin","Search__enable_ai_eligibility_checks","MiscFeatureFlags__enable_project_variables","OnSwitch__enable","DevPro__enable_developer_subscriptions","MiscFeatureFlags__enable_variable_operator","Profiles__enable_complete_playlist_endpoint","Profiles__enable_recognition_badges","Cloud__enable_llm_concierge_chat","MiscFeatureFlags__emergency_css","DevPro__enable_cloud_innovators_plus","Profiles__enable_dashboard_curated_recommendations","Analytics__enable_clearcut_logging","TpcFeatures__enable_mirror_tenant_redirects","Profiles__enable_profile_collections","Profiles__enable_page_saving","MiscFeatureFlags__developers_footer_image","SignIn__enable_refresh_access_tokens","Profiles__enable_release_notes_notifications","SignIn__enable_auto_login_multi_account","Profiles__enable_developer_profiles_callout","Search__enable_page_map","Cloud__enable_cloud_shell_fte_user_flow","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_public_developer_profiles","Cloud__enable_cloud_shell","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__enable_view_transitions","Search__enable_suggestions_from_borg","MiscFeatureFlags__enable_explain_this_code"],null,null,"AIzaSyA58TaKli1DculwmAmbpzLVGuWc8eCQgQc","https://developerscontentserving-pa.googleapis.com","AIzaSyDWBU60w0P9hEkr29kkksYs8Z7gvZ8u_wc","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[40,"bazel","Bazel","bazel.build",null,"bazel-dot-devsite-v2-prod-3p.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],null,null,null,null,[1,1,1],[1,1,null,1,1]],null,[56,null,null,null,null,null,"/images/lockup.svg",null,null,null,null,1,null,null,null,null,null,null,null,null,null,1,null,null,null,null,[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,7,1,18,20,22,23,29,37,39,40,43],null,[[],[1,1]],[[["UA-61082125-3"],["UA-61082125-4"],null,null,["UA-61082125-5"],null,null,[["G-GBZW986TQ3"],null,null,[["G-GBZW986TQ3",1]]],[["UA-61082125-3",1]],null,[["UA-61082125-5",1]],null,1],[[4,5],[1,1],[3,4],[5,8],[2,2]]],null,4]]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>