-
Notifications
You must be signed in to change notification settings - Fork 0
/
snapcraft.yaml
128 lines (113 loc) · 3.63 KB
/
snapcraft.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
name: nymea
summary: An open source IoT server
description: |
The nymea daemon is a plugin based IoT (Internet of Things) server.
The server works like a translator for devices, things and services
and allows them to interact. With the powerful rule engine you are
able to connect any device available in the system and create individual
scenes and behaviors for your environment.
base: core20
grade: stable
confinement: strict
adopt-info: nymea
architectures:
- build-on: amd64
- build-on: arm64
- build-on: armhf
apps:
nymead:
command: bin/nymead-wrapper.sh
daemon: simple
plugs:
- avahi-control
- avahi-observe
- bluez
- hardware-observe
- network
- network-bind
- network-manager
- raw-usb
- snapd-control
slots: [ nymead-dbus ]
restart-condition: always
nymea-cli:
command-chain: [ bin/qt5-launch ]
command: usr/bin/nymea-cli
plugs:
- network
- network-bind
slots:
# Note: this slot opens the D-Bus interface of nymea from in the snap environment
nymead-dbus:
interface: dbus
name: io.guh.nymead
bus: system
parts:
# Set up the deb archive
nymea-archive:
plugin: nil
build-packages:
- software-properties-common
override-pull: |
snapcraftctl pull
apt-key adv --keyserver keyserver.ubuntu.com --recv-key A1A19ED6
add-apt-repository --yes "deb http://repository.nymea.io $( lsb_release -sc ) main"
# Qt5SerialPort without locking
qtserialport:
plugin: nil
source: git://git.launchpad.net/ubuntu/+source/qtserialport-opensource-src
source-branch: ubuntu/focal
build-packages:
- devscripts
- equivs
override-pull: |
snapcraftctl pull
mk-build-deps --install --tool "apt-get --yes -o Debug::pkgProblemResolver=yes"
override-build: |
patch --verbose -p0 <<EOF
--- src/serialport/qserialport_unix.cpp
+++ src/serialport/qserialport_unix.cpp
@@ -105,14 +105,7 @@
QString serialPortLockFilePath(const QString &portName)
{
static const QStringList lockDirectoryPaths = QStringList()
- << QStringLiteral("/var/lock")
- << QStringLiteral("/etc/locks")
- << QStringLiteral("/var/spool/locks")
- << QStringLiteral("/var/spool/uucp")
<< QStringLiteral("/tmp")
- << QStringLiteral("/var/tmp")
- << QStringLiteral("/var/lock/lockdev")
- << QStringLiteral("/run/lock")
#ifdef Q_OS_ANDROID
<< QStringLiteral("/data/local/tmp")
#endif
EOF
env DEB_BUILD_OPTIONS=parallel=$( nproc ) dh build --parallel
dh install
mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}
cp --archive debian/tmp/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}/libQt5SerialPort.so.5* ${SNAPCRAFT_PART_INSTALL}/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}/
# Custom launcher to support also armhf
scripts:
plugin: dump
source: .
build-attributes: [keep-execstack]
organize:
qt5-launch: bin/
nymead.conf: template-nymead.conf
nymead-wrapper.sh: bin/
# Adding the whole nymea project containig libnymea and nymea-plugins
nymea:
after: [nymea-archive, qtserialport]
plugin: nil
build-attributes: [keep-execstack]
stage-packages:
- nymea
- nymea-data
- nymea-cli
- nymea-plugins-all
- nymea-zeroconf-plugin-avahi
override-build:
snapcraftctl set-version $( LANG=C apt-cache policy nymea | sed -rne 's/^\s+Candidate:\s+([^-]*)~.+$/\1/p' )
stage:
- -usr/lib/${SNAPCRAFT_ARCH_TRIPLET}/libQt5SerialPort.so*