Kurallar
constraint_setting
constraint_setting(name, default_constraint_value, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, tags, testonly, visibility)
Bu kural, platformun değer belirtebileceği yeni bir kısıtlama türünü tanıtmak için kullanılır.
Örneğin, "glibc_version" adlı bir constraint_setting tanımlayabilirsiniz. temsil etmek
platformlara glibc kitaplığının farklı sürümlerini yükleme olanağı sunar.
Daha fazla bilgi için
Platformlar sayfası.
Her constraint_setting, genişletilebilir bir ilişkili
constraint_value sn. Bunlar genellikle aynı paket içinde tanımlanır ancak bazen
mevcut bir ayar için yeni değerler getirir. Örneğin, önceden tanımlanmış
@platforms//cpu:cpu ayarı özel bir değerle uzatılabilir, böylece
Anlaşılması zor bir CPU mimarisini hedefleyen bir platform tanımlamalıdır.
Bağımsız değişkenler
| Özellikler | |
|---|---|
name |
Bu hedef için benzersiz bir ad. |
default_constraint_value
|
constraint_value özelliğinin
bu constraint_setting ile aynı paket.
Bir kısıtlama ayarının varsayılan değeri varsa bir platform
herhangi bir kısıtlama değeri, platformun
varsayılan değere sahiptir. Aksi takdirde, varsayılan değer yoksa kısıtlama ayarı dikkate alınır
o platform tarafından belirtilmemelidir. Bu durumda, platform, şirketin en büyük
belirli bir değer gerektiren kısıtlama listesi (ör. |
constraint_value
constraint_value(name, constraint_setting, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, tags, testonly, visibility)
Örnek
Aşağıdaki işlem, önceden tanımlanmış constraint_value için yeni bir olası değer oluşturur
CPU mimarisini temsil eder.
constraint_value(
name = "mips",
constraint_setting = "@platforms//cpu:cpu",
)
mips mimarisine sahip olduklarını beyan edebilir
x86_64, arm vb.
Bağımsız değişkenler
| Özellikler | |
|---|---|
name |
Bu hedef için benzersiz bir ad. |
constraint_setting
|
constraint_value öğesinin olduğu constraint_setting
tercih edebilirsiniz.
|
platform
platform(name, constraint_values, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, parents, remote_execution_properties, tags, testonly, visibility)
Bu kural yeni bir platformu tanımlar. Kısıtlama seçeneklerinin adlandırılmış bir koleksiyonu (ör. cpu mimarisi veya derleyici sürümü) üzerinde çalışabileceğine dikkat edin. Daha fazla bilgi için Platformlar sayfası.
Örnek
Bu, ARM'de Linux çalıştıran tüm ortamları tanımlayan bir platformu tanımlar.
platform(
name = "linux_arm",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:arm",
],
)
Platform Devralma
Platformlar, etkinleştirecekleri başka bir platformu belirtmek için parents özelliğini kullanabilir.
kısıtlama değerlerini şuradan devralabilir. parents özelliği bir liste alsa da
şu anda birden fazla değer desteklenmektedir. Birden fazla üst değer belirtmek hatadır.
Bir platformda bir kısıtlama ayarının değerini kontrol ederken, önce doğrudan değerler
(constraint_values özelliği ile) işaretli olup ardından kısıtlama değerleri
ebeveyndir. Bu, üst platformlar zincirinde yinelenen şekilde devam eder. Bu şekilde, size
Doğrudan bir platformda ayarlanan değerler, üst öğede ayarlanan değerleri geçersiz kılar.
Platformlar, exec_properties özelliğini üst platformdan devralır.
Üst ve alt platformların exec_properties oranındaki sözlük girişleri
birleştirilir.
Aynı anahtar hem üst hem de alt yayıncının exec_properties öğesinde görünüyorsa
alt değerin değeri kullanılır. Alt platform değer olarak boş bir dize belirtirse
ilgili özelliğin ayarı kaldırılır.
Platformlar (desteği sonlandırılmış) remote_execution_properties özelliğini de devralabilir
ana platformdan
alabilirsiniz. Not: Yeni kodda bunun yerine exec_properties kullanılmalıdır. İlgili içeriği oluşturmak için kullanılan
aşağıda açıklanan mantık eski davranışla uyumlu olmak üzere korunur ancak kaldırılacak
daha avantajlı bir konumda olursunuz.
Bu kural için remote_execution_platform politikasını ayarlamanın mantığı aşağıdaki gibidir:
üst platformdur:
-
remote_execution_propertyalt platformda ayarlanmazsa üst platformunremote_execution_propertieskullanılacak. -
remote_execution_propertyalt platformda ayarlanmışsa ve {PARENT_REMOTE_EXECUTION_PROPERTIES} değişmez dizesi olursa bu makro üst öğeninremote_execution_propertyözelliğinin içeriğiyle değiştirilir. -
remote_execution_propertyalt platformda ayarlanmışsa ve şunu içermiyorsa: alt öğeninremote_execution_propertyparametresi değiştirilmeden kullanılır.
remote_execution_properties desteğinin sonlandırılması ve kademeli olarak kullanımdan kaldırılması nedeniyle,
remote_execution_properties ve exec_properties aynı
devralma zincirine izin verilmez.
Kullanımdan kaldırılanlar yerine exec_properties kullanımını tercih et
remote_execution_properties.
Örnek: Kısıtlama Değerleri
platform(
name = "parent",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:arm",
],
)
platform(
name = "child_a",
parents = [":parent"],
constraint_values = [
"@platforms//cpu:x86_64",
],
)
platform(
name = "child_b",
parents = [":parent"],
)
Bu örnekte, alt platformlar aşağıdaki özelliklere sahiptir:
-
child_a,@platforms//os:linuxkısıtlama değerlerine sahip (Devralındı) üst öğeden) ve@platforms//cpu:x86_64(doğrudan platformda ayarlanır). -
child_b, tüm kısıtlama değerlerini üst öğeden devralır ve şunlardan hiçbirini ayarlamaz sahip olmalıdır.
Örnek: Yürütme özellikleri
platform(
name = "parent",
exec_properties = {
"k1": "v1",
"k2": "v2",
},
)
platform(
name = "child_a",
parents = [":parent"],
)
platform(
name = "child_b",
parents = [":parent"],
exec_properties = {
"k1": "child"
}
)
platform(
name = "child_c",
parents = [":parent"],
exec_properties = {
"k1": ""
}
)
platform(
name = "child_d",
parents = [":parent"],
exec_properties = {
"k3": "v3"
}
)
Bu örnekte, alt platformlar aşağıdaki özelliklere sahiptir:
-
child_a, "exec_properties" özelliğini devralır üst öğedir ve kendi kimliğini ayarlamaz. -
child_b, üst öğeninexec_propertiesdeğerini devralır vek1değerine ayarlanır. Toplantınınexec_propertiesözelliği:{ "k1": "child", "k2": "v2" }. -
child_c, üst öğeninexec_propertiesdeğerini devralır ve ayarı kaldırırk1. Toplantınınexec_propertiesözelliği:{ "k2": "v2" }. -
child_d, üst öğeninexec_propertiesöğesini devralır ve yeni bir ekler Toplantınınexec_propertiesözelliği:{ "k1": "v1", "k2": "v2", "k3": "v3" }.
Bağımsız değişkenler
| Özellikler | |
|---|---|
name |
Bu hedef için benzersiz bir ad. |
constraint_values
|
Bu listedeki her |
exec_properties
|
exec_properties özelliklerindeki tüm veriler de dahildir.
Alt ve üst platform aynı anahtarları tanımlıyorsa alt öğenin değerleri korunur. Herhangi biri
Boş dize olan bir değerle ilişkili anahtarlar sözlükten kaldırılır.
Bu özellik, kullanımdan kaldırılan ve
remote_execution_properties
|
parents
|
platform hedefinin etiketi. Her ne kadar
özellik bir liste aldığında en fazla bir platform olmalıdır. Herhangi biri
Doğrudan bu platformda ayarlanmamış olan kısıtlama_settings üst platformda bulunur.
Ayrıntılar için Platform Devralma bölümüne bakın.
|
remote_execution_properties
|
|
araç zinciri
toolchain(name, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, tags, target_compatible_with, target_settings, testonly, toolchain, toolchain_type, visibility)
Bu kural, seçilebilmesi için belirli bir araç zincirinin türünü ve kısıtlamalarını açıklar çok önemlidir. Bkz. Daha fazlası için Araç Zincirleri sayfasını bolca fırsat sunuyor.
Bağımsız değişkenler
| Özellikler | |
|---|---|
name |
Bu hedef için benzersiz bir ad. |
exec_compatible_with
|
constraint_value listesi:
bu araç zincirinin söz konusu platformda bir hedef bina için seçilmesini gerektirir.
|
target_compatible_with
|
constraint_value öğelerinin listesi:
bu araç zincirinin söz konusu platformdaki bir hedef bina için seçilmesini gerektirir.
|
target_settings
|
config_setting listesi
seçilmesine izin verir.
|
toolchain
|
|
toolchain_type
|
toolchain_type hedefin, bu reklamverenin
araç zincirinin sunulması.
|
toolchain_type
toolchain_type(name, compatible_with, deprecation, features, restricted_to, tags, target_compatible_with, testonly, visibility)
Bu kural yeni bir araç zinciri türünü tanımlar. Basit bir hedef, farklı platformlarda aynı rolü üstlenir.
Daha fazla ayrıntı için Araç Zincirleri sayfasına bakın.
Örnek
Bu, özel bir kural için araç zinciri türünü tanımlar.
toolchain_type(
name = "bar_toolchain_type",
)
Bu, bzl dosyasında kullanılabilir.
bar_binary = rule(
implementation = _bar_binary_impl,
attrs = {
"srcs": attr.label_list(allow_files = True),
...
# No `_compiler` attribute anymore.
},
toolchains = ["//bar_tools:toolchain_type"]
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name |
Bu hedef için benzersiz bir ad. |