Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Panoramica
Questo articolo descrive i dettagli di implementazione per ogni tipo di registro. In particolare, questo file riguarda il layout consigliato per ogni tipo di Registro di sistema e il contenuto previsto dei rispettivi database versioni.
Nota
Questo articolo contiene informazioni su come implementare registri personalizzati. Per informazioni sull'utilizzo di registri personalizzati nel progetto, vedere l'articolo Uso di registri.
Registri Git
Layout di file di base nei registri Git
Campi di primo livello
L'oggetto di primo livello in un file di baseline.json è un dizionario, ogni chiave in questo dizionario è una denominata baseline. A causa dei dettagli di implementazione dei registri Git, è necessario che esista un denominato baseline con il nome "default" e che contenga un mapping di tutte le porte nel Registro di sistema alla versione di base.
| Nome | Digitare | Descrizione |
|---|---|---|
default |
BaselineObject | Baseline predefinita, necessaria per i registri Git. |
| Baseline denominata | BaselineObject | Baseline aggiuntive. Il nome del campo corrisponde al nome della linea di base. |
BaselineObject
L'oggetto baseline è un dizionario, con ogni chiave corrispondente a un nome di porta nel Registro di sistema e il relativo valore è la versione più recente della porta.
| Nome | Digitare | Descrizione |
|---|---|---|
| Nome porta | BaselineVersionObject | Mapping di un nome di porta alla versione più recente |
BaselineVersionObject
| Nome | Digitare | Descrizione |
|---|---|---|
baseline |
corda | Stringa corrispondente alla versione più recente disponibile della porta nel Registro di sistema. |
port-version |
numero intero | Intero corrispondente alla versione più recente della porta nel Registro di sistema |
Esempio di file baseline.json in un registro Git
In un registro contenente una singola porta denominata foo alla versione 1.0.0#1, il contenuto del file di baseline.json deve essere:
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Layout dei file di versione nei registri Git
La directory versions contiene tutte le informazioni sulle versioni dei pacchetti contenute nel Registro di sistema, insieme al metodo per recuperare tali versioni dalla cronologia del repository.
Il file di versione per ogni pacchetto è un file JSON con lo stesso nome di base del pacchetto, inserito in una sottodirectory della directory delle versioni, ovvero la prima lettera del pacchetto, seguita da un trattino.
Ad esempio, il file di versione per il pcre2 pacchetto è versions\p-\pcre2.json.
Campi di primo livello
| Nome | Digitare | Descrizione |
|---|---|---|
versions |
VersionObject[] | Matrice di oggetti versione. Contiene una voce per ogni versione della porta nella cronologia del Registro di sistema. |
VersionObject
| Nome | Digitare | Descrizione |
|---|---|---|
git-tree |
corda | SHA dell'albero Git usato per recuperare il contenuto della porta |
versionversion-semverversion-dateversion-string |
corda | Informazioni sulla versione upstream |
| della versione della porta | numero intero | Revisione dei file di porta |
Esempio di un file delle versioni del Registro di sistema Git
{
"versions": [
{
"git-tree": "963060040c3ca463d17136e39c7317efb15eb6a5",
"version": "1.2.0",
"port-version": 0
},
{
"git-tree": "548c90710d59c174aa9ab10a24deb69f1d75ff8f",
"version": "1.1.0",
"port-version": 0
},
{
"git-tree": "67d60699c271b7716279fdea5a5c6543929eb90e",
"version": "1.0.0",
"port-version": 0
}
]
}
Recupero di un git-tree SHA
vcpkg usa le funzionalità di Git per recuperare versioni specifiche di una porta contenuta nella cronologia dei commit. Il metodo utilizzato consiste nel recuperare l'oggetto git-tree dal repository, come specificato nel file delle versioni di una porta.
A ogni directory delle porte in un registro Git è associato un sha univoco (detto git-tree nei file delle versioni). L'SHA viene calcolato usando il contenuto della directory; ogni volta che viene eseguito il commit di una modifica nel repository che modifica una directory, viene ricalcolato il relativo SHA.
Git consente di recuperare il contenuto di una determinata directory in qualsiasi punto della cronologia, purché si conosca la specifica sha. Usando questa funzionalità, vcpkg può indicizzare versioni di porta specifiche con le rispettive versioni SHA (git-tree).
Per ottenere l'sha di una directory di porta in una determinata revisione, è possibile usare il comando Git seguente:
git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>
Esempio:
git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07
Il comando restituisce lo SHA della directory contenente la porta curl alla revisione corrente (HEAD).
È possibile visualizzare il contenuto del git-tree usando il comando git show <git-tree>:
git show 6ef1763f3cbe570d6378632c9b5793479c37fb07
tree 6ef1763f3cbe570d6378632c9b5793479c37fb07
0005_remove_imp_suffix.patch
0020-fix-pc-file.patch
0022-deduplicate-libs.patch
cmake-config.patch
cmake-project-include.cmake
dependencies.patch
export-components.patch
portfile.cmake
redact-input-vars.diff
usage
vcpkg-cmake-wrapper.cmake
vcpkg.json
Oppure il contenuto di un file specifico con git show <git-tree>:<file>:
git show 6ef1763f3cbe570d6378632c9b5793479c37fb07:usage
curl is compatible with built-in CMake targets:
find_package(CURL REQUIRED)
target_link_libraries(main PRIVATE CURL::libcurl)
Gestire i file di database aggiornati usando questi comandi Git in un processo manuale può essere un'attività difficile. Per questo motivo è consigliabile usare il comando x-add-version, che automatizza il processo purché il repository segua la struttura consigliata del Registro di sistema . Vedere l'articolo Esercitazione: Pubblicare pacchetti in un registro vcpkg privato usando Git per un esempio di come pubblicare una porta in un registro Git.
Registri del file system
Layout di file di base nei registri del file system
Campi di primo livello
L'oggetto di primo livello in un file di baseline.json è un dizionario, ogni chiave in questo dizionario è una denominata baseline. Le linee di base devono contenere mapping di tutte le porte nel Registro di sistema alla versione di base.
| Nome | Digitare | Descrizione |
|---|---|---|
| Baseline denominata | BaselineObject | Baseline aggiuntive. Il nome del campo corrisponde al nome della linea di base. |
BaselineObject
L'oggetto baseline è un dizionario, con ogni chiave corrispondente a un nome di porta nel Registro di sistema e il relativo valore è la versione più recente della porta.
| Nome | Digitare | Descrizione |
|---|---|---|
| Nome porta | BaselineVersionObject | Mapping di un nome di porta alla versione più recente |
BaselineVersionObject
| Nome | Digitare | Descrizione |
|---|---|---|
baseline |
corda | Stringa corrispondente alla versione più recente disponibile della porta nel Registro di sistema. |
port-version |
numero intero | Intero corrispondente alla versione più recente della porta nel Registro di sistema |
Il layout del file di base in un registro di file system è uguale a quello dei registri Git . L'unica differenza consiste nel fatto che i file system non richiedono una baseline default.
Esempio di file baseline.json in un registro di file system
{
"2024-12-01": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Layout del file di versione nei registri del file system
La directory versions contiene tutte le informazioni sulle versioni dei pacchetti contenute nel Registro di sistema, insieme al metodo per recuperare tali versioni da un percorso del file system.
Il file di versione per ogni pacchetto è un file JSON con lo stesso nome di base del pacchetto, inserito in una sottodirectory della directory delle versioni, ovvero la prima lettera del pacchetto, seguita da un trattino.
Ad esempio, il file di versione per il fmt pacchetto è versions\f-\fmt.json.
campi di primo livello
| Nome | Digitare | Descrizione |
|---|---|---|
versions |
VersionObject[] | Matrice di oggetti versione. Contiene una voce per ogni versione della porta nel Registro di sistema. |
VersionObject
| Nome | Digitare | Descrizione |
|---|---|---|
path |
corda | Percorso del file system in cui si trovano i file di porta per la versione corrispondente |
versionversion-semverversion-dateversion-string |
corda | Informazioni sulla versione upstream |
| della versione della porta | numero intero | Revisione dei file di porta |
Quando si specifica il path di un registro, è possibile utilizzare il carattere $ per fare riferimento alla radice del Registro di sistema. In caso contrario, è possibile usare percorsi assoluti.
Esempio di file system di versione del Registro di sistema
{
"versions": [
{
"path": "$/ports/foo/1.2.0",
"version": "1.2.0",
"port-version": 0
},
{
"path": "$/ports/foo/1.1.0",
"version": "1.1.0",
"port-version": 0
},
{
"path": "$/ports/foo/1.0.0",
"version": "1.0.0",
"port-version": 0
}
]
}
Passaggi successivi
Ecco alcune attività da provare:
- Leggere la documentazione concettuale dei registri
- Creare un registro basato su Git personalizzato
- Installare pacchetti da un del Registro di sistema personalizzato