diff options
29 files changed, 184 insertions, 393 deletions
diff --git a/README.adoc b/README.adoc index fbd3239..403e0f8 100644 --- a/README.adoc +++ b/README.adoc | |||
@@ -44,6 +44,16 @@ and get as a result an "ostree_repo" folder in your images directory (tmp/deploy | |||
44 | 44 | ||
45 | Although aglsetup.sh hooks provide reasonable defaults for SOTA-related variables, you may want to tune some of them. | 45 | Although aglsetup.sh hooks provide reasonable defaults for SOTA-related variables, you may want to tune some of them. |
46 | 46 | ||
47 | === Build problems | ||
48 | |||
49 | Multilib systems may require adding this line to `local.conf`: | ||
50 | |||
51 | .... | ||
52 | HOSTTOOLS += "x86_64-linux-gnu-gcc" | ||
53 | .... | ||
54 | |||
55 | Ubuntu users that encounter an error due to missing `Python.h` should install `libpython2.7-dev` on their host machine. | ||
56 | |||
47 | == Supported boards | 57 | == Supported boards |
48 | 58 | ||
49 | Currently supported platforms are | 59 | Currently supported platforms are |
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass index dcc376d..5ebed81 100644 --- a/classes/image_types_ostree.bbclass +++ b/classes/image_types_ostree.bbclass | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | inherit image | 3 | inherit image |
4 | 4 | ||
5 | IMAGE_DEPENDS_ostree = "ostree-native:do_populate_sysroot \ | 5 | do_image_ostree[depends] += "ostree-native:do_populate_sysroot \ |
6 | openssl-native:do_populate_sysroot \ | 6 | openssl-native:do_populate_sysroot \ |
7 | coreutils-native:do_populate_sysroot \ | 7 | coreutils-native:do_populate_sysroot \ |
8 | unzip-native:do_populate_sysroot \ | 8 | unzip-native:do_populate_sysroot \ |
@@ -164,7 +164,7 @@ IMAGE_CMD_ostree () { | |||
164 | } | 164 | } |
165 | 165 | ||
166 | IMAGE_TYPEDEP_ostreepush = "ostree" | 166 | IMAGE_TYPEDEP_ostreepush = "ostree" |
167 | IMAGE_DEPENDS_ostreepush = "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot " | 167 | do_image_ostreepush[depends] += "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot" |
168 | IMAGE_CMD_ostreepush () { | 168 | IMAGE_CMD_ostreepush () { |
169 | # Print warnings if credetials are not set or if the file has not been found. | 169 | # Print warnings if credetials are not set or if the file has not been found. |
170 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then | 170 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then |
@@ -182,7 +182,7 @@ IMAGE_CMD_ostreepush () { | |||
182 | } | 182 | } |
183 | 183 | ||
184 | IMAGE_TYPEDEP_garagesign = "ostreepush" | 184 | IMAGE_TYPEDEP_garagesign = "ostreepush" |
185 | IMAGE_DEPENDS_garagesign = "aktualizr-native:do_populate_sysroot" | 185 | do_image_garage_sign[depends] += "aktualizr-native:do_populate_sysroot" |
186 | IMAGE_CMD_garagesign () { | 186 | IMAGE_CMD_garagesign () { |
187 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then | 187 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then |
188 | # if credentials are issued by a server that doesn't support offline signing, exit silently | 188 | # if credentials are issued by a server that doesn't support offline signing, exit silently |
@@ -227,7 +227,7 @@ IMAGE_CMD_garagesign () { | |||
227 | } | 227 | } |
228 | 228 | ||
229 | IMAGE_TYPEDEP_garagecheck = "ostreepush garagesign" | 229 | IMAGE_TYPEDEP_garagecheck = "ostreepush garagesign" |
230 | IMAGE_DEPENDS_garagecheck = "aktualizr-native:do_populate_sysroot" | 230 | do_image_garagecheck[depends] += "aktualizr-native:do_populate_sysroot" |
231 | IMAGE_CMD_garagecheck () { | 231 | IMAGE_CMD_garagecheck () { |
232 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then | 232 | if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then |
233 | # if credentials are issued by a server that doesn't support offline signing, exit silently | 233 | # if credentials are issued by a server that doesn't support offline signing, exit silently |
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index be9a017..e753e0e 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass | |||
@@ -11,7 +11,7 @@ inherit image | |||
11 | 11 | ||
12 | OSTREE_BOOTLOADER ??= 'u-boot' | 12 | OSTREE_BOOTLOADER ??= 'u-boot' |
13 | 13 | ||
14 | IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot \ | 14 | do_image_otaimg[depends] += "e2fsprogs-native:do_populate_sysroot \ |
15 | ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \ | 15 | ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \ |
16 | ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}" | 16 | ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}" |
17 | 17 | ||
diff --git a/classes/sota_qemux86-64.bbclass b/classes/sota_qemux86-64.bbclass index 53e0026..666ad6b 100644 --- a/classes/sota_qemux86-64.bbclass +++ b/classes/sota_qemux86-64.bbclass | |||
@@ -4,7 +4,7 @@ PREFERRED_VERSION_linux-yocto_qemux86-64_sota = "4.4%" | |||
4 | IMAGE_FSTYPES_remove = "wic" | 4 | IMAGE_FSTYPES_remove = "wic" |
5 | 5 | ||
6 | # U-Boot support for SOTA | 6 | # U-Boot support for SOTA |
7 | PREFERRED_PROVIDER_virtual/bootloader_sota = "u-boot-ota" | 7 | PREFERRED_PROVIDER_virtual/bootloader_sota = "u-boot" |
8 | UBOOT_MACHINE_sota = "qemu-x86_defconfig" | 8 | UBOOT_MACHINE_sota = "qemu-x86_defconfig" |
9 | OSTREE_BOOTLOADER ?= "u-boot" | 9 | OSTREE_BOOTLOADER ?= "u-boot" |
10 | 10 | ||
diff --git a/classes/sota_raspberrypi.bbclass b/classes/sota_raspberrypi.bbclass index f8e7347..2c69ea0 100644 --- a/classes/sota_raspberrypi.bbclass +++ b/classes/sota_raspberrypi.bbclass | |||
@@ -1,3 +1,4 @@ | |||
1 | RPI_USE_U_BOOT_sota = "1" | ||
1 | KERNEL_IMAGETYPE_sota = "uImage" | 2 | KERNEL_IMAGETYPE_sota = "uImage" |
2 | PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot" | 3 | PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot" |
3 | UBOOT_MACHINE_raspberrypi2_sota ?= "rpi_2_defconfig" | 4 | UBOOT_MACHINE_raspberrypi2_sota ?= "rpi_2_defconfig" |
diff --git a/conf/include/bblayers/sota.inc b/conf/include/bblayers/sota.inc index 97edecb..26eea22 100644 --- a/conf/include/bblayers/sota.inc +++ b/conf/include/bblayers/sota.inc | |||
@@ -1,5 +1,3 @@ | |||
1 | |||
2 | BBLAYERS += "${METADIR}/meta-updater" | 1 | BBLAYERS += "${METADIR}/meta-updater" |
3 | BBLAYERS += "${METADIR}/meta-openembedded/meta-filesystems" | 2 | BBLAYERS += "${METADIR}/meta-openembedded/meta-filesystems" |
4 | BBLAYERS += "${METADIR}/meta-openembedded/meta-oe" | 3 | BBLAYERS += "${METADIR}/meta-openembedded/meta-oe" |
5 | BBLAYERS += "${METADIR}/meta-rust" | ||
diff --git a/conf/include/bblayers/sota_qemux86-64.inc b/conf/include/bblayers/sota_qemux86-64.inc index 22ace81..12d32ff 100644 --- a/conf/include/bblayers/sota_qemux86-64.inc +++ b/conf/include/bblayers/sota_qemux86-64.inc | |||
@@ -1,2 +1 @@ | |||
1 | |||
2 | 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 11ede20..cc26679 100644 --- a/conf/include/bblayers/sota_raspberrypi2.inc +++ b/conf/include/bblayers/sota_raspberrypi2.inc | |||
@@ -1,2 +1,3 @@ | |||
1 | BBLAYERS += " ${METADIR}/meta-openembedded/meta-python " | ||
1 | 2 | ||
2 | BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " | 3 | BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " |
diff --git a/conf/include/bblayers/sota_raspberrypi3.inc b/conf/include/bblayers/sota_raspberrypi3.inc index 11ede20..cc26679 100644 --- a/conf/include/bblayers/sota_raspberrypi3.inc +++ b/conf/include/bblayers/sota_raspberrypi3.inc | |||
@@ -1,2 +1,3 @@ | |||
1 | BBLAYERS += " ${METADIR}/meta-openembedded/meta-python " | ||
1 | 2 | ||
2 | BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " | 3 | BBLAYERS += " ${METADIR}/meta-updater-raspberrypi ${METADIR}/meta-raspberrypi " |
diff --git a/lib/oeqa/selftest/cases/qemucommand.py b/lib/oeqa/selftest/cases/qemucommand.py new file mode 120000 index 0000000..075cdb8 --- /dev/null +++ b/lib/oeqa/selftest/cases/qemucommand.py | |||
@@ -0,0 +1 @@ | |||
../../../../scripts/qemucommand.py \ No newline at end of file | |||
diff --git a/lib/oeqa/selftest/updater.py b/lib/oeqa/selftest/cases/updater.py index f28349f..91ac9fc 100644 --- a/lib/oeqa/selftest/updater.py +++ b/lib/oeqa/selftest/cases/updater.py | |||
@@ -1,18 +1,20 @@ | |||
1 | import unittest | 1 | # pylint: disable=C0111,C0325 |
2 | import os | 2 | import os |
3 | import logging | 3 | import logging |
4 | import subprocess | 4 | import subprocess |
5 | import time | 5 | import unittest |
6 | from time import sleep | ||
6 | 7 | ||
7 | from oeqa.selftest.base import oeSelfTest | 8 | from oeqa.selftest.case import OESelftestTestCase |
8 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars | 9 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars |
9 | from oeqa.selftest.qemucommand import QemuCommand | 10 | from qemucommand import QemuCommand |
10 | 11 | ||
11 | 12 | ||
12 | class SotaToolsTests(oeSelfTest): | 13 | class SotaToolsTests(OESelftestTestCase): |
13 | 14 | ||
14 | @classmethod | 15 | @classmethod |
15 | def setUpClass(cls): | 16 | def setUpClass(cls): |
17 | super(SotaToolsTests, cls).setUpClass() | ||
16 | logger = logging.getLogger("selftest") | 18 | logger = logging.getLogger("selftest") |
17 | logger.info('Running bitbake to build aktualizr-native tools') | 19 | logger.info('Running bitbake to build aktualizr-native tools') |
18 | bitbake('aktualizr-native') | 20 | bitbake('aktualizr-native') |
@@ -38,22 +40,23 @@ class SotaToolsTests(oeSelfTest): | |||
38 | result = runCmd('%s --help' % p, ignore_status=True) | 40 | result = runCmd('%s --help' % p, ignore_status=True) |
39 | self.assertEqual(result.status, 0, "Status not equal to 0. output: %s" % result.output) | 41 | self.assertEqual(result.status, 0, "Status not equal to 0. output: %s" % result.output) |
40 | 42 | ||
41 | class HsmTests(oeSelfTest): | 43 | |
44 | class HsmTests(OESelftestTestCase): | ||
42 | 45 | ||
43 | def test_hsm(self): | 46 | def test_hsm(self): |
44 | self.write_config('SOTA_CLIENT_FEATURES="hsm"') | 47 | self.write_config('SOTA_CLIENT_FEATURES="hsm"') |
45 | bitbake('core-image-minimal') | 48 | bitbake('core-image-minimal') |
46 | 49 | ||
47 | 50 | ||
48 | class GeneralTests(oeSelfTest): | 51 | class GeneralTests(OESelftestTestCase): |
49 | 52 | ||
50 | def test_feature_sota(self): | 53 | def test_feature_sota(self): |
51 | result = get_bb_var('DISTRO_FEATURES').find('sota') | 54 | result = get_bb_var('DISTRO_FEATURES').find('sota') |
52 | self.assertNotEqual(result, -1, 'Feature "sota" not set at DISTRO_FEATURES'); | 55 | self.assertNotEqual(result, -1, 'Feature "sota" not set at DISTRO_FEATURES') |
53 | 56 | ||
54 | def test_feature_systemd(self): | 57 | def test_feature_systemd(self): |
55 | result = get_bb_var('DISTRO_FEATURES').find('systemd') | 58 | result = get_bb_var('DISTRO_FEATURES').find('systemd') |
56 | self.assertNotEqual(result, -1, 'Feature "systemd" not set at DISTRO_FEATURES'); | 59 | self.assertNotEqual(result, -1, 'Feature "systemd" not set at DISTRO_FEATURES') |
57 | 60 | ||
58 | def test_credentials(self): | 61 | def test_credentials(self): |
59 | bitbake('core-image-minimal') | 62 | bitbake('core-image-minimal') |
@@ -66,7 +69,8 @@ class GeneralTests(oeSelfTest): | |||
66 | deploydir = get_bb_var('DEPLOY_DIR_IMAGE') | 69 | deploydir = get_bb_var('DEPLOY_DIR_IMAGE') |
67 | imagename = get_bb_var('IMAGE_LINK_NAME', 'core-image-minimal') | 70 | imagename = get_bb_var('IMAGE_LINK_NAME', 'core-image-minimal') |
68 | # Check if the credentials are included in the output image | 71 | # Check if the credentials are included in the output image |
69 | result = runCmd('tar -jtvf %s/%s.tar.bz2 | grep sota_provisioning_credentials.zip' % (deploydir, imagename), ignore_status=True) | 72 | result = runCmd('tar -jtvf %s/%s.tar.bz2 | grep sota_provisioning_credentials.zip' % |
73 | (deploydir, imagename), ignore_status=True) | ||
70 | self.assertEqual(result.status, 0, "Status not equal to 0. output: %s" % result.output) | 74 | self.assertEqual(result.status, 0, "Status not equal to 0. output: %s" % result.output) |
71 | 75 | ||
72 | def test_java(self): | 76 | def test_java(self): |
@@ -99,29 +103,33 @@ class GeneralTests(oeSelfTest): | |||
99 | self.assertEqual(result.output, 'ERROR: Unable to find any package producing path /usr/bin/man') | 103 | self.assertEqual(result.output, 'ERROR: Unable to find any package producing path /usr/bin/man') |
100 | path2 = os.path.realpath(image_path) | 104 | path2 = os.path.realpath(image_path) |
101 | size2 = os.path.getsize(path2) | 105 | size2 = os.path.getsize(path2) |
102 | logger.info('Second image %s has size %i' % (path2, size2)) | 106 | logger.info('Second image %s has size %i', path2, size2) |
103 | self.assertNotEqual(path1, path2, "Image paths are identical; image was not rebuilt.") | 107 | self.assertNotEqual(path1, path2, "Image paths are identical; image was not rebuilt.") |
104 | self.assertNotEqual(size1, size2, "Image sizes are identical; image was not rebuilt.") | 108 | self.assertNotEqual(size1, size2, "Image sizes are identical; image was not rebuilt.") |
105 | 109 | ||
106 | 110 | ||
107 | class QemuTests(oeSelfTest): | 111 | class QemuTests(OESelftestTestCase): |
108 | 112 | ||
109 | @classmethod | 113 | @classmethod |
110 | def setUpClass(cls): | 114 | def setUpClass(cls): |
115 | super(QemuTests, cls).setUpClass() | ||
111 | cls.qemu, cls.s = qemu_launch(machine='qemux86-64') | 116 | cls.qemu, cls.s = qemu_launch(machine='qemux86-64') |
112 | 117 | ||
113 | @classmethod | 118 | @classmethod |
114 | def tearDownClass(cls): | 119 | def tearDownClass(cls): |
115 | qemu_terminate(cls.s) | 120 | qemu_terminate(cls.s) |
116 | 121 | ||
122 | def run_command(self, command): | ||
123 | return qemu_send_command(self.qemu.ssh_port, command) | ||
124 | |||
117 | def test_hostname(self): | 125 | def test_hostname(self): |
118 | print('') | 126 | print('') |
119 | print('Checking machine name (hostname) of device:') | 127 | print('Checking machine name (hostname) of device:') |
120 | value, err = qemu_send_command(self.qemu.ssh_port, 'hostname') | 128 | stdout, stderr, retcode = self.run_command('hostname') |
121 | machine = get_bb_var('MACHINE', 'core-image-minimal') | 129 | machine = get_bb_var('MACHINE', 'core-image-minimal') |
122 | self.assertEqual(err, b'', 'Error: ' + err.decode()) | 130 | self.assertEqual(stderr, b'', 'Error: ' + stderr.decode()) |
123 | # Strip off line ending. | 131 | # Strip off line ending. |
124 | value_str = value.decode()[:-1] | 132 | value_str = stdout.decode()[:-1] |
125 | self.assertEqual(value_str, machine, | 133 | self.assertEqual(value_str, machine, |
126 | 'MACHINE does not match hostname: ' + machine + ', ' + value_str) | 134 | 'MACHINE does not match hostname: ' + machine + ', ' + value_str) |
127 | print(value_str) | 135 | print(value_str) |
@@ -129,16 +137,34 @@ class QemuTests(oeSelfTest): | |||
129 | def test_var_sota(self): | 137 | def test_var_sota(self): |
130 | print('') | 138 | print('') |
131 | print('Checking contents of /var/sota:') | 139 | print('Checking contents of /var/sota:') |
132 | value, err = qemu_send_command(self.qemu.ssh_port, 'ls /var/sota') | 140 | stdout, stderr, retcode = self.run_command('ls /var/sota') |
133 | self.assertEqual(err, b'', 'Error: ' + err.decode()) | 141 | self.assertEqual(stderr, b'', 'Error: ' + stderr.decode()) |
134 | print(value.decode()) | 142 | self.assertEqual(retcode, 0) |
135 | 143 | print(stdout.decode()) | |
136 | class GrubTests(oeSelfTest): | 144 | |
145 | def test_aktualizr_info(self): | ||
146 | print('Checking output of aktualizr-info:') | ||
147 | ran_ok = False | ||
148 | for delay in [0, 1, 2, 5, 10, 15]: | ||
149 | sleep(delay) | ||
150 | try: | ||
151 | stdout, stderr, retcode = self.run_command('aktualizr-info') | ||
152 | if retcode == 0 and stderr == b'': | ||
153 | ran_ok = True | ||
154 | break | ||
155 | except IOError as e: | ||
156 | print(e) | ||
157 | if not ran_ok: | ||
158 | print(stdout.decode()) | ||
159 | print(stderr.decode()) | ||
160 | |||
161 | |||
162 | class GrubTests(OESelftestTestCase): | ||
137 | 163 | ||
138 | def setUpLocal(self): | 164 | def setUpLocal(self): |
139 | # This is a bit of a hack but I can't see a better option. | 165 | # This is a bit of a hack but I can't see a better option. |
140 | path = os.path.abspath(os.path.dirname(__file__)) | 166 | path = os.path.abspath(os.path.dirname(__file__)) |
141 | metadir = path + "/../../../../" | 167 | metadir = path + "/../../../../../" |
142 | grub_config = 'OSTREE_BOOTLOADER = "grub"\nMACHINE = "intel-corei7-64"' | 168 | grub_config = 'OSTREE_BOOTLOADER = "grub"\nMACHINE = "intel-corei7-64"' |
143 | self.append_config(grub_config) | 169 | self.append_config(grub_config) |
144 | self.meta_intel = metadir + "meta-intel" | 170 | self.meta_intel = metadir + "meta-intel" |
@@ -155,13 +181,15 @@ class GrubTests(oeSelfTest): | |||
155 | def test_grub(self): | 181 | def test_grub(self): |
156 | print('') | 182 | print('') |
157 | print('Checking machine name (hostname) of device:') | 183 | print('Checking machine name (hostname) of device:') |
158 | value, err = qemu_send_command(self.qemu.ssh_port, 'hostname') | 184 | value, err, retcode = qemu_send_command(self.qemu.ssh_port, 'hostname') |
159 | machine = get_bb_var('MACHINE', 'core-image-minimal') | 185 | machine = get_bb_var('MACHINE', 'core-image-minimal') |
160 | self.assertEqual(err, b'', 'Error: ' + err.decode()) | 186 | self.assertEqual(err, b'', 'Error: ' + err.decode()) |
187 | self.assertEqual(retcode, 0) | ||
161 | # Strip off line ending. | 188 | # Strip off line ending. |
162 | value_str = value.decode()[:-1] | 189 | value_str = value.decode()[:-1] |
163 | self.assertEqual(value_str, machine, | 190 | self.assertEqual(value_str, machine, |
164 | 'MACHINE does not match hostname: ' + machine + ', ' + value_str) | 191 | 'MACHINE does not match hostname: ' + machine + ', ' + value_str + |
192 | '\nIs tianocore ovmf installed?') | ||
165 | print(value_str) | 193 | print(value_str) |
166 | 194 | ||
167 | 195 | ||
@@ -189,7 +217,7 @@ def qemu_launch(efi=False, machine=None): | |||
189 | cmdline = qemu.command_line() | 217 | cmdline = qemu.command_line() |
190 | print('Booting image with run-qemu-ota...') | 218 | print('Booting image with run-qemu-ota...') |
191 | s = subprocess.Popen(cmdline) | 219 | s = subprocess.Popen(cmdline) |
192 | time.sleep(10) | 220 | sleep(10) |
193 | return qemu, s | 221 | return qemu, s |
194 | 222 | ||
195 | def qemu_terminate(s): | 223 | def qemu_terminate(s): |
@@ -202,6 +230,7 @@ def qemu_send_command(port, command): | |||
202 | command = ['ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost -p ' + | 230 | command = ['ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost -p ' + |
203 | str(port) + ' "' + command + '"'] | 231 | str(port) + ' "' + command + '"'] |
204 | s2 = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 232 | s2 = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
205 | value, err = s2.communicate() | 233 | stdout, stderr = s2.communicate() |
206 | return value, err | 234 | return stdout, stderr, s2.returncode |
207 | 235 | ||
236 | # vim:set ts=4 sw=4 sts=4 expandtab: | ||
diff --git a/lib/oeqa/selftest/qemucommand.py b/lib/oeqa/selftest/qemucommand.py deleted file mode 120000 index bc06dde..0000000 --- a/lib/oeqa/selftest/qemucommand.py +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | ../../../scripts/qemucommand.py \ No newline at end of file | ||
diff --git a/recipes-bsp/u-boot/u-boot_2016.11.bb b/recipes-bsp/u-boot/u-boot_2016.11.bb deleted file mode 100644 index acd4bb8..0000000 --- a/recipes-bsp/u-boot/u-boot_2016.11.bb +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | require recipes-bsp/u-boot/u-boot.inc | ||
2 | |||
3 | HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome" | ||
4 | SECTION = "bootloaders" | ||
5 | |||
6 | LICENSE = "GPLv2+" | ||
7 | LIC_FILES_CHKSUM = "file://Licenses/README;md5=a2c678cfd4a4d97135585cad908541c6" | ||
8 | PE = "1" | ||
9 | |||
10 | DEPENDS += "dtc-native" | ||
11 | |||
12 | SRCREV = "5ea3e51fc481613a8dee8c02848d1b42c81ad892" | ||
13 | SRC_URI = "git://git.denx.de/u-boot.git" | ||
14 | S = "${WORKDIR}/git" | ||
15 | |||
16 | PV = "v2016.11+git${SRCPV}" | ||
17 | |||
18 | #This patch is not compliant with u-boot 2016.11 | ||
19 | #Version of u-boot from yocto 2.2 Morty is 2016.03 from: | ||
20 | # meta/recipes-bsp/u-boot/u-boot_2016.03.bb | ||
21 | SRC_URI_remove_raspberrypi3 = "file://0003-Include-lowlevel_init.o-for-rpi2.patch" | ||
22 | SRC_URI_remove_raspberrypi2 = "file://0003-Include-lowlevel_init.o-for-rpi2.patch" | ||
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index 67ec104..495162e 100644 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb | |||
@@ -5,7 +5,7 @@ SECTION = "base" | |||
5 | LICENSE = "MPL-2.0" | 5 | LICENSE = "MPL-2.0" |
6 | LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" | 6 | LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" |
7 | 7 | ||
8 | DEPENDS = "boost curl openssl libarchive libsodium " | 8 | DEPENDS = "boost curl openssl libarchive libsodium asn1c-native " |
9 | DEPENDS_append_class-target = "jansson ostree ${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'hsm', ' libp11', '', d)} " | 9 | DEPENDS_append_class-target = "jansson ostree ${@bb.utils.contains('SOTA_CLIENT_FEATURES', 'hsm', ' libp11', '', d)} " |
10 | DEPENDS_append_class-native = "glib-2.0-native " | 10 | DEPENDS_append_class-native = "glib-2.0-native " |
11 | 11 | ||
diff --git a/recipes-sota/asn1c/asn1c.bb b/recipes-sota/asn1c/asn1c.bb new file mode 100644 index 0000000..9d1517d --- /dev/null +++ b/recipes-sota/asn1c/asn1c.bb | |||
@@ -0,0 +1,17 @@ | |||
1 | SUMMARY = "ASN.1 to C compiler" | ||
2 | DESCRIPTION = "Generates serialization routines from ASN.1 schemas" | ||
3 | HOMEPAGE = "http://lionet.info/asn1c" | ||
4 | SECTION = "base" | ||
5 | LICENSE = "BSD" | ||
6 | LIC_FILES_CHKSUM = "file://LICENSE;md5=ee8bfaaa7d71cf3edb079475e6716d4b" | ||
7 | |||
8 | inherit autotools native | ||
9 | |||
10 | PV = "0.9.28" | ||
11 | SRC_URI = "https://github.com/vlm/asn1c/releases/download/v${PV}/asn1c-${PV}.tar.gz \ | ||
12 | file://skeletons_dir_fix.patch" | ||
13 | SRC_URI[sha256sum] = "8007440b647ef2dd9fb73d931c33ac11764e6afb2437dbe638bb4e5fc82386b9" | ||
14 | |||
15 | BBCLASSEXTEND = "native nativesdk" | ||
16 | |||
17 | # vim:set ts=4 sw=4 sts=4 expandtab: | ||
diff --git a/recipes-sota/asn1c/files/skeletons_dir_fix.patch b/recipes-sota/asn1c/files/skeletons_dir_fix.patch new file mode 100644 index 0000000..f1caa2f --- /dev/null +++ b/recipes-sota/asn1c/files/skeletons_dir_fix.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 1a1c2c94f700cf0f4dc5dba863950b16477fdc6d Mon Sep 17 00:00:00 2001 | ||
2 | From: Laurent Bonnans <laurent.bonnans@here.com> | ||
3 | Date: Thu, 25 Jan 2018 09:49:41 +0100 | ||
4 | Subject: [PATCH] Patch the skeletons directory detection | ||
5 | |||
6 | Detect `share/asn1c` from `bin/` if it exists | ||
7 | --- | ||
8 | asn1c/asn1c.c | 9 ++++----- | ||
9 | 1 file changed, 4 insertions(+), 5 deletions(-) | ||
10 | |||
11 | diff --git a/asn1c/asn1c.c b/asn1c/asn1c.c | ||
12 | index eb1eff7c..dd9fc832 100644 | ||
13 | --- a/asn1c/asn1c.c | ||
14 | +++ b/asn1c/asn1c.c | ||
15 | @@ -226,22 +226,21 @@ main(int ac, char **av) { | ||
16 | if(skeletons_dir == NULL) { | ||
17 | struct stat sb; | ||
18 | skeletons_dir = DATADIR; | ||
19 | - if((av[-optind][0] == '.' || av[-optind][1] == '/') | ||
20 | - && stat(skeletons_dir, &sb)) { | ||
21 | + if(stat(skeletons_dir, &sb)) { | ||
22 | /* | ||
23 | * The default skeletons directory does not exist, | ||
24 | * compute it from my file name: | ||
25 | - * ./asn1c/asn1c -> ./skeletons | ||
26 | + * ./asn1c/asn1c -> ./share/asn1c | ||
27 | */ | ||
28 | char *p; | ||
29 | size_t len; | ||
30 | |||
31 | p = a1c_dirname(av[-optind]); | ||
32 | |||
33 | - len = strlen(p) + sizeof("/../skeletons"); | ||
34 | + len = strlen(p) + sizeof("/../share/asn1c"); | ||
35 | skeletons_dir = malloc(len); | ||
36 | assert(skeletons_dir); | ||
37 | - snprintf(skeletons_dir, len, "%s/../skeletons", p); | ||
38 | + snprintf(skeletons_dir, len, "%s/../share/asn1c", p); | ||
39 | if(stat(skeletons_dir, &sb)) { | ||
40 | fprintf(stderr, | ||
41 | "WARNING: skeletons are neither in " | ||
42 | -- | ||
43 | 2.15.1 | ||
44 | |||
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service b/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service deleted file mode 100644 index 11b1354..0000000 --- a/recipes-sota/rvi-sota-client/files/sota-client-autoprovision.service +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | [Unit] | ||
2 | Description=SOTA Client Autoprovisioning | ||
3 | Requires=network-online.target | ||
4 | After=network-online.target | ||
5 | |||
6 | [Service] | ||
7 | Type=oneshot | ||
8 | WorkingDirectory=/var/sota | ||
9 | Environment=SOTA_CERT_DIR=/var/sota | ||
10 | ExecStart=/usr/bin/sota_provision.sh sota_provisioning_credentials | ||
11 | RemainAfterExit=true | ||
12 | StandardOutput=journal | ||
13 | |||
14 | [Install] | ||
15 | WantedBy=multi-user.target | ||
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-ostree.service b/recipes-sota/rvi-sota-client/files/sota-client-ostree.service deleted file mode 100644 index 093a994..0000000 --- a/recipes-sota/rvi-sota-client/files/sota-client-ostree.service +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | [Unit] | ||
2 | Description=SOTA Client | ||
3 | Requires=network-online.target | ||
4 | After=network.target network-online.target | ||
5 | |||
6 | [Service] | ||
7 | RestartSec=5 | ||
8 | Restart=on-failure | ||
9 | Environment="RUST_LOG=debug" | ||
10 | ExecStart=/usr/bin/sota_client --config /sysroot/boot/sota.toml --device-package-manager ostree | ||
11 | |||
12 | [Install] | ||
13 | WantedBy=multi-user.target | ||
diff --git a/recipes-sota/rvi-sota-client/files/sota-client-uptane.service b/recipes-sota/rvi-sota-client/files/sota-client-uptane.service deleted file mode 100644 index a2d80ce..0000000 --- a/recipes-sota/rvi-sota-client/files/sota-client-uptane.service +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | [Unit] | ||
2 | Description=SOTA Client | ||
3 | Requires=network-online.target | ||
4 | After=network.target network-online.target | ||
5 | Requires=sota-client-autoprovision | ||
6 | After=sota-client-autoprovision | ||
7 | |||
8 | [Service] | ||
9 | RestartSec=5 | ||
10 | Restart=on-failure | ||
11 | Environment="RUST_LOG=debug" | ||
12 | ExecStart=/usr/bin/sota_client --config /var/sota/sota.toml --device-package-manager uptane | ||
13 | |||
14 | [Install] | ||
15 | WantedBy=multi-user.target | ||
diff --git a/recipes-sota/rvi-sota-client/files/sota-installer.service b/recipes-sota/rvi-sota-client/files/sota-installer.service deleted file mode 100644 index a4fd99e..0000000 --- a/recipes-sota/rvi-sota-client/files/sota-installer.service +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | [Unit] | ||
2 | Description=SOTA Secondary ECU Installer | ||
3 | Requires=network-online.target | ||
4 | After=network-online.target | ||
5 | |||
6 | [Service] | ||
7 | RestartSec=10 | ||
8 | Restart=always | ||
9 | ExecStart=/usr/bin/sota-installer --level debug --oneshot --config /var/sota/installer.toml | ||
10 | |||
11 | [Install] | ||
12 | WantedBy=multi-user.target | ||
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client.inc b/recipes-sota/rvi-sota-client/rvi-sota-client.inc deleted file mode 100644 index 712b9b3..0000000 --- a/recipes-sota/rvi-sota-client/rvi-sota-client.inc +++ /dev/null | |||
@@ -1,173 +0,0 @@ | |||
1 | inherit cargo systemd | ||
2 | |||
3 | DESCRIPTION = "rvi-sota-client recipe" | ||
4 | HOMEPAGE = "https://github.com/advancedtelematic/rvi_sota_client" | ||
5 | LICENSE = "MPL-2.0" | ||
6 | LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=65d26fcc2f35ea6a181ac777e42db1ea" | ||
7 | |||
8 | BBCLASSEXTEND = "native" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | SRC_URI[index.md5sum] = "6a635e8a081b4d4ba4cebffd721c2d7d" | ||
13 | SRC_URI[index.sha256sum] = "1913c41d4b8de89a931b6f9e418f83e70a083e12e6c247e8510ee932571ebae2" | ||
14 | |||
15 | # also update PV and SRC_URI crates when updating SRCREV | ||
16 | SRCREV = "be8ec83af2051a2b2499ce8878242771c65f0f1c" | ||
17 | |||
18 | PR = "1" | ||
19 | |||
20 | # generate with: `make package-version` | ||
21 | PV = "0.2.34-8-gbe8ec83" | ||
22 | |||
23 | # generate with: `make yocto-version` | ||
24 | SRC_URI = " \ | ||
25 | git://github.com/advancedtelematic/rvi_sota_client \ | ||
26 | file://sota-client-autoprovision.service \ | ||
27 | file://sota-client-ostree.service \ | ||
28 | file://sota-client-uptane.service \ | ||
29 | file://sota-installer.service \ | ||
30 | crate://crates.io/adler32/1.0.2 \ | ||
31 | crate://crates.io/advapi32-sys/0.2.0 \ | ||
32 | crate://crates.io/aho-corasick/0.6.3 \ | ||
33 | crate://crates.io/ansi_term/0.9.0 \ | ||
34 | crate://crates.io/antidote/1.0.0 \ | ||
35 | crate://crates.io/atty/0.2.3 \ | ||
36 | crate://crates.io/backtrace/0.3.3 \ | ||
37 | crate://crates.io/backtrace-sys/0.1.15 \ | ||
38 | crate://crates.io/base64/0.6.0 \ | ||
39 | crate://crates.io/bincode/0.9.0 \ | ||
40 | crate://crates.io/bit-set/0.4.0 \ | ||
41 | crate://crates.io/bit-vec/0.4.4 \ | ||
42 | crate://crates.io/bitflags/0.7.0 \ | ||
43 | crate://crates.io/bitflags/0.9.1 \ | ||
44 | crate://crates.io/block-buffer/0.2.0 \ | ||
45 | crate://crates.io/byte-tools/0.2.0 \ | ||
46 | crate://crates.io/byteorder/1.1.0 \ | ||
47 | crate://crates.io/bytes/0.4.5 \ | ||
48 | crate://crates.io/cc/1.0.1 \ | ||
49 | crate://crates.io/cfg-if/0.1.2 \ | ||
50 | crate://crates.io/chan/0.1.19 \ | ||
51 | crate://crates.io/chan-signal/0.3.1 \ | ||
52 | crate://crates.io/chrono/0.4.0 \ | ||
53 | crate://crates.io/clap/2.26.2 \ | ||
54 | crate://crates.io/coco/0.1.1 \ | ||
55 | crate://crates.io/constant_time_eq/0.1.3 \ | ||
56 | crate://crates.io/core-foundation/0.2.3 \ | ||
57 | crate://crates.io/core-foundation-sys/0.2.3 \ | ||
58 | crate://crates.io/crossbeam/0.3.0 \ | ||
59 | crate://crates.io/crypt32-sys/0.2.0 \ | ||
60 | crate://crates.io/crypto-mac/0.4.0 \ | ||
61 | crate://crates.io/dbghelp-sys/0.2.0 \ | ||
62 | crate://crates.io/dbus/0.5.4 \ | ||
63 | crate://crates.io/digest/0.6.2 \ | ||
64 | crate://crates.io/dtoa/0.4.2 \ | ||
65 | crate://crates.io/either/1.2.0 \ | ||
66 | crate://crates.io/env_logger/0.4.3 \ | ||
67 | crate://crates.io/error-chain/0.10.0 \ | ||
68 | crate://crates.io/fake-simd/0.1.2 \ | ||
69 | crate://crates.io/filetime/0.1.14 \ | ||
70 | crate://crates.io/foreign-types/0.2.0 \ | ||
71 | crate://crates.io/fuchsia-zircon/0.2.1 \ | ||
72 | crate://crates.io/fuchsia-zircon-sys/0.2.0 \ | ||
73 | crate://crates.io/futures/0.1.16 \ | ||
74 | crate://crates.io/gcc/0.3.54 \ | ||
75 | crate://crates.io/generic-array/0.8.3 \ | ||
76 | crate://crates.io/getopts/0.2.15 \ | ||
77 | crate://crates.io/hex/0.2.0 \ | ||
78 | crate://crates.io/hmac/0.4.2 \ | ||
79 | crate://crates.io/httparse/1.2.3 \ | ||
80 | crate://crates.io/hyper/0.10.13 \ | ||
81 | crate://crates.io/hyper-native-tls/0.2.4 \ | ||
82 | crate://crates.io/idna/0.1.4 \ | ||
83 | crate://crates.io/iovec/0.1.1 \ | ||
84 | crate://crates.io/itoa/0.3.4 \ | ||
85 | crate://crates.io/kernel32-sys/0.2.2 \ | ||
86 | crate://crates.io/language-tags/0.2.2 \ | ||
87 | crate://crates.io/lazy_static/0.2.9 \ | ||
88 | crate://crates.io/libc/0.2.32 \ | ||
89 | crate://crates.io/libdbus-sys/0.1.1 \ | ||
90 | crate://crates.io/libflate/0.1.11 \ | ||
91 | crate://crates.io/log/0.3.8 \ | ||
92 | crate://crates.io/maplit/0.1.5 \ | ||
93 | crate://crates.io/matches/0.1.6 \ | ||
94 | crate://crates.io/memchr/1.0.1 \ | ||
95 | crate://crates.io/metadeps/1.1.2 \ | ||
96 | crate://crates.io/mime/0.2.6 \ | ||
97 | crate://crates.io/native-tls/0.1.4 \ | ||
98 | crate://crates.io/net2/0.2.31 \ | ||
99 | crate://crates.io/nodrop/0.1.9 \ | ||
100 | crate://crates.io/num/0.1.40 \ | ||
101 | crate://crates.io/num-integer/0.1.35 \ | ||
102 | crate://crates.io/num-iter/0.1.34 \ | ||
103 | crate://crates.io/num-traits/0.1.40 \ | ||
104 | crate://crates.io/num_cpus/1.7.0 \ | ||
105 | crate://crates.io/odds/0.2.25 \ | ||
106 | crate://crates.io/openssl/0.9.19 \ | ||
107 | crate://crates.io/openssl-sys/0.9.19 \ | ||
108 | crate://crates.io/pem/0.4.1 \ | ||
109 | crate://crates.io/percent-encoding/1.0.0 \ | ||
110 | crate://crates.io/pkg-config/0.3.9 \ | ||
111 | crate://crates.io/quote/0.3.15 \ | ||
112 | crate://crates.io/rand/0.3.17 \ | ||
113 | crate://crates.io/rayon/0.8.2 \ | ||
114 | crate://crates.io/rayon-core/1.2.1 \ | ||
115 | crate://crates.io/redox_syscall/0.1.31 \ | ||
116 | crate://crates.io/redox_termios/0.1.1 \ | ||
117 | crate://crates.io/regex/0.2.2 \ | ||
118 | crate://crates.io/regex-syntax/0.4.1 \ | ||
119 | crate://crates.io/reqwest/0.6.2 \ | ||
120 | crate://crates.io/ring/0.12.1 \ | ||
121 | crate://crates.io/rust-crypto/0.2.36 \ | ||
122 | crate://crates.io/rustc-demangle/0.1.5 \ | ||
123 | crate://crates.io/rustc-serialize/0.3.24 \ | ||
124 | crate://crates.io/safemem/0.2.0 \ | ||
125 | crate://crates.io/schannel/0.1.8 \ | ||
126 | crate://crates.io/scopeguard/0.3.2 \ | ||
127 | crate://crates.io/secur32-sys/0.2.0 \ | ||
128 | crate://crates.io/security-framework/0.1.16 \ | ||
129 | crate://crates.io/security-framework-sys/0.1.16 \ | ||
130 | crate://crates.io/serde/1.0.15 \ | ||
131 | crate://crates.io/serde_derive/1.0.15 \ | ||
132 | crate://crates.io/serde_derive_internals/0.16.0 \ | ||
133 | crate://crates.io/serde_json/1.0.3 \ | ||
134 | crate://crates.io/serde_urlencoded/0.5.1 \ | ||
135 | crate://crates.io/sha1/0.2.0 \ | ||
136 | crate://crates.io/sha2/0.6.0 \ | ||
137 | crate://crates.io/strsim/0.6.0 \ | ||
138 | crate://crates.io/syn/0.11.11 \ | ||
139 | crate://crates.io/synom/0.11.3 \ | ||
140 | crate://crates.io/tar/0.4.13 \ | ||
141 | crate://crates.io/tempdir/0.3.5 \ | ||
142 | crate://crates.io/term_size/0.3.0 \ | ||
143 | crate://crates.io/termion/1.5.1 \ | ||
144 | crate://crates.io/textwrap/0.8.0 \ | ||
145 | crate://crates.io/thread_local/0.3.4 \ | ||
146 | crate://crates.io/time/0.1.38 \ | ||
147 | crate://crates.io/toml/0.2.1 \ | ||
148 | crate://crates.io/toml/0.4.5 \ | ||
149 | crate://crates.io/traitobject/0.1.0 \ | ||
150 | crate://crates.io/tungstenite/0.5.0 \ | ||
151 | crate://crates.io/typeable/0.1.2 \ | ||
152 | crate://crates.io/typenum/1.9.0 \ | ||
153 | crate://crates.io/unicase/1.4.2 \ | ||
154 | crate://crates.io/unicode-bidi/0.3.4 \ | ||
155 | crate://crates.io/unicode-normalization/0.1.5 \ | ||
156 | crate://crates.io/unicode-width/0.1.4 \ | ||
157 | crate://crates.io/unicode-xid/0.0.4 \ | ||
158 | crate://crates.io/unix_socket/0.5.0 \ | ||
159 | crate://crates.io/unreachable/1.0.0 \ | ||
160 | crate://crates.io/untrusted/0.5.1 \ | ||
161 | crate://crates.io/url/1.5.1 \ | ||
162 | crate://crates.io/utf-8/0.7.1 \ | ||
163 | crate://crates.io/utf8-ranges/1.0.0 \ | ||
164 | crate://crates.io/uuid/0.5.1 \ | ||
165 | crate://crates.io/vcpkg/0.2.2 \ | ||
166 | crate://crates.io/vec_map/0.8.0 \ | ||
167 | crate://crates.io/version_check/0.1.3 \ | ||
168 | crate://crates.io/void/1.0.2 \ | ||
169 | crate://crates.io/winapi/0.2.8 \ | ||
170 | crate://crates.io/winapi-build/0.1.1 \ | ||
171 | crate://crates.io/ws2_32-sys/0.2.1 \ | ||
172 | crate://crates.io/xattr/0.1.11 \ | ||
173 | " | ||
diff --git a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb b/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb deleted file mode 100644 index e286598..0000000 --- a/recipes-sota/rvi-sota-client/rvi-sota-client_git.bb +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | require rvi-sota-client.inc | ||
2 | |||
3 | |||
4 | SYSTEMD_SERVICE_${PN} = "sota-client.service sota-client-autoprovision.service" | ||
5 | |||
6 | FILES_${PN} = " \ | ||
7 | /lib64 \ | ||
8 | ${bindir}/sota_client \ | ||
9 | ${bindir}/sota_sysinfo.sh \ | ||
10 | ${bindir}/sota_provision.sh \ | ||
11 | ${sysconfdir}/sota_client.version \ | ||
12 | ${sysconfdir}/sota_certificates \ | ||
13 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client.service', '', d)} \ | ||
14 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-client-autoprovision.service', '', d)} \ | ||
15 | " | ||
16 | |||
17 | DEPENDS += " openssl openssl-native dbus " | ||
18 | RDEPENDS_${PN} = " \ | ||
19 | bash \ | ||
20 | curl \ | ||
21 | libcrypto \ | ||
22 | libssl \ | ||
23 | lshw \ | ||
24 | jq \ | ||
25 | python-petname \ | ||
26 | sota-launcher \ | ||
27 | zip \ | ||
28 | " | ||
29 | |||
30 | export SOTA_PACKED_CREDENTIALS | ||
31 | |||
32 | do_compile_prepend() { | ||
33 | export SOTA_VERSION=$(make sota-version) | ||
34 | cd sota-client | ||
35 | } | ||
36 | |||
37 | do_install() { | ||
38 | ln -fs /lib ${D}/lib64 | ||
39 | |||
40 | install -d ${D}${bindir} | ||
41 | install -d ${D}${sysconfdir} | ||
42 | |||
43 | echo `git log -1 --pretty=format:%H` > ${D}${sysconfdir}/sota_client.version | ||
44 | install -c ${S}/sota-client/docker/sota_certificates ${D}${sysconfdir} | ||
45 | |||
46 | install -m 0755 target/${TARGET_SYS}/release/sota_client ${D}${bindir} | ||
47 | install -m 0755 ${S}/sota-client/docker/sota_provision.sh ${D}${bindir} | ||
48 | install -m 0755 ${S}/sota-client/docker/sota_sysinfo.sh ${D}${bindir} | ||
49 | |||
50 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then | ||
51 | install -d ${D}/${systemd_unitdir}/system | ||
52 | if [ -n "$SOTA_PACKED_CREDENTIALS" ]; then | ||
53 | install -m 0644 ${WORKDIR}/sota-client-uptane.service ${D}/${systemd_unitdir}/system/sota-client.service | ||
54 | else | ||
55 | install -m 0644 ${WORKDIR}/sota-client-ostree.service ${D}/${systemd_unitdir}/system/sota-client.service | ||
56 | fi | ||
57 | install -m 0644 ${WORKDIR}/sota-client-autoprovision.service ${D}/${systemd_unitdir}/system/sota-client-autoprovision.service | ||
58 | fi | ||
59 | } | ||
diff --git a/recipes-sota/rvi-sota-client/sota-installer_git.bb b/recipes-sota/rvi-sota-client/sota-installer_git.bb deleted file mode 100644 index 09f6e5d..0000000 --- a/recipes-sota/rvi-sota-client/sota-installer_git.bb +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | require rvi-sota-client.inc | ||
2 | |||
3 | |||
4 | SYSTEMD_SERVICE_${PN} = "sota-installer.service" | ||
5 | |||
6 | DEPENDS += " rvi-sota-client " | ||
7 | |||
8 | FILES_${PN} = " \ | ||
9 | ${bindir}/sota-installer \ | ||
10 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/sota-installer.service', '', d)} \ | ||
11 | " | ||
12 | |||
13 | do_compile_prepend() { | ||
14 | cd sota-installer | ||
15 | } | ||
16 | |||
17 | do_install() { | ||
18 | install -d ${D}${bindir} | ||
19 | install -m 0755 target/${TARGET_SYS}/release/sota-installer ${D}${bindir} | ||
20 | |||
21 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then | ||
22 | install -d ${D}/${systemd_unitdir}/system | ||
23 | install -m 0644 ${WORKDIR}/sota-installer.service ${D}/${systemd_unitdir}/system/sota-installer.service | ||
24 | fi | ||
25 | } | ||
diff --git a/recipes-sota/rvi-sota-client/sota-launcher_git.bb b/recipes-sota/rvi-sota-client/sota-launcher_git.bb deleted file mode 100644 index e9874e7..0000000 --- a/recipes-sota/rvi-sota-client/sota-launcher_git.bb +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | require rvi-sota-client.inc | ||
2 | |||
3 | |||
4 | DEPENDS += " rvi-sota-client " | ||
5 | FILES_${PN} = "${bindir}/sota-launcher" | ||
6 | |||
7 | |||
8 | do_compile_prepend() { | ||
9 | cd sota-launcher | ||
10 | } | ||
11 | |||
12 | do_install() { | ||
13 | install -d ${D}${bindir} | ||
14 | install -m 0755 target/${TARGET_SYS}/release/sota-launcher ${D}${bindir} | ||
15 | } | ||
diff --git a/recipes-support/libp11/files/0001-Workaround-for-a-buggy-version-of-openssl-1.0.2m.patch b/recipes-support/libp11/files/0001-Workaround-for-a-buggy-version-of-openssl-1.0.2m.patch new file mode 100644 index 0000000..0538eff --- /dev/null +++ b/recipes-support/libp11/files/0001-Workaround-for-a-buggy-version-of-openssl-1.0.2m.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From ccab5ce63dd5d3dbb4bd02998d21d34407e550f2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Anton Gerasimov <anton.gerasimov@here.com> | ||
3 | Date: Fri, 19 Jan 2018 12:44:27 +0100 | ||
4 | Subject: [PATCH] Workaround for a buggy version of openssl (1.0.2m) | ||
5 | |||
6 | --- | ||
7 | src/p11_pkey.c | 12 +++++++++--- | ||
8 | 1 file changed, 9 insertions(+), 3 deletions(-) | ||
9 | |||
10 | diff --git a/src/p11_pkey.c b/src/p11_pkey.c | ||
11 | index 45d5ad3..75625e6 100644 | ||
12 | --- a/src/p11_pkey.c | ||
13 | +++ b/src/p11_pkey.c | ||
14 | @@ -139,8 +139,14 @@ static void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src) | ||
15 | |||
16 | #endif | ||
17 | |||
18 | -#if OPENSSL_VERSION_NUMBER < 0x100020d0L || defined(LIBRESSL_VERSION_NUMBER) | ||
19 | -static void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, | ||
20 | +#if OPENSSL_VERSION_NUMBER <= 0x100020e0L || defined(LIBRESSL_VERSION_NUMBER) | ||
21 | + | ||
22 | +# if (OPENSSL_VERSION_NUMBER & 0xFFFFFFF0) == 0x100020d0L | ||
23 | +# undef EVP_PKEY_meth_get_sign | ||
24 | +# undef EVP_PKEY_meth_get_decrypt | ||
25 | +# endif | ||
26 | + | ||
27 | +void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, | ||
28 | int (**psign_init) (EVP_PKEY_CTX *ctx), | ||
29 | int (**psign) (EVP_PKEY_CTX *ctx, | ||
30 | unsigned char *sig, size_t *siglen, | ||
31 | @@ -152,7 +158,7 @@ static void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, | ||
32 | *psign = pmeth->sign; | ||
33 | } | ||
34 | |||
35 | -static void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth, | ||
36 | +void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth, | ||
37 | int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), | ||
38 | int (**pdecrypt) (EVP_PKEY_CTX *ctx, | ||
39 | unsigned char *out, | ||
40 | -- | ||
41 | 2.15.1 | ||
42 | |||
diff --git a/recipes-support/libp11/libp11_0.4.7.bb b/recipes-support/libp11/libp11_0.4.7.bb index 7d77e90..7a93102 100644 --- a/recipes-support/libp11/libp11_0.4.7.bb +++ b/recipes-support/libp11/libp11_0.4.7.bb | |||
@@ -8,7 +8,8 @@ LICENSE = "LGPLv2+" | |||
8 | LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29" | 8 | LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29" |
9 | DEPENDS = "libtool openssl" | 9 | DEPENDS = "libtool openssl" |
10 | 10 | ||
11 | SRC_URI = "git://github.com/OpenSC/libp11.git" | 11 | SRC_URI = "git://github.com/OpenSC/libp11.git \ |
12 | file://0001-Workaround-for-a-buggy-version-of-openssl-1.0.2m.patch" | ||
12 | SRCREV = "da725ab727342083478150a203a3c80c4551feb4" | 13 | SRCREV = "da725ab727342083478150a203a3c80c4551feb4" |
13 | 14 | ||
14 | S = "${WORKDIR}/git" | 15 | S = "${WORKDIR}/git" |
diff --git a/recipes-support/util-linux/util-linux_%.bbappend b/recipes-support/util-linux/util-linux_%.bbappend deleted file mode 100644 index d653bb2..0000000 --- a/recipes-support/util-linux/util-linux_%.bbappend +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | PACKAGES_append_class-native = "${@bb.utils.contains('DISTRO_FEATURES', 'sota', ' util-linux-agetty-native util-linux-fdisk-native util-linux-cfdisk-native util-linux-sfdisk-native util-linux-swaponoff-native util-linux-losetup-native util-linux-umount-native util-linux-mount-native util-linux-readprofile-native util-linux-uuidd-native util-linux-uuidgen-native util-linux-lscpu-native util-linux-fsck-native util-linux-blkid util-linux-mkfs-native util-linux-mcookie-native util-linux-reset-native util-linux-mkfs.cramfs-native util-linux-fsck.cramfs-native util-linux-fstrim-native util-linux-partx-native ${PN}-bash-completion-native util-linux-hwclock util-linux-findfs-native util-linux-getopt-native util-linux-sulogin-native', ' ', d)}" | ||
2 | |||
3 | PACKAGES_append_class-native = "${@' util-linux-pylibmount-native' if bb.utils.contains('DISTRO_FEATURES', 'sota', True, False, d) and bb.utils.contains('PACKAGECONFIG', 'pylibmount', True, False, d) else ' '}" | ||
diff --git a/scripts/lib/wic/plugins/source/otaimage.py b/scripts/lib/wic/plugins/source/otaimage.py index 26cfb10..ee8088b 100644 --- a/scripts/lib/wic/plugins/source/otaimage.py +++ b/scripts/lib/wic/plugins/source/otaimage.py | |||
@@ -20,7 +20,7 @@ import os | |||
20 | import sys | 20 | import sys |
21 | 21 | ||
22 | from wic.plugins.source.rawcopy import RawCopyPlugin | 22 | from wic.plugins.source.rawcopy import RawCopyPlugin |
23 | from wic.utils.misc import get_bitbake_var | 23 | from wic.misc import get_bitbake_var |
24 | 24 | ||
25 | logger = logging.getLogger('wic') | 25 | logger = logging.getLogger('wic') |
26 | 26 | ||
diff --git a/scripts/qemucommand.py b/scripts/qemucommand.py index 9a893d8..6b1106d 100644 --- a/scripts/qemucommand.py +++ b/scripts/qemucommand.py | |||
@@ -73,7 +73,7 @@ class QemuCommand(object): | |||
73 | try: | 73 | try: |
74 | check_output(['kvm-ok']) | 74 | check_output(['kvm-ok']) |
75 | self.kvm = True | 75 | self.kvm = True |
76 | except CalledProcessError: | 76 | except Exception: |
77 | self.kvm = False | 77 | self.kvm = False |
78 | else: | 78 | else: |
79 | self.kvm = args.kvm | 79 | self.kvm = args.kvm |
@@ -96,7 +96,7 @@ class QemuCommand(object): | |||
96 | "-serial", "tcp:127.0.0.1:%d,server,nowait" % self.serial_port, | 96 | "-serial", "tcp:127.0.0.1:%d,server,nowait" % self.serial_port, |
97 | "-m", "1G", | 97 | "-m", "1G", |
98 | "-usb", | 98 | "-usb", |
99 | "-usbdevice", "tablet", | 99 | "-device", "usb-tablet", |
100 | "-show-cursor", | 100 | "-show-cursor", |
101 | "-vga", "std", | 101 | "-vga", "std", |
102 | "-net", netuser, | 102 | "-net", netuser, |