Bu kural grubu, geliştirdiğiniz belirli donanım platformlarını modellemenize ve bu platformlar için kod derlemek amacıyla ihtiyaç duyabileceğiniz belirli araçları belirtmenize olanak tanır. Kullanıcı, burada açıklanan kavramlar hakkında bilgi sahibi olmalıdır.
Kurallar
kısıtlama_ayarı
Kural kaynağını gösterconstraint_setting(name, default_constraint_value, deprecation, distribs, features, licenses, tags, testonly, visibility)
Bu kural, bir platformun değer belirtebileceği yeni bir kısıtlama türünü kullanıma sunmak için kullanılır.
Örneğin, "glibc_version" adlı bir constraint_setting
tanımlayabilir ve platformların glibc kitaplığının farklı sürümlerine sahip olmasını sağlayabilirsiniz.
Daha fazla bilgi için Platformlar sayfasına bakın.
Her constraint_setting
genişletilebilir constraint_value
kümesi içerir. Genellikle aynı pakette tanımlanırlar ancak bazen farklı bir paket mevcut ayar için yeni değerler sunar. Örneğin, önceden tanımlanmış @platforms//cpu:cpu
ayarı, belirsiz bir cpu mimarisini hedefleyen bir platform tanımlamak için özel bir değerle uzatılabilir.
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 bu platformun o ayar için herhangi bir kısıtlama değeri içermemesi, platformun varsayılan değeri belirttiği durumlarla aynıdır. Aksi takdirde, varsayılan değer yoksa kısıtlama ayarının söz konusu platform tarafından belirtilmemiş olarak kabul edilir. Bu durumda platform, söz konusu ayar için belirli bir değer gerektiren herhangi bir kısıtlama listesiyle (ör. |
kısıtlama_değeri
Kural kaynağını görüntüleconstraint_value(name, constraint_setting, deprecation, distribs, features, licenses, tags, testonly, visibility)Bu kural, belirli bir kısıtlama türü için yeni bir değer sunar. Daha fazla bilgi için Platformlar sayfasına bakın.
Örnek
Aşağıda, önceden tanımlanmış constraint_value
cpu mimarisi için yeni bir olası değer oluşturulmuştur.
constraint_value( name = "mips", constraint_setting = "@platforms//cpu:cpu", )Platformlar bunun ardından,
x86_64
, arm
vb. için alternatif olarak mips
mimarisine sahip olduklarını belirtebilir.
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
Kural kaynağını gösterplatform(name, constraint_values, deprecation, distribs, exec_properties, features, licenses, parents, remote_execution_properties, tags, testonly, visibility)
Bu kural, yeni bir platformu (yapılandırmanın bir kısmının çalıştırılabileceği bir ortamın açıklamasını sağlayan kısıtlama seçeneklerinden (cpu mimarisi veya derleyici sürümü gibi) oluşan bir koleksiyon tanımlar. Daha fazla bilgi için Platformlar sayfasına bakın.
Örnek
Bu, ARM'de Linux çalıştıran tüm ortamları açıklayan 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 içerse de şu anda en fazla bir değer desteklenir ve birden fazla üst öğe belirtmek bir hatadır.
Bir platformdaki kısıtlama ayarının değerini kontrol ederken, önce doğrudan (constraint_values
özelliği aracılığıyla) belirlenen değerler, ardından üst öğedeki kısıtlama değerleri kontrol edilir. Bu, ana platformlar zincirinin yinelemeli şekilde devam etmesini sağlar. Bu şekilde, doğrudan platformda ayarlanan değerler, üst platformda ayarlanan değerleri geçersiz kılar.
Platformlar, exec_properties
özelliğini üst platformdan devralır.
Ana ve alt platformların exec_properties
tanesindeki sözlük girişleri birleştirilecek.
Aynı anahtar hem üst hem de alt exec_properties
içinde görünüyorsa alt öğe değeri kullanılır. Alt platform, değer olarak boş bir dize belirtirse karşılık gelen özellik ayarlanır.
Platformlar, remote_execution_properties
özelliğini (kullanımdan kaldırılan) ü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 olmaya devam eder ancak gelecekte kaldırılacaktır.
Üst platform olduğunda remote_execution_platform
ayarlama mantığı şu şekildedir:
-
Alt platformda
remote_execution_property
ayarlanmazsa üst öğedekiremote_execution_properties
kullanılır. -
remote_execution_property
alt platformda ayarlanmışsa ve {PARENT_REMOTE_EXECUTION_PROPERTIES} gerçek dizesini içeriyorsa bu makro, üst öğeninremote_execution_property
özelliğinin içeriğiyle değiştirilecektir. -
remote_execution_property
, alt platformda ayarlanmışsa ve makroyu içermiyorsa alt cihazınremote_execution_property
değişkeni değişmeden 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
ile exec_properties
öğelerinin aynı devralma zincirinde birlikte kullanılmasına izin verilmez.
Kullanımdan kaldı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ındı) ve@platforms//cpu:x86_64
(doğrudan platformda ayarlanır) kısıtlama değerlerine sahip. -
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_propertys" öğesini devralır ve kendi üstünü ayarlamaz. -
child_b
, üst öğeninexec_properties
değerini devralır vek1
değerini geçersiz kılar.exec_properties
değeri:{ "k1": "child", "k2": "v2" }
. -
child_c
, üst öğeninexec_properties
değerini devralır vek1
değerini ayarlar.exec_properties
değeri:{ "k2": "v2" }
. -
child_d
, üst öğeninexec_properties
değerini devralır ve yeni bir özellik ekler.exec_properties
değeri:{ "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 ve üst platform aynı anahtarları tanımlarsa alt öğelerin 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 ifadesinin yerine geçer.
|
parents
|
platform hedefinin etiketi. Özellik bir liste seçse de birden fazla platform bulunmamalıdır. Doğrudan bu platformda ayarlanmayan kısıtlama_ayarları üst platformda yer alır.
Ayrıntılar için Platform Devralma bölümündeki bölüme bakın.
|
remote_execution_properties
|
|
araç zinciri
Kural kaynağını göstertoolchain(name, deprecation, distribs, exec_compatible_with, features, licenses, tags, target_compatible_with, target_settings, testonly, toolchain, toolchain_type, visibility)
Bu kural, belirli bir araç zincirinin türünü ve kısıtlamalarını tanımlayarak araç zinciri çözümü sırasında seçilebilmesini sağlar. Daha fazla bilgi 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 öğelerinin listesi.
|
target_compatible_with
|
constraint_value listesi.
|
target_settings
|
config_setting öğelerinin listesi.
|
toolchain
|
|
toolchain_type
|
toolchain_type hedefinin etiketi.
|
araç zinciri_türü
Kural kaynağını göstertoolchain_type(name, compatible_with, deprecation, features, restricted_to, tags, target_compatible_with, testonly, visibility)
Bu kural, farklı platformlar için aynı rolü sunan bir araç grubunu temsil eden basit bir hedef olan yeni bir araç zinciri türünü tanımlar.
Daha fazla bilgi için Araç Zincirleri sayfasına bakın.
Örnek
Bu, özel bir kural için bir araç zinciri türünü tanımlar.
toolchain_type( name = "bar_toolchain_type", )
Bir 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. |