gpt4 book ai didi

snapcraft - 如何将自定义 PPA 添加到 snapcraft

转载 作者:行者123 更新时间:2023-12-03 08:19:16 25 4
gpt4 key购买 nike

基本问题/目标:

我希望能够使用一些共享库,它们应该在自定义 PPA 的 cmake 步骤(插件)之前获取。

snapcraft.yaml:

name: mraa-blink-example
version: 'Latest'
summary: mraa for snapcraft
description: |
Blink Example from MRAA lib

grade: stable #devel # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots

apps:
blinkapp:
command: bin/blink

parts:
blink:
plugin: cmake
build-packages:
- libmraa1
- libmraa-dev
- mraa-tools
- python-mraa
- python3-mraa

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.9)
project (MRAA)

file(GLOB SOURCES "src/*.cpp")

#For the shared library:
set ( PROJECT_LINK_LIBS libmraa.so )
add_executable(blink ${SOURCES})
target_link_libraries(blink ${PROJECT_LINK_LIBS} )
install(TARGETS blink DESTINATION /bin)

因为构建包来自自定义 PPA,所以出现错误:

Could not find a required package in 'build-packages': "The cache has no package named 'libmraa-dev'"

有没有办法解决这个问题?

最佳答案

背景:

有人努力将 Gnome 库抽象为一个单独的“平台”快照,该快照是使用 Ubuntu 桌面团队的 Gnome-3-26 PPA 在 Launchpad 上构建的。 PPA 包含为适应 Ubuntu Xenial (16.04) 的运行时环境而编译的 gnome 平台,这将允许针对比构建环境通常包含的更新的 Gnome 构建快照。但这需要构建环境中的自定义 PPA,和你一样,我也在努力研究如何做到这一点。

启用 gnome 平台 PPA 后,您仍然需要将快照链接到运行时快照。这是通过添加一个连接到 gnome-3-26-1604 的插件并使用 desktop-gnome-platform 助手

来处理的

我的解决方案:

我决定使用多部分构建,其中主要应用程序“部分”依赖于声明为使用“nil”插件的部分,这意味着它实际上不执行任何操作。然后,我向 nil 部分添加了一个“准备”脚本,该脚本完成了添加 PPA、PGP key 和强制更新/升级周期所必需的操作。

我认为这需要是一个单独的部分,而不是作为主应用程序上的准备脚本,因为构建包是在运行准备脚本之前获取的,这意味着它将无法找到依赖项的包并死掉有一个很好的错误信息。这是通过执行多部分方法来解决的。我用它来构建 gnome-twitch snap,它是几天前宣布的,代表 Snapcrafters 的努力。

示例:

下面是 gnome-twitch snapcraft.yaml 的不完整粘贴,用于解释我是如何做到的:

parts:
prepare:
plugin: nil
prepare: |
echo "deb http://ppa.launchpad.net/ubuntu-desktop/gnome-3-26/ubuntu xenial main" | tee /etc/apt/sources.list.d/gnome-3-24.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 399B698EEA9EF163B6F9A0F62CC98497A1231595
apt update
apt upgrade -yy
prime: [-*]
...
gnome-twitch:
after: [prepare, desktop-gnome-platform]
...

plugs:
gnome-3-26-1604:
interface: content
content: gnome-3-26-1604
target: gnome-platform
default-provider: gnome-3-26-1604

apps:
gnome-twitch:
command: desktop-launch $SNAP/usr/bin/gnome-twitch
plugs:
- ... # all the plugs required
- gnome-3-26-1604

关于snapcraft - 如何将自定义 PPA 添加到 snapcraft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43368821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com