summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Vacek <patrickvacek@gmail.com>2019-02-27 13:52:05 +0100
committerGitHub <noreply@github.com>2019-02-27 13:52:05 +0100
commit2d2e46834af68b1c22ad0a022001c117caa4929c (patch)
tree32941919c71e6adde1ef9f477c703d80b5983d3b
parente9c373dba1e249085de4c9068521a83653fa5d77 (diff)
parentd1e4c55f7b3a677d47755c267fa760d76c3994e4 (diff)
downloadmeta-updater-2d2e46834af68b1c22ad0a022001c117caa4929c.tar.gz
Merge pull request #497 from advancedtelematic/backport/thud/auto-reboot-etc
Backport/thud/auto reboot etc
-rw-r--r--README.adoc1
-rw-r--r--classes/image_types_ostree.bbclass12
-rw-r--r--classes/image_types_ota.bbclass2
-rw-r--r--conf/include/bblayers/sota_am335x-evm.inc3
-rw-r--r--conf/include/bblayers/sota_intel-corei7-64.inc4
-rw-r--r--conf/include/bblayers/sota_m3ulcb.inc5
-rw-r--r--conf/include/bblayers/sota_porter.inc6
-rw-r--r--conf/include/bblayers/sota_qemux86-64.inc2
-rw-r--r--conf/include/bblayers/sota_raspberrypi2.inc6
-rw-r--r--conf/include/bblayers/sota_raspberrypi3.inc6
-rw-r--r--lib/oeqa/selftest/cases/updater.py29
-rw-r--r--recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb7
-rwxr-xr-xrecipes-sota/aktualizr/aktualizr_git.bb2
-rw-r--r--recipes-sota/config/aktualizr-auto-reboot.bb21
-rw-r--r--recipes-sota/config/files/35-enable-auto-reboot.toml2
15 files changed, 59 insertions, 49 deletions
diff --git a/README.adoc b/README.adoc
index 27ecabf..d603ade 100644
--- a/README.adoc
+++ b/README.adoc
@@ -151,6 +151,7 @@ First, you can set `SOTA_CLIENT_PROV` to control which provisioning recipe is us
151 151
152Second, you can write recipes to install additional config files with customized options. A few recipes already exist to address common needs and provide an example: 152Second, you can write recipes to install additional config files with customized options. A few recipes already exist to address common needs and provide an example:
153 153
154* link:recipes-sota/config/aktualizr-auto-reboot.bb[aktualizr-auto-reboot.bb] configures aktualizr to automatically reboot after new updates are installed in order to apply the updates immediately. This is only relevant for package managers (such as OSTree) that require a reboot to complete the installation process. If this is not enabled, you will need to reboot the system through other means.
154* link:recipes-sota/config/aktualizr-disable-send-ip.bb[aktualizr-disable-send-ip.bb] disables the reporting of networking information to the server. This is enabled by default and supported by https://connect.ota.here.com/[HERE OTA Connect]. However, if you are using a different server that does not support this feature, you may want to disable it in aktualizr. 155* link:recipes-sota/config/aktualizr-disable-send-ip.bb[aktualizr-disable-send-ip.bb] disables the reporting of networking information to the server. This is enabled by default and supported by https://connect.ota.here.com/[HERE OTA Connect]. However, if you are using a different server that does not support this feature, you may want to disable it in aktualizr.
155* link:recipes-sota/config/aktualizr-log-debug.bb[aktualizr-log-debug.bb] sets the log level of aktualizr to 0 (trace). The default is 2 (info). This recipe is intended for development and debugging purposes. 156* link:recipes-sota/config/aktualizr-log-debug.bb[aktualizr-log-debug.bb] sets the log level of aktualizr to 0 (trace). The default is 2 (info). This recipe is intended for development and debugging purposes.
156 157
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 29da78e..41327e1 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -148,6 +148,13 @@ IMAGE_CMD_ostreecommit () {
148 if [ "${OSTREE_UPDATE_SUMMARY}" = "1" ]; then 148 if [ "${OSTREE_UPDATE_SUMMARY}" = "1" ]; then
149 ostree --repo=${OSTREE_REPO} summary -u 149 ostree --repo=${OSTREE_REPO} summary -u
150 fi 150 fi
151
152 # To enable simultaneous bitbaking of two images with the same branch name,
153 # create a new ref in the repo using the basename of the image. (This first
154 # requires deleting it if it already exists.) Fixes OTA-2211.
155 ostree --repo=${OSTREE_REPO} refs --delete ${OSTREE_BRANCHNAME}-${IMAGE_BASENAME}
156 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME})
157 ostree --repo=${OSTREE_REPO} refs --create=${OSTREE_BRANCHNAME}-${IMAGE_BASENAME} ${ostree_target_hash}
151} 158}
152 159
153IMAGE_TYPEDEP_ostreepush = "ostreecommit" 160IMAGE_TYPEDEP_ostreepush = "ostreecommit"
@@ -190,7 +197,7 @@ IMAGE_CMD_garagesign () {
190 --home-dir ${GARAGE_SIGN_REPO} \ 197 --home-dir ${GARAGE_SIGN_REPO} \
191 --credentials ${SOTA_PACKED_CREDENTIALS} 198 --credentials ${SOTA_PACKED_CREDENTIALS}
192 199
193 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}) 200 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
194 201
195 # Use OSTree target hash as version if none was provided by the user 202 # Use OSTree target hash as version if none was provided by the user
196 target_version=${ostree_target_hash} 203 target_version=${ostree_target_hash}
@@ -243,7 +250,8 @@ IMAGE_CMD_garagecheck () {
243 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 250 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
244 # if credentials are issued by a server that doesn't support offline signing, exit silently 251 # if credentials are issued by a server that doesn't support offline signing, exit silently
245 unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec tufrepo.url 2>&1 >/dev/null || exit 0 252 unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec tufrepo.url 2>&1 >/dev/null || exit 0
246 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}) 253
254 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
247 255
248 garage-check --ref=${ostree_target_hash} \ 256 garage-check --ref=${ostree_target_hash} \
249 --credentials=${SOTA_PACKED_CREDENTIALS} \ 257 --credentials=${SOTA_PACKED_CREDENTIALS} \
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index a31cbd1..12375ec 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -59,7 +59,7 @@ IMAGE_CMD_ota () {
59 bbfatal "Invalid bootloader: ${OSTREE_BOOTLOADER}" 59 bbfatal "Invalid bootloader: ${OSTREE_BOOTLOADER}"
60 fi 60 fi
61 61
62 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}) 62 ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
63 63
64 ostree --repo=${OTA_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash} 64 ostree --repo=${OTA_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash}
65 kargs_list="" 65 kargs_list=""
diff --git a/conf/include/bblayers/sota_am335x-evm.inc b/conf/include/bblayers/sota_am335x-evm.inc
index f2d485d..909a7a4 100644
--- a/conf/include/bblayers/sota_am335x-evm.inc
+++ b/conf/include/bblayers/sota_am335x-evm.inc
@@ -1,2 +1 @@
1 BBLAYERS += "${METADIR}/meta-ti"
2BBLAYERS += " ${METADIR}/meta-ti "
diff --git a/conf/include/bblayers/sota_intel-corei7-64.inc b/conf/include/bblayers/sota_intel-corei7-64.inc
index 1771e6c..8e85a6c 100644
--- a/conf/include/bblayers/sota_intel-corei7-64.inc
+++ b/conf/include/bblayers/sota_intel-corei7-64.inc
@@ -1,2 +1,2 @@
1 1BBLAYERS += "${METADIR}/meta-updater-minnowboard"
2BBLAYERS += " ${METADIR}/meta-updater-minnowboard ${METADIR}/meta-intel " 2BBLAYERS += "${METADIR}/meta-intel"
diff --git a/conf/include/bblayers/sota_m3ulcb.inc b/conf/include/bblayers/sota_m3ulcb.inc
index 04f78e4..4f2e0a9 100644
--- a/conf/include/bblayers/sota_m3ulcb.inc
+++ b/conf/include/bblayers/sota_m3ulcb.inc
@@ -1,2 +1,3 @@
1 1BBLAYERS += "${METADIR}/meta-renesas"
2BBLAYERS += " ${METADIR}/meta-renesas ${METADIR}/meta-renesas-rcar-gen3 ${METADIR}/meta-openembedded/meta-multimedia" 2BBLAYERS += "${METADIR}/meta-renesas-rcar-gen3"
3BBLAYERS += "${METADIR}/meta-openembedded/meta-multimedia"
diff --git a/conf/include/bblayers/sota_porter.inc b/conf/include/bblayers/sota_porter.inc
index 6964ef0..a50b71c 100644
--- a/conf/include/bblayers/sota_porter.inc
+++ b/conf/include/bblayers/sota_porter.inc
@@ -1,2 +1,4 @@
1 1BBLAYERS += "${METADIR}/meta-renesas"
2BBLAYERS += " ${METADIR}/meta-renesas ${METADIR}/meta-renesas/meta-rcar-gen2 ${METADIR}/meta-openembedded/meta-multimedia ${METADIR}/meta-updater-porter" 2BBLAYERS += "${METADIR}/meta-renesas/meta-rcar-gen2"
3BBLAYERS += "${METADIR}/meta-openembedded/meta-multimedia"
4BBLAYERS += "${METADIR}/meta-updater-porter"
diff --git a/conf/include/bblayers/sota_qemux86-64.inc b/conf/include/bblayers/sota_qemux86-64.inc
index 12d32ff..9ccbfa6 100644
--- a/conf/include/bblayers/sota_qemux86-64.inc
+++ b/conf/include/bblayers/sota_qemux86-64.inc
@@ -1 +1 @@
BBLAYERS += " ${METADIR}/meta-updater-qemux86-64 " BBLAYERS += "${METADIR}/meta-updater-qemux86-64"
diff --git a/conf/include/bblayers/sota_raspberrypi2.inc b/conf/include/bblayers/sota_raspberrypi2.inc
index cc26679..03f8f44 100644
--- a/conf/include/bblayers/sota_raspberrypi2.inc
+++ b/conf/include/bblayers/sota_raspberrypi2.inc
@@ -1,3 +1,3 @@
1BBLAYERS += " ${METADIR}/meta-openembedded/meta-python " 1BBLAYERS += "${METADIR}/meta-openembedded/meta-python"
2 2BBLAYERS += "${METADIR}/meta-updater-raspberrypi"
3BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " 3BBLAYERS += "${METADIR}/meta-raspberrypi"
diff --git a/conf/include/bblayers/sota_raspberrypi3.inc b/conf/include/bblayers/sota_raspberrypi3.inc
index cc26679..03f8f44 100644
--- a/conf/include/bblayers/sota_raspberrypi3.inc
+++ b/conf/include/bblayers/sota_raspberrypi3.inc
@@ -1,3 +1,3 @@
1BBLAYERS += " ${METADIR}/meta-openembedded/meta-python " 1BBLAYERS += "${METADIR}/meta-openembedded/meta-python"
2 2BBLAYERS += "${METADIR}/meta-updater-raspberrypi"
3BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " 3BBLAYERS += "${METADIR}/meta-raspberrypi"
diff --git a/lib/oeqa/selftest/cases/updater.py b/lib/oeqa/selftest/cases/updater.py
index 08521d5..550d9de 100644
--- a/lib/oeqa/selftest/cases/updater.py
+++ b/lib/oeqa/selftest/cases/updater.py
@@ -67,35 +67,6 @@ class GeneralTests(OESelftestTestCase):
67 self.assertEqual(result.status, 0, 67 self.assertEqual(result.status, 0,
68 "Java not found. Do you have a JDK installed on your host machine?") 68 "Java not found. Do you have a JDK installed on your host machine?")
69 69
70 def test_add_package(self):
71 deploydir = get_bb_var('DEPLOY_DIR_IMAGE')
72 imagename = get_bb_var('IMAGE_LINK_NAME', 'core-image-minimal')
73 image_path = deploydir + '/' + imagename + '.ota-ext4'
74 logger = logging.getLogger("selftest")
75
76 logger.info('Running bitbake with man in the image package list')
77 self.append_config('IMAGE_INSTALL_append = " man "')
78 bitbake('-c cleanall man-db')
79 bitbake('core-image-minimal')
80 result = runCmd('oe-pkgdata-util find-path /usr/bin/man')
81 self.assertEqual(result.output, 'man-db: /usr/bin/man')
82 path1 = os.path.realpath(image_path)
83 size1 = os.path.getsize(path1)
84 logger.info('First image %s has size %i' % (path1, size1))
85
86 logger.info('Running bitbake without man in the image package list')
87 self.append_config('IMAGE_INSTALL_remove = " man "')
88 bitbake('-c cleanall man-db')
89 bitbake('core-image-minimal')
90 result = runCmd('oe-pkgdata-util find-path /usr/bin/man', ignore_status=True)
91 self.assertEqual(result.status, 1, "Status different than 1. output: %s" % result.output)
92 self.assertEqual(result.output, 'ERROR: Unable to find any package producing path /usr/bin/man')
93 path2 = os.path.realpath(image_path)
94 size2 = os.path.getsize(path2)
95 logger.info('Second image %s has size %i', path2, size2)
96 self.assertNotEqual(path1, path2, "Image paths are identical; image was not rebuilt.")
97 self.assertNotEqual(size1, size2, "Image sizes are identical; image was not rebuilt.")
98
99 70
100class AktualizrToolsTests(OESelftestTestCase): 71class AktualizrToolsTests(OESelftestTestCase):
101 72
diff --git a/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb b/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb
index 34460af..0628a61 100644
--- a/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb
+++ b/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb
@@ -11,9 +11,14 @@ require credentials.inc
11do_install() { 11do_install() {
12 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 12 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
13 install -m 0700 -d ${D}${localstatedir}/sota 13 install -m 0700 -d ${D}${localstatedir}/sota
14 cp ${SOTA_PACKED_CREDENTIALS} ${D}${localstatedir}/sota/sota_provisioning_credentials.zip 14 cp "${SOTA_PACKED_CREDENTIALS}" ${D}${localstatedir}/sota/sota_provisioning_credentials.zip
15 # Device should not be able to push data to treehub 15 # Device should not be able to push data to treehub
16 zip -d ${D}${localstatedir}/sota/sota_provisioning_credentials.zip treehub.json 16 zip -d ${D}${localstatedir}/sota/sota_provisioning_credentials.zip treehub.json
17 # Device has no use for the API Gateway. Remove if present. See:
18 # https://github.com/advancedtelematic/ota-plus-server/pull/1913/
19 if unzip -l ${D}${localstatedir}/sota/sota_provisioning_credentials.zip api_gateway.url > /dev/null; then
20 zip -d ${D}${localstatedir}/sota/sota_provisioning_credentials.zip api_gateway.url
21 fi
17 fi 22 fi
18} 23}
19 24
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb
index 3b48e58..a8f40d6 100755
--- a/recipes-sota/aktualizr/aktualizr_git.bb
+++ b/recipes-sota/aktualizr/aktualizr_git.bb
@@ -23,7 +23,7 @@ SRC_URI = " \
23 file://aktualizr-serialcan.service \ 23 file://aktualizr-serialcan.service \
24 " 24 "
25 25
26SRCREV = "2aa9d93ccea09ec327789eecf858de561ef632da" 26SRCREV = "c71ec0a320d85a3e75ba37bff7dc40ad02e9d655"
27BRANCH ?= "master" 27BRANCH ?= "master"
28 28
29S = "${WORKDIR}/git" 29S = "${WORKDIR}/git"
diff --git a/recipes-sota/config/aktualizr-auto-reboot.bb b/recipes-sota/config/aktualizr-auto-reboot.bb
new file mode 100644
index 0000000..ad4d17c
--- /dev/null
+++ b/recipes-sota/config/aktualizr-auto-reboot.bb
@@ -0,0 +1,21 @@
1SUMMARY = "Enable auto reboot to apply updates"
2DESCRIPTION = "Configures aktualizr to automatically reboot after new updates are installed in order to apply the updates immediately"
3HOMEPAGE = "https://github.com/advancedtelematic/aktualizr"
4SECTION = "base"
5LICENSE = "MPL-2.0"
6LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad"
7
8SRC_URI = " \
9 file://35-enable-auto-reboot.toml \
10 "
11
12do_install_append () {
13 install -m 0700 -d ${D}${libdir}/sota/conf.d
14 install -m 0644 ${WORKDIR}/35-enable-auto-reboot.toml ${D}${libdir}/sota/conf.d/35-enable-auto-reboot.toml
15}
16
17FILES_${PN} = " \
18 ${libdir}/sota/conf.d/35-enable-auto-reboot.toml \
19 "
20
21# vim:set ts=4 sw=4 sts=4 expandtab:
diff --git a/recipes-sota/config/files/35-enable-auto-reboot.toml b/recipes-sota/config/files/35-enable-auto-reboot.toml
new file mode 100644
index 0000000..f83810e
--- /dev/null
+++ b/recipes-sota/config/files/35-enable-auto-reboot.toml
@@ -0,0 +1,2 @@
1[uptane]
2force_install_completion = true