From 2c31f14e4c236b7e85cfdf22a5a3978502912e9a Mon Sep 17 00:00:00 2001 From: Anton Gerasimov Date: Mon, 8 Oct 2018 12:19:53 +0200 Subject: Add contributor/reviewer checklist --- CONTRIBUTING.adoc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 93a0815..b719d30 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -3,3 +3,15 @@ We welcome pull requests from anyone. The master branch is the primary branch for development, and if you wish to add new functionality, it probably belongs there. We attempt to maintain recent previous branches and welcome bug fixes and backports for those. Currently, the actively maintained branches are sumo, rocko, and pyro. Previously, morty was also a stable branch, but it has not been updated or actively maintained for a while. If you are developing with meta-updater, it may be helpful to read the README and other documentation for link:README.adoc[this repo], https://github.com/advancedtelematic/aktualizr[aktualizr], and the https://github.com/advancedtelematic/updater-repo/[updater-repo], particularly the sections about development and debugging. + +== Contributor checklist + +* OTA-enabled build succeeds at least for one platform, the resulted image boots. This check is absolutely necessary for every pull request unless it only touches documentation. +* If your change is touching platform code (like `classes/sota_.bbclass`), please check build and update on this particular platform. +* oe-selftest succeeds. To test meta-updater, run `oe-selftest -r updater` from a build directory with `MACHINE` set to `qemux86-64`. +* Updates are forwards- and backwards-compatible. You should be able to update an OTA-enabled build before the change is applied to the version with change applied and vice versa. One should pay double attention to the compatibility when bootloader code is affected. + +We understand that making all these tests might be overly tedious taking in account build times in Yocto. Please add a comment to your PR describing the tests you've made. + +== Approval +PR approval should be accompanied by a comment describing what tests have been made by the reviewer. -- cgit v1.2.3-54-g00ecf From 166917ad9b5b8ff8f180fd6af5b8153f984ade81 Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Thu, 4 Oct 2018 16:45:16 +0200 Subject: aktualizr: remove example-interface. --- lib/oeqa/selftest/cases/updater.py | 9 +-------- recipes-sota/aktualizr/aktualizr_git.bb | 4 +--- recipes-sota/config/aktualizr-example-interface.bb | 21 --------------------- recipes-sota/config/files/30-example-interface.toml | 2 -- 4 files changed, 2 insertions(+), 34 deletions(-) delete mode 100644 recipes-sota/config/aktualizr-example-interface.bb delete mode 100644 recipes-sota/config/files/30-example-interface.toml diff --git a/lib/oeqa/selftest/cases/updater.py b/lib/oeqa/selftest/cases/updater.py index 7ef834e..7d1f36e 100644 --- a/lib/oeqa/selftest/cases/updater.py +++ b/lib/oeqa/selftest/cases/updater.py @@ -150,8 +150,6 @@ class AutoProvTests(OESelftestTestCase): self.meta_qemu = None self.append_config('MACHINE = "qemux86-64"') self.append_config('SOTA_CLIENT_PROV = " aktualizr-auto-prov "') - # Test aktualizr-example-interface package. - self.append_config('IMAGE_INSTALL_append = " aktualizr-examples aktualizr-example-interface "') self.qemu, self.s = qemu_launch(machine='qemux86-64') def tearDownLocal(self): @@ -185,12 +183,6 @@ class AutoProvTests(OESelftestTestCase): self.assertTrue(ran_ok, 'aktualizr-info failed: ' + stderr.decode() + stdout.decode()) verifyProvisioned(self, machine) - # Test aktualizr-example-interface package. - stdout, stderr, retcode = self.qemu_command('aktualizr-info') - self.assertIn(b'hardware ID: example1', stdout, - 'Legacy secondary initialization failed: ' + stderr.decode() + stdout.decode()) - self.assertIn(b'hardware ID: example2', stdout, - 'Legacy secondary initialization failed: ' + stderr.decode() + stdout.decode()) class ManualControlTests(OESelftestTestCase): @@ -562,6 +554,7 @@ class HsmTests(OESelftestTestCase): verifyProvisioned(self, machine) + class SecondaryTests(OESelftestTestCase): @classmethod def setUpClass(cls): diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index 8e4b8f5..3fbe470 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -26,7 +26,7 @@ SRC_URI = " \ file://aktualizr-secondary.socket \ file://aktualizr-serialcan.service \ " -SRCREV = "512ad74c0b5339ca7775d8c9461b565a9e6ff5b3" +SRCREV = "6b0114e4fad0619d16ed2063e8ff10e3fb8500f2" BRANCH ?= "master" S = "${WORKDIR}/git" @@ -98,8 +98,6 @@ FILES_${PN} = " \ FILES_${PN}-examples = " \ ${libdir}/sota/demo_secondary.json \ - ${bindir}/example-interface \ - ${bindir}/isotp-test-interface \ ${bindir}/hmi_stub \ " diff --git a/recipes-sota/config/aktualizr-example-interface.bb b/recipes-sota/config/aktualizr-example-interface.bb deleted file mode 100644 index ac75352..0000000 --- a/recipes-sota/config/aktualizr-example-interface.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "Aktualizr example interface" -DESCRIPTION = "Aktualizr example interface for legacy secondaries" -HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" -SECTION = "base" -LICENSE = "MPL-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" - -SRC_URI = " \ - file://30-example-interface.toml \ - " - -do_install_append () { - install -m 0700 -d ${D}${libdir}/sota/conf.d - install -m 0644 ${WORKDIR}/30-example-interface.toml ${D}${libdir}/sota/conf.d/30-example-interface.toml -} - -FILES_${PN} = " \ - ${libdir}/sota/conf.d/30-example-interface.toml \ - " - -# vim:set ts=4 sw=4 sts=4 expandtab: diff --git a/recipes-sota/config/files/30-example-interface.toml b/recipes-sota/config/files/30-example-interface.toml deleted file mode 100644 index fc4e9ec..0000000 --- a/recipes-sota/config/files/30-example-interface.toml +++ /dev/null @@ -1,2 +0,0 @@ -[uptane] -legacy_interface = "/usr/bin/example-interface" -- cgit v1.2.3-54-g00ecf From 92bce6abac60b092edc62f3e74f7ea7d7b5c6e55 Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Tue, 9 Oct 2018 09:34:27 +0200 Subject: aktualizr: remove BUILD_ISTOP flag. --- recipes-sota/aktualizr/aktualizr_git.bb | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index 3fbe470..0cf3895 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -49,7 +49,6 @@ EXTRA_OECMAKE = "-DWARNING_AS_ERROR=OFF \ -DBUILD_LOAD_TESTS=OFF \ -Dgtest_disable_pthreads=ON" EXTRA_OECMAKE_append_class-target = " -DBUILD_OSTREE=ON \ - -DBUILD_ISOTP=ON \ ${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'hsm', '-DBUILD_P11=ON', '', d)} " EXTRA_OECMAKE_append_class-native = " -DBUILD_SOTA_TOOLS=ON \ -DBUILD_OSTREE=OFF \ -- cgit v1.2.3-54-g00ecf From 3a6ca71e6b0740ad8b18b5648b4e1d0ca31704b3 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 9 Oct 2018 14:32:17 +0200 Subject: ostree: drop libgsystem dependency OSTree removed libgsystem dependency since v2016.8. Drop it from the OSTree recipe too. Signed-off-by: Stefan Agner --- recipes-sota/ostree/ostree_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-sota/ostree/ostree_git.bb b/recipes-sota/ostree/ostree_git.bb index 501d636..3e3c951 100644 --- a/recipes-sota/ostree/ostree_git.bb +++ b/recipes-sota/ostree/ostree_git.bb @@ -15,7 +15,7 @@ S = "${WORKDIR}/git" BBCLASSEXTEND = "native" -DEPENDS += "attr bison-native libarchive libcap glib-2.0 gpgme libgsystem fuse e2fsprogs curl xz" +DEPENDS += "attr bison-native libarchive libcap glib-2.0 gpgme fuse e2fsprogs curl xz" DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" RDEPENDS_${PN}-dracut = "bash" -- cgit v1.2.3-54-g00ecf From 3f3e06444373e08dce0ae33a4c936cfcf2ad3e15 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 9 Oct 2018 14:33:02 +0200 Subject: libgsystem: drop recipe OSTree does not use libgsystem as a dependency any longer. Drop the recipe too. Signed-off-by: Stefan Agner --- recipes-support/libgsystem/libgsystem_git.bb | 40 ---------------------------- 1 file changed, 40 deletions(-) delete mode 100644 recipes-support/libgsystem/libgsystem_git.bb diff --git a/recipes-support/libgsystem/libgsystem_git.bb b/recipes-support/libgsystem/libgsystem_git.bb deleted file mode 100644 index e2b362f..0000000 --- a/recipes-support/libgsystem/libgsystem_git.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "GIO-based library, targeted primarily for use by operating system components" -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" - -SRC_URI = "gitsm://github.com/GNOME/libgsystem.git" -SRCREV="d606bec68ddfea78de4b03c3f3568afb71bdc1ce" - -S = "${WORKDIR}/git" - -inherit autotools-brokensep gobject-introspection - -DEPENDS += "attr glib-2.0 pkgconfig libcap gtk-doc-native gpgme" -RDEPENDS_${PN} = "xz " -RDEPENDS_${PN}_append = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}" - -RDEPENDS_${PN}_remove_class-native = "systemd-native" - -BBCLASSEXTEND = "native" - -export STAGING_INCDIR -export STAGING_LIBDIR - -do_configure() { - #NOCONFIGURE=true ./autogen.sh - autoreconf -vfi - oe_runconf -} - -do_compile_prepend() { - export BUILD_SYS="${BUILD_SYS}" - export HOST_SYS="${HOST_SYS}" -} - -FILES_${PN} += " \ - ${datadir} \ - ${datadir}/gir-1.0 \ - ${datadir}/gir-1.0/GSystem-1.0.gir \ - ${libdir}/girepository-1.0/ \ - ${libdir}/girepository-1.0/GSystem-1.0.typelib \ -" -- cgit v1.2.3-54-g00ecf From 52950e02193e85f39385fe54bd681146e4670e08 Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Tue, 9 Oct 2018 17:28:55 +0200 Subject: CONTRIBUTING.adoc: Add rebasing requirement. --- CONTRIBUTING.adoc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index b719d30..73fc3c3 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -6,12 +6,14 @@ If you are developing with meta-updater, it may be helpful to read the README an == Contributor checklist -* OTA-enabled build succeeds at least for one platform, the resulted image boots. This check is absolutely necessary for every pull request unless it only touches documentation. -* If your change is touching platform code (like `classes/sota_.bbclass`), please check build and update on this particular platform. +* OTA-enabled build succeeds at least for one platform, the resulted image boots, and an update can be installed. This check is absolutely necessary for every pull request unless it only touches documentation. +* If your change touches platform code (like `classes/sota_.bbclass`), please check building and updating on this particular platform. * oe-selftest succeeds. To test meta-updater, run `oe-selftest -r updater` from a build directory with `MACHINE` set to `qemux86-64`. * Updates are forwards- and backwards-compatible. You should be able to update an OTA-enabled build before the change is applied to the version with change applied and vice versa. One should pay double attention to the compatibility when bootloader code is affected. +* The patch/branch should be based on the latest version of the target branch. This may mean that rebasing is necessary if other PRs are merged before yours is approved. -We understand that making all these tests might be overly tedious taking in account build times in Yocto. Please add a comment to your PR describing the tests you've made. +We understand that completing all these tasks might be overly tedious due to build times in Yocto. Please add a comment to your PR describing the tests you've done. == Approval -PR approval should be accompanied by a comment describing what tests have been made by the reviewer. + +PR approval should be accompanied by a comment describing what tests have been done by the reviewer. -- cgit v1.2.3-54-g00ecf From a1ac284fea8ad9ee097c97440a332921a4ca046f Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Wed, 10 Oct 2018 11:28:42 +0200 Subject: Fix README formatting. Apparently linebreaks matter. --- README.adoc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.adoc b/README.adoc index 703ea23..aadad2d 100644 --- a/README.adoc +++ b/README.adoc @@ -200,15 +200,16 @@ oe-selftest --run-tests updater For more information about oe-selftest, including details about how to run individual test modules or classes, please refer to the https://wiki.yoctoproject.org/wiki/Oe-selftest[Yocto Project wiki]. == Manual provisoning + As described in <> section you can set `SOTA_DEPLOY_CREDENTIALS` to `0` to prevent deploying credentials to the built `wic` image. In this case you get a generic image that you can use e.g. on a production line to flash a series of devices. The cost of this approach is that this image is half-baked and should be provisioned before it can connect to the backend. -Provisioning procedure depends on your provisioning recipe, i.e. the value of `SOTA_CLIENT_PROV` (equal to `aktualizr-auto-prov` by default). +Provisioning procedure depends on your provisioning recipe, i.e. the value of `SOTA_CLIENT_PROV` (equal to `aktualizr-auto-prov` by default): * For `aktualizr-auto-prov` put your `credentials.zip` to `/var/sota/sota_provisioning_credentials.zip` on the filesystem of a running device. If you have the filesystem of our device mounted to your build machine, prefix all paths with `/ostree/deploy/poky` as in `/ostree/deploy/poky/var/sota/sota_provisioning_credentials.zip`. * For `aktualizr-ca-implicit-prov` -** put URL to the used backend (together with protocol prefix and port number) to `/var/sota/gateway.url`. If you're using HERE OTA Connect, you can find the URL in `autoprov.url` file in your credentials archive. -** put client certificate, private key and root CA certificate (for the *server*, not for the *device*) to `/var/sota/import/client.pem`, `/var/sota/import/pkey.pem` and `/var/sota/import/root.crt` respectively. +** put URL to the backend server (together with protocol prefix and port number) at `/var/sota/gateway.url`. If you're using HERE OTA Connect, you can find the URL in the `autoprov.url` file in your credentials archive. +** put client certificate, private key and root CA certificate (for the *server*, not for the *device*) at `/var/sota/import/client.pem`, `/var/sota/import/pkey.pem` and `/var/sota/import/root.crt` respectively. * For `aktualizr-hsm-prov` -** put URL to the used backend (together with protocol prefix and port number) to `/var/sota/gateway.url`. If you're using HERE OTA Connect, you can find the URL in `autoprov.url` file in your credentials archive. -** put root CA certificate (for the *server*, not for the *device*) to `/var/sota/import/root.crt`. +** put URL to the server backend (together with protocol prefix and port number) at `/var/sota/gateway.url`. If you're using HERE OTA Connect, you can find the URL in the `autoprov.url` file in your credentials archive. +** put root CA certificate (for the *server*, not for the *device*) at `/var/sota/import/root.crt`. ** put client certificate and private key to slots 1 and 2 of the PKCS#11-compatible device. -- cgit v1.2.3-54-g00ecf From 7a88d57acdcc9df79a9b3ec5bec1fd9d1a2321f9 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Thu, 25 Oct 2018 13:49:59 +0200 Subject: Update aktualizr example secondary config path --- recipes-sota/aktualizr/aktualizr_git.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index 0cf3895..ae6646c 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -26,7 +26,7 @@ SRC_URI = " \ file://aktualizr-secondary.socket \ file://aktualizr-serialcan.service \ " -SRCREV = "6b0114e4fad0619d16ed2063e8ff10e3fb8500f2" +SRCREV = "ad771bc77a8ec28f94a7da11d7d9a70f555e1ba5" BRANCH ?= "master" S = "${WORKDIR}/git" @@ -58,7 +58,7 @@ EXTRA_OECMAKE_append_class-native = " -DBUILD_SOTA_TOOLS=ON \ do_install_append () { rm -fr ${D}${libdir}/systemd - rm -f ${D}${libdir}/sota/sota.toml # Only needed for the Debian package + rm -f ${D}${libdir}/sota/conf.d/sota.toml # Only needed for the Debian package install -d ${D}${libdir}/sota install -m 0644 ${S}/config/sota_autoprov.toml ${D}/${libdir}/sota/sota_autoprov.toml install -m 0644 ${S}/config/sota_autoprov_primary.toml ${D}/${libdir}/sota/sota_autoprov_primary.toml @@ -96,7 +96,7 @@ FILES_${PN} = " \ " FILES_${PN}-examples = " \ - ${libdir}/sota/demo_secondary.json \ + ${libdir}/sota/secondaries/demo_secondary.json \ ${bindir}/hmi_stub \ " -- cgit v1.2.3-54-g00ecf From 1cd8dcc9890a3967cbbb0591ed7b2e8c4f5732a7 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Thu, 25 Oct 2018 16:47:02 +0200 Subject: Remove aktualizr hacks related to ubuntu support --- recipes-sota/aktualizr/aktualizr_git.bb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index ae6646c..9d3c6d8 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -26,7 +26,8 @@ SRC_URI = " \ file://aktualizr-secondary.socket \ file://aktualizr-serialcan.service \ " -SRCREV = "ad771bc77a8ec28f94a7da11d7d9a70f555e1ba5" + +SRCREV = "39acfec48d1cb91e7621c818ac177f6d3c73fecc" BRANCH ?= "master" S = "${WORKDIR}/git" @@ -57,8 +58,6 @@ EXTRA_OECMAKE_append_class-native = " -DBUILD_SOTA_TOOLS=ON \ -DGARAGE_SIGN_SHA256=${GARAGE_SIGN_SHA256}" do_install_append () { - rm -fr ${D}${libdir}/systemd - rm -f ${D}${libdir}/sota/conf.d/sota.toml # Only needed for the Debian package install -d ${D}${libdir}/sota install -m 0644 ${S}/config/sota_autoprov.toml ${D}/${libdir}/sota/sota_autoprov.toml install -m 0644 ${S}/config/sota_autoprov_primary.toml ${D}/${libdir}/sota/sota_autoprov_primary.toml @@ -96,7 +95,6 @@ FILES_${PN} = " \ " FILES_${PN}-examples = " \ - ${libdir}/sota/secondaries/demo_secondary.json \ ${bindir}/hmi_stub \ " -- cgit v1.2.3-54-g00ecf From 5615b0a72848ae704d277880e3e89040aec54062 Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Mon, 29 Oct 2018 11:59:13 +0100 Subject: aktualizr: Remove implicit_writer. It is now unused. Bump to the latest version as well. --- lib/oeqa/selftest/cases/updater.py | 4 +--- recipes-sota/aktualizr/aktualizr_git.bb | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/oeqa/selftest/cases/updater.py b/lib/oeqa/selftest/cases/updater.py index 7d1f36e..3c17b8a 100644 --- a/lib/oeqa/selftest/cases/updater.py +++ b/lib/oeqa/selftest/cases/updater.py @@ -102,9 +102,6 @@ class AktualizrToolsTests(OESelftestTestCase): logger.info('Running bitbake to build aktualizr-native tools') bitbake('aktualizr-native') - def test_implicit_writer_help(self): - akt_native_run(self, 'aktualizr_implicit_writer --help') - def test_cert_provider_help(self): akt_native_run(self, 'aktualizr_cert_provider --help') @@ -228,6 +225,7 @@ class ManualControlTests(OESelftestTestCase): self.assertIn(b'Fetched metadata: yes', stdout, 'Aktualizr should have run' + stderr.decode() + stdout.decode()) + class RpiTests(OESelftestTestCase): def setUpLocal(self): diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index 9d3c6d8..9823943 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb @@ -27,7 +27,7 @@ SRC_URI = " \ file://aktualizr-serialcan.service \ " -SRCREV = "39acfec48d1cb91e7621c818ac177f6d3c73fecc" +SRCREV = "3c1c77c005fc1f872f1e12080528ed6f8a32bbf3" BRANCH ?= "master" S = "${WORKDIR}/git" @@ -101,7 +101,6 @@ FILES_${PN}-examples = " \ FILES_${PN}-host-tools = " \ ${bindir}/aktualizr-repo \ ${bindir}/aktualizr_cert_provider \ - ${bindir}/aktualizr_implicit_writer \ ${bindir}/garage-deploy \ ${bindir}/garage-push \ ${libdir}/sota/sota_autoprov.toml \ -- cgit v1.2.3-54-g00ecf From f7c8b67ecf9b4983b380d107de98113f2af4d0cf Mon Sep 17 00:00:00 2001 From: Patrick Vacek Date: Tue, 30 Oct 2018 11:48:49 +0100 Subject: Fix typos. --- CONTRIBUTING.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 73fc3c3..3d0f14d 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -6,7 +6,7 @@ If you are developing with meta-updater, it may be helpful to read the README an == Contributor checklist -* OTA-enabled build succeeds at least for one platform, the resulted image boots, and an update can be installed. This check is absolutely necessary for every pull request unless it only touches documentation. +* OTA-enabled build succeeds for at least one platform, the resulting image boots, and an update can be installed. This check is absolutely necessary for every pull request unless it only touches documentation. * If your change touches platform code (like `classes/sota_.bbclass`), please check building and updating on this particular platform. * oe-selftest succeeds. To test meta-updater, run `oe-selftest -r updater` from a build directory with `MACHINE` set to `qemux86-64`. * Updates are forwards- and backwards-compatible. You should be able to update an OTA-enabled build before the change is applied to the version with change applied and vice versa. One should pay double attention to the compatibility when bootloader code is affected. -- cgit v1.2.3-54-g00ecf