diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2020-04-28 18:54:39 +0000 |
---|---|---|
committer | Laurent Bonnans <laurent.bonnans@here.com> | 2020-06-02 12:04:05 +0200 |
commit | e12cf4e7ff4a36aced4ce75f1c2b47dd85417cf7 (patch) | |
tree | 2712bf87e7999e85fab82b3edeae608700dfdc29 /classes | |
parent | 8d300f28c5e5d69022aee31c24bee36426b45f7d (diff) | |
download | meta-updater-e12cf4e7ff4a36aced4ce75f1c2b47dd85417cf7.tar.gz |
image_types_ota: use named reference
Use named reference when deploying the device tree. This makes sure that
this reference will end up in the deployments .origin file, which will
be visible by the user in ostree admin status. This reference will also
be used when running ostree admin upgrade. This is not really required
when using aktualizr, but can be useful during test/debugging when using
pure OSTree updates. Make sure to make ${OSTREE_REPO} accessible via
http and add a remote on the device called ${OSTREE_OSNAME} pointing to
the http exposed archive OSTree. With that ostree admin upgrade should
work.
Note: We could use the name reference in ostree pull-local already, but
this is potentially racy if multiple builds are committing to the same
branch. Use the OSTree commit hash to get the actual commit and recreate
a local reference to this commit. This makes absolutely sure that we use
the same OSTree commit this bitbake execution committed during the
do_image_ostreecommit task.
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Diffstat (limited to 'classes')
-rw-r--r-- | classes/image_types_ota.bbclass | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index 56c7794..a8a19b5 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass | |||
@@ -66,13 +66,23 @@ IMAGE_CMD_ota () { | |||
66 | 66 | ||
67 | ostree_target_hash=$(cat ${WORKDIR}/ostree_manifest) | 67 | ostree_target_hash=$(cat ${WORKDIR}/ostree_manifest) |
68 | 68 | ||
69 | # Use OSTree hash to avoid any potential race conditions between | ||
70 | # multiple builds accessing the same ${OSTREE_REPO}. | ||
69 | ostree --repo=${OTA_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash} | 71 | ostree --repo=${OTA_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash} |
70 | kargs_list="" | 72 | kargs_list="" |
71 | for arg in ${OSTREE_KERNEL_ARGS}; do | 73 | for arg in ${OSTREE_KERNEL_ARGS}; do |
72 | kargs_list="${kargs_list} --karg-append=$arg" | 74 | kargs_list="${kargs_list} --karg-append=$arg" |
73 | done | 75 | done |
74 | 76 | ||
75 | ostree admin --sysroot=${OTA_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${ostree_target_hash} | 77 | # Create the same reference on the device we use in the archive OSTree |
78 | # repo in ${OSTREE_REPO}. This reference will show up when showing the | ||
79 | # deployment on the device: | ||
80 | # ostree admin status | ||
81 | # If a remote with the name ${OSTREE_OSNAME} is configured, this also | ||
82 | # will allow to use: | ||
83 | # ostree admin upgrade | ||
84 | ostree --repo=${OTA_SYSROOT}/ostree/repo refs --create=${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} ${ostree_target_hash} | ||
85 | ostree admin --sysroot=${OTA_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} | ||
76 | 86 | ||
77 | cp -a ${IMAGE_ROOTFS}/var/sota ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true | 87 | cp -a ${IMAGE_ROOTFS}/var/sota ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true |
78 | # Create /var/sota if it doesn't exist yet | 88 | # Create /var/sota if it doesn't exist yet |