Aşağıdaki işlevler @bazel_tools//tools/build_defs/repo:http.bzl
'ten yüklenebilir.
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, sıkıştırılmış dosyayı açar ve hedeflerini bağlama için uygun 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, ~/chat-app
dizininde bulunan bir sohbet programının kaynak kodunun bulunduğunu varsayalım. Bunun, http://example.com/openssl.zip adresindeki bir SSL kitaplığına bağlı olması gerekir. 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"],
)
Aşağıdaki satırlar ~/chat-app/WORKSPACE
bölümüne eklenirse ~/chat-app
deposundaki hedefler bu hedefe bağlı olabilir:
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, @my_ssl//:openssl-lib
'ü bağımlılık olarak belirtir.
Özellikler
name |
Ad; zorunlu
Bu depo için benzersiz bir ad. |
add_prefix |
Dize; isteğe bağlı
Depo dizinine göre hedef dizin. Arşiv, içindeki dosya yollarına "strip_prefix" (varsa) uygulandıktan sonra bu dizinde açılır. Örneğin, "add_prefix = "bar"" ve "strip_prefix = "foo-1.2.3"" ise "foo-1.2.3/src/foo.h" dosyası "bar/src/foo.h" olarak paketten çıkarılır. |
auth_patterns |
Sözlük: Dize -> Dize; isteğe bağlı
Ana makine adlarını özel yetkilendirme kalıplarıyla eşleştiren isteğe bağlı bir dikte.
Bir URL'nin ana makine adı bu diktede mevcutsa değer, http isteği için yetkilendirme başlığı oluşturulurken kalıp olarak kullanılır. 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>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
build_file |
Etiket; isteğe bağlı
Bu kod deposu 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ı gerekmez ancak adlandırılabilir (BUILD.yeni-depo-adı gibi bir ad, deponun asıl BUILD dosyalarından ayırt edilmesini sağlayabilir. build_file veya build_file_content belirtilebilir ancak ikisi birden belirtilemez. |
build_file_content |
Dize; isteğe bağlı
Bu deponun BUILD dosyasının içeriği. build_file veya build_file_content belirtilebilir ancak ikisi birden belirtilemez. |
canonical_id |
Dize; 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ın atlanması güvenlik riski oluşturur._ Bu alanın atlanması, derlemenizi hermetik hale getirmez. Geliştirmeyi kolaylaştırmak için isteğe bağlıdır ancak bu özellik veya "sha256" gönderimden önce 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ülürken ve patch_tool özelliği belirtilmediyse "patch" kullanılır. Bu durum yalnızca "yamalar" ö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, bulanık eşleşmeyi ve ikili yamayı desteklemeyen Bazel'e özgü yamayı kullanır. Ancak Bazel, "patch_tool" özelliği belirtilirse veya "patch_args" özelliğinde "-p" dışında başka bağımsız değişkenler varsa yedek olarak yamayı komut satırı aracını kullanır. |
remote_patch_strip |
Tam sayı; isteğe bağlı
Uzak yamalarda dosya adından çıkarılacak baştaki eğik çizgi sayısı. |
remote_patches |
Sözlük: Dize -> Dize; 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 |
Dize; isteğe bağlı
İndirilen dosyanın beklenen SHA-256 değeri. Bu, indirilen dosyanın SHA-256 değeriyle eşleşmelidir. _Uzak dosyalar değişebileceği için SHA-256'nın atlanması güvenlik riski oluşturur._ Bu alanın atlanması, 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 |
Dize; isteğe bağlı
Çıkarılan dosyalardan kaldırılacak bir dizin ön eki. Birçok arşivde, arşivdeki tüm yararlı dosyaları içeren bir üst düzey dizin bulunur. Bu ön eki "build_file" içinde tekrar tekrar belirtmek yerine, bu alan onu çıkarılan tüm dosyalardan ayırmak için kullanılabilir. Örneğin, altında "WORKSPACE" dosyası bulunan "foo-lib-1.2.3/" dizinini ve oluşturmak istediğiniz gerçek kodu içeren "src/", "lib/" ve "test/" dizinlerini içeren "foo-lib-En Son.zip" dosyasını kullandığınızı varsayalım. Üst düzey dizin olarak `foo-lib-1.2.3` dizinini kullanmak için `strip_prefix = "foo-lib-1.2.3"` değerini belirtin. 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 ön ek arşivdeki bir dizinle eşleşmezse Bazel bir hata döndürür. |
type |
Dize; isteğe bağlı
İndirilen dosyanın arşiv türü. Varsayılan olarak arşiv türü, URL'nin dosya uzantısından belirlenir. 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 kullanabileceği bir dosyanın URL'si. Bu bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmez. Getirilecek alternatif URL'lerin belirtilmesine olanak tanıyan urls parametresi, daha fazla esneklik elde edebilir. |
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 depo için WORKSPACE dosyasının içeriği. "workspace_file" veya "workspace_file_content"den biri belirtilebilir ya da ikisi 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 ihtiyacınız olduğunu varsayalım. Bu paketi http://example.com/package.deb adresinden indirebilirsiniz. Ardından WORKSPACE dosyanıza şunları ekleyebilirsiniz:
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ı olacak bağımlılık olarak @my_deb//file
'ü belirtir.
Özellikler
name |
Ad; gerekli
Bu kod deposu için benzersiz bir ad. |
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 sözlükte mevcutsa değer, HTTP isteği için yetkilendirme başlığı oluşturulurken kalıp olarak kullanılır. Bu, birçok yaygın bulut depolama sağlayıcısında kullanılan özel yetkilendirme şemalarının kullanılabilmesini sağlar.
Desen şu anda 2 jetonu desteklemektedir: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
Dize; 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 |
Dize; isteğe bağlı
İndirilen dosyaya atanan yol |
executable |
Boole; isteğe bağlı
İndirilen dosyanın yürütülebilir hale getirilip getirilmeyeceğ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ın atlanması güvenlik riski oluşturur._ Bu alanın atlanması, derlemenizi hermetik hale getirmez. Geliştirmeyi kolaylaştırmak için isteğe bağlıdır ancak bu özellik veya "sha256" gönderimden önce 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'sı. Bu, indirilen dosyanın SHA-256 değeriyle eşleşmelidir. _Uzak dosyalar değişebileceği için SHA-256'yı çıkarmak güvenlik riski oluşturur._ Bu alanın çıkarılması, en iyi ihtimalle derlemenizin hermetik olmasını engeller. Geliştirmeyi kolaylaştırmak isteğe bağlıdır ancak gönderimden önce ayarlanmalıdır. |
url |
Dize; isteğe bağlı
Bazel'in kullanabileceği bir dosyanın URL'si. Bu bir dosya, http veya https URL'si olmalıdır. Yönlendirmeler takip edilir. Kimlik doğrulama desteklenmez. Getirilecek alternatif URL'lerin belirtilmesine olanak tanıyan urls parametresi, daha fazla esneklik elde edebilir. |
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 indirmeler başarısız olursa kural da başarısız olur. |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
Bir URL'den jar dosyasını indirip java_import olarak kullanılabilir hale getirir.
İndirilen dosyalar .jar uzantısına sahip olmalıdır.
Örnekler: Mevcut depoda, ~/chat-app
dizininde bulunan bir sohbet programının kaynak kodunun bulunduğunu varsayalım. 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
bölümüne 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ğımlı bir bağımlılık olarak <code>@my_ssl//jar</code> öğesini belirtir.
Unix tabanlı sistemlerdeyseniz "file:///path/to/file"ı kullanarak mevcut sistemdeki (localhost) dosyalara referans verebilirsiniz. Windows kullanıyorsanız "file:///c:/path/to/file" ifadesini kullanın. Her iki örnekte de üç eğik çizgiye (/
) dikkat edin. İlk iki eğik çizgi file://
, üçüncü eğik çizgi ise dosyanın mutlak yoluna aittir.
Özellikler
name |
Ad; gerekli
Bu kod deposu için benzersiz bir ad. |
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 sözlükte mevcutsa değer, HTTP isteği için yetkilendirme başlığı oluşturulurken kalıp olarak kullanılır. Bu, birçok yaygın bulut depolama sağlayıcısında kullanılan özel yetkilendirme şemalarının kullanılabilmesini sağlar.
Desen şu anda 2 jetonu desteklemektedir: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
Dize; 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 |
Dize; 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ın atlanması güvenlik riski oluşturur._ Bu alanın atlanması, derlemenizi hermetik hale getirmez. Geliştirmeyi kolaylaştırmak için isteğe bağlıdır ancak bu özellik veya "sha256" gönderimden önce 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 değeri. Bu, indirilen dosyanın SHA-256 değeriyle eşleşmelidir. _Uzak dosyalar değişebileceği için SHA-256'nın atlanması güvenlik riski oluşturur._ Bu alanın atlanması, 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 desteklenmiyor. Getirilecek alternatif URL'lerin belirtilmesine olanak tanıyan urls parametresi, daha fazla esneklik elde edebilir. URL ".jar" ile bitmelidir. |
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 yansıtmaları listelemeniz gerekir. Tüm indirme işlemleri başarısız olursa kural başarısız olur. Tüm URL'ler ".jar" ile bitmelidir. |