Руководство. Публикация пакетов в частном реестре vcpkg с помощью Git

Вы можете создать собственный частный реестр пакетов для использования через vcpkg с помощью Git. Частные реестры идеально подходят, если вы хотите использовать частные библиотеки или хотите внести неогласные изменения в существующие пакеты. У вас есть полный контроль над версиями и содержимым пакетов, поэтому на самом деле нет ограничений на то, что можно поместить в частный реестр.

В этом руководстве показано, как:

Необходимые условия:

  • vcpkg
  • Git
  • Терминал

1. Создание реестра vcpkg с помощью Git

Реестры на основе Git vcpkg — это репозитории Git с определенным макетом, который понимает vcpkg.

Инициализация реестра Git:

mkdir vcpkg-registry
cd vcpkg-registry
git init

2. Создание макета реестра

Для реестра на основе vcpkg Git требуется следующее:

  • папка с именем ports , содержащая порты реестра,
  • папка с именем versions , содержащая базу данных версий,
  • файл с именем baseline.json в папке versions .

Репозиторий может содержать любые другие файлы, например скрипты, файл LICENSE, файл, README.md документацию и т. д.

1. Создание ports папок и versions папок:

mkdir ports
mkdir versions

2. Создайте файл с именем baseline.json в папке versions со следующим содержимым:

{
  "default": {}
}

Минимальный допустимый baseline.json файл должен содержать указанное выше содержимое. Ознакомьтесь с документацией по использованию версий, чтобы узнать больше о baseline.json файле и базе данных версий.

3. Фиксация изменений в репозитории

git add versions/baseline.json
git commit -m "Initial commit"

При необходимости, если у вас есть удаленный репозиторий Git, это хорошая точка для отправки изменений.

git remote add origin https://example.com/vcpkg-registry.git
git push --set-upstream origin HEAD

3. Добавление портов в реестр

Скопируйте все порты пакета в папке ports в реестре. Каждый порт должен иметь собственный vcpkg.json каталог, содержащий по крайней мере файл и portfile.cmake файл. Дополнительные сведения о создании портов в руководстве по упаковке репозиториев GitHub.

git add ports/.
git commit -m "Add registry ports"

4. Обновление базы данных версий

Каждый порт в реестре должен иметь соответствующий файл версии. Файлы версий создаются командой vcpkg x-add-version . Эта команда также обновляет базовую запись для каждого порта.version/baseline.json

Чтобы обновить базу данных версий для всех портов одновременно, выполните следующую команду:

vcpkg --x-builtin-ports-root=./ports --x-builtin-registry-versions-dir=./versions x-add-version --all --verbose

Параметры --x-builtin-ports-root перенаправления и --x-builtin-registry-versions-dir являются параметрами перенаправления. Как правило, x-add-version команда работает со встроенным реестром vcpkg, но с помощью параметров перенаправления можно использовать команду в локальных реестрах Git.

Этот --all параметр делает vcpkg сканировать ports каталог для всех доступных портов и обновлять их сразу. Наконец, параметр --verbose делает команду печати каждой операции, выполняемой в стандартные выходные данные, вы можете отключить выходные данные, удалив этот параметр.

Требуется x-add-version , чтобы все изменения портов были зафиксированы в репозитории Git реестра. Дополнительные сведения см. в документации по [x-add-version команде].

Когда все выходные данные выглядят правильно, выполните следующую команду:

git add .
git commit -m "Update versions database"

Если у вас есть удаленный репозиторий Git, не забудьте отправить изменения:

git push

Next Steps

Вот и все! Вы настроили собственный частный реестр на основе Git для использования с vcpkg.

Ниже приведены некоторые дополнительные задачи, которые необходимо выполнить следующим образом: