Как сделать вывод оснастки "parts:" доступным для "apps:"?

apps:
  library-sample:
    command: library_sample

parts:
  library:
    source: https://github.com/the/sample.git
    plugin: cmake

Когда Snapcraft запускает cmake установить, "библиотека" будет установлена ​​в системе (как я и ожидал). Также, cmake также создаст тестовое приложение в samples папка под build каталог.

Я хотел бы рекламировать образец (созданный "part") как установленное приложение в пакете snap.

Как использовать оснастку YAML для перемещения из вложенного каталога под build папка, в защелках /bin папка?

1 ответ

Решение

Вы можете сделать это, используя скриптлеты Snapcraft. В частности, install скриптлет. По сути, они позволяют изменять поведение процесса сборки, настраивая его разделы. в build шаг жизненного цикла, Snapcraft по существу работает cmake && make && make install, но make install не делает все, что вы хотите. install скриптлет запускается сразу после make install так что вы можете сделать что-то вроде этого:

parts:
  library:
    source: https://github.com/the/sample.git
    plugin: cmake
    install: |
      cp -r path/to/samples $SNAPCRAFT_PART_INSTALL/

Теперь очистите шаг сборки с помощью snapcraft clean -s build и беги snapcraft снова. Тогда каталог сэмплов окажется на последнем снимке.

Другие вопросы по тегам