HTTP リポジトリ ルール

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

次の関数は、ソースから読み込めます @bazel_tools//tools/build_defs/repo:http.bzl

HTTP 経由でファイルやアーカイブをダウンロードするためのルール。

セットアップ

これらのルールを使用するには、次のように WORKSPACE ファイルにルールを読み込みます。

load(
    "@bazel_tools//tools/build_defs/repo:http.bzl",
    "http_archive",
    "http_file",
    "http_jar",
)

これらのルールはネイティブ HTTP ルールの改良版であり、 置き換えます。

http_archive

http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id,
             integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches,
             remote_file_integrity, remote_file_urls, remote_patch_strip, remote_patches,
             repo_mapping, sha256, strip_prefix, type, url, urls, workspace_file,
             workspace_file_content)

Bazel リポジトリを圧縮アーカイブ ファイルとしてダウンロードし、解凍します。 そのターゲットをバインディングに使用できるようにします。

サポートされているファイル拡張子は "zip""jar""war""aar""tar""tar.gz""tgz""tar.xz""txz""tar.zst""tzst"tar.bz2"ar"、 または "deb" を使用します。

例: 現在のリポジトリにチャット プログラムのソースコードが含まれているとします。 ルート権限はディレクトリ ~/chat-app です。SSL ライブラリに依存する必要がある (http://example.com/openssl.zip からダウンロードできます)この .zip ファイル 次のディレクトリ構造が含まれています。

  WORKSPACE
  src/
    openssl.cc
    openssl.h

ローカル リポジトリで、ユーザーが openssl.BUILD ファイルを作成します。 次のターゲット定義が含まれています。

  cc_library(
      name = "openssl-lib",
      srcs = ["src/openssl.cc"],
      hdrs = ["src/openssl.h"],
  )

次の場合、~/chat-app リポジトリ内のターゲットはこのターゲットに依存できる ~/chat-app/WORKSPACE に次の行が追加されます。

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

  http_archive(
      name = "my_ssl",
      url = "http://example.com/openssl.zip",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      build_file = "@//:openssl.BUILD",
  )

この場合、ターゲットは依存関係として @my_ssl//:openssl-lib を指定します。

属性

name 名前:必須

このリポジトリの一意の名前。

add_prefix String;省略可

リポジトリ ディレクトリを基準とする相対パスの宛先ディレクトリ。 `strip_prefix` を適用した後、アーカイブがこのディレクトリに展開されます。 (存在する場合)をアーカイブ内のファイルパスに追加します。たとえば、 `add_prefix = "bar"` の場合、`foo-1.2.3/src/foo.h` は `bar/src/foo.h` にアンパックされます および `strip_prefix = "foo-1.2.3"` のようにします。

auth_patterns 辞書: 文字列 ->String;省略可

ホスト名をカスタム認証パターンにマッピングする辞書(省略可)。 この辞書に URL のホスト名が含まれている場合、値がパターンとして HTTP リクエストの Authorization ヘッダーを生成します。これにより 認証方式も採用しています。 このパターンで現在サポートされているトークンは、<login><password> は同等の値に置き換えられます。 同じホスト名の netrc ファイルにあります。書式設定の後、結果が HTTP リクエストの Authorization フィールドの値として使用します。 署名なしトークンを使用して OAuth2 対応 API に HTTP ダウンロードを行うための属性と netrc の例:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
最終的な HTTP リクエストのヘッダーは次のようになります。
Authorization: Bearer RANDOM-TOKEN

build_file ラベル:省略可

このリポジトリのビルド ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリの場合は「@//」を使用します)。ファイル名は BUILD にする必要はありませんが、BUILD.new-repo-name などにすると、リポジトリの実際の BUILD ファイルと区別しやすくなります。build_file または build_file_content のいずれかを指定できます。両方は指定できません。

build_file_content String;省略可

このリポジトリの BUILD ファイルの内容。build_file または build_file_content のいずれかを指定できます。両方は指定できません。

canonical_id String;省略可

ダウンロードされたファイルの正規 ID。 指定した場合かつ空でない場合、Bazel はキャッシュからファイルを取得しません。ただし、 同じ正規 ID を持つリクエストによってキャッシュに追加されたもの。 指定しないか空にした場合、Bazel はデフォルトでファイルの URL を 指定します。これにより、名前リンクなしに URL を更新するというよくある間違いを ハッシュも更新されるため、ビルドはローカルで成功するが失敗する キャッシュにファイルがないコンピュータに 接続されますこの動作は、 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

integrity String;省略可

ダウンロードしたファイルの想定チェックサムはサブリソース整合性形式です。 ダウンロードしたファイルのチェックサムと一致する必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、チェックサムを省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを この属性または `sha256` を出荷前に設定する必要があります。

netrc String;省略可

認証に使用する .netrc ファイルの場所

patch_args 文字列のリスト。省略可

パッチツールに渡される引数。デフォルトは -p0 ですが、通常、git によって生成されたパッチには -p1 が必要です。複数の -p 引数が指定されている場合は、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel はフォールバックして、Bazel ネイティブのパッチ実装ではなく、パッチ コマンドライン ツールを使用します。パッチ コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合は、`patch` が使用されます。これは、`patches` 属性内のパッチファイルにのみ影響します。

patch_cmds 文字列のリスト。省略可

パッチ適用後に Linux/macOS で適用される Bash コマンドの順序。

patch_cmds_win 文字列のリスト。省略可

パッチ適用後に Windows に適用される Powershell コマンドの順序。この属性が設定されていない場合、patch_cmds が Windows で実行されます。この場合、Bash バイナリが存在する必要があります。

patch_tool String;省略可

使用する patch(1) ユーティリティ。これを指定すると、Bazel ネイティブのパッチ実装ではなく、指定されたパッチツールが使用されます。

patches ラベルのリスト省略可

アーカイブの抽出後にパッチとして適用されるファイルのリスト。デフォルトでは、ファズマッチとバイナリパッチをサポートしていない Bazel ネイティブのパッチ実装が使用されますが、`patch_tool` 属性が指定されているか、`patch_args` 属性に `-p` 以外の引数がある場合、Bazel はパッチ コマンドライン ツールを使用するようにフォールバックします。

remote_file_integrity 辞書: 文字列 ->String;省略可

ファイルの相対パス(キー)と完全性値(値)のマップ。これらの相対パスは、「remote_file_urls」属性内のファイル(キー)にマッピングされる必要があります。

remote_file_urls 辞書: 文字列 ->文字列のリスト。省略可

ダウンロードされ、リポジトリのオーバーレイ ファイルとして利用可能になる URL(値)のリストへの相対パス(キー)のマップ。これは、既存のリポジトリの上に WORKSPACE ファイルまたは BUILD.bazel ファイルを追加する場合に便利です。ファイルは、`patches` 属性でパッチを適用する前にダウンロードされます。URL のリストはすべて、同じファイルのミラーである必要があります。成功するまで、URL が順番に試行されます。

remote_patch_strip 整数、省略可

リモートパッチのファイル名から削除される先頭スラッシュの数。

remote_patches 辞書: 文字列 ->String;省略可

パッチファイルの URL とその完全性値のマップ。これらは、アーカイブの抽出後、`patches` 属性からパッチファイルを適用する前に適用されます。Bazel ネイティブのパッチ実装を使用します。パッチストリップ番号は `remote_patch_strip` で指定できます。

repo_mapping 辞書: 文字列 ->String;必須

ローカル リポジトリ名からグローバル リポジトリ名への辞書。これにより、このリポジトリの依存関係について、ワークスペースの依存関係の解決を制御できます。

たとえば、エントリ "@foo": "@bar"` は、このリポジトリが `@foo` に依存する場合は常に(`@foo//some:target` への依存関係など、グローバルに宣言された `@bar`(`@bar//some:target`)内でその依存関係を解決する必要があることを宣言します。

sha256 String;省略可

ダウンロードされるファイルの想定 SHA-256 です。 ダウンロードしたファイルの SHA-256 と一致している必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、SHA-256 を省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを この属性または `integrity` を出荷前に設定する必要があります。

strip_prefix String;省略可

抽出されたファイルから削除するディレクトリ接頭辞。 多くのアーカイブには、有用なすべてのファイルを含む最上位ディレクトリが ファイルの数。この接頭辞を何度も指定する必要がなくなり、 `build_file` 内で、このフィールドを使用して 表示されます。 たとえば、`foo-lib-latest.zip` を使用するとします。 ディレクトリ `foo-lib-1.2.3/` の下には `WORKSPACE` ファイルがあり、 `src/`、`lib/`、`test/` ディレクトリ。 指定します。`strip_prefix = "foo-lib-1.2.3"` を指定して、 `foo-lib-1.2.3` ディレクトリを最上位ディレクトリとして使用します。 このディレクトリの外にファイルがある場合、 破棄され、アクセス不能な状態を指します(トップレベル ライセンス ファイルなど)。例 先頭が接頭辞で、ディレクトリにないファイル/ディレクトリ (例:`foo-lib-1.2.3.release-notes`).指定した接頭辞が 一致しなかった場合、Bazel はエラーを返します。

type String;省略可

ダウンロードされたファイルのアーカイブ タイプ。 デフォルトでは、アーカイブ タイプは、 URL を入力します。ファイルに拡張子がない場合は、 「zip」「jar」「jar」「war」「aar」「tar」「tar.gz」「tgz」 「tar.xz」、「txz」、「tar.zst」、「tzst」、「tar.bz2」、「ar」、「deb」のいずれかです。

url String;省略可

Bazel で使用できるようにするファイルの URL。 ファイル、http または https の URL を指定してください。リダイレクトが設定されています。 認証はサポートされていません。 URL パラメータを使用すると、より柔軟な設定が可能です。 取得する代替 URL を指定します。

urls 文字列のリスト。省略可

Bazel で使用できるようにするファイルの URL のリストです。 各エントリはファイル、HTTP または https の URL にする必要があります。リダイレクトが設定されています。 認証はサポートされていません。 URL は、成功するまで順番に試行されるため、ローカルミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。

workspace_file ラベル:省略可

このリポジトリの「WORKSPACE」ファイルとして使用するファイル。「workspace_file」または「workspace_file_content」のどちらか一方を指定するか、どちらも指定できません。両方を指定することはできません。

workspace_file_content String;省略可

このリポジトリの WORKSPACE ファイルの内容。「workspace_file」または「workspace_file_content」のどちらか一方を指定するか、どちらも指定できません。両方を指定することはできません。

http_file

http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc,
          repo_mapping, sha256, url, urls)

URL からファイルをダウンロードし、ファイルとして利用できるようにする できます。

例: カスタムルール用の debian パッケージが必要であるとします。このパッケージ は http://example.com/package.deb から入手できます。キャンペーンに WORKSPACE ファイル:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

  http_file(
      name = "my_deb",
      url = "http://example.com/package.deb",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

ターゲットは、このファイルに依存する依存関係として @my_deb//file を指定します。

属性

name 名前:必須

このリポジトリの一意の名前。

auth_patterns 辞書: 文字列 ->String;省略可

ホスト名をカスタム認証パターンにマッピングする辞書(省略可)。 この辞書に URL のホスト名が含まれている場合、値がパターンとして HTTP リクエストの Authorization ヘッダーを生成します。これにより 認証方式も採用しています。 このパターンで現在サポートされているトークンは、<login><password> は同等の値に置き換えられます。 同じホスト名の netrc ファイルにあります。書式設定の後、結果が HTTP リクエストの Authorization フィールドの値として使用します。 署名なしトークンを使用して OAuth2 対応 API に HTTP ダウンロードを行うための属性と netrc の例:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
最終的な HTTP リクエストのヘッダーは次のようになります。
Authorization: Bearer RANDOM-TOKEN

canonical_id String;省略可

ダウンロードされたファイルの正規 ID。 指定した場合かつ空でない場合、Bazel はキャッシュからファイルを取得しません。ただし、 同じ正規 ID を持つリクエストによってキャッシュに追加されたもの。 指定しないか空にした場合、Bazel はデフォルトでファイルの URL を 指定します。これにより、名前リンクなしに URL を更新するというよくある間違いを ハッシュも更新されるため、ビルドはローカルで成功するが失敗する キャッシュにファイルがないコンピュータに 接続されますこの動作は、 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_path String;省略可

ダウンロードしたファイルに割り当てられたパス

executable ブール値省略可

ダウンロードしたファイルを実行可能にするかどうか。

integrity String;省略可

ダウンロードしたファイルの想定チェックサムはサブリソース整合性形式です。 ダウンロードしたファイルのチェックサムと一致する必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、チェックサムを省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを この属性または `sha256` を出荷前に設定する必要があります。

netrc String;省略可

認証に使用する .netrc ファイルの場所

repo_mapping 辞書: 文字列 ->String;必須

ローカル リポジトリ名からグローバル リポジトリ名への辞書。これにより、このリポジトリの依存関係について、ワークスペースの依存関係の解決を制御できます。

たとえば、エントリ "@foo": "@bar"` は、このリポジトリが `@foo` に依存する場合は常に(`@foo//some:target` への依存関係など、グローバルに宣言された `@bar`(`@bar//some:target`)内でその依存関係を解決する必要があることを宣言します。

sha256 String;省略可

ダウンロードされるファイルの想定 SHA-256 です。 ダウンロードしたファイルの SHA-256 と一致している必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、SHA-256 を省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを 出荷前に設定する必要があります。

url String;省略可

Bazel で使用できるようにするファイルの URL。 ファイル、http または https の URL を指定してください。リダイレクトが設定されています。 認証はサポートされていません。 URL パラメータを使用すると、より柔軟な設定が可能です。 取得する代替 URL を指定します。

urls 文字列のリスト。省略可

Bazel で使用できるようにするファイルの URL のリストです。 各エントリはファイル、HTTP または https の URL にする必要があります。リダイレクトが設定されています。 認証はサポートされていません。 URL は、成功するまで順番に試行されるため、ローカルミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。

http_jar

http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, repo_mapping,
         sha256, url, urls)

