summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcajun-rat <p@beta16.co.uk>2017-07-31 17:48:55 +0200
committerGitHub <noreply@github.com>2017-07-31 17:48:55 +0200
commit999e261bbc55b2c5c2adf10679996fa56354281f (patch)
treefec26fcb13be1ed87e773def0a61149e3d46a6db
parent16eb34d9368c12f61c7dcc97253c3b53624bb244 (diff)
parent25fa85e0535a4c0ea5d5dea6a7109842da8e1550 (diff)
downloadmeta-updater-999e261bbc55b2c5c2adf10679996fa56354281f.tar.gz
Merge pull request #107 from advancedtelematic/refactor/PRO-3377/secondary-ecus
Split rvi-sota-client into multiple binaries
-rw-r--r--classes/image_types_ostree.bbclass6
-rw-r--r--recipes-sota/rvi-sota-client/files/sota-installer.service12
-rw-r--r--recipes-sota/rvi-sota-client/rvi-sota-client.inc143
-rw-r--r--recipes-sota/rvi-sota-client/rvi-sota-client_git.bb170
-rw-r--r--recipes-sota/rvi-sota-client/sota-installer_git.bb25
-rw-r--r--recipes-sota/rvi-sota-client/sota-launcher_git.bb15
6 files changed, 210 insertions, 161 deletions
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 72d7df5..ac7cb60 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -146,6 +146,8 @@ IMAGE_CMD_ostree () {
146 fi 146 fi
147 147
148 # deploy SOTA credentials 148 # deploy SOTA credentials
149 mkdir -p var/sota
150
149 if [ -n "${SOTA_AUTOPROVISION_CREDENTIALS}" ]; then 151 if [ -n "${SOTA_AUTOPROVISION_CREDENTIALS}" ]; then
150 EXPDATE=`openssl pkcs12 -in ${SOTA_AUTOPROVISION_CREDENTIALS} -password "pass:" -nodes 2>/dev/null | openssl x509 -noout -enddate | cut -f2 -d "="` 152 EXPDATE=`openssl pkcs12 -in ${SOTA_AUTOPROVISION_CREDENTIALS} -password "pass:" -nodes 2>/dev/null | openssl x509 -noout -enddate | cut -f2 -d "="`
151 153
@@ -153,7 +155,6 @@ IMAGE_CMD_ostree () {
153 bberror "Certificate ${SOTA_AUTOPROVISION_CREDENTIALS} has expired on ${EXPDATE}" 155 bberror "Certificate ${SOTA_AUTOPROVISION_CREDENTIALS} has expired on ${EXPDATE}"
154 fi 156 fi
155 157
156 mkdir -p var/sota
157 cp ${SOTA_AUTOPROVISION_CREDENTIALS} var/sota/sota_provisioning_credentials.p12 158 cp ${SOTA_AUTOPROVISION_CREDENTIALS} var/sota/sota_provisioning_credentials.p12
158 if [ -n "${SOTA_AUTOPROVISION_URL_FILE}" ]; then 159 if [ -n "${SOTA_AUTOPROVISION_URL_FILE}" ]; then
159 export SOTA_AUTOPROVISION_URL=`cat ${SOTA_AUTOPROVISION_URL_FILE}` 160 export SOTA_AUTOPROVISION_URL=`cat ${SOTA_AUTOPROVISION_URL_FILE}`
@@ -161,6 +162,9 @@ IMAGE_CMD_ostree () {
161 echo "SOTA_GATEWAY_URI=${SOTA_AUTOPROVISION_URL}" > var/sota/sota_provisioning_url.env 162 echo "SOTA_GATEWAY_URI=${SOTA_AUTOPROVISION_URL}" > var/sota/sota_provisioning_url.env
162 fi 163 fi
163 164
165 if [ -n "${SOTA_SECONDARY_ECUS}" ]; then
166 cp ${SOTA_SECONDARY_ECUS} var/sota/ecus
167 fi
164 168
165 # Creating boot directories is required for "ostree admin deploy" 169 # Creating boot directories is required for "ostree admin deploy"
166 170
diff --git a/recipes-sota/rvi-sota-client/files/sota-installer.service b/recipes-sota/rvi-sota-client/files/sota-installer.service
new file mode 100644
index 0000000..a4fd99e
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/files/sota-installer.service
@@ -0,0 +1,12 @@
1[Unit]
2Description=SOTA Secondary ECU Installer
3Requires=network-online.target
4After=network-online.target
5
6[Service]
7RestartSec=10
8Restart=always
9ExecStart=/usr/bin/sota-installer --level debug --oneshot --config /var/sota/installer.toml
10
11[Install]
12WantedBy=multi-user.target
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client.inc b/recipes-sota/rvi-sota-client/rvi-sota-client.inc
new file mode 100644
index 0000000..8e96a32
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/rvi-sota-client.inc
@@ -0,0 +1,143 @@
1inherit cargo systemd
2
3DESCRIPTION = "rvi-sota-client recipe"
4HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client"
5LICENSE = "MPL-2.0"
6LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
7
8BBCLASSEXTEND = "native"
9
10S = "${WORKDIR}/git"
11
12SRC_URI[index.md5sum] = "6a635e8a081b4d4ba4cebffd721c2d7d"
13SRC_URI[index.sha256sum] = "1913c41d4b8de89a931b6f9e418f83e70a083e12e6c247e8510ee932571ebae2"
14
15# also update PV and SRC_URI crates when updating SRCREV
16SRCREV = "1755f1d5df05cd2924b8cf505f537f04c24f568f"
17
18# generate with: `make package-version`
19PV = "0.2.33-56-g1755f1d"
20
21# generate with: `make yocto-version`
22SRC_URI = " \
23git://github.com/advancedtelematic/rvi_sota_client \
24file://sota-client-autoprovision.service \
25file://sota-client-ostree.service \
26file://sota-client-uptane.service \
27file://sota-installer.service \
28crate://crates.io/advapi32-sys/0.2.0 \
29crate://crates.io/aho-corasick/0.6.3 \
30crate://crates.io/ansi_term/0.9.0 \
31crate://crates.io/antidote/1.0.0 \
32crate://crates.io/atty/0.2.2 \
33crate://crates.io/backtrace/0.3.2 \
34crate://crates.io/backtrace-sys/0.1.11 \
35crate://crates.io/base64/0.5.2 \
36crate://crates.io/bit-set/0.4.0 \
37crate://crates.io/bit-vec/0.4.4 \
38crate://crates.io/bitflags/0.9.1 \
39crate://crates.io/byteorder/1.1.0 \
40crate://crates.io/bytes/0.4.4 \
41crate://crates.io/cfg-if/0.1.2 \
42crate://crates.io/chan/0.1.19 \
43crate://crates.io/chan-signal/0.2.0 \
44crate://crates.io/chrono/0.4.0 \
45crate://crates.io/clap/2.25.0 \
46crate://crates.io/core-foundation/0.2.3 \
47crate://crates.io/core-foundation-sys/0.2.3 \
48crate://crates.io/crossbeam/0.2.10 \
49crate://crates.io/crypt32-sys/0.2.0 \
50crate://crates.io/dbghelp-sys/0.2.0 \
51crate://crates.io/dbus/0.5.3 \
52crate://crates.io/dtoa/0.4.1 \
53crate://crates.io/env_logger/0.4.3 \
54crate://crates.io/error-chain/0.10.0 \
55crate://crates.io/filetime/0.1.10 \
56crate://crates.io/foreign-types/0.2.0 \
57crate://crates.io/gcc/0.3.51 \
58crate://crates.io/getopts/0.2.14 \
59crate://crates.io/hex/0.2.0 \
60crate://crates.io/httparse/1.2.3 \
61crate://crates.io/hyper/0.10.12 \
62crate://crates.io/hyper-native-tls/0.2.4 \
63crate://crates.io/idna/0.1.4 \
64crate://crates.io/iovec/0.1.0 \
65crate://crates.io/itoa/0.3.1 \
66crate://crates.io/kernel32-sys/0.2.2 \
67crate://crates.io/language-tags/0.2.2 \
68crate://crates.io/lazy_static/0.2.8 \
69crate://crates.io/libc/0.2.26 \
70crate://crates.io/libflate/0.1.5 \
71crate://crates.io/log/0.3.8 \
72crate://crates.io/maplit/0.1.4 \
73crate://crates.io/matches/0.1.6 \
74crate://crates.io/memchr/1.0.1 \
75crate://crates.io/metadeps/1.1.2 \
76crate://crates.io/mime/0.2.6 \
77crate://crates.io/native-tls/0.1.4 \
78crate://crates.io/net2/0.2.29 \
79crate://crates.io/num/0.1.40 \
80crate://crates.io/num-integer/0.1.35 \
81crate://crates.io/num-iter/0.1.34 \
82crate://crates.io/num-traits/0.1.40 \
83crate://crates.io/num_cpus/1.6.2 \
84crate://crates.io/openssl/0.9.14 \
85crate://crates.io/openssl-sys/0.9.14 \
86crate://crates.io/pem/0.4.0 \
87crate://crates.io/percent-encoding/1.0.0 \
88crate://crates.io/pkg-config/0.3.9 \
89crate://crates.io/quote/0.3.15 \
90crate://crates.io/rand/0.3.15 \
91crate://crates.io/redox_syscall/0.1.26 \
92crate://crates.io/regex/0.2.2 \
93crate://crates.io/regex-syntax/0.4.1 \
94crate://crates.io/reqwest/0.6.2 \
95crate://crates.io/ring/0.7.1 \
96crate://crates.io/rust-crypto/0.2.36 \
97crate://crates.io/rustc-demangle/0.1.4 \
98crate://crates.io/rustc-serialize/0.3.24 \
99crate://crates.io/schannel/0.1.7 \
100crate://crates.io/secur32-sys/0.2.0 \
101crate://crates.io/security-framework/0.1.14 \
102crate://crates.io/security-framework-sys/0.1.14 \
103crate://crates.io/serde/1.0.10 \
104crate://crates.io/serde_derive/1.0.10 \
105crate://crates.io/serde_derive_internals/0.15.1 \
106crate://crates.io/serde_json/1.0.2 \
107crate://crates.io/serde_urlencoded/0.5.1 \
108crate://crates.io/sha1/0.2.0 \
109crate://crates.io/strsim/0.6.0 \
110crate://crates.io/syn/0.11.11 \
111crate://crates.io/synom/0.11.3 \
112crate://crates.io/tar/0.4.13 \
113crate://crates.io/tempdir/0.3.5 \
114crate://crates.io/term_size/0.3.0 \
115crate://crates.io/textwrap/0.6.0 \
116crate://crates.io/thread_local/0.3.4 \
117crate://crates.io/time/0.1.38 \
118crate://crates.io/toml/0.2.1 \
119crate://crates.io/toml/0.4.2 \
120crate://crates.io/traitobject/0.1.0 \
121crate://crates.io/tungstenite/0.2.4 \
122crate://crates.io/typeable/0.1.2 \
123crate://crates.io/unicase/1.4.2 \
124crate://crates.io/unicode-bidi/0.3.3 \
125crate://crates.io/unicode-normalization/0.1.5 \
126crate://crates.io/unicode-segmentation/1.1.0 \
127crate://crates.io/unicode-width/0.1.4 \
128crate://crates.io/unicode-xid/0.0.4 \
129crate://crates.io/unix_socket/0.5.0 \
130crate://crates.io/unreachable/1.0.0 \
131crate://crates.io/untrusted/0.3.2 \
132crate://crates.io/url/1.5.1 \
133crate://crates.io/utf-8/0.7.1 \
134crate://crates.io/utf8-ranges/1.0.0 \
135crate://crates.io/uuid/0.5.1 \
136crate://crates.io/vec_map/0.8.0 \
137crate://crates.io/version_check/0.1.3 \
138crate://crates.io/void/1.0.2 \
139crate://crates.io/winapi/0.2.8 \
140crate://crates.io/winapi-build/0.1.1 \
141crate://crates.io/ws2_32-sys/0.2.1 \
142crate://crates.io/xattr/0.1.11 \
143"
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
index 753488a..21378ce 100644
--- a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
+++ b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb
@@ -1,25 +1,7 @@
1DESCRIPTION = "sota-client rust recipe" 1require rvi-sota-client.inc
2HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client"
3 2
4LICENSE = "MPL-2.0"
5LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea"
6 3
7inherit cargo systemd 4SYSTEMD_SERVICE_${PN} = "sota-client.service sota-client-autoprovision.service"
8
9S = "${WORKDIR}/git"
10
11# When changing this, don't forget to:
12# 1) Update PV
13# 2) Check that Cargo.lock hasn't changed with git diff old..new Cargo.lock
14SRCREV = "b6cf6957203fc406b3723d046f1b705e1bd08d7d"
15
16# Generate with:
17# git describe --tags | cut -b2-
18# or from the rvi_sota_client repo:
19# make package-version
20PV = "0.2.33-41-gb6cf695"
21
22BBCLASSEXTEND = "native"
23 5
24FILES_${PN} = " \ 6FILES_${PN} = " \
25/lib64 \ 7/lib64 \
@@ -32,147 +14,15 @@ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/so
32${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client-autoprovision.service', '', d)} \ 14${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client-autoprovision.service', '', d)} \
33" 15"
34 16
35
36# list of dependencies can be generated from Cargo.lock by running
37# cat Cargo.lock | sed -e '1,/metadata/ d' Cargo.lock | awk '{print "crate://crates.io/"$2 "/" $3" \\"}'
38SRC_URI = " \
39crate://crates.io/advapi32-sys/0.2.0 \
40crate://crates.io/aho-corasick/0.6.3 \
41crate://crates.io/ansi_term/0.9.0 \
42crate://crates.io/antidote/1.0.0 \
43crate://crates.io/atty/0.2.2 \
44crate://crates.io/backtrace/0.3.2 \
45crate://crates.io/backtrace-sys/0.1.11 \
46crate://crates.io/base64/0.5.2 \
47crate://crates.io/bit-set/0.4.0 \
48crate://crates.io/bit-vec/0.4.4 \
49crate://crates.io/bitflags/0.9.1 \
50crate://crates.io/byteorder/1.0.0 \
51crate://crates.io/bytes/0.4.4 \
52crate://crates.io/cfg-if/0.1.2 \
53crate://crates.io/chan/0.1.19 \
54crate://crates.io/chan-signal/0.2.0 \
55crate://crates.io/chrono/0.4.0 \
56crate://crates.io/clap/2.25.0 \
57crate://crates.io/core-foundation/0.2.3 \
58crate://crates.io/core-foundation-sys/0.2.3 \
59crate://crates.io/crossbeam/0.2.10 \
60crate://crates.io/crypt32-sys/0.2.0 \
61crate://crates.io/dbghelp-sys/0.2.0 \
62crate://crates.io/dbus/0.5.3 \
63crate://crates.io/dtoa/0.4.1 \
64crate://crates.io/env_logger/0.4.3 \
65crate://crates.io/error-chain/0.10.0 \
66crate://crates.io/filetime/0.1.10 \
67crate://crates.io/foreign-types/0.2.0 \
68crate://crates.io/gcc/0.3.51 \
69crate://crates.io/getopts/0.2.14 \
70crate://crates.io/hex/0.2.0 \
71crate://crates.io/httparse/1.2.3 \
72crate://crates.io/hyper/0.10.12 \
73crate://crates.io/hyper-native-tls/0.2.4 \
74crate://crates.io/idna/0.1.2 \
75crate://crates.io/iovec/0.1.0 \
76crate://crates.io/itoa/0.3.1 \
77crate://crates.io/kernel32-sys/0.2.2 \
78crate://crates.io/language-tags/0.2.2 \
79crate://crates.io/lazy_static/0.2.8 \
80crate://crates.io/libc/0.2.24 \
81crate://crates.io/libflate/0.1.9 \
82crate://crates.io/log/0.3.8 \
83crate://crates.io/maplit/0.1.4 \
84crate://crates.io/matches/0.1.6 \
85crate://crates.io/memchr/1.0.1 \
86crate://crates.io/metadeps/1.1.2 \
87crate://crates.io/mime/0.2.6 \
88crate://crates.io/native-tls/0.1.4 \
89crate://crates.io/net2/0.2.29 \
90crate://crates.io/num/0.1.39 \
91crate://crates.io/num-integer/0.1.34 \
92crate://crates.io/num-iter/0.1.33 \
93crate://crates.io/num-traits/0.1.39 \
94crate://crates.io/num_cpus/1.6.2 \
95crate://crates.io/openssl/0.9.14 \
96crate://crates.io/openssl-sys/0.9.14 \
97crate://crates.io/pem/0.4.0 \
98crate://crates.io/percent-encoding/1.0.0 \
99crate://crates.io/pkg-config/0.3.9 \
100crate://crates.io/quote/0.3.15 \
101crate://crates.io/rand/0.3.15 \
102crate://crates.io/redox_syscall/0.1.21 \
103crate://crates.io/regex/0.2.2 \
104crate://crates.io/regex-syntax/0.4.1 \
105crate://crates.io/reqwest/0.6.2 \
106crate://crates.io/ring/0.7.1 \
107crate://crates.io/rust-crypto/0.2.36 \
108crate://crates.io/rustc-demangle/0.1.4 \
109crate://crates.io/rustc-serialize/0.3.24 \
110crate://crates.io/schannel/0.1.7 \
111crate://crates.io/secur32-sys/0.2.0 \
112crate://crates.io/security-framework/0.1.14 \
113crate://crates.io/security-framework-sys/0.1.14 \
114crate://crates.io/serde/1.0.9 \
115crate://crates.io/serde_derive/1.0.9 \
116crate://crates.io/serde_derive_internals/0.15.1 \
117crate://crates.io/serde_json/1.0.2 \
118crate://crates.io/serde_urlencoded/0.5.1 \
119crate://crates.io/sha1/0.2.0 \
120crate://crates.io/strsim/0.6.0 \
121crate://crates.io/syn/0.11.11 \
122crate://crates.io/synom/0.11.3 \
123crate://crates.io/tar/0.4.13 \
124crate://crates.io/tempdir/0.3.5 \
125crate://crates.io/term_size/0.3.0 \
126crate://crates.io/textwrap/0.6.0 \
127crate://crates.io/thread_local/0.3.4 \
128crate://crates.io/time/0.1.37 \
129crate://crates.io/toml/0.2.1 \
130crate://crates.io/toml/0.4.2 \
131crate://crates.io/traitobject/0.1.0 \
132crate://crates.io/tungstenite/0.2.4 \
133crate://crates.io/typeable/0.1.2 \
134crate://crates.io/unicase/1.4.2 \
135crate://crates.io/unicode-bidi/0.3.3 \
136crate://crates.io/unicode-normalization/0.1.5 \
137crate://crates.io/unicode-segmentation/1.1.0 \
138crate://crates.io/unicode-width/0.1.4 \
139crate://crates.io/unicode-xid/0.0.4 \
140crate://crates.io/unix_socket/0.5.0 \
141crate://crates.io/unreachable/1.0.0 \
142crate://crates.io/untrusted/0.3.2 \
143crate://crates.io/url/1.5.1 \
144crate://crates.io/utf-8/0.7.1 \
145crate://crates.io/utf8-ranges/1.0.0 \
146crate://crates.io/uuid/0.5.1 \
147crate://crates.io/vec_map/0.8.0 \
148crate://crates.io/version_check/0.1.2 \
149crate://crates.io/void/1.0.2 \
150crate://crates.io/winapi/0.2.8 \
151crate://crates.io/winapi-build/0.1.1 \
152crate://crates.io/ws2_32-sys/0.2.1 \
153crate://crates.io/xattr/0.1.11 \
154git://github.com/advancedtelematic/rvi_sota_client \
155file://sota-client-autoprovision.service \
156file://sota-client-ostree.service \
157file://sota-client-uptane.service \
158"
159
160SRC_URI[index.md5sum] = "6a635e8a081b4d4ba4cebffd721c2d7d"
161SRC_URI[index.sha256sum] = "1913c41d4b8de89a931b6f9e418f83e70a083e12e6c247e8510ee932571ebae2"
162
163SYSTEMD_SERVICE_${PN} = "sota-client.service sota-client-autoprovision.service"
164
165DEPENDS += " openssl openssl-native dbus " 17DEPENDS += " openssl openssl-native dbus "
166RDEPENDS_${PN} = " libcrypto \ 18RDEPENDS_${PN} = " \
167 libssl \ 19bash \
168 bash \ 20curl \
169 lshw \ 21libcrypto \
170 jq \ 22libssl \
171 curl \ 23lshw \
172 python \ 24jq \
173 python-json \ 25"
174 python-petname \
175 "
176 26
177export SOTA_PACKED_CREDENTIALS 27export SOTA_PACKED_CREDENTIALS
178export SOTA_AUTOPROVISION_CREDENTIALS 28export SOTA_AUTOPROVISION_CREDENTIALS
diff --git a/recipes-sota/rvi-sota-client/sota-installer_git.bb b/recipes-sota/rvi-sota-client/sota-installer_git.bb
new file mode 100644
index 0000000..09f6e5d
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/sota-installer_git.bb
@@ -0,0 +1,25 @@
1require rvi-sota-client.inc
2
3
4SYSTEMD_SERVICE_${PN} = "sota-installer.service"
5
6DEPENDS += " rvi-sota-client "
7
8FILES_${PN} = " \
9${bindir}/sota-installer \
10${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-installer.service', '', d)} \
11"
12
13do_compile_prepend() {
14 cd sota-installer
15}
16
17do_install() {
18 install -d ${D}${bindir}
19 install -m 0755 target/${TARGET_SYS}/release/sota-installer ${D}${bindir}
20
21 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
22 install -d ${D}/${systemd_unitdir}/system
23 install -m 0644 ${WORKDIR}/sota-installer.service ${D}/${systemd_unitdir}/system/sota-installer.service
24 fi
25}
diff --git a/recipes-sota/rvi-sota-client/sota-launcher_git.bb b/recipes-sota/rvi-sota-client/sota-launcher_git.bb
new file mode 100644
index 0000000..4104052
--- /dev/null
+++ b/recipes-sota/rvi-sota-client/sota-launcher_git.bb
@@ -0,0 +1,15 @@
1require rvi-sota-client.inc
2
3
4DEPENDS += " sota-client "
5FILES_${PN} = "${bindir}/sota-launcher"
6
7
8do_compile_prepend() {
9 cd sota-launcher
10}
11
12do_install() {
13 install -d ${D}${bindir}
14 install -m 0755 target/${TARGET_SYS}/release/sota-launcher ${D}${bindir}
15}