Можно ли использовать ветку github в диспетчере пакетов conan? - PullRequest
0 голосов
/ 12 июля 2020

Я хочу использовать стыковочную ветку imguis. Проблема, которую я пытаюсь понять, заключается в использовании диспетчера пакетов conan, можно ли запросить конкретную ветвь c или мне нужно будет написать собственный скрипт для нацеливания на конкретную ветвь c из пакета? Я могу получить основной пакет im gui, но ничего не нашел в ветках таргетинга.

В настоящее время я использую cmake и conanfile.txt.

Сейчас это мой conanfile.txt

[requires]
imgui/1.76

1 Ответ

2 голосов
/ 12 июля 2020

Рецепты Конана (conanfile.py) могут быть реализованы для получения любой ветви, фиксации, тега или загрузки архива .zip. Что невозможно, так это создать произвольный рецепт, реализованный другими для того, чтобы делать что-то иное, чем он делает, потому что это противоречит всей цели управления версиями и воспроизводимости.

Когда imgui/1.76 находится в conanfile (либо .txt, либо .py), он загружает пакет im gui, существующий в ConanCenter , подробности в im gui пакете и полный рецепт может быть найденный в conan-center-index репозитории github, репо, которое используется для сборки всех пакетов в ConanCenter

В этом рецепте метод sources() реализован как:

def source(self):
   tools.get(**self.conan_data["sources"][self.version])
   extracted_dir = self.name + "-" + self.version
   os.rename(extracted_dir, self._source_subfolder)

Атрибут conan_data - это данные из файла conandata.yml

sources:
  "1.74":
    url: "https://github.com/ocornut/imgui/archive/v1.74.tar.gz"
    sha256: "2f5f2b789edb00260aa71f03189da5f21cf4b5617c4fbba709e9fbcfc76a2f1e"
  "1.75":
    url: "https://github.com/ocornut/imgui/archive/v1.75.tar.gz"
    sha256: "1023227fae4cf9c8032f56afcaea8902e9bfaad6d9094d6e48fb8f3903c7b866"
  "1.76":
    url: "https://github.com/ocornut/imgui/archive/v1.76.tar.gz"
    sha256: "e482dda81330d38c87bd81597cacaa89f05e20ed2c4c4a93a64322e97565f6dc"
  "1.77":
    url: "https://github.com/ocornut/imgui/archive/v1.77.tar.gz"
    sha256: "c0dae830025d4a1a169df97409709f40d9dfa19f8fc96b550052224cbb238fa8"

Источниками, используемыми для рецепта, являются выпуски, соответствующие версии, и когда вы используете пакеты, это не может быть изменено.

Что можно, так это скопировать / разветвить рецепт, адаптировать его к потребностям, например, изменить метод source() или изменить файл conandata.yml , чтобы создать пакеты для s pecifi c коммиты, теги или ветки (вероятно, было бы рекомендовано изменить version, чтобы отличать пакет от официальной версии выпуска). Также рекомендуется создавать пакеты под username/channel, например imgui/version@myteam/stable, чтобы отличать его от ConanCenter. Artifactory CE также полностью бесплатен и может использоваться для размещения ваших собственных пакетов в частном порядке.

...