URL から jar をダウンロードし、java_import として利用できるようにします。

ダウンロードされるファイルの拡張子は .jar でなければなりません。

例: 現在のリポジトリにチャット プログラムのソースコードがあり、 ディレクトリ ~/chat-app。使用する SSL ライブラリに依存する必要があります。 http://example.com/openssl-0.2.jar

次の行がある場合、~/chat-app リポジトリ内のターゲットはこのターゲットに依存できます。 ~/chat-app/WORKSPACE に追加しました。

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")

  http_jar(
      name = "my_ssl",
      url = "http://example.com/openssl-0.2.jar",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

ターゲットはこの jar に依存する依存関係として @my_ssl//jar を指定します。

「file:///path/to/file」を使用して、現在のシステム(localhost)上のファイルを参照することもできます。 Unix ベースのシステムを使用している場合はWindows の場合は「file:///c:/path/to/file」を使用します。両方 例では、3 つのスラッシュ(/)に注意してください。最初の 2 つのスラッシュは file:// に属し、3 番目のスラッシュは file:// に属します。 もう 1 つはファイルの絶対パスです

属性

name 名前:必須

このリポジトリの一意の名前。

auth_patterns 辞書: 文字列 ->String;省略可

ホスト名をカスタム認証パターンにマッピングする辞書(省略可)。 この辞書に URL のホスト名が含まれている場合、値がパターンとして HTTP リクエストの Authorization ヘッダーを生成します。これにより 認証方式も採用されています。 このパターンで現在サポートされているトークンは、<login><password> は同等の値に置き換えられます。 同じホスト名の netrc ファイルにあります。書式設定の後、結果が HTTP リクエストの Authorization フィールドの値として使用します。 署名なしトークンを使用して OAuth2 対応 API に HTTP ダウンロードを行うための属性と netrc の例:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
最終的な HTTP リクエストのヘッダーは次のようになります。
Authorization: Bearer RANDOM-TOKEN

canonical_id String;省略可

ダウンロードされたファイルの正規 ID。 指定した場合かつ空でない場合、Bazel はキャッシュからファイルを取得しません。ただし、 同じ正規 ID を持つリクエストによってキャッシュに追加されたもの。 指定しないか空にした場合、Bazel はデフォルトでファイルの URL を 指定します。これにより、名前リンクなしに URL を更新するというよくある間違いを ハッシュも更新されるため、ビルドはローカルで成功するが失敗する キャッシュにファイルがないコンピュータに 接続されますこの動作は、 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_name String;省略可

ダウンロードした jar に割り当てられたファイル名

integrity String;省略可

ダウンロードしたファイルの想定チェックサムはサブリソース整合性形式です。 ダウンロードしたファイルのチェックサムと一致する必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、チェックサムを省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを この属性または `sha256` を出荷前に設定する必要があります。

netrc String;省略可

認証に使用する .netrc ファイルの場所

repo_mapping 辞書: 文字列 ->String;必須

ローカル リポジトリ名からグローバル リポジトリ名への辞書。これにより、このリポジトリの依存関係について、ワークスペースの依存関係の解決を制御できます。

たとえば、エントリ "@foo": "@bar"` は、このリポジトリが `@foo` に依存する場合は常に(`@foo//some:target` への依存関係など、グローバルに宣言された `@bar`(`@bar//some:target`)内でその依存関係を解決する必要があることを宣言します。

sha256 String;省略可

ダウンロードされるファイルの想定 SHA-256 です。 ダウンロードしたファイルの SHA-256 と一致している必要があります。_ セキュリティ上のリスクがある リモート ファイルは変更される可能性があるため、SHA-256 を省略します。 フィールドを使用すると、ビルドが非密封になります。また、kubectl の「terraform apply」コマンドを この属性または `integrity` を出荷前に設定する必要があります。

url String;省略可

Bazel で使用できるようにするファイルの URL。 ファイル、http または https の URL を指定してください。リダイレクトが設定されています。 認証はサポートされていません。 URL パラメータを使用すると、より柔軟な設定が可能です。 取得元の代替 URL を指定します。 URL の末尾は「.jar」でなければなりません。

urls 文字列のリスト。省略可

Bazel で使用できるようにするファイルの URL のリストです。 各エントリはファイル、HTTP または https の URL にする必要があります。リダイレクトが設定されています。 認証はサポートされていません。 URL は、成功するまで順番に試行されるため、ローカルミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。 すべての URL の末尾は「.jar」でなければなりません。