-
Notifications
You must be signed in to change notification settings - Fork 2
/
snapcraft.yaml
192 lines (185 loc) · 4.69 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
name: ammp-edge
version: git
summary: Edge application for AMMP
description: |
Manages data collection and forwarding for AMMP, the Asset Monitoring and Management Platform.
https://www.ammp.io/
https://github.com/ammpio/ammp-edge
grade: stable
confinement: strict
base: core22
architectures:
- build-on: armhf
- build-on: arm64
epoch: 1
apps:
ae-init:
command: bin/ae init
daemon: oneshot
restart-condition: on-failure
restart-delay: 2s
plugs: [network]
ammp-edge:
command: bin/ammp_edge
daemon: simple
restart-condition: always
after: [ae-init]
plugs:
- network
- network-bind
- system-observe
- hardware-observe
- network-observe
- serial-port
- log-observe
# The following is required in order to make libblas3 visible to nmap
environment:
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/blas"
web-ui:
command: bin/python3 -m flask run
daemon: simple
restart-condition: always
after: [ae-init]
plugs:
- network-bind
environment:
FLASK_APP: web_ui
FLASK_RUN_HOST: 0.0.0.0
FLASK_RUN_PORT: 8000
LC_ALL: C.UTF-8
LANG: C.UTF-8
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/blas"
nmap:
command: usr/bin/nmap
environment:
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/blas"
plugs: [network, network-bind, network-control]
wifi-ap-control:
command: bin/wifi_ap_control
daemon: simple
restart-condition: on-abnormal
plugs: [network]
env-scan:
command: bin/env_scan_svc
daemon: simple
plugs: [network, network-observe]
timer: 0:00~24:00/36
environment:
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/blas"
mosquitto:
command: bin/mosquitto_svc.sh
daemon: simple
restart-condition: always
restart-delay: 2s
after: [ae-init]
plugs: [network, network-bind]
parts:
ammp-edge:
plugin: python
source: src
build-packages:
- libsnmp-dev
build-environment:
- PIP_EXTRA_INDEX_URL: https://ammplipy.ammp.io/
stage-packages:
- libsnmp40
- nmap
override-prime: |
craftctl default
"${CRAFT_PRIME}"/bin/python3 \
-m compileall \
-q \
--workers 0 \
"${CRAFT_PRIME}"
configs:
plugin: dump
source: config
prime:
- mosquitto.conf.tpl
- mqtt-bridge.conf.tpl
- mqtt-bridge-stage.conf.tpl
resources:
plugin: dump
source: resources
organize:
'*': resources/
prime: [resources]
drivers:
plugin: dump
source: drivers
organize:
'*': drivers/
prime: [drivers]
bin:
plugin: dump
source: bin
organize:
'*': bin/
prime:
- bin
rust-deps:
plugin: nil
build-packages:
- wget
override-pull: |
# Do not use rustup to work around https://forum.snapcraft.io/t/armhf-builds-on-launchpad-timing-out/31008
REQUIRED_RUST_VERSION=nightly
ROOT=https://static.rust-lang.org/dist/rust-$REQUIRED_RUST_VERSION
if [ $SNAPCRAFT_TARGET_ARCH = "amd64" ]; then
BINARIES_SUFFIX=x86_64-unknown-linux-gnu
elif [ $SNAPCRAFT_TARGET_ARCH = "armhf" ]; then
BINARIES_SUFFIX=armv7-unknown-linux-gnueabihf
elif [ $SNAPCRAFT_TARGET_ARCH = "arm64" ]; then
BINARIES_SUFFIX=aarch64-unknown-linux-gnu
fi
wget -O - $ROOT-$BINARIES_SUFFIX.tar.gz | tar -x -z --strip-components=1
./install.sh --prefix=/usr --destdir=$SNAPCRAFT_STAGE
ae:
plugin: rust
source: rust
after: [rust-deps]
build-packages:
- pkg-config
- libsqlite3-dev
envsubst:
plugin: nil
stage-packages:
- gettext-base
prime:
- usr/bin/envsubst
mosquitto:
plugin: make
make-parameters:
- "prefix=/usr"
- "WITH_DOCS=no"
- "WITH_CJSON=no"
- "WITH_ADNS=yes"
- "CFLAGS='-Wall -ggdb -O2 -I$CRAFT_STAGE/include -D_GNU_SOURCE'"
source: https://github.com/eclipse/mosquitto
source-type: git
source-tag: v2.0.14
source-depth: 1
build-packages:
- libssl-dev
- gcc
- g++
stage-packages:
- libssl3
prime:
- usr/sbin/mosquitto
- usr/lib/libmosquitto.so*
- lib/*-linux-gnu/libcrypto.so*
- lib/*-linux-gnu/libssl.so*
- usr/include/mosquitto.h
- usr/include/mosquitto_broker.h
- usr/include/mosquitto_plugin.h
- usr/include/mqtt_protocol.h
plugs:
provisioning-edge:
interface: content
content: ammp-edge-provisioning
target: $SNAP/provisioning
wifi-ap-control:
interface: content
content: socket-directory
target: $SNAP_DATA/sockets/wifi-ap