summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Vacek <patrickvacek@gmail.com>2018-11-12 14:49:37 +0100
committerPatrick Vacek <patrickvacek@gmail.com>2018-11-13 14:00:47 +0100
commitfeb3f35132340e141300d522bb80a8d69c695b19 (patch)
tree0f7fc84c2cb6f7bb93aa8c22d40a8263a2f266ba
parentecefbd8769fb32d0fbc448ce164f0d3576b2696f (diff)
downloadmeta-updater-feb3f35132340e141300d522bb80a8d69c695b19.tar.gz
aktualizr: Fix virtual secondary support.
Use /etc/sota/ecus as using /var/sota/ecus was conflicting with the provisioning recipes that also use /var/sota. Not totally ideal, but the best compromise I could find. Signed-off-by: Patrick Vacek <patrickvacek@gmail.com>
-rw-r--r--README.adoc3
-rw-r--r--classes/image_types_ostree.bbclass5
-rw-r--r--recipes-sota/aktualizr/aktualizr-auto-prov.bb3
-rwxr-xr-xrecipes-sota/aktualizr/aktualizr_git.bb7
-rw-r--r--recipes-sota/aktualizr/environment.inc11
5 files changed, 12 insertions, 17 deletions
diff --git a/README.adoc b/README.adoc
index d30e76b..6424a28 100644
--- a/README.adoc
+++ b/README.adoc
@@ -86,8 +86,7 @@ Although we have used U-Boot so far, other boot loaders can be configured work w
86* `SOTA_DEPLOY_CREDENTIALS` - when set to '1' (default value), deploys credentials to the built image. Override it in `local.conf` to built a generic image that can be provisioned manually after the build. 86* `SOTA_DEPLOY_CREDENTIALS` - when set to '1' (default value), deploys credentials to the built image. Override it in `local.conf` to built a generic image that can be provisioned manually after the build.
87* `SOTA_CLIENT_PROV` - which provisioning method to use. Valid options are https://github.com/advancedtelematic/aktualizr/blob/master/docs/automatic-provisioning.adoc[`aktualizr-auto-prov`], https://github.com/advancedtelematic/aktualizr/blob/master/docs/implicit-provisioning.adoc[`aktualizr-ca-implicit-prov`], and https://github.com/advancedtelematic/aktualizr/blob/master/docs/hsm-provisioning.adoc[`aktualizr-hsm-prov`]. The default is `aktualizr-auto-prov`. This can also be set to an empty string to avoid using a provisioning recipe. 87* `SOTA_CLIENT_PROV` - which provisioning method to use. Valid options are https://github.com/advancedtelematic/aktualizr/blob/master/docs/automatic-provisioning.adoc[`aktualizr-auto-prov`], https://github.com/advancedtelematic/aktualizr/blob/master/docs/implicit-provisioning.adoc[`aktualizr-ca-implicit-prov`], and https://github.com/advancedtelematic/aktualizr/blob/master/docs/hsm-provisioning.adoc[`aktualizr-hsm-prov`]. The default is `aktualizr-auto-prov`. This can also be set to an empty string to avoid using a provisioning recipe.
88* `SOTA_CLIENT_FEATURES` - extensions to aktualizr. The only valid options are `hsm` (to build with HSM support) and `secondary-network` (to set up a simulated 'in-vehicle' network with support for a primary node with a DHCP server and a secondary node with a DHCP client). 88* `SOTA_CLIENT_FEATURES` - extensions to aktualizr. The only valid options are `hsm` (to build with HSM support) and `secondary-network` (to set up a simulated 'in-vehicle' network with support for a primary node with a DHCP server and a secondary node with a DHCP client).
89* `SOTA_SECONDARY_ECUS` - a list of paths separated by spaces of JSON configuration files for virtual secondaries on the host. These will be installed into `/var/sota/ecus` on the device. 89* `SOTA_SECONDARY_CONFIG_DIR` - a directory containing JSON configuration files for virtual secondaries on the host. These will be installed into `/etc/sota/ecus` on the device and automatically provided to aktualizr.
90* `SOTA_VIRTUAL_SECONDARIES` - a list of paths separated by spaces of JSON configuration files for virtual secondaries installed on the device. If `SOTA_SECONDARY_ECUS` is used to install them, then you can expect them to be installed in `/var/sota/ecus`.
91 90
92== Usage 91== Usage
93 92
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 0db8e50..5286efc 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -126,11 +126,6 @@ IMAGE_CMD_ostree () {
126 ln -sf var/roothome root 126 ln -sf var/roothome root
127 fi 127 fi
128 128
129 if [ -n "${SOTA_SECONDARY_ECUS}" ]; then
130 mkdir -p var/sota/ecus
131 cp ${SOTA_SECONDARY_ECUS} var/sota/ecus
132 fi
133
134 checksum=`sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " "` 129 checksum=`sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " "`
135 130
136 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum} 131 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum}
diff --git a/recipes-sota/aktualizr/aktualizr-auto-prov.bb b/recipes-sota/aktualizr/aktualizr-auto-prov.bb
index 01f21fa..39a5e6e 100644
--- a/recipes-sota/aktualizr/aktualizr-auto-prov.bb
+++ b/recipes-sota/aktualizr/aktualizr-auto-prov.bb
@@ -30,7 +30,6 @@ do_install() {
30 fi 30 fi
31 31
32 install -m 0700 -d ${D}${libdir}/sota/conf.d 32 install -m 0700 -d ${D}${libdir}/sota/conf.d
33 install -m 0700 -d ${D}${localstatedir}/sota
34 aktualizr_toml=${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'secondary-network', 'sota_autoprov_primary.toml', 'sota_autoprov.toml', d)} 33 aktualizr_toml=${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'secondary-network', 'sota_autoprov_primary.toml', 'sota_autoprov.toml', d)}
35 34
36 install -m 0644 ${STAGING_DIR_NATIVE}${libdir}/sota/${aktualizr_toml} \ 35 install -m 0644 ${STAGING_DIR_NATIVE}${libdir}/sota/${aktualizr_toml} \
@@ -40,8 +39,6 @@ do_install() {
40FILES_${PN} = " \ 39FILES_${PN} = " \
41 ${libdir}/sota/conf.d \ 40 ${libdir}/sota/conf.d \
42 ${libdir}/sota/conf.d/20-${aktualizr_toml} \ 41 ${libdir}/sota/conf.d/20-${aktualizr_toml} \
43 ${localstatedir}/sota \
44 ${localstatedir}/sota/sota_provisioning_credentials.zip \
45 " 42 "
46 43
47# vim:set ts=4 sw=4 sts=4 expandtab: 44# vim:set ts=4 sw=4 sts=4 expandtab:
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb
index 2b6ad38..39767d4 100755
--- a/recipes-sota/aktualizr/aktualizr_git.bb
+++ b/recipes-sota/aktualizr/aktualizr_git.bb
@@ -69,6 +69,12 @@ do_install_append () {
69 install -m 0644 ${WORKDIR}/aktualizr-secondary.service ${D}${systemd_unitdir}/system/aktualizr-secondary.service 69 install -m 0644 ${WORKDIR}/aktualizr-secondary.service ${D}${systemd_unitdir}/system/aktualizr-secondary.service
70 install -m 0700 -d ${D}${libdir}/sota/conf.d 70 install -m 0700 -d ${D}${libdir}/sota/conf.d
71 install -m 0700 -d ${D}${sysconfdir}/sota/conf.d 71 install -m 0700 -d ${D}${sysconfdir}/sota/conf.d
72
73 if [ -n "${SOTA_SECONDARY_CONFIG_DIR}" ] && [ -e "${SOTA_SECONDARY_CONFIG_DIR}" ]; then
74 install -m 0700 -d ${D}${sysconfdir}/sota/ecus
75 install -m 0644 "${SOTA_SECONDARY_CONFIG_DIR}"/* ${D}${sysconfdir}/sota/ecus/
76 fi
77
72} 78}
73 79
74do_install_append_class-target () { 80do_install_append_class-target () {
@@ -91,6 +97,7 @@ FILES_${PN} = " \
91 ${systemd_unitdir}/system/aktualizr.service \ 97 ${systemd_unitdir}/system/aktualizr.service \
92 ${libdir}/sota/conf.d \ 98 ${libdir}/sota/conf.d \
93 ${sysconfdir}/sota/conf.d \ 99 ${sysconfdir}/sota/conf.d \
100 ${sysconfdir}/sota/ecus/* \
94 " 101 "
95 102
96FILES_${PN}-examples = " \ 103FILES_${PN}-examples = " \
diff --git a/recipes-sota/aktualizr/environment.inc b/recipes-sota/aktualizr/environment.inc
index 16e789e..0b46a2e 100644
--- a/recipes-sota/aktualizr/environment.inc
+++ b/recipes-sota/aktualizr/environment.inc
@@ -1,11 +1,8 @@
1export SOTA_VIRTUAL_SECONDARIES
2
3do_install_append() { 1do_install_append() {
4 for sec in ${SOTA_VIRTUAL_SECONDARIES}; do 2 if [ -n "${SOTA_SECONDARY_CONFIG_DIR}" ]; then
5 AKTUALIZR_PARAMETERS_VIRTUALSECS="${AKTUALIZR_PARAMETERS_VIRTUALSECS} --secondary-config $sec" 3 AKTUALIZR_CMDLINE_PARAMETERS="${AKTUALIZR_CMDLINE_PARAMETERS} --secondary-configs-dir /etc/sota/ecus"
6 done 4 fi
7 5 echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_CMDLINE_PARAMETERS}" > ${D}${libdir}/sota/sota.env
8 echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_PARAMETERS_VIRTUALSECS}" > ${D}${libdir}/sota/sota.env
9} 6}
10 7
11FILES_${PN}_append = " ${libdir}/sota/sota.env" 8FILES_${PN}_append = " ${libdir}/sota/sota.env"