http deposu kuralları

Sorun bildirin Kaynağı göster Gece · 7,4 , 7.3 · 7,2 · 7,1 · 7,0 · 6,5

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: <login> ve <password>. Bunlar, aynı ana makine adı için netrc dosyasında eşdeğer değerleriyle değiştirilir. Biçimlendirmeden sonra sonuç ayarlanır. olarak HTTP isteğinin Authorization alanının değeri olarak kullanılır. Hamiline ait jeton kullanılarak OAuth2'nin etkin olduğu bir API'ye http indirmesi için örnek özellik ve netrc:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Nihai 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: <login> ve <password> (bunların yerine eşdeğer değerler kullanılır) aynı ana makine adına ait netrc dosyasında bulabilirsiniz. Sonuç, biçimlendirildikten sonra HTTP isteğinin Authorization alanının değeri olarak ayarlanır. Taşıyıcı jetonu kullanan oauth2 özellikli bir API'ye HTTP indirme işlemi için örnek özellik ve netrc:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Nihai 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: <login> ve <password> (bunların yerine eşdeğer değerler kullanılır) aynı ana makine adına ait netrc dosyasında bulabilirsiniz. Sonuç, biçimlendirildikten sonra HTTP isteğinin Authorization alanının değeri olarak ayarlanır. Taşıyıcı jetonu kullanan oauth2 özellikli bir API'ye HTTP indirme işlemi için örnek özellik ve netrc:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Nihai 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.