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ü kullanıma sunmak için kullanılır.
Örneğin, platformlarda glibc kitaplığının farklı sürümlerinin yüklü olma özelliğini göstermek için "glibc_version" adlı bir constraint_setting
tanımlayabilirsiniz.
Daha fazla ayrıntı için Platformlar sayfasına bakın.
Her constraint_setting
, genişletilebilir bir ilişkilendirilmiş constraint_value
grubuna sahiptir. Bunlar genellikle aynı paket içinde tanımlanır ancak bazen farklı bir paket, mevcut bir ayar için yeni değerler katabilir. Örneğin, önceden tanımlanmış @platforms//cpu:cpu
ayarı, anlaşılması güç bir CPU mimarisini hedefleyen bir platform tanımlamak için özel bir değerle genişletilebilir.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
default_constraint_value
|
constraint_value , bu constraint_setting ile aynı pakette tanımlanmalıdır.
Bir kısıtlama ayarının varsayılan değeri varsa platformda bu ayar için herhangi bir kısıtlama değeri içermediğinde bu, platformun varsayılan değeri belirttiğiyle aynı olur. Aksi takdirde, varsayılan değer yoksa kısıtlama ayarının ilgili platform tarafından belirtilmediği kabul edilir. Bu durumda platform, söz konusu ayar için belirli bir değer gerektiren kısıtlama listeleriyle (ör. |
constraint_value
constraint_value(name, constraint_setting, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, tags, testonly, visibility)Bu kural, belirli bir kısıtlama türü için yeni bir değer sunar. Daha fazla ayrıntı için Platformlar sayfasına bakın.
Örnek
Aşağıdaki komut, CPU mimarisini temsil eden önceden tanımlanmış constraint_value
için yeni bir olası değer oluşturur.
constraint_value( name = "mips", constraint_setting = "@platforms//cpu:cpu", )Platformlar daha sonra
x86_64
, arm
ve benzerlerine alternatif olarak mips
mimarisine sahip olduklarını beyan edebilirler.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
constraint_setting
|
constraint_value öğesinin olası bir seçim olduğu constraint_setting .
|
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. Bu, derlemenin bir bölümünün çalışabileceği bir ortamı tanımlayan kısıtlama seçeneklerinden oluşan adlandırılmış bir koleksiyon (ör. CPU mimarisi veya derleyici sürümü) belirtir. Daha fazla ayrıntı için Platformlar sayfasına bakın.
Örnek
Bu, ARM üzerinde Linux çalıştıran herhangi bir ortamı tanımlayan bir platformu tanımlar.
platform( name = "linux_arm", constraint_values = [ "@platforms//os:linux", "@platforms//cpu:arm", ], )
Platform Devralma
Platformlar, kısıtlama değerlerini devralacakları başka bir platformu belirtmek için parents
özelliğini kullanabilir. parents
özelliği bir liste alsa da, şu anda tek bir değerden fazlası desteklenmemektedir ve birden fazla üst öğe belirtmek bir hatadır.
Bir platformda bir kısıtlama ayarının değeri kontrol edilirken, önce doğrudan ayarlanan değerler (constraint_values
özelliği aracılığıyla) ve ardından üst öğedeki kısıtlama değerleri kontrol edilir. Bu işlem, üst platformlar zincirinde tekrar tekrar devam eder. Böylece doğrudan bir platformda ayarlanan tüm değerler, üst platform üzerinde ayarlanan değerleri geçersiz kılar.
Platformlar, exec_properties
özelliğini üst platformdan devralır.
Üst ve alt platformların exec_properties
dilindeki sözlük girişleri birleştirilecek.
Hem üst hem de alt öğenin exec_properties
öğesinde aynı anahtar görünüyorsa alt öğenin değeri kullanılır. Alt platform, değer olarak boş bir dize belirtirse ilgili özellik ayarlanmaz.
Platformlar, remote_execution_properties
özelliğini üst platformdan da devralabilir. Not: Yeni kod, bunun yerine exec_properties
kullanmalıdır. Aşağıda açıklanan mantık, eski davranışla uyumlu olacak şekilde korunmaktadır ancak gelecekte kaldırılacaktır.
Bir üst platform olduğunda remote_execution_platform
özelliğinin ayarlanmasının mantığı aşağıdaki gibidir:
-
Alt platformda
remote_execution_property
ayarlanmazsa üst platformunremote_execution_properties
kullanılır. -
remote_execution_property
alt platformda ayarlanmışsa ve {PARENT_REMOTE_EXECUTION_PROPERTIES} değişmez dizesini içeriyorsa bu makro, üst öğeninremote_execution_property
özelliğinin içeriğiyle değiştirilir. -
remote_execution_property
alt platformda ayarlanırsa ve makroyu içermezse alt yayıncınınremote_execution_property
öğesi değiştirilmeden kullanılır.
remote_execution_properties
kullanımdan kaldırıldığı ve aşamalı olarak kullanımdan kaldırılacağı için remote_execution_properties
ve exec_properties
öğelerinin aynı devralma zincirinde karıştırılmasına izin verilmez.
Desteği sonlandırılan remote_execution_properties
yerine exec_properties
kullanmayı tercih edin.
Ö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:linux
(üst öğeden devralınır) ve@platforms//cpu:x86_64
(doğrudan platformda ayarlanır) kısıtlama değerlerine sahiptir. -
child_b
, tüm kısıtlama değerlerini üst öğeden devralır ve kendi değerini ayarlamaz.
Ö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
, üst öğenin "exec_properties" değerini devralır ve kendi değerini ayarlamaz. -
child_b
üst öğeninexec_properties
değerini devralır vek1
değerini geçersiz kılar.exec_properties
etkinliği:{ "k1": "child", "k2": "v2" }
. -
child_c
, üst öğeninexec_properties
değerini devralır vek1
ayarını kaldırır.exec_properties
etkinliği:{ "k2": "v2" }
. -
child_d
, üst öğeninexec_properties
öğesini devralır ve yeni bir mülk ekler.exec_properties
etkinliğ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 veriler de dahildir.
Alt platform ve üst platform aynı anahtarları tanımlıyorsa alt platformun değerleri korunur. Boş dize olan bir değerle ilişkili tüm anahtarlar sözlükten kaldırılır.
Bu özellik, kullanımdan kaldırılan remote_execution_properties
sürümünün tamamen yerini almıştır.
|
parents
|
platform hedefinin etiketi. Özellik bir liste alsa da birden fazla platform bulunmamalıdır. Doğrudan bu platformda ayarlanmayan tüm restricted_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, araç zincirinin çözümlenmesi sırasında seçilebilmesi için belirli bir araç zincirinin türünü ve kısıtlamalarını tanımlar. Daha fazla ayrıntı için Araç Zincirleri sayfasına bakın.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
exec_compatible_with
|
constraint_value listesi.
|
target_compatible_with
|
constraint_value listesi.
|
target_settings
|
config_setting öğelerinin listesi.
|
toolchain
|
|
toolchain_type
|
toolchain_type hedefinin etiketi.
|
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. Bu, farklı platformlar için aynı rolü taşıyan bir araç sınıfını temsil eden basit bir hedeftir.
Daha fazla ayrıntı için Araç Zincirleri sayfasına bakın.
Örnek
Bu değer, özel kural için bir 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. |