summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Vacek <patrickvacek@gmail.com>2019-11-26 10:00:59 +0100
committerGitHub <noreply@github.com>2019-11-26 10:00:59 +0100
commita98ec26f5592994ae0163446f3971419d12aef70 (patch)
tree0599d7a7c8919265605f98d5dd2ed0d6b678673c
parent0b087a34b708bfd808a013b3656f543d2709692e (diff)
parent8409a07d65a2b7bc2dbb56b11158e0f64ac1065a (diff)
downloadmeta-updater-a98ec26f5592994ae0163446f3971419d12aef70.tar.gz
Merge pull request #634 from advancedtelematic/feat/thud/2019.10
Feat/thud/2019.10
-rw-r--r--.gitlab-ci.yml11
-rw-r--r--classes/image_types_ostree.bbclass15
-rw-r--r--classes/image_types_ota.bbclass2
-rw-r--r--conf/distro/poky-sota-systemd.conf2
-rw-r--r--conf/distro/poky-sota.conf2
-rw-r--r--conf/local.conf.base.append18
-rw-r--r--conf/local.conf.systemd.append (renamed from conf/local.conf.sample.append)20
-rw-r--r--lib/oeqa/selftest/cases/updater_qemux86_64.py36
-rw-r--r--lib/oeqa/selftest/cases/updater_raspberrypi.py16
-rw-r--r--recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb2
-rw-r--r--recipes-sota/aktualizr/aktualizr_git.bb9
-rwxr-xr-xrecipes-sota/ostree/files/touch-ostree21
-rw-r--r--recipes-sota/ostree/ostree-booted_1.0.bb15
-rwxr-xr-xscripts/envsetup.sh18
14 files changed, 136 insertions, 51 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6ad00ea..6a7ae47 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -45,6 +45,17 @@ Build core-image-minimal:
45 except: 45 except:
46 - pushes 46 - pushes
47 47
48Build core-image-minimal (rpi):
49 extends: .bitbake
50
51 stage: test
52 variables:
53 TEST_BUILD_DIR: 'build-core-image-minimal-rpi'
54 BITBAKE_TARGETS: 'core-image-minimal'
55 TEST_MACHINE: 'raspberrypi3'
56 except:
57 - pushes
58
48Oe-selftest qemux86_64: 59Oe-selftest qemux86_64:
49 extends: .oe-selftest 60 extends: .oe-selftest
50 61
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 7ffe99d..0f0fd28 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -13,11 +13,11 @@ BUILD_OSTREE_TARBALL ??= "1"
13SYSTEMD_USED = "${@oe.utils.ifelse(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'systemd', 'true', '')}" 13SYSTEMD_USED = "${@oe.utils.ifelse(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'systemd', 'true', '')}"
14 14
15IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*" 15IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*"
16CONVERSION_CMD_tar = "touch ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}; ${IMAGE_CMD_TAR} --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.tar -C ${OTA_IMAGE_ROOTFS} . || [ $? -eq 1 ]" 16CONVERSION_CMD_tar = "touch ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}; ${IMAGE_CMD_TAR} --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.tar -C ${TAR_IMAGE_ROOTFS} . || [ $? -eq 1 ]"
17CONVERSIONTYPES_append = " tar" 17CONVERSIONTYPES_append = " tar"
18 18
19REQUIRED_DISTRO_FEATURES = "usrmerge" 19REQUIRED_DISTRO_FEATURES = "usrmerge"
20OTA_IMAGE_ROOTFS_task-image-ostree = "${OSTREE_ROOTFS}" 20TAR_IMAGE_ROOTFS_task-image-ostree = "${OSTREE_ROOTFS}"
21do_image_ostree[dirs] = "${OSTREE_ROOTFS}" 21do_image_ostree[dirs] = "${OSTREE_ROOTFS}"
22do_image_ostree[cleandirs] = "${OSTREE_ROOTFS}" 22do_image_ostree[cleandirs] = "${OSTREE_ROOTFS}"
23do_image_ostree[depends] = "coreutils-native:do_populate_sysroot virtual/kernel:do_deploy ${INITRAMFS_IMAGE}:do_image_complete" 23do_image_ostree[depends] = "coreutils-native:do_populate_sysroot virtual/kernel:do_deploy ${INITRAMFS_IMAGE}:do_image_complete"
@@ -186,13 +186,20 @@ IMAGE_CMD_ostreecommit () {
186IMAGE_TYPEDEP_ostreepush = "ostreecommit" 186IMAGE_TYPEDEP_ostreepush = "ostreecommit"
187do_image_ostreepush[depends] += "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot" 187do_image_ostreepush[depends] += "aktualizr-native:do_populate_sysroot ca-certificates-native:do_populate_sysroot"
188IMAGE_CMD_ostreepush () { 188IMAGE_CMD_ostreepush () {
189 # Print warnings if credetials are not set or if the file has not been found. 189 # send a copy of the repo manifest to backend if available
190 local SEND_MANIFEST=""
191 # check if garage-push supports the --repo-manifest option before trying
192 if $(garage-push --help | grep -q '^\s*--repo-manifest') && [ -f ${IMAGE_ROOTFS}${sysconfdir}/manifest.xml ]; then
193 SEND_MANIFEST="--repo-manifest ${IMAGE_ROOTFS}${sysconfdir}/manifest.xml"
194 fi
195
190 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 196 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
191 if [ -e ${SOTA_PACKED_CREDENTIALS} ]; then 197 if [ -e ${SOTA_PACKED_CREDENTIALS} ]; then
192 garage-push -vv --repo=${OSTREE_REPO} \ 198 garage-push -vv --repo=${OSTREE_REPO} \
193 --ref=${OSTREE_BRANCHNAME} \ 199 --ref=${OSTREE_BRANCHNAME} \
194 --credentials=${SOTA_PACKED_CREDENTIALS} \ 200 --credentials=${SOTA_PACKED_CREDENTIALS} \
195 --cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt 201 --cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt \
202 $SEND_MANIFEST
196 else 203 else
197 bbwarn "SOTA_PACKED_CREDENTIALS file does not exist." 204 bbwarn "SOTA_PACKED_CREDENTIALS file does not exist."
198 fi 205 fi
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index 894919d..857161a 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -38,7 +38,7 @@ calculate_size () {
38} 38}
39 39
40OTA_SYSROOT = "${WORKDIR}/ota-sysroot" 40OTA_SYSROOT = "${WORKDIR}/ota-sysroot"
41OTA_IMAGE_ROOTFS_task-image-ota = "${OTA_SYSROOT}" 41TAR_IMAGE_ROOTFS_task-image-ota = "${OTA_SYSROOT}"
42IMAGE_TYPEDEP_ota = "ostreecommit" 42IMAGE_TYPEDEP_ota = "ostreecommit"
43do_image_ota[dirs] = "${OTA_SYSROOT}" 43do_image_ota[dirs] = "${OTA_SYSROOT}"
44do_image_ota[cleandirs] = "${OTA_SYSROOT}" 44do_image_ota[cleandirs] = "${OTA_SYSROOT}"
diff --git a/conf/distro/poky-sota-systemd.conf b/conf/distro/poky-sota-systemd.conf
index b30b322..0dc50b0 100644
--- a/conf/distro/poky-sota-systemd.conf
+++ b/conf/distro/poky-sota-systemd.conf
@@ -2,7 +2,7 @@ require conf/distro/poky.conf
2 2
3require conf/distro/sota.conf.inc 3require conf/distro/sota.conf.inc
4 4
5DISTRO = "poky-sota" 5DISTRO = "poky-sota-systemd"
6DISTRO_NAME = "OTA-enabled Linux" 6DISTRO_NAME = "OTA-enabled Linux"
7DISTRO_VERSION = "1.0" 7DISTRO_VERSION = "1.0"
8DISTRO_CODENAME = "sota" 8DISTRO_CODENAME = "sota"
diff --git a/conf/distro/poky-sota.conf b/conf/distro/poky-sota.conf
index 3fb1d20..bfac90f 100644
--- a/conf/distro/poky-sota.conf
+++ b/conf/distro/poky-sota.conf
@@ -5,3 +5,5 @@ DISTRO = "poky-sota"
5DISTRO_NAME = "OTA-enabled Linux" 5DISTRO_NAME = "OTA-enabled Linux"
6DISTRO_VERSION = "1.0" 6DISTRO_VERSION = "1.0"
7DISTRO_CODENAME = "sota" 7DISTRO_CODENAME = "sota"
8
9IMAGE_INSTALL_append_sota = " ostree-booted"
diff --git a/conf/local.conf.base.append b/conf/local.conf.base.append
new file mode 100644
index 0000000..36b2f59
--- /dev/null
+++ b/conf/local.conf.base.append
@@ -0,0 +1,18 @@
1#
2# meta-updater configuration, see README.adoc and aktualizr's
3# documentation for more options and detailed documentation
4#
5
6MACHINE = "##MACHINE##"
7DISTRO = "##DISTRO##"
8
9# General SOTA setup
10#SOTA_CLIENT_PROV = "aktualizr-shared-prov"
11#SOTA_PACKED_CREDENTIALS = "/path/to/credentials.zip"
12
13# Uncomment this line to start an ssh server at boot automatically
14#IMAGE_FEATURES += "ssh-server-dropbear"
15
16# Uncomment this line to set the log level of aktualizr to 'debug' (from 'info'
17# by default)
18#IMAGE_INSTALL_append += " aktualizr-log-debug"
diff --git a/conf/local.conf.sample.append b/conf/local.conf.systemd.append
index fc565f8..12e0182 100644
--- a/conf/local.conf.sample.append
+++ b/conf/local.conf.systemd.append
@@ -1,23 +1,3 @@
1
2#
3# meta-updater configuration, see README.adoc and aktualizr's
4# documentation for more options and detailed documentation
5#
6
7MACHINE = "##MACHINE##"
8DISTRO = "poky-sota-systemd"
9
10# General SOTA setup
11#SOTA_CLIENT_PROV = "aktualizr-shared-prov"
12#SOTA_PACKED_CREDENTIALS = "/path/to/credentials.zip"
13
14# Uncomment this line to start an ssh server at boot automatically
15#IMAGE_FEATURES += "ssh-server-dropbear"
16
17# Uncomment this line to set the log level of aktualizr to 'debug' (from 'info'
18# by default)
19#IMAGE_INSTALL_append += " aktualizr-log-debug"
20
21# Store systemd logs in persistent storage 1# Store systemd logs in persistent storage
22# 2#
23# It greatly helps diagnosing issues on testing devices but should be 3# It greatly helps diagnosing issues on testing devices but should be
diff --git a/lib/oeqa/selftest/cases/updater_qemux86_64.py b/lib/oeqa/selftest/cases/updater_qemux86_64.py
index 4506300..5f152ad 100644
--- a/lib/oeqa/selftest/cases/updater_qemux86_64.py
+++ b/lib/oeqa/selftest/cases/updater_qemux86_64.py
@@ -465,4 +465,40 @@ class ResourceControlTests(OESelftestTestCase):
465 stdout, stderr, retcode = self.qemu_command('systemctl --no-pager show --property=ExecMainStatus aktualizr') 465 stdout, stderr, retcode = self.qemu_command('systemctl --no-pager show --property=ExecMainStatus aktualizr')
466 self.assertIn(b'ExecMainStatus=0', stdout, 'Aktualizr did not restart') 466 self.assertIn(b'ExecMainStatus=0', stdout, 'Aktualizr did not restart')
467 467
468
469class NonSystemdTests(OESelftestTestCase):
470 def setUpLocal(self):
471 layer = "meta-updater-qemux86-64"
472 result = runCmd('bitbake-layers show-layers')
473 if re.search(layer, result.output) is None:
474 self.meta_qemu = metadir() + layer
475 runCmd('bitbake-layers add-layer "%s"' % self.meta_qemu)
476 else:
477 self.meta_qemu = None
478 self.append_config('MACHINE = "qemux86-64"')
479 self.append_config('SOTA_CLIENT_PROV = " aktualizr-shared-prov "')
480 self.append_config('IMAGE_FSTYPES_remove = "ostreepush garagesign garagecheck"')
481 self.append_config('DISTRO = "poky-sota"')
482 self.append_config('IMAGE_INSTALL_remove += " aktualizr-resource-control"')
483 self.qemu, self.s = qemu_launch(machine='qemux86-64')
484
485 def tearDownLocal(self):
486 qemu_terminate(self.s)
487 if self.meta_qemu:
488 runCmd('bitbake-layers remove-layer "%s"' % self.meta_qemu, ignore_status=True)
489
490 def qemu_command(self, command):
491 return qemu_send_command(self.qemu.ssh_port, command)
492
493 def test_provisioning(self):
494 print('Checking if systemd is not installed...')
495 stdout, stderr, retcode = self.qemu_command('systemctl')
496 self.assertTrue(retcode != 0, 'systemd is installed while it is not supposed to: ' + str(stdout))
497
498 stdout, stderr, retcode = self.qemu_command('aktualizr --run-mode once')
499 self.assertEqual(retcode, 0, 'Failed to run aktualizr: ' + str(stdout) + str(stderr))
500
501 machine = get_bb_var('MACHINE', 'core-image-minimal')
502 verifyProvisioned(self, machine)
503
468# vim:set ts=4 sw=4 sts=4 expandtab: 504# vim:set ts=4 sw=4 sts=4 expandtab:
diff --git a/lib/oeqa/selftest/cases/updater_raspberrypi.py b/lib/oeqa/selftest/cases/updater_raspberrypi.py
index 26d5c4c..25c5f12 100644
--- a/lib/oeqa/selftest/cases/updater_raspberrypi.py
+++ b/lib/oeqa/selftest/cases/updater_raspberrypi.py
@@ -35,26 +35,10 @@ class RpiTests(OESelftestTestCase):
35 else: 35 else:
36 self.meta_upd_rpi = None 36 self.meta_upd_rpi = None
37 37
38 # This is trickier that I would've thought. The fundamental problem is
39 # that the qemu layer changes the u-boot file extension to .rom, but
40 # raspberrypi still expects .bin. To prevent this, the qemu layer must
41 # be temporarily removed if it is present. It has to be removed by name
42 # without the complete path, but to add it back when we are done, we
43 # need the full path.
44 p = re.compile(r'meta-updater-qemux86-64\s*(\S*meta-updater-qemux86-64)\s')
45 m = p.search(result.output)
46 if m and m.lastindex > 0:
47 self.meta_qemu = m.group(1)
48 runCmd('bitbake-layers remove-layer meta-updater-qemux86-64')
49 else:
50 self.meta_qemu = None
51
52 self.append_config('MACHINE = "raspberrypi3"') 38 self.append_config('MACHINE = "raspberrypi3"')
53 self.append_config('SOTA_CLIENT_PROV = " aktualizr-shared-prov "') 39 self.append_config('SOTA_CLIENT_PROV = " aktualizr-shared-prov "')
54 40
55 def tearDownLocal(self): 41 def tearDownLocal(self):
56 if self.meta_qemu:
57 runCmd('bitbake-layers add-layer "%s"' % self.meta_qemu, ignore_status=True)
58 if self.meta_upd_rpi: 42 if self.meta_upd_rpi:
59 runCmd('bitbake-layers remove-layer "%s"' % self.meta_upd_rpi, ignore_status=True) 43 runCmd('bitbake-layers remove-layer "%s"' % self.meta_upd_rpi, ignore_status=True)
60 if self.meta_rpi: 44 if self.meta_rpi:
diff --git a/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb b/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
index 394531e..40a3958 100644
--- a/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
+++ b/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
@@ -15,7 +15,7 @@ SRC_URI = " \
15 " 15 "
16PR = "r1" 16PR = "r1"
17 17
18RDEPENDS_${PN} = "systemd" 18REQUIRED_DISTRO_FEATURES_${PN} = "systemd"
19RCONFLICTS_${PN} = "connman" 19RCONFLICTS_${PN} = "connman"
20 20
21S = "${WORKDIR}" 21S = "${WORKDIR}"
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb
index 0427c3c..6cec05a 100644
--- a/recipes-sota/aktualizr/aktualizr_git.bb
+++ b/recipes-sota/aktualizr/aktualizr_git.bb
@@ -15,7 +15,7 @@ RDEPENDS_${PN}-ptest += "bash cmake curl python3-misc python3-modules openssl-bi
15PV = "1.0+git${SRCPV}" 15PV = "1.0+git${SRCPV}"
16PR = "7" 16PR = "7"
17 17
18GARAGE_SIGN_PV = "0.7.0-49-g5ffd420" 18GARAGE_SIGN_PV = "0.7.0-59-gf6013d6"
19 19
20SRC_URI = " \ 20SRC_URI = " \
21 gitsm://github.com/advancedtelematic/aktualizr;branch=${BRANCH};name=aktualizr \ 21 gitsm://github.com/advancedtelematic/aktualizr;branch=${BRANCH};name=aktualizr \
@@ -27,10 +27,10 @@ SRC_URI = " \
27 ${@ d.expand("https://ats-tuf-cli-releases.s3-eu-central-1.amazonaws.com/cli-${GARAGE_SIGN_PV}.tgz;unpack=0;name=garagesign") if d.getVar('GARAGE_SIGN_AUTOVERSION') != '1' else ''} \ 27 ${@ d.expand("https://ats-tuf-cli-releases.s3-eu-central-1.amazonaws.com/cli-${GARAGE_SIGN_PV}.tgz;unpack=0;name=garagesign") if d.getVar('GARAGE_SIGN_AUTOVERSION') != '1' else ''} \
28 " 28 "
29 29
30SRC_URI[garagesign.md5sum] = "de0877ecb693fd48ec11052e51b0ff1a" 30SRC_URI[garagesign.md5sum] = "3d38908f9b536a02cc73778b11bbc32e"
31SRC_URI[garagesign.sha256sum] = "cf25759574c9c1206835daeaf6fc345f6db7b5ccdb95fb828c86d7451f78f0aa" 31SRC_URI[garagesign.sha256sum] = "eceeb16a781e0e8d1f554defbcd5bbcea86d448ebd350fc6a2529372bf867dba"
32 32
33SRCREV = "fa59e33208d3b1dc690a30ce8339b3b4162f8022" 33SRCREV = "662aa23f0b9c97a2c93a428438dacae72333c751"
34BRANCH ?= "master" 34BRANCH ?= "master"
35 35
36S = "${WORKDIR}/git" 36S = "${WORKDIR}/git"
@@ -55,7 +55,6 @@ PACKAGECONFIG[warning-as-error] = "-DWARNING_AS_ERROR=ON,-DWARNING_AS_ERROR=OFF,
55PACKAGECONFIG[ostree] = "-DBUILD_OSTREE=ON,-DBUILD_OSTREE=OFF,ostree," 55PACKAGECONFIG[ostree] = "-DBUILD_OSTREE=ON,-DBUILD_OSTREE=OFF,ostree,"
56PACKAGECONFIG[hsm] = "-DBUILD_P11=ON,-DBUILD_P11=OFF,libp11," 56PACKAGECONFIG[hsm] = "-DBUILD_P11=ON,-DBUILD_P11=OFF,libp11,"
57PACKAGECONFIG[sota-tools] = "-DBUILD_SOTA_TOOLS=ON ${GARAGE_SIGN_OPS},-DBUILD_SOTA_TOOLS=OFF,glib-2.0," 57PACKAGECONFIG[sota-tools] = "-DBUILD_SOTA_TOOLS=ON ${GARAGE_SIGN_OPS},-DBUILD_SOTA_TOOLS=OFF,glib-2.0,"
58PACKAGECONFIG[systemd] = "-DBUILD_SYSTEMD=ON,-DBUILD_SYSTEMD=OFF,systemd,"
59PACKAGECONFIG[load-tests] = "-DBUILD_LOAD_TESTS=ON,-DBUILD_LOAD_TESTS=OFF," 58PACKAGECONFIG[load-tests] = "-DBUILD_LOAD_TESTS=ON,-DBUILD_LOAD_TESTS=OFF,"
60PACKAGECONFIG[serialcan] = ",,,slcand-start" 59PACKAGECONFIG[serialcan] = ",,,slcand-start"
61PACKAGECONFIG[ubootenv] = ",,,u-boot-fw-utils aktualizr-uboot-env-rollback" 60PACKAGECONFIG[ubootenv] = ",,,u-boot-fw-utils aktualizr-uboot-env-rollback"
diff --git a/recipes-sota/ostree/files/touch-ostree b/recipes-sota/ostree/files/touch-ostree
new file mode 100755
index 0000000..28cb672
--- /dev/null
+++ b/recipes-sota/ostree/files/touch-ostree
@@ -0,0 +1,21 @@
1#!/bin/sh
2### BEGIN INIT INFO
3# Provides: touch-ostree
4# Required-Start: $network $remote_fs
5# Required-Stop: $network $remote_fs
6# Default-Start: 2 3 4 5
7# Default-Stop: 0 1 6
8# Short-Description: Indicate OSTree boot
9### END INIT INFO
10
11case "$1" in
12 start)
13 touch /run/ostree-booted
14 ;;
15 stop)
16 ;;
17 *)
18 echo "Usage: /etc/init.d/touch-ostree {start|stop}"
19 exit 1
20 ;;
21esac
diff --git a/recipes-sota/ostree/ostree-booted_1.0.bb b/recipes-sota/ostree/ostree-booted_1.0.bb
new file mode 100644
index 0000000..d74cf24
--- /dev/null
+++ b/recipes-sota/ostree/ostree-booted_1.0.bb
@@ -0,0 +1,15 @@
1SUMMARY = "Indicate an OSTree boot"
2DESCRIPTION = "Indicate an OSTree boot"
3LICENSE = "MPL-2.0"
4LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad"
5SRC_URI = "file://touch-ostree"
6
7inherit allarch update-rc.d
8
9INITSCRIPT_NAME = "touch-ostree"
10INITSCRIPT_PARAMS = "start 8 2 3 4 5 . stop 20 0 1 6 ."
11
12do_install() {
13 install -d ${D}${sysconfdir}/init.d
14 install -m 0755 ${WORKDIR}/touch-ostree ${D}${sysconfdir}/init.d/touch-ostree
15}
diff --git a/scripts/envsetup.sh b/scripts/envsetup.sh
index 5827bc2..19a5c94 100755
--- a/scripts/envsetup.sh
+++ b/scripts/envsetup.sh
@@ -3,9 +3,13 @@
3SCRIPT="envsetup.sh" 3SCRIPT="envsetup.sh"
4MACHINE="$1" 4MACHINE="$1"
5BUILDDIR="build" 5BUILDDIR="build"
6DISTRO="poky-sota-systemd"
7BASE_CONF="local.conf.base.append"
8declare -A supported_distros=( ["poky-sota-systemd"]="local.conf.systemd.append" ["poky-sota"]="local.conf.base.append" )
6 9
7[[ "$#" -lt 1 ]] && { echo "Usage: ${SCRIPT} <machine> [builddir]"; return 1; } 10[[ "$#" -lt 1 ]] && { echo "Usage: ${SCRIPT} <machine> [builddir] [distro=< poky-sota-systemd | poky-sota >]"; return 1; }
8[[ "$#" -eq 2 ]] && { BUILDDIR="$2"; } 11[[ "$#" -ge 2 ]] && { BUILDDIR="$2"; }
12[[ "$#" -eq 3 ]] && { DISTRO="$3"; }
9 13
10# detect if this script is sourced: see http://stackoverflow.com/a/38128348/6255594 14# detect if this script is sourced: see http://stackoverflow.com/a/38128348/6255594
11SOURCED=0 15SOURCED=0
@@ -22,6 +26,8 @@ if [[ $SOURCED -ne 1 ]]; then
22fi 26fi
23 27
24METADIR=${METADIR:-${SOURCEDIR}/../..} 28METADIR=${METADIR:-${SOURCEDIR}/../..}
29DISTRO_CONF=${supported_distros[$DISTRO]}
30[[ -n $DISTRO_CONF ]] && { echo "Using $DISTRO_CONF for the specified distro $DISTRO"; } || { echo "The specified distro $DISTRO is not supported"; return 1; }
25 31
26if [[ ! -f "${BUILDDIR}/conf/local.conf" ]]; then 32if [[ ! -f "${BUILDDIR}/conf/local.conf" ]]; then
27 source "$METADIR/poky/oe-init-build-env" "$BUILDDIR" 33 source "$METADIR/poky/oe-init-build-env" "$BUILDDIR"
@@ -30,7 +36,13 @@ if [[ ! -f "${BUILDDIR}/conf/local.conf" ]]; then
30 cat "${METADIR}/meta-updater/conf/include/bblayers/sota.inc" >> conf/bblayers.conf 36 cat "${METADIR}/meta-updater/conf/include/bblayers/sota.inc" >> conf/bblayers.conf
31 cat "${METADIR}/meta-updater/conf/include/bblayers/sota_${MACHINE}.inc" >> conf/bblayers.conf 37 cat "${METADIR}/meta-updater/conf/include/bblayers/sota_${MACHINE}.inc" >> conf/bblayers.conf
32 38
33 sed "s/##MACHINE##/$MACHINE/g" "${METADIR}/meta-updater/conf/local.conf.sample.append" >> conf/local.conf 39 sed -e "s/##MACHINE##/$MACHINE/g" \
40 -e "s/##DISTRO##/$DISTRO/g" \
41 "${METADIR}/meta-updater/conf/$BASE_CONF" >> conf/local.conf
42
43 if [ "$BASE_CONF" != "$DISTRO_CONF" ]; then
44 cat "${METADIR}/meta-updater/conf/$DISTRO_CONF" >> conf/local.conf
45 fi
34else 46else
35 source "$METADIR/poky/oe-init-build-env" "$BUILDDIR" 47 source "$METADIR/poky/oe-init-build-env" "$BUILDDIR"
36fi 48fi