次の関数は、@bazel_tools//tools/build_defs/repo:http.bzl から読み込むことができます。
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_patch_strip, remote_patches, 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 です。このプログラムは、http://example.com/openssl.zip から入手できる SSL ライブラリ
に依存する必要があります。この .zip ファイル
には、次のディレクトリ構造が含まれています。
WORKSPACE
src/
openssl.cc
openssl.h
ローカル リポジトリで、ユーザーは openssl.BUILD ファイルを作成します。これには次のターゲット定義が含まれます。
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
次の行が ~/chat-app/WORKSPACE に追加されている場合、~/chat-app リポジトリのターゲットはこのターゲットに依存できます。
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 |
文字列(省略可)
リポジトリ ディレクトリからの相対パスで指定する宛先ディレクトリ。 アーカイブ内のファイルパスに `strip_prefix` (存在する場合)が適用された後、アーカイブはこのディレクトリに解凍されます。たとえば、ファイル `foo-1.2.3/src/foo.h` は `add_prefix = "bar"` と `strip_prefix = "foo-1.2.3"` の場合、`bar/src/foo.h` に解凍されます。 |
auth_patterns |
ディクショナリ: 文字列 -> 文字列(省略可)
ホスト名をカスタム認証パターンにマッピングする省略可能なディクショナリ。
URL のホスト名がこのディクショナリに存在する場合、HTTP リクエストの認証ヘッダーを生成するときに、この値がパターンとして使用されます。これにより、一般的なクラウド ストレージ プロバイダの多くで使用されているカスタム認証スキームを使用できます。
現在、パターンは 2 つのトークン
auth_patterns = {
"storage.cloudprovider.com": "Bearer <password>"
}
machine storage.cloudprovider.com
password RANDOM-TOKEN
Authorization: Bearer RANDOM-TOKEN |
build_file |
ラベル(省略可)
このリポジトリの BUILD ファイルとして使用するファイル。この属性は絶対ラベルです(メイン リポジトリには '@//' を使用します)。ファイル名は BUILD である必要はありませんが、BUILD にすることができます(BUILD.new-repo-name のようにすると、リポジトリの実際の BUILD ファイルと区別しやすくなります)。build_file と build_file_content のいずれかを指定できますが、両方は指定できません。 |
build_file_content |
文字列(省略可)
このリポジトリの BUILD ファイルの内容。build_file と build_file_content のいずれかを指定できますが、両方は指定できません。 |
canonical_id |
文字列(省略可)
ダウンロードしたアーカイブの正規 ID。 指定されていて空でない場合、同じ正規 ID のリクエストによってキャッシュに追加された場合を除き、bazel はキャッシュからアーカイブを取得しません。 |
integrity |
文字列(省略可)
ダウンロードしたファイルの Subresource Integrity 形式の予想チェックサム。 これは、ダウンロードしたファイルのチェックサムと一致する必要があります。__リモート ファイルは変更される可能性があるため、チェックサムを省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前にこの属性または `sha256` を設定する必要があります。 |
netrc |
文字列(省略可)
認証に使用する .netrc ファイルの場所 |
patch_args |
文字列のリスト(省略可)
patch ツールに渡される引数。デフォルトは -p0 ですが、通常、git で生成されたパッチには -p1 が必要です。複数の -p 引数が指定されている場合は、最後の引数が有効になります。-p 以外の引数が指定されている場合、Bazel は Bazel ネイティブのパッチ実装ではなく、patch コマンドライン ツールを使用します。patch コマンドライン ツールにフォールバックし、patch_tool 属性が指定されていない場合は、`patch` が使用されます。これは、`patches` 属性のパッチファイルにのみ影響します。 |
patch_cmds |
文字列のリスト(省略可)
パッチの適用後に Linux/Macos で適用される Bash コマンドのシーケンス。 |
patch_cmds_win |
文字列のリスト(省略可)
パッチの適用後に Windows で適用される Powershell コマンドのシーケンス。この属性が設定されていない場合、Windows で patch_cmds が実行されます。これには Bash バイナリが存在する必要があります。 |
patch_tool |
文字列(省略可)
使用する patch(1) ユーティリティ。これが指定されている場合、Bazel は Bazel ネイティブのパッチ実装ではなく、指定されたパッチツールを使用します。 |
patches |
ラベルのリスト(省略可)
アーカイブの抽出後にパッチとして適用されるファイルのリスト。デフォルトでは、ファジーマッチとバイナリ パッチをサポートしない Bazel ネイティブのパッチ実装が使用されますが、`patch_tool` 属性が指定されている場合、または `patch_args` 属性に `-p` 以外の引数がある場合は、Bazel は patch コマンドライン ツールを使用します。 |
remote_patch_strip |
整数(省略可)
リモート パッチのファイル名から削除する先頭のスラッシュの数。 |
remote_patches |
ディクショナリ: 文字列 -> 文字列(省略可)
パッチファイルの URL とその整合性値のマッピング。これらは、アーカイブの抽出後、`patches` 属性のパッチファイルの適用前に適用されます。Bazel ネイティブのパッチ実装を使用します。パッチの削除数を `remote_patch_strip` で指定できます。 |
sha256 |
文字列(省略可)
ダウンロードしたファイルの予想される SHA-256。 これは、ダウンロードしたファイルの SHA-256 と一致する必要があります。__リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前にこの属性または `integrity` を設定する必要があります。 |
strip_prefix |
文字列(省略可)
抽出したファイルから削除するディレクトリ接頭辞。 多くのアーカイブには、アーカイブ内のすべての有用なファイルを含む最上位ディレクトリが含まれています。`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 |
文字列(省略可)
ダウンロードしたファイルのアーカイブ タイプ。 デフォルトでは、アーカイブ タイプは URL のファイル拡張子から判断されます。ファイルに拡張子がない場合は、次のいずれかを明示的に指定できます。`"zip"`、`"jar"`、`"war"`、`"aar"`、`"tar"`、`"tar.gz"`、`"tgz"`、`"tar.xz"`、`"txz"`、`"tar.zst"`、`"tzst"`、`tar.bz2`、`"ar"`、または `"deb"`。 |
url |
文字列(省略可)
Bazel で使用できるファイルの URL。 これは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。urls パラメータを使用すると、取得元の代替 URL を指定できるため、柔軟性が向上します。 |
urls |
文字列のリスト(省略可)
Bazel で使用できるファイルの URL のリスト。 各エントリは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。URL は成功するまで順番に試行されるため、ローカル ミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。 |
workspace_file |
ラベル(省略可)
このリポジトリの `WORKSPACE` ファイルとして使用するファイル。`workspace_file` または `workspace_file_content` のいずれか、または両方とも指定できますが、両方は指定できません。 |
workspace_file_content |
文字列(省略可)
このリポジトリの WORKSPACE ファイルの内容。`workspace_file` または `workspace_file_content` のいずれか、または両方とも指定できますが、両方は指定できません。 |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, 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 |
ディクショナリ: 文字列 -> 文字列(省略可)
ホスト名をカスタム認証パターンにマッピングする省略可能なディクショナリ。
URL のホスト名がこのディクショナリに存在する場合、HTTP リクエストの認証ヘッダーを生成するときに、この値がパターンとして使用されます。これにより、一般的なクラウド ストレージ プロバイダの多くで使用されているカスタム認証スキームを使用できます。
現在、パターンは 2 つのトークン
auth_patterns = {
"storage.cloudprovider.com": "Bearer <password>"
}
machine storage.cloudprovider.com
password RANDOM-TOKEN
Authorization: Bearer RANDOM-TOKEN |
canonical_id |
文字列(省略可)
ダウンロードしたアーカイブの正規 ID。 指定されていて空でない場合、同じ正規 ID のリクエストによってキャッシュに追加された場合を除き、bazel はキャッシュからアーカイブを取得しません。 |
downloaded_file_path |
文字列(省略可)
ダウンロードしたファイルに割り当てられたパス |
executable |
ブール値(省略可)
ダウンロードしたファイルを実行可能にするかどうか。 |
integrity |
文字列(省略可)
ダウンロードしたファイルの Subresource Integrity 形式の予想チェックサム。 これは、ダウンロードしたファイルのチェックサムと一致する必要があります。__リモート ファイルは変更される可能性があるため、チェックサムを省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前にこの属性または `sha256` を設定する必要があります。 |
netrc |
文字列(省略可)
認証に使用する .netrc ファイルの場所 |
sha256 |
文字列(省略可)
ダウンロードしたファイルの予想される SHA-256。 これは、ダウンロードしたファイルの SHA-256 と一致する必要があります。__リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前に設定する必要があります。 |
url |
文字列(省略可)
Bazel で使用できるファイルの URL。 これは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。urls パラメータを使用すると、取得元の代替 URL を指定できるため、柔軟性が向上します。 |
urls |
文字列のリスト(省略可)
Bazel で使用できるファイルの URL のリスト。 各エントリは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。URL は成功するまで順番に試行されるため、ローカル ミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。 |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
URL から jar をダウンロードし、java_import として使用できるようにします。
ダウンロードしたファイルの拡張子は .jar である必要があります。
例:
現在のリポジトリに、
ディレクトリ ~/chat-app をルートとするチャット プログラムのソースコードが含まれているとします。このプログラムは、
http://example.com/openssl-0.2.jar から入手できる SSL ライブラリに依存する必要があります。
次の行が ~/chat-app/WORKSPACE に追加されている場合、~/chat-app リポジトリのターゲットはこのターゲットに依存できます。
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 に依存する依存関係として <code>@my_ssl//jar</code> を指定します。
Unix ベースのシステムを使用している場合は、「file:///path/to/file」を使用して、現在のシステム(localhost)上のファイルを参照することもできます。Windows を使用している場合は、「file:///c:/path/to/file」を使用します。どちらの例でも
、3 つのスラッシュ(/)に注意してください。最初の 2 つのスラッシュは file:// に属し、3 つ目の
スラッシュはファイルの絶対パスに属します。
属性
name |
名前(必須)
このリポジトリの一意の名前。 |
auth_patterns |
ディクショナリ: 文字列 -> 文字列(省略可)
ホスト名をカスタム認証パターンにマッピングする省略可能なディクショナリ。
URL のホスト名がこのディクショナリに存在する場合、HTTP リクエストの認証ヘッダーを生成するときに、この値がパターンとして使用されます。これにより、一般的なクラウド ストレージ プロバイダの多くで使用されているカスタム認証スキームを使用できます。
現在、パターンは 2 つのトークン
auth_patterns = {
"storage.cloudprovider.com": "Bearer <password>"
}
machine storage.cloudprovider.com
password RANDOM-TOKEN
Authorization: Bearer RANDOM-TOKEN |
canonical_id |
文字列(省略可)
ダウンロードしたアーカイブの正規 ID。 指定されていて空でない場合、同じ正規 ID のリクエストによってキャッシュに追加された場合を除き、bazel はキャッシュからアーカイブを取得しません。 |
downloaded_file_name |
文字列(省略可)
ダウンロードした jar に割り当てられたファイル名 |
integrity |
文字列(省略可)
ダウンロードしたファイルの Subresource Integrity 形式の予想チェックサム。 これは、ダウンロードしたファイルのチェックサムと一致する必要があります。__リモート ファイルは変更される可能性があるため、チェックサムを省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前にこの属性または `sha256` を設定する必要があります。 |
netrc |
文字列(省略可)
認証に使用する .netrc ファイルの場所 |
sha256 |
文字列(省略可)
ダウンロードしたファイルの予想される SHA-256。 これは、ダウンロードしたファイルの SHA-256 と一致する必要があります。__リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになる可能性があります。開発を容易にするために省略できますが、出荷前にこの属性または `integrity` を設定する必要があります。 |
url |
文字列(省略可)
Bazel で使用できるファイルの URL。 これは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。urls パラメータを使用すると、取得元の代替 URL を指定できるため、柔軟性が向上します。 URL は `.jar` で終わる必要があります。 |
urls |
文字列のリスト(省略可)
Bazel で使用できるファイルの URL のリスト。 各エントリは、ファイル、http、または https の URL である必要があります。リダイレクトが実行されます。 認証はサポートされていません。URL は成功するまで順番に試行されるため、ローカル ミラーを最初にリストする必要があります。 すべてのダウンロードが失敗した場合、ルールは失敗します。 すべての URL は `.jar` で終わる必要があります。 |