Bu kurallar dizisi, kullanmakta olduğunuz belirli donanım platformlarını modellemenize olanak ve bu platformlar için kod derlemek gerekebilecek belirli araçları belirlemeye çalışın. Kullanıcılar, burada açıklanan kavramlara aşina olmalıdır.
Kurallar
constraint_setting
Kural kaynağını görüntüleconstraint_setting(name, default_constraint_value, deprecation, distribs, 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 |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
default_constraint_value
|
Ad; nonyapılandırabilir; varsayılan değer 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
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ı.
Ö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", ). Ardından, platformlar alternatif olarak
mips
mimarisine sahip olduklarını beyan edebilir
x86_64
, arm
vb.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
constraint_setting
|
Etiket; nonyapılandırabilir; zorunlu Buconstraint_value öğesinin olduğu constraint_setting
tercih edebilirsiniz.
|
platform
Kural kaynağını görüntüleplatform(name, constraint_values, deprecation, distribs, 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ına bakın.
Ö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_property
alt platformda ayarlanmazsa üst platformunremote_execution_properties
kullanılacak. -
remote_execution_property
alt 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_property
alt platformda ayarlanmışsa ve şunu içermiyorsa: alt öğeninremote_execution_property
parametresi 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:linux
kı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_properties
değerini devralır vek1
değerine ayarlanır. Toplantınınexec_properties
özelliği:{ "k1": "child", "k2": "v2" }
. -
child_c
, üst öğeninexec_properties
değ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 |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
constraint_values
|
Etiket listesi; nonyapılandırabilir; varsayılan değer Bu listedeki her |
exec_properties
|
Sözlük: Dize -> String; nonconfig; varsayılan değer 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
|
Etiket listesi; nonyapılandırabilir; varsayılan değer 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
|
String; nonconfig; varsayılan değer |
araç zinciri
Kural kaynağını görüntületoolchain(name, deprecation, distribs, exec_compatible_with, 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 |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
exec_compatible_with
|
Etiket listesi; nonyapılandırabilir; varsayılan değer constraint_value listesi:
bu araç zincirinin söz konusu platformda bir hedef bina için seçilmesini gerektirir.
|
target_compatible_with
|
Etiket listesi; nonyapılandırabilir; varsayılan değer constraint_value öğelerinin listesi:
bu araç zincirinin söz konusu platformdaki bir hedef bina için seçilmesini gerektirir.
|
target_settings
|
Etiket listesi; varsayılan değer config_setting listesi
seçilmesine izin verir.
|
toolchain
|
Ad; zorunlu Bu durumda kullanıma sunulan asıl aracı veya araç paketini temsil eden hedef araç zincirinin seçili olduğundan emin olun. |
toolchain_type
|
Etiket; nonyapılandırabilir; zorunlu Birtoolchain_type hedefin, bu reklamverenin
araç zincirinin sunulması.
|
toolchain_type
Kural kaynağını görüntületoolchain_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 |
Ad; zorunlu Bu hedef için benzersiz bir ad. |