Fungsi berikut dapat dimuat dari @bazel_tools//tools/build_defs/repo:http.bzl
.
http_arsip
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)
Mendownload repositori Bazel sebagai file arsip terkompresi, mengompresinya, dan menyediakan targetnya untuk binding.
File ini mendukung ekstensi file berikut: "zip"
, "jar"
, "war"
, "aar"
, "tar"
,
"tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
,
atau "deb"
.
Contoh:
Repositori saat ini berisi kode sumber untuk program chat, yang
di-root di direktori ~/chat-app
. Library tersebut harus bergantung pada library SSL yang tersedia dari http://example.com/openssl.zip. File .zip
ini berisi struktur direktori berikut:
WORKSPACE
src/
openssl.cc
openssl.h
Dalam repositori lokal, pengguna membuat file openssl.BUILD
yang berisi definisi target berikut:
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
Target dalam repositori ~/chat-app
dapat bergantung pada target ini jika baris berikut ditambahkan ke ~/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",
)
Kemudian, target akan menentukan @my_ssl//:openssl-lib
sebagai dependensi.
Atribut
name |
Nama; wajib diisi
Nama unik untuk repositori ini. |
add_prefix |
String; opsional
Direktori tujuan relatif terhadap direktori repositori. Arsip akan diekstrak ke dalam direktori ini, setelah menerapkan `strip_prefix` (jika ada) ke jalur file dalam arsip. Misalnya, file `foo-1.2.3/src/foo.h` akan diekstrak ke `bar/src/foo.h` jika `add_prefix = "bar"` dan `strip_prefix = "foo-1.2.3"`. |
auth_patterns |
Kamus: String -> String; opsional
Dikte opsional yang memetakan nama host ke pola otorisasi kustom.
Jika nama host URL ada di dalam dict ini, nilai akan digunakan sebagai pola saat
membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi
kustom yang digunakan di banyak penyedia penyimpanan cloud umum.
Saat ini pola mendukung 2 token: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENPermintaan HTTP akhir akan memiliki header berikut: Authorization: Bearer RANDOM-TOKEN |
build_file |
Label; opsional
File yang akan digunakan sebagai file CREATE untuk repositori ini.Atribut ini adalah label absolut (gunakan '@//' untuk repo utama). Filenya tidak perlu diberi nama BUILD, tetapi bisa (seperti Build.new-repo-name mungkin berfungsi dengan baik untuk membedakannya dari file BUILD yang sebenarnya dari repositori. Build_file atau build_file_content dapat ditentukan, tetapi jangan keduanya. |
build_file_content |
String; opsional
Konten untuk file BUILD untuk repositori ini. Build_file atau build_file_content dapat ditentukan, tetapi jangan keduanya. |
canonical_id |
String; opsional
ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama. |
integrity |
String; opsional
Checksum yang diharapkan dalam format Subresource Integrity dari file yang didownload. Ini harus cocok dengan checksum file yang didownload. _Ini adalah risiko keamanan untuk menghilangkan checksum karena file jarak jauh dapat berubah._ Sebaiknya menghapus kolom ini akan membuat build Anda tidak bersifat hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut ini atau `sha256` harus ditetapkan sebelum pengiriman. |
netrc |
String; opsional
Lokasi file .netrc yang akan digunakan untuk autentikasi |
patch_args |
Daftar string; opsional
Argumen yang diberikan ke alat patch. Default-nya adalah -p0, namun -p1 biasanya akan dibutuhkan untuk patch yang dihasilkan oleh git. Jika beberapa argumen -p ditentukan, argumen terakhir akan diterapkan.Jika argumen selain -p ditentukan, Bazel akan kembali menggunakan alat command line patch, bukan implementasi patch native Bazel. Saat kembali ke alat command line patch dan atribut patch_tool tidak ditentukan, `patch` akan digunakan. Ini hanya memengaruhi file patch di atribut `patches`. |
patch_cmds |
Daftar string; opsional
Urutan perintah Bash yang akan diterapkan di Linux/Macos setelah patch diterapkan. |
patch_cmds_win |
Daftar string; opsional
Urutan perintah Powershell yang akan diterapkan di Windows setelah patch diterapkan. Jika atribut ini tidak ditetapkan, patch_cmds akan dieksekusi di Windows, yang mengharuskan biner Bash ada. |
patch_tool |
String; opsional
Utilitas patch(1) yang akan digunakan. Jika ini ditentukan, Bazel akan menggunakan alat patch yang ditentukan, bukan implementasi patch native Bazel. |
patches |
Daftar label; opsional
Daftar file yang akan diterapkan sebagai patch setelah mengekstrak arsip. Secara default, ini menggunakan implementasi patch native Bazel yang tidak mendukung pencocokan fuzz dan patch biner, tetapi Bazel akan kembali untuk menggunakan alat command line patch jika atribut `patch_tool` ditentukan atau ada argumen selain `-p` dalam atribut `patch_args`. |
remote_patch_strip |
Bilangan bulat; opsional
Jumlah garis miring di awal yang akan dihilangkan dari nama file dalam patch jarak jauh. |
remote_patches |
Kamus: String -> String; opsional
Peta URL file patch ke nilai integritasnya, diterapkan setelah mengekstrak arsip dan sebelum menerapkan file patch dari atribut `patches`. Ini menggunakan implementasi patch native Bazel, Anda dapat menentukan nomor strip patch dengan `remote_patch_strip` |
sha256 |
String; opsional
SHA-256 yang diharapkan dari file yang didownload. File ini harus cocok dengan SHA-256 file yang didownload. _Ini adalah risiko keamanan karena menghilangkan SHA-256 karena file jarak jauh dapat berubah._ Sebaiknya hapus kolom ini agar build Anda tidak bersifat hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut atau `integritas` ini harus ditetapkan sebelum pengiriman. |
strip_prefix |
String; opsional
Awalan direktori untuk menghapus file dari file yang diekstrak. Banyak arsip berisi direktori tingkat atas yang berisi semua file berguna dalam arsip. Daripada harus menentukan awalan ini berulang kali di `build_file`, kolom ini dapat digunakan untuk menghapusnya dari semua file yang diekstrak. Misalnya, Anda menggunakan `foo-lib-latest.zip`, yang berisi direktori `foo-lib-1.2.3/` yang digunakan untuk menyimpan file `WORKSPACE` dan direktori `src/`, `lib/`, dan `test/` yang berisi kode sebenarnya yang ingin Anda buat. Tentukan `strip_prefix = "foo-lib-1.2.3"` untuk menggunakan direktori `foo-lib-1.2.3` sebagai direktori level teratas. Perhatikan bahwa jika ada file di luar direktori ini, file tersebut akan dihapus dan tidak dapat diakses (mis., file lisensi level teratas). Ini mencakup file/direktori yang diawali dengan awalan, tetapi tidak ada dalam direktori (misalnya, `foo-lib-1.2.3.release-notes`). Jika awalan yang ditentukan tidak cocok dengan direktori dalam arsip, Bazel akan menampilkan error. |
type |
String; opsional
Jenis arsip file yang didownload. Secara default, jenis arsip ditentukan dari ekstensi file URL. Jika file tidak memiliki ekstensi, Anda dapat secara eksplisit menentukan salah satu berikut: `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar.xz"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`. |
url |
String; opsional
URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai oleh parameter URL yang memungkinkan untuk menentukan URL alternatif yang akan diambil. |
urls |
Daftar string; opsional
Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai ada yang berhasil, jadi Anda harus mencantumkan mirror lokal terlebih dahulu. Jika semua download gagal, aturan akan gagal. |
workspace_file |
Label; opsional
File yang akan digunakan sebagai file `WORKSPACE` untuk repositori ini. `workspace_file` atau `workspace_file_content` dapat ditentukan, atau tidak keduanya, tetapi tidak keduanya. |
workspace_file_content |
String; opsional
Konten untuk file WORKSPACE untuk repositori ini. `workspace_file` atau `workspace_file_content` dapat ditentukan, atau tidak keduanya, tetapi tidak keduanya. |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, sha256, url, urls)
Mendownload file dari URL dan menyediakannya untuk digunakan sebagai grup file.
Contoh: Misalnya Anda harus memiliki paket debian untuk aturan kustom. Paket ini tersedia di http://example.com/package.deb. Kemudian, Anda dapat menambahkannya ke file 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",
)
Target akan menentukan @my_deb//file
sebagai dependensi untuk bergantung pada file ini.
Atribut
name |
Nama; wajib diisi
Nama unik untuk repositori ini. |
auth_patterns |
Kamus: String -> String; opsional
Dikte opsional yang memetakan nama host ke pola otorisasi kustom.
Jika nama host URL ada di dalam dict ini, nilai akan digunakan sebagai pola saat
membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi
kustom yang digunakan di banyak penyedia penyimpanan cloud umum.
Saat ini pola mendukung 2 token: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENPermintaan HTTP akhir akan memiliki header berikut: Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; opsional
ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama. |
downloaded_file_path |
String; opsional
Jalur yang ditetapkan untuk file yang didownload |
executable |
Boolean; opsional
Apakah file yang didownload harus dapat dieksekusi. |
integrity |
String; opsional
Checksum yang diharapkan dalam format Subresource Integrity dari file yang didownload. Ini harus cocok dengan checksum file yang didownload. _Ini adalah risiko keamanan untuk menghilangkan checksum karena file jarak jauh dapat berubah._ Sebaiknya menghapus kolom ini akan membuat build Anda tidak bersifat hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut ini atau `sha256` harus ditetapkan sebelum pengiriman. |
netrc |
String; opsional
Lokasi file .netrc yang akan digunakan untuk autentikasi |
sha256 |
String; opsional
SHA-256 yang diharapkan dari file yang didownload. File ini harus cocok dengan SHA-256 file yang didownload. _Ini adalah risiko keamanan karena menghilangkan SHA-256 karena file jarak jauh dapat berubah._ Sebaiknya hapus kolom ini agar build Anda tidak bersifat hermetik. Mempermudah pengembangan tetapi harus ditetapkan sebelum pengiriman. |
url |
String; opsional
URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai oleh parameter URL yang memungkinkan untuk menentukan URL alternatif yang akan diambil. |
urls |
Daftar string; opsional
Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai ada yang berhasil, jadi Anda harus mencantumkan mirror lokal terlebih dahulu. Jika semua download gagal, aturan akan gagal. |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
Mendownload jar dari URL dan menyediakannya sebagai java_import
File yang didownload harus memiliki ekstensi .jar.
Contoh:
Repositori saat ini berisi kode sumber untuk program chat, yang di-root di
direktori ~/chat-app
. Aksesnya harus bergantung pada library SSL yang tersedia dari http://example.com/openssl-0.2.jar
.
Target dalam repositori ~/chat-app
dapat bergantung pada target ini jika baris berikut
ditambahkan ke ~/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",
)
Target akan menentukan <code>@my_ssl//jar</code> sebagai dependensi yang bergantung pada jar ini.
Anda juga dapat mereferensikan file pada sistem saat ini (localhost) dengan menggunakan "file:///path/to/file"
jika Anda menggunakan sistem berbasis Unix. Jika Anda menggunakan Windows, gunakan "file:///c:/path/to/file". Dalam kedua
contoh, perhatikan tiga garis miring (/
) -- dua garis miring pertama dimiliki oleh file://
dan garis miring
ketiga termasuk dalam jalur absolut file.
Atribut
name |
Nama; wajib diisi
Nama unik untuk repositori ini. |
auth_patterns |
Kamus: String -> String; opsional
Dikte opsional yang memetakan nama host ke pola otorisasi kustom.
Jika nama host URL ada di dalam dict ini, nilai akan digunakan sebagai pola saat
membuat header otorisasi untuk permintaan http. Hal ini memungkinkan penggunaan skema otorisasi
kustom yang digunakan di banyak penyedia penyimpanan cloud umum.
Saat ini pola mendukung 2 token: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENPermintaan HTTP akhir akan memiliki header berikut: Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; opsional
ID kanonis arsip yang didownload. Jika ditentukan dan tidak kosong, bazel tidak akan mengambil arsip dari cache, kecuali jika ditambahkan ke cache oleh permintaan dengan ID kanonis yang sama. |
downloaded_file_name |
String; opsional
Nama file ditetapkan ke jar yang didownload |
integrity |
String; opsional
Checksum yang diharapkan dalam format Subresource Integrity dari file yang didownload. Ini harus cocok dengan checksum file yang didownload. _Ini adalah risiko keamanan untuk menghilangkan checksum karena file jarak jauh dapat berubah._ Sebaiknya menghapus kolom ini akan membuat build Anda tidak bersifat hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut ini atau `sha256` harus ditetapkan sebelum pengiriman. |
netrc |
String; opsional
Lokasi file .netrc yang akan digunakan untuk autentikasi |
sha256 |
String; opsional
SHA-256 yang diharapkan dari file yang didownload. File ini harus cocok dengan SHA-256 file yang didownload. _Ini adalah risiko keamanan karena menghilangkan SHA-256 karena file jarak jauh dapat berubah._ Sebaiknya hapus kolom ini agar build Anda tidak bersifat hermetik. Anda dapat membuat pengembangan lebih mudah, tetapi atribut atau `integritas` ini harus ditetapkan sebelum pengiriman. |
url |
String; opsional
URL ke file yang akan disediakan untuk Bazel. Harus berupa file, URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. Fleksibilitas yang lebih besar dapat dicapai oleh parameter URL yang memungkinkan untuk menentukan URL alternatif yang akan diambil. URL harus berakhiran `.jar`. |
urls |
Daftar string; opsional
Daftar URL ke file yang akan disediakan untuk Bazel. Setiap entri harus berupa URL http atau https. Pengalihan diikuti. Autentikasi tidak didukung. URL dicoba secara berurutan sampai ada yang berhasil, jadi Anda harus mencantumkan mirror lokal terlebih dahulu. Jika semua download gagal, aturan akan gagal. Semua URL harus diakhiri dengan `.jar`. |