From 1c53ba362775c6f658406ab3f2333cdee260de79 Mon Sep 17 00:00:00 2001 From: Phil Wise Date: Wed, 24 May 2017 16:14:26 +0200 Subject: Support Aktualizr in manual-provisioning mode Aktualizr currently supports OSTree updates in non-autoprovisioned mode. Add a systemd service to run it in that mode. It uses the same location for the config file as rvi-sota-client (/sysroot/boot/sota.toml) Also, the aktualizr recipe is reformatted according to meta-openembedded/contrib/oe-stylize.py (which follows the OE styleguide) --- classes/image_types_ota.bbclass | 2 ++ recipes-sota/aktualizr/aktualizr_git.bb | 32 ++++++++++++++++------ .../files/aktualizr-manual-provision.service | 13 +++++++++ 3 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 recipes-sota/aktualizr/files/aktualizr-manual-provision.service diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index cb71899..306a3c0 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass @@ -99,6 +99,8 @@ IMAGE_CMD_otaimg () { tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs ./var/sota || true mv ${HOME_TMP}/var/sota ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true + # Ensure that /var/local exists (AGL symlinks /usr/local to /var/local) + install -d ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/local rm -rf ${HOME_TMP} # Calculate image type diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index e8a1a5e..fa71af8 100644 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -2,24 +2,38 @@ SUMMARY = "Aktualizr SOTA Client" DESCRIPTION = "SOTA Client application written in C++" HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" SECTION = "base" - LICENSE = "MPL-2.0" LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" +DEPENDS = "boost curl openssl jansson libsodium ostree" +SRCREV = "4e9344ae375a444f02b964dca52fe808010d17df" +PV = "1.0+git${SRCPV}" -inherit cmake systemd +SRC_URI = " \ + git://github.com/advancedtelematic/aktualizr \ + file://aktualizr-manual-provision.service \ + " S = "${WORKDIR}/git" -PV = "1.0+git${SRCPV}" +SYSTEMD_SERVICE_${PN} = "aktualizr.service" -SRCREV = "4e9344ae375a444f02b964dca52fe808010d17df" +inherit cmake systemd -SRC_URI = "git://github.com/advancedtelematic/aktualizr" +EXTRA_OECMAKE = "-DWARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_OSTREE=ON" -DEPENDS = "boost curl openssl jansson libsodium ostree" -RDEPENDS = "" +export SOTA_AUTOPROVISION_CREDENTIALS -EXTRA_OECMAKE = "-DWARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_OSTREE=ON" +do_install_append() { + if [ -n "$SOTA_AUTOPROVISION_CREDENTIALS" ]; then + bbwarn "Aktualizr recipe currently lacks support for SOTA_AUTOPROVISION_CREDENTIALS. No systemd service will be created" + else + install -d ${D}/${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/aktualizr-manual-provision.service ${D}/${systemd_unitdir}/system/aktualizr.service + fi +} + +RDEPENDS = "" FILES_${PN} = " \ ${bindir}/aktualizr \ - " + ${systemd_unitdir}/system/aktualizr.service \ + " diff --git a/recipes-sota/aktualizr/files/aktualizr-manual-provision.service b/recipes-sota/aktualizr/files/aktualizr-manual-provision.service new file mode 100644 index 0000000..a70f2f9 --- /dev/null +++ b/recipes-sota/aktualizr/files/aktualizr-manual-provision.service @@ -0,0 +1,13 @@ +[Unit] +Description=Aktualizr SOTA Client +Wants=network-online.target +After=network.target network-online.target +Requires=network-online.target + +[Service] +RestartSec=10 +Restart=always +ExecStart=/usr/bin/aktualizr --config /sysroot/boot/sota.toml --loglevel 2 + +[Install] +WantedBy=multi-user.target -- cgit v1.2.3-54-g00ecf