Sürüm oluşturma başvurusu
Sürüm oluşturma, projeniz tarafından kullanılan bağımlılıkların kesin düzeltmelerini bildirim dosyanızın içinden belirlenimci olarak denetlemenize olanak tanır. Sürüm oluşturma yalnızca kullanıcılar Bildirim modunda kullanılabilir.
vcpkg sürüm oluşturma algoritması ve üst düzey kavramlar hakkında daha fazla bilgi için bkz. Sürüm Oluşturma Kavramları.
Bağlamla ilgili bir örnek için sürüm oluşturmaya başlama kılavuzumuza bakın.
Sürüm Düzenleri
vcpkg'deki bağlantı noktaları, paketin yazarları tarafından kullanılan sürüm oluşturma kurallarını izlemeye çalışmalıdır. Bu nedenle, bir paketin sürümü bildirildiğinde uygun düzen kullanılmalıdır.
Her sürüm oluşturma düzeni, geçerli bir sürüm dizesinin ne olduğuna ilişkin kendi kurallarını ve daha da önemlisi aynı düzeni kullanarak sürümleri sıralama kurallarını tanımlar.
vcpkg tarafından anlaşılan sürüm oluşturma düzenleri şunlardır:
Bildirim özelliği | Sürüm oluşturma düzeni |
---|---|
version |
Noktalı sayısal sürümler için |
version-semver |
SemVer uyumlu sürümler için |
version-date |
YYYY-MM-DD biçimindeki tarihler için |
version-string |
Rastgele dizeler için |
Bildirim yalnızca bir sürüm bildirimi içermelidir.
Not
Tasarım gereği, vcpkg farklı şemalar kullanan sürümleri karşılaştırmaz. Örneğin, version-string: 7.1.3
olan bir paket, dönüştürme belirgin görünse bile version: 7.1.4
kullanılarak aynı paketle karşılaştırılamaz.
version
Gevşek, noktayla ayrılmış, semver benzeri bir düzeni izleyen sürüm dizelerini kabul eder.
Sürüm mantıksal olarak noktayla ayrılmış (.
) sayısal bölümlerden oluşur. Her bölüm, başında sıfır olmayan bir tamsayı pozitif sayı içermelidir.
Bu sürüm oluşturma düzeni için regex deseni şöyledir: (0|[1-9]\d*)(\.(0|[1-9]\d*))*
Sıralama davranışı: İki sürüm karşılaştırılırken, ilk fark bulunana kadar her bölüm soldan sağa sayısal değerleriyle karşılaştırılır. En küçük bölüm kümesine sahip bir sürüm, önceki tüm bölümlerin eşit olarak karşılaştırılması göz önünde bulundurulduğunda, daha büyük bir bölüm kümesine sahip olan başka bir sürümden önceliklidir.
Örnek:
0
< 0.1
< 0.1.0
< 1
< 1.0.0
< 1.0.1
< 1.1
< 2.0.0
version-semver
anlamsal sürüm oluşturma belirtimiaçıklandığı gibi anlamsal sürüm oluşturma kurallarına uyan sürüm dizelerini kabul eder.
Sıralama davranışı: Dizeler, anlamsal sürüm oluşturma belirtiminde açıklanan kurallara göre sıralanır.
Örnek:
1.0.0-1
< 1.0.0-alpha
< 1.0.0-beta
< 1.0.0
< 1.0.1
< 1.1.0
version-date
ISO-8601 biçiminden sonra bir tarihe ayrıştırılabilir sürüm dizelerini YYYY-MM-DD
kabul eder. Kesinleştirme tanımlayıcılarına, başta sıfır olmadan noktayla ayrılmış, pozitif, tamsayı şeklinde izin verilir.
Bu, sürüm sürümleri oluşturulmamış "Live at HEAD" kitaplıkları için önerilen sürüm oluşturma şemasıdır.
Bu sürüm oluşturma düzeni için regex deseni şöyledir: \d{4}-\d{2}-\d{2}(\.(0|[1-9]\d*))*
Sıralama davranışı: Dizeler önce tarih bölümlerine, sonra da kesinleştirme tanımlayıcılarının sayısal karşılaştırmasına göre sıralanır. Kesinleştirme tanımlayıcıları, gevşek (version
) düzeninin kurallarına uyar.
Örnekler: 2021-01-01
<2021-01-01.1
<2021-02-01.1.2
<2021-02-01.1.3
<2021-02-01
version-string
Diğer düzenlerden herhangi birine uymayan sürüm dizeleri kullanan paketler için en rastgele dizeleri kabul eder. Bağlantı noktası sürümlerini belirtmek için kullanılan #
izin verilmez.
Sıralama davranışı: Sürüm dizesinin kendisinde sıralama denenmemiştir. Ancak, dizeler tam olarak eşleşiyorsa, bağlantı noktası sürümleri karşılaştırılabilir ve sıralanabilir.
Örnekler:
apple
<>orange
<>orange.2
<>orange2
watermelon#0
<watermelon#1
port-version
Bağlantı noktası sürümleri, yukarı akış kitaplığı sürümünde değişiklik yapmadan paketleme dosyalarındaki (vcpkg.json
, portfile.cmake
vb.) değişiklikleri izler.
Bağlantı noktası sürümü negatif olmayan bir tamsayı değeridir.
Bağlantı noktası sürümleri için kurallar şunlardır:
- Bağlantı noktasının özgün sürümü için 0'da başlayın,
- paketin sürümünü artırmayan bağlantı noktasında vcpkg'ye özgü bir değişiklik yapıldığında 1 artırın,
- ve paketin sürümü her güncelleştirildiğinde 0'a sıfırlayın.
Not
vcpkg, <version>#<port version>
metin biçimini izler. Örneğin 1.2.0#2
, 2
sürüm 1.2.0
bağlantı noktası sürümü anlamına gelir. Bağlantı noktası sürümü 0
#0
soneki atlanırsa (örneğin, 1.2.0
sürüm 1.2.0
bağlantı noktası sürümü 0
) anlamına gelir).
Sıralama davranışı: İki sürüm eşit olarak karşılaştırılırsa, bağlantı noktası sürümleri sayısal değerleriyle karşılaştırılırsa, düşük bağlantı noktası sürümleri önceliklidir.
Örnekler:
1.2.0
<1.2.0#1
<1.2.0#2
<1.2.0#10
2021-01-01#20
<2021-01-01.1
windows#7
<windows#8
Sürüm Kısıtlamaları
Temel
Temeller, hangi sürümlerin dikkate alınacağı (başka bir yerde belirtilmediği sürece, bu temelle ilişkili sürüm kullanılacaktır) için genel bir sürüm katı tanımlar. Bu, üst düzey bildirimlerin doğrudan "version>="
kısıtlamaları tek tek belirtmek zorunda kalmadan bağımlılık grafiğinin tamamını up-togüncel tutmasını sağlar.
Yapılandırılan her kayıt defterinin ilişkili bir temeli vardır. Kayıt defterlerini yapılandırmamış bildirimler için "builtin-baseline"
alanı yerleşik kayıt defterinin temelini tanımlar. Bir bildirim herhangi bir kayıt defteri yapılandırmazsa ve "builtin-baseline"
yoksa, yükleme Klasik mod algoritmasına göre çalışır ve tüm sürüm oluşturma bilgilerini yoksayar.
Diğer kayıt defteri ayarları gibi temeller, bağımlılık olarak kullanılan bağlantı noktalarında yoksayılır. Geçişli sürüm çözümlemesi sırasında en düşük sürüm gerekiyorsa bağlantı noktası "version>="
kullanmalıdır.
Örnek
{
"name": "project",
"version": "1.0.0",
"dependencies": ["zlib", "fmt"],
"builtin-baseline":"9fd3bd594f41afb8747e20f6ac9619f26f333cbe"
}
İlk "builtin-baseline"
eklemek için vcpkg x-update-baseline --add-initial-baseline
kullanın. Bildirimdeki temelleri güncelleştirmek için vcpkg x-update-baseline
kullanın.
version>=
En düşük sürüm gereksinimini ifade eder version>=
bildirimler, bir bağımlılığı karşılamak için kullanılabilecek sürümlere daha düşük bir sınır koyar.
Not
vcpkg tüm kısıtlamalarla eşleşen en düşük sürümü seçer, bu nedenle küçüktür kısıtlaması gerekli değildir.
Örnek:
{
"name": "project",
"version-semver": "1.0.0",
"dependencies": [
{ "name": "zlib", "version>=": "1.2.11#9" },
{ "name": "fmt", "version>=": "7.1.3#1" }
],
"builtin-baseline":"3426db05b996481ca31e95fff3734cf23e0f51bc"
}
Sürüm kısıtlama bildiriminin bir parçası olarak, önceki örnekte #<port-version>
son eki eklenerek bir bağlantı noktası sürümü belirtilebilir 1.2.11#9
9
bağlantı noktası sürümü 1.2.11
sürümüne başvurur.
overrides
Geçersiz kılma bildirimi vcpkg'yi diğer tüm sürüm kısıtlamalarını yoksaymaya ve geçersiz kılmada belirtilen sürümü kullanmaya zorlar. Bu, tam sürümleri sabitlemek ve sürüm çakışmalarını çözmek için yararlıdır.
Geçersiz kılmalar, paket sürümü bildirimleri dizisi olarak bildirilir.
Geçersiz kılmanın etkili olması için geçersiz kılınan paketin bağımlılık grafiğinin bir parçasını oluşturması gerekir. Bu, bir bağımlılığın en üst düzey bildirim tarafından bildirilmesi veya geçişli bağımlılığın parçası olması gerektiği anlamına gelir.
Belirli bir ad için yalnızca bir geçersiz kılma bildirilebilir.
{
"name": "project",
"version-semver": "1.0.0",
"dependencies": [
"curl",
{ "name": "zlib", "version>=": "1.2.11#9" },
"fmt"
],
"builtin-baseline":"3426db05b996481ca31e95fff3734cf23e0f51bc",
"overrides": [
{ "name": "fmt", "version": "6.0.0" },
{ "name": "openssl", "version": "1.1.1h#3" }
]
}