Aşağıdaki işlevler şuradan yüklenebilir:
@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 deposunu sıkıştırılmış arşiv dosyası olarak indirir, arşiv dosyasını açar, ve hedeflerini bağlama için kullanılabilir hale getirir.
Şu dosya uzantılarını destekler: "zip"
, "jar"
, "war"
, "aar"
, "tar"
,
"tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
,
veya "deb"
.
Örnekler:
Mevcut depoda bir sohbet programının kaynak kodunu içerdiğini varsayalım.
~/chat-app
dizininde kök olarak oluşturuldu. Bir SSL kitaplığına bağlı olması gerekir
http://example.com/openssl.zip adresinde bulunabilir. Bu .zip
dosyası şu dizin yapısını içerir:
WORKSPACE
src/
openssl.cc
openssl.h
Kullanıcı, yerel depoda aşağıdaki hedef tanımını içeren bir openssl.BUILD
dosyası oluşturur:
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
~/chat-app
deposundaki hedefler
şu satırlar ~/chat-app/WORKSPACE
öğesine eklenir:
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",
)
Ardından hedefler bağımlılık olarak @my_ssl//:openssl-lib
değerini belirtir.
Özellikler
name |
Ad; zorunlu
Bu depo için benzersiz bir ad. |
add_prefix |
Dize; isteğe bağlı
Depo dizine göre hedef dizin. "strip_prefix" uygulandıktan sonra arşiv bu dizinde açılır (varsa) arşive eklenir. Örneğin, "file" "add_prefix = "bar" ise "foo-1.2.3/src/foo.h"nin paketi "bar/src/foo.h" ile açılır. ve `strip_prefix = "foo-1.2.3"`). |
auth_patterns |
Sözlük: Dize -> Dize; isteğe bağlı
Ana makine adlarını özel yetkilendirme kalıplarıyla eşleyen isteğe bağlı bir sözlük.
Bir URL'nin ana makine adı bu diktede mevcutsa değer,
oluşturarak, http isteği için yetkilendirme başlığını oluşturabilirsiniz. Bu sayede, özel
kimlik doğrulama şemalarını kullanıma sunduk.
Desen şu anda 2 jetonu desteklemektedir: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENNihai HTTP isteği aşağıdaki başlığa sahip olur: Authorization: Bearer RANDOM-TOKEN |
build_file |
Etiket; isteğe bağlı
Bu depolar için BUILD dosyası olarak kullanılacak dosya. Bu özellik mutlak bir etikettir (ana depo için "@//" kullanın). Dosyanın BUILD olarak adlandırılmasına gerek yoktur, ancak şöyle olabilir: (BUILD.new-repo-name gibi bir ad, onu deponun gerçek BUILD dosyalarından ayırt etmek için işe yarayabilir. build_file veya build_file_content belirtilebilir ancak ikisi birden belirtilemez. |
build_file_content |
Dize; isteğe bağlı
Bu depo için BUILD dosyasının içeriği. Build_file veya build_file_content ikisi belirtilebilir ancak ikisi birden belirtilemez. |
canonical_id |
String; isteğe bağlı
İndirilen arşivin standart kimliği. Belirtilirse ve boş değilse bazel, aynı standart kimliğe sahip bir istek tarafından önbelleğe eklenmediği sürece arşivi önbellekten almaz. |
integrity |
Dize; isteğe bağlı
İndirilen dosyanın Alt Kaynak Bütünlüğü biçiminde beklenen sağlama toplamı. Bu değer, indirilen dosyanın sağlama toplamıyla eşleşmelidir. _Uzak dosyalar değişebileceği için sağlama toplamını çıkarmak güvenlik riski oluşturur._ Bu alanın çıkarılması, en iyi ihtimalle derlemenizin hermetik olmasını engeller. Hedeflerinize göre geliştirme yapmak daha kolaydır, ancak gönderimden önce bu özellik veya "sha256" ayarlanmalıdır. |
netrc |
Dize; isteğe bağlı
Kimlik doğrulama için kullanılacak .netrc dosyasının konumu |
patch_args |
Dize listesi; isteğe bağlı
Yama aracına verilen bağımsız değişkenler. Varsayılan olarak -p0 değerine ayarlanır ancak git tarafından oluşturulan yamalar için genellikle -p1 değerine ihtiyaç duyulur. Birden fazla -p bağımsız değişkeni belirtilirse en son bağımsız değişken geçerli olur. -p dışındaki bağımsız değişkenler belirtilirse Bazel, Bazel'e özgü yamayı uygulamak yerine yamayı komut satırı aracıyla uygular. Yama komut satırı aracına geri dönüldüğünde ve patch_tool özelliği belirtilmediğinde "patch" kullanılır. Bu, yalnızca "patches" özelliğindeki yama dosyalarını etkiler. |
patch_cmds |
Dize listesi; isteğe bağlı
Yamalar uygulandıktan sonra Linux/Macos'ta uygulanacak Bash komutları dizisi. |
patch_cmds_win |
Dize listesi; isteğe bağlı
Yamalar uygulandıktan sonra Windows'a uygulanacak PowerShell komutları dizisi. Bu özellik ayarlanmazsa patch_cmds Windows'ta yürütülür. Bunun için Bash ikilisinin mevcut olması gerekir. |
patch_tool |
Dize; isteğe bağlı
Kullanılacak yama(1) yardımcı programı. Bu belirtilirse Bazel, Bazel'de yerel yama uygulaması yerine belirtilen yama aracını kullanır. |
patches |
Etiket listesi; isteğe bağlı
Arşiv çıkarıldıktan sonra yama olarak uygulanacak dosyaların listesi. Varsayılan olarak, fuzz eşleme ve ikili yamayı desteklemeyen Bazel'da yerel yama uygulamasını kullanır. Ancak "yama_aracı" özelliği belirtilirse veya "patch_args" özelliğinde "-p" dışında bağımsız değişkenler varsa Bazel, yama komut satırı aracını kullanmaya devam eder. |
remote_patch_strip |
Integer; isteğe bağlı
Uzak yamalarda dosya adından çıkarılacak baştaki eğik çizgi sayısı. |
remote_patches |
Sözlük: Dize -> String; isteğe bağlı
Yama dosyası URL'sinin bütünlük değeriyle eşlemesi; arşiv çıkarıldıktan sonra ve "yamalar" özelliğinden yama dosyaları uygulanmadan önce uygulanır. Bazel'e özgü yamayı kullanır. "remote_patch_strip" ile yamanın şerit numarasını belirtebilirsiniz. |
sha256 |
String; isteğe bağlı
İndirilen dosyanın beklenen SHA-256 karması. Bu, indirilen dosyanın SHA-256'sıyla eşleşmelidir. _Bu bir güvenlik riski uzak dosyalar değişebildiğinden SHA-256'yı dahil etmeyin._ Bu mümkün alanı, derlemenizi hermetik olmayan hale getirir. Geliştirmeyi kolaylaştırmak için isteğe bağlıdır ancak bu özellik veya "integrity", yayınlamadan önce ayarlanmalıdır. |
strip_prefix |
String; isteğe bağlı
Ayıklanan dosyalardan alınacak dizin ön eki. Birçok arşivde, arşivdeki tüm yararlı dosyaları içeren bir üst düzey dizin bulunur. Her zaman bu ön eki belirtmek zorunda kalmak yerine, "build_file"da bulunan bu alan, onu tüm öğelerden ayırmak için kullanılabilir. dosyalar. Örneğin, altında "WORKSPACE" dosyası bulunur ve girdiğiniz gerçek kodu içeren "src/", "lib/" ve "test/" dizinleri düşünmelisiniz. "foo-lib-1.2.3" dizinini oluşturun. Bu dizinin dışındaki dosyaların (ör. üst düzey lisans dosyası) kaldırılacağını ve bunlara erişilemeyeceğini unutmayın. Bu, önek ile başlayan ancak dizinde bulunmayan dosyaları/dizinleri (ör. `foo-lib-1.2.3.release-notes`). Belirtilen önek arşivdeki bir dizinle eşleşirse Bazel bir hata döndürecektir. |
type |
Dize; isteğe bağlı
İndirilen dosyanın arşiv türü. Varsayılan olarak, arşiv türü URL'yi tıklayın. Dosyanın uzantısı yoksa aşağıdakilerden birini açıkça belirtebilirsiniz: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", "tar.bz2", "ar" veya "deb". |
url |
Dize; isteğe bağlı
Bazel'in kullanımına sunulacak dosyanın URL'si. Bu bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmiyor. İzin verilen url'leri kullanarak daha fazla esneklik elde edebilirsiniz. ifadesini girin. |
urls |
Dize listesi; isteğe bağlı
Bazel'in kullanabileceği bir dosyanın URL'lerinin listesi. Her giriş bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmez. URL'ler, başarılı olana kadar sırayla denenir. Bu nedenle, önce yerel aynaları listelemeniz gerekir. Tüm indirme işlemleri başarısız olursa kural başarısız olur. |
workspace_file |
Etiket; isteğe bağlı
Bu depo için "WORKSPACE" dosyası olarak kullanılacak dosya. "workspace_file" veya "workspace_file_content" belirtilebilir. İkisi birden belirtilemez. |
workspace_file_content |
Dize; isteğe bağlı
Bu deponun WORKSPACE dosyasının içeriği. "workspace_file" veya "workspace_file_content" belirtilebilir. İkisi birden belirtilemez. |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, sha256, url, urls)
Bir dosyayı URL'den indirip dosya grubu olarak kullanılabilmesini sağlar.
Örnekler: Özel kurallarınız için bir Debian paketine sahip olmanız gerektiğini varsayalım. Bu paketi http://example.com/package.deb adresinden indirebilirsiniz. Ardından WORKSPACE dosyası:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
http_file(
name = "my_deb",
url = "http://example.com/package.deb",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
Hedefler, bu dosyaya bağımlı bir bağımlılık olarak @my_deb//file
belirtir.
Özellikler
name |
Ad; zorunlu
Bu depo için benzersiz bir ad. |
auth_patterns |
Sözlük: Dize -> String; isteğe bağlı
Ana makine adlarını özel yetkilendirme kalıplarıyla eşleyen isteğe bağlı bir sözlük.
Bir URL'nin ana makine adı bu diktede mevcutsa değer,
oluşturarak, http isteği için yetkilendirme başlığını oluşturabilirsiniz. Bu, birçok yaygın bulut depolama sağlayıcısında kullanılan özel yetkilendirme şemalarının kullanılmasını sağlar.
Kalıp şu anda 2 jetonu desteklemektedir: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENNihai HTTP isteğinde aşağıdaki üst bilgi bulunur: Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; isteğe bağlı
İndirilen arşivin standart kimliği. Belirtilirse ve boş değilse bazel, aynı standart kimliğe sahip bir istek tarafından önbelleğe eklenmediği sürece arşivi önbellekten almaz. |
downloaded_file_path |
String; isteğe bağlı
İndirilen dosyaya atanan yol |
executable |
Boole; isteğe bağlı
İndirilen dosyanın yürütülebilir hale gelip gelmediği |
integrity |
Dize; isteğe bağlı
İndirilen dosyanın Alt Kaynak Bütünlüğü biçiminde beklenen sağlama toplamı. Bu değer, indirilen dosyanın sağlama toplamıyla eşleşmelidir. _Uzak dosyalar değişebileceği için sağlama toplamını çıkarmak güvenlik riski oluşturur._ Bu alanın çıkarılması, en iyi ihtimalle derlemenizin hermetik olmasını engeller. Hedeflerinize göre geliştirme yapmak daha kolaydır, ancak gönderimden önce bu özellik veya "sha256" ayarlanmalıdır. |
netrc |
Dize; isteğe bağlı
Kimlik doğrulama için kullanılacak .netrc dosyasının konumu |
sha256 |
Dize; isteğe bağlı
İndirilen dosyanın beklenen SHA-256 karması. Bu, indirilen dosyanın SHA-256 değeriyle eşleşmelidir. _Bu bir güvenlik riski uzak dosyalar değişebildiğinden SHA-256'yı hariç tutun._ En iyisi, bunu alanı, derlemenizi hermetik olmayan hale getirir. Geliştirmeyi kolaylaştırmak için isteğe bağlı olarak kullanılabilir ancak dağıtımdan önce ayarlanmalıdır. |
url |
String; isteğe bağlı
Bazel'in kullanımına sunulacak dosyanın URL'si. Bu bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmiyor. İzin verilen url'leri kullanarak daha fazla esneklik elde edebilirsiniz. ifadesini girin. |
urls |
Dize listesi; isteğe bağlı
Bazel'in kullanabileceği bir dosyanın URL'lerinin listesi. Her giriş bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmiyor. URL'ler, başarılı olana kadar sırayla denenir. Bu nedenle, önce yerel aynaları listelemeniz gerekir. Tüm indirme işlemleri başarısız olursa kural başarısız olur. |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
URL'den bir jar dosyası indirir ve java_import olarak kullanılabilir hale getirir
İndirilen dosyaların uzantısı .jar olmalıdır.
Örnekler:
Mevcut deponun
~/chat-app
dizini. http://example.com/openssl-0.2.jar
adresinden kullanılabilen bir SSL kitaplığına bağlı olmalıdır.
Aşağıdaki satırlar ~/chat-app/WORKSPACE
'a eklenirse ~/chat-app
deposundaki hedefler bu hedefe bağlı olabilir:
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",
)
Hedefler, bu jar dosyasına bağlı bir bağımlılık olarak <code>@my_ssl//jar</code> değerini belirtir.
"file:///path/to/file"ı kullanarak geçerli sistemdeki (localhost) dosyalara referans verebilirsiniz
yapmanız gerekmez. Windows kullanıyorsanız "file:///c:/path/to/file"ı kullanın. İkisinde de
örneklerde, üç eğik çizgiye (/
) dikkat edin. İlk iki eğik çizgi file://
, üçüncü eğik çizgi ise
biri dosyanın mutlak yoluna aittir.
Özellikler
name |
Ad; zorunlu
Bu depo için benzersiz bir ad. |
auth_patterns |
Sözlük: Dize -> String; isteğe bağlı
Ana makine adlarını özel yetkilendirme kalıplarıyla eşleyen isteğe bağlı bir sözlük.
Bir URL'nin ana makine adı bu diktede mevcutsa değer,
oluşturarak, http isteği için yetkilendirme başlığını oluşturabilirsiniz. Bu, birçok yaygın bulut depolama sağlayıcısında kullanılan özel yetkilendirme şemalarının kullanılmasını sağlar.
Kalıp şu anda 2 jetonu desteklemektedir: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" }netrc: machine storage.cloudprovider.com password RANDOM-TOKENNihai HTTP isteğinde aşağıdaki üst bilgi bulunur: Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; isteğe bağlı
İndirilen arşivin standart kimliği. Belirtilirse ve boş değilse bazel, aynı standart kimliğe sahip bir istek tarafından önbelleğe eklenmediği sürece arşivi önbellekten almaz. |
downloaded_file_name |
String; isteğe bağlı
Jartona atanan dosya adı indirildi |
integrity |
Dize; isteğe bağlı
İndirilen dosyanın Alt Kaynak Bütünlüğü biçiminde beklenen sağlama toplamı. Bu değer, indirilen dosyanın sağlama toplamıyla eşleşmelidir. _Uzak dosyalar değişebileceği için sağlama toplamını çıkarmak güvenlik riski oluşturur._ Bu alanın çıkarılması, en iyi ihtimalle derlemenizin hermetik olmasını engeller. Hedeflerinize göre geliştirme yapmak daha kolaydır, ancak gönderimden önce bu özellik veya "sha256" ayarlanmalıdır. |
netrc |
Dize; isteğe bağlı
Kimlik doğrulama için kullanılacak .netrc dosyasının konumu |
sha256 |
Dize; isteğe bağlı
İndirilen dosyanın beklenen SHA-256 karması. Bu, indirilen dosyanın SHA-256'sıyla eşleşmelidir. _Bu bir güvenlik riski uzak dosyalar değişebildiğinden SHA-256'yı dahil etmeyin._ Bu mümkün alanı, derlemenizi hermetik olmayan hale getirir. Geliştirmeyi kolaylaştırmak için isteğe bağlıdır ancak bu özellik veya "integrity", yayınlamadan önce ayarlanmalıdır. |
url |
Dize; isteğe bağlı
Bazel'in kullanımına sunulacak dosyanın URL'si. Bu bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmez. İzin verilen url'leri kullanarak daha fazla esneklik elde edebilirsiniz. ifadesini girin. URL ".jar" ile bitmelidir. |
urls |
Dize listesi; isteğe bağlı
Bazel'ın kullanımına sunulacak dosyanın URL'lerinin listesi. Her giriş bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmiyor. URL'ler, başarılı olana kadar sırayla denenir. Bu nedenle önce yerel yansıtmaları listelemeniz gerekir. Tüm indirmeler başarısız olursa kural da başarısız olur. Tüm URL'ler ".jar" ile bitmelidir. |