From 4b33b1ac46fb525941c588b0a4c1b3ce132cad71 Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Thu, 29 Mar 2018 13:45:30 +0200 Subject: Try to set hardware IDs in local.conf. Communicating the IDs to the images works, but getting the IDs in the garage-push commits does not. I can get the variables exported, but the script still uses the wrong (old) value. Not sure why. --- classes/image_types_ostree.bbclass | 3 ++- classes/sota.bbclass | 2 ++ recipes-sota/aktualizr/aktualizr-secondary-conf.bb | 28 ++++++++++++++++++++++ recipes-sota/aktualizr/environment-secondary.inc | 12 ++++++++++ recipes-sota/aktualizr/environment.inc | 7 +++++- .../aktualizr/files/aktualizr-secondary.service | 3 ++- recipes-test/images/primary-image.bb | 8 +++++++ recipes-test/images/secondary-image.bb | 14 +++++++++++ 8 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 recipes-sota/aktualizr/aktualizr-secondary-conf.bb create mode 100644 recipes-sota/aktualizr/environment-secondary.inc diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass index bc44e33..1313c40 100644 --- a/classes/image_types_ostree.bbclass +++ b/classes/image_types_ostree.bbclass @@ -10,6 +10,7 @@ do_image_ostree[depends] += "ostree-native:do_populate_sysroot \ export OSTREE_REPO export OSTREE_BRANCHNAME export GARAGE_TARGET_NAME +export SOTA_HARDWARE_ID RAMDISK_EXT ?= ".${OSTREE_INITRAMFS_FSTYPES}" @@ -220,7 +221,7 @@ IMAGE_CMD_garagesign () { --length 0 \ --url "${GARAGE_TARGET_URL}" \ --sha256 ${ostree_target_hash} \ - --hardwareids ${MACHINE} + --hardwareids ${SOTA_HARDWARE_ID} garage-sign targets sign --repo tufrepo \ --home-dir ${GARAGE_SIGN_REPO} \ --key-name=targets diff --git a/classes/sota.bbclass b/classes/sota.bbclass index 38d4ce5..d9df83a 100644 --- a/classes/sota.bbclass +++ b/classes/sota.bbclass @@ -36,6 +36,8 @@ GARAGE_TARGET_NAME ?= "${OSTREE_BRANCHNAME}" GARAGE_TARGET_VERSION ?= "" GARAGE_TARGET_URL ?= "https://example.com/" +SOTA_HARDWARE_ID ?= "${MACHINE}" + SOTA_MACHINE ??="none" SOTA_MACHINE_rpi ?= "raspberrypi" SOTA_MACHINE_porter ?= "porter" diff --git a/recipes-sota/aktualizr/aktualizr-secondary-conf.bb b/recipes-sota/aktualizr/aktualizr-secondary-conf.bb new file mode 100644 index 0000000..c13bf94 --- /dev/null +++ b/recipes-sota/aktualizr/aktualizr-secondary-conf.bb @@ -0,0 +1,28 @@ +SUMMARY = "Aktualizr secondary configuration" +DESCRIPTION = "Systemd service and configurations for Aktualizr secondaries" +HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" +SECTION = "base" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" +RDEPENDS_${PN} = "aktualizr-secondary" +PV = "1.0" + +SRC_URI = " \ + file://LICENSE \ + " + +export SOTA_SECONDARY_HARDWARE_ID + +do_install() { + AKTUALIZR_PARAMETERS_CONFIGFILE="--config /usr/lib/sota/sota_secondary.toml" + if [ -n "${SOTA_SECONDARY_HARDWARE_ID}" ]; then + AKTUALIZR_PARAMETERS_HARDWARE_ID="--ecu-hardware-id ${SOTA_SECONDARY_HARDWARE_ID}"; + fi + + install -d ${D}${libdir}/sota + echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_PARAMETERS_CONFIGFILE} ${AKTUALIZR_PARAMETERS_HARDWARE_ID}" > ${D}${libdir}/sota/sota.env +} + +FILES_${PN} = "${libdir}/sota/sota.env" + +# vim:set ts=4 sw=4 sts=4 expandtab: diff --git a/recipes-sota/aktualizr/environment-secondary.inc b/recipes-sota/aktualizr/environment-secondary.inc new file mode 100644 index 0000000..18a4684 --- /dev/null +++ b/recipes-sota/aktualizr/environment-secondary.inc @@ -0,0 +1,12 @@ +export SOTA_SECONDARY_HARDWARE_ID + +do_install_append() { + AKTUALIZR_PARAMETERS_CONFIGFILE="--config /usr/lib/sota/sota_secondary.toml" + if [ -n "${SOTA_PRIMARY_HARDWARE_ID}" ]; then + AKTUALIZR_PARAMETERS_HARDWARE_ID="--ecu-hardware-id ${SOTA_PRIMARY_HARDWARE_ID}" + fi + + echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_PARAMETERS_CONFIGFILE} ${AKTUALIZR_PARAMETERS_HARDWARE_ID}" > ${D}${libdir}/sota/sota.env +} + +FILES_${PN}_append = " ${libdir}/sota/sota.env" diff --git a/recipes-sota/aktualizr/environment.inc b/recipes-sota/aktualizr/environment.inc index 16e789e..73517b0 100644 --- a/recipes-sota/aktualizr/environment.inc +++ b/recipes-sota/aktualizr/environment.inc @@ -1,11 +1,16 @@ export SOTA_VIRTUAL_SECONDARIES +export SOTA_PRIMARY_HARDWARE_ID do_install_append() { for sec in ${SOTA_VIRTUAL_SECONDARIES}; do AKTUALIZR_PARAMETERS_VIRTUALSECS="${AKTUALIZR_PARAMETERS_VIRTUALSECS} --secondary-config $sec" done - echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_PARAMETERS_VIRTUALSECS}" > ${D}${libdir}/sota/sota.env + if [ -n "${SOTA_PRIMARY_HARDWARE_ID}" ]; then + AKTUALIZR_PARAMETERS_HARDWARE_ID="--primary-ecu-hardware-id ${SOTA_PRIMARY_HARDWARE_ID}" + fi + + echo "AKTUALIZR_CMDLINE_PARAMETERS=${AKTUALIZR_PARAMETERS_VIRTUALSECS} ${AKTUALIZR_PARAMETERS_HARDWARE_ID}" > ${D}${libdir}/sota/sota.env } FILES_${PN}_append = " ${libdir}/sota/sota.env" diff --git a/recipes-sota/aktualizr/files/aktualizr-secondary.service b/recipes-sota/aktualizr/files/aktualizr-secondary.service index a1e0e1b..5173ae9 100644 --- a/recipes-sota/aktualizr/files/aktualizr-secondary.service +++ b/recipes-sota/aktualizr/files/aktualizr-secondary.service @@ -4,6 +4,7 @@ Description=Aktualizr SOTA Client (UPTANE Secondary) [Service] RestartSec=10 Restart=always +EnvironmentFile=/usr/lib/sota/sota.env EnvironmentFile=-/etc/sota/sota.env -ExecStart=/usr/bin/aktualizr-secondary --config /usr/lib/sota/sota_secondary.toml +ExecStart=/usr/bin/aktualizr-secondary $AKTUALIZR_CMDLINE_PARAMETERS diff --git a/recipes-test/images/primary-image.bb b/recipes-test/images/primary-image.bb index 6d2df94..21ff565 100644 --- a/recipes-test/images/primary-image.bb +++ b/recipes-test/images/primary-image.bb @@ -1,9 +1,17 @@ include recipes-core/images/core-image-minimal.bb +#export SOTA_PRIMARY_HARDWARE_ID +#export SOTA_HARDWARE_ID + SUMMARY = "A minimal Uptane Primary image running aktualizr, for testing with a Linux secondary" LICENSE = "MIT" +python () { + if d.getVar("SOTA_PRIMARY_HARDWARE_ID", True): + d.setVar("SOTA_HARDWARE_ID", d.getVar("SOTA_PRIMARY_HARDWARE_ID", True)) +} + IMAGE_INSTALL_remove = " \ " diff --git a/recipes-test/images/secondary-image.bb b/recipes-test/images/secondary-image.bb index 9adbdc5..75deb5a 100644 --- a/recipes-test/images/secondary-image.bb +++ b/recipes-test/images/secondary-image.bb @@ -1,9 +1,22 @@ include recipes-core/images/core-image-minimal.bb +export SOTA_SECONDARY_HARDWARE_ID +export SOTA_HARDWARE_ID + SUMMARY = "A minimal Uptane Secondary image running aktualizr-secondary" LICENSE = "MIT" +IMAGE_TYPEDEP_garagesign_append = " set_hardware_id " +IMAGE_CMD_set_hardware_id() { + if [ -n "${SOTA_SECONDARY_HARDWARE_ID}" ]; then + SOTA_HARDWARE_ID="${SOTA_SECONDARY_HARDWARE_ID}" + fi +} +#python IMAGE_CMD_set_hardware_id() { +# if d.getVar("SOTA_SECONDARY_HARDWARE_ID", True): +# d.setVar("SOTA_HARDWARE_ID", d.getVar("SOTA_SECONDARY_HARDWARE_ID", True)) +#} # Remove default aktualizr primary, and the provisioning configuration (which # RDEPENDS on aktualizr) @@ -19,6 +32,7 @@ IMAGE_INSTALL_remove = " \ IMAGE_INSTALL_append = " \ aktualizr-secondary \ + aktualizr-secondary-conf \ secondary-network-config \ " -- cgit v1.2.3-54-g00ecf