summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Vacek <patrickvacek@gmail.com>2018-11-05 10:58:00 +0100
committerGitHub <noreply@github.com>2018-11-05 10:58:00 +0100
commitaad99c3f0c2a6d4ce0252946112022a271c8c76d (patch)
tree60a78aeb5b933eb733133c9b9458a4cce520c1b7
parent1a3336314a0efe0609461010b6ea68f5f6e61173 (diff)
parent718230f01c87c719c16c9ebd9ae6cd943cb15a12 (diff)
downloadmeta-updater-aad99c3f0c2a6d4ce0252946112022a271c8c76d.tar.gz
Merge pull request #416 from advancedtelematic/feat/OTA-627/sumo/targetversion-forwardport
Feat/ota 627/sumo/targetversion forwardport
-rw-r--r--README.adoc10
-rw-r--r--classes/image_types_ostree.bbclass6
-rw-r--r--classes/image_types_ota.bbclass2
-rw-r--r--classes/target_version_example.bbclass10
4 files changed, 27 insertions, 1 deletions
diff --git a/README.adoc b/README.adoc
index 2485801..5002377 100644
--- a/README.adoc
+++ b/README.adoc
@@ -170,6 +170,16 @@ There are a few settings that can be controlled in `local.conf` to simplify the
170| `TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake "` | Use with `bitbake -c populate_sdk core-image-minimal` to build an SDK. See the https://github.com/advancedtelematic/aktualizr#developing-against-an-openembedded-system[aktualizr repo] for more information. 170| `TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake "` | Use with `bitbake -c populate_sdk core-image-minimal` to build an SDK. See the https://github.com/advancedtelematic/aktualizr#developing-against-an-openembedded-system[aktualizr repo] for more information.
171|====================== 171|======================
172 172
173=== Overriding target version
174*Warning: overriding target version is a dangerous operation, make sure you understand this section completely before doing it.*
175
176Every time you build an image with `SOTA_PACKED_CREDENTIALS` set, a new entry in your Uptane metadata is created and you can see it in the OTA Garage UI if you're using one. Normally this version will be equal to OSTree hash of your root file system. If you want it to be different though you can override is using one of two methods:
177
1781. Set `GARAGE_TARGET_VERSION` variable in your `local.conf`.
1792. Write a recipe or a bbclass to write the desired version to `${STAGING_DATADIR_NATIVE}/target_version`. An example of such bbclass can be found in `classes/target_version_example.bbclass`.
180
181Please note that [target name, target version] pairs are expected to be unique in the system. If you build a new target with the same target version as a previously built one, the old package will be overwritten on the update server. It can have unpredictable effect on devices that have this version installed, and it is not guaranteed that information will be reported correctly for such devices or that you will be able to update them (we're doing our best though). The easiest way to avoid problems is to make sure that your overriding version is as unique as an OSTree commit hash.
182
173== QA with oe-selftest 183== QA with oe-selftest
174 184
175This layer relies on the test framework oe-selftest for quality assurance. Follow the steps below to run the tests: 185This layer relies on the test framework oe-selftest for quality assurance. Follow the steps below to run the tests:
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index b2eb61d..819cc6d 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -193,7 +193,7 @@ IMAGE_CMD_ostreepush () {
193} 193}
194 194
195IMAGE_TYPEDEP_garagesign = "ostreepush" 195IMAGE_TYPEDEP_garagesign = "ostreepush"
196do_image_garage_sign[depends] += "aktualizr-native:do_populate_sysroot" 196do_image_garagesign[depends] += "aktualizr-native:do_populate_sysroot"
197IMAGE_CMD_garagesign () { 197IMAGE_CMD_garagesign () {
198 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 198 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
199 # if credentials are issued by a server that doesn't support offline signing, exit silently 199 # if credentials are issued by a server that doesn't support offline signing, exit silently
@@ -219,6 +219,10 @@ IMAGE_CMD_garagesign () {
219 target_version=${ostree_target_hash} 219 target_version=${ostree_target_hash}
220 if [ -n "${GARAGE_TARGET_VERSION}" ]; then 220 if [ -n "${GARAGE_TARGET_VERSION}" ]; then
221 target_version=${GARAGE_TARGET_VERSION} 221 target_version=${GARAGE_TARGET_VERSION}
222 bbwarn "Target version is overriden with GARAGE_TARGET_VERSION variable. It is a dangerous operation, make sure you've read the respective secion in meta-updater/README.adoc"
223 elif [ -e "${STAGING_DATADIR_NATIVE}/target_version" ]; then
224 target_version=$(cat "${STAGING_DATADIR_NATIVE}/target_version")
225 bbwarn "Target version is overriden with target_version file. It is a dangerous operation, make sure you've read the respective secion in meta-updater/README.adoc"
222 fi 226 fi
223 227
224 # Push may fail due to race condition when multiple build machines try to push simultaneously 228 # Push may fail due to race condition when multiple build machines try to push simultaneously
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index 4a51f24..df3bc7c 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -111,6 +111,8 @@ IMAGE_CMD_otaimg () {
111 target_version=${ostree_target_hash} 111 target_version=${ostree_target_hash}
112 if [ -n "${GARAGE_TARGET_VERSION}" ]; then 112 if [ -n "${GARAGE_TARGET_VERSION}" ]; then
113 target_version=${GARAGE_TARGET_VERSION} 113 target_version=${GARAGE_TARGET_VERSION}
114 elif [ -e "${STAGING_DATADIR_NATIVE}/target_version" ]; then
115 target_version=$(cat "${STAGING_DATADIR_NATIVE}/target_version")
114 fi 116 fi
115 mkdir -p ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import 117 mkdir -p ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import
116 echo "{\"${ostree_target_hash}\":\"${GARAGE_TARGET_NAME}-${target_version}\"}" > ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import/installed_versions 118 echo "{\"${ostree_target_hash}\":\"${GARAGE_TARGET_NAME}-${target_version}\"}" > ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import/installed_versions
diff --git a/classes/target_version_example.bbclass b/classes/target_version_example.bbclass
new file mode 100644
index 0000000..ef119fb
--- /dev/null
+++ b/classes/target_version_example.bbclass
@@ -0,0 +1,10 @@
1# Writes target version to be used by garage-sign
2
3HOSTTOOLS += " git "
4
5deploy_target_version () {
6 version=$(git --git-dir=${METADIR}/.repo/manifests/.git/ rev-parse HEAD)
7 echo -n ${version} > ${STAGING_DATADIR_NATIVE}/target_version
8}
9
10IMAGE_PREPROCESS_COMMAND += "deploy_target_version;"