summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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--recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb2
-rw-r--r--recipes-extended/ostree/ostree/0001-Makefile-declare-ostree_boot_SCRIPTS-and-append-valu.patch60
-rw-r--r--recipes-extended/ostree/ostree_%.bbappend18
-rwxr-xr-xrecipes-sota/ostree/files/touch-ostree21
-rw-r--r--recipes-sota/ostree/ostree-booted_1.0.bb15
-rw-r--r--recipes-sota/ostree/ostree_git.bb69
-rwxr-xr-xscripts/envsetup.sh18
12 files changed, 187 insertions, 94 deletions
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/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-extended/ostree/ostree/0001-Makefile-declare-ostree_boot_SCRIPTS-and-append-valu.patch b/recipes-extended/ostree/ostree/0001-Makefile-declare-ostree_boot_SCRIPTS-and-append-valu.patch
new file mode 100644
index 0000000..1f8a06b
--- /dev/null
+++ b/recipes-extended/ostree/ostree/0001-Makefile-declare-ostree_boot_SCRIPTS-and-append-valu.patch
@@ -0,0 +1,60 @@
1From de8e0765a4a54f0367999f682ce4cc53bfaa60b0 Mon Sep 17 00:00:00 2001
2From: Ricardo Salveti <ricardo@foundries.io>
3Date: Tue, 5 Nov 2019 21:16:07 -0300
4Subject: [PATCH] Makefile: declare ostree_boot_SCRIPTS and append values
5
6ostree_boot_SCRIPTS was being set on both Makefile-boot.am and
7Makefile-switchroot.am, causing the first one to be replaced by the
8other at the final Makefile, so declare as empty and append on both
9places instead.
10
11Upstream-Status: Backport
12
13Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
14---
15 Makefile-boot.am | 2 +-
16 Makefile-decls.am | 1 +
17 Makefile-switchroot.am | 2 +-
18 3 files changed, 3 insertions(+), 2 deletions(-)
19
20diff --git a/Makefile-boot.am b/Makefile-boot.am
21index b4d4a1af..b51928f0 100644
22--- a/Makefile-boot.am
23+++ b/Makefile-boot.am
24@@ -60,7 +60,7 @@ grub2configdir = $(sysconfdir)/grub.d
25 INSTALL_DATA_HOOKS += install-grub2-config-hook
26 else
27 # We're using our internal generator
28-ostree_boot_SCRIPTS = src/boot/grub2/ostree-grub-generator
29+ostree_boot_SCRIPTS += src/boot/grub2/ostree-grub-generator
30 endif
31
32 EXTRA_DIST += src/boot/dracut/module-setup.sh \
33diff --git a/Makefile-decls.am b/Makefile-decls.am
34index 115c19fb..086ee138 100644
35--- a/Makefile-decls.am
36+++ b/Makefile-decls.am
37@@ -47,6 +47,7 @@ typelibdir = $(libdir)/girepository-1.0
38 typelib_DATA =
39 gsettings_SCHEMAS =
40 ostree_bootdir = $(prefix)/lib/ostree
41+ostree_boot_SCRIPTS =
42 ostree_boot_PROGRAMS =
43
44 # This initializes some more variables
45diff --git a/Makefile-switchroot.am b/Makefile-switchroot.am
46index ff44d4bc..b81b843f 100644
47--- a/Makefile-switchroot.am
48+++ b/Makefile-switchroot.am
49@@ -42,7 +42,7 @@ if BUILDOPT_USE_STATIC_COMPILER
50 # to get autotools to install this as an executable but without generating rules
51 # to make it itself which we have specified manually. See
52 # https://lists.gnu.org/archive/html/help-gnu-utils/2007-01/msg00007.html
53-ostree_boot_SCRIPTS = ostree-prepare-root
54+ostree_boot_SCRIPTS += ostree-prepare-root
55
56 ostree-prepare-root : $(ostree_prepare_root_SOURCES)
57 $(STATIC_COMPILER) -o $@ -static $(top_srcdir)/src/switchroot/ostree-prepare-root.c $(ostree_prepare_root_CPPFLAGS) $(AM_CFLAGS) $(DEFAULT_INCLUDES) -DOSTREE_PREPARE_ROOT_STATIC=1
58--
592.24.0
60
diff --git a/recipes-extended/ostree/ostree_%.bbappend b/recipes-extended/ostree/ostree_%.bbappend
new file mode 100644
index 0000000..cf2f24f
--- /dev/null
+++ b/recipes-extended/ostree/ostree_%.bbappend
@@ -0,0 +1,18 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2
3SRC_URI += " \
4 file://0001-Makefile-declare-ostree_boot_SCRIPTS-and-append-valu.patch \
5"
6
7PACKAGECONFIG_append = " curl libarchive static"
8PACKAGECONFIG_class-native_append = " curl"
9PACKAGECONFIG_remove = "soup"
10PACKAGECONFIG_class-native_remove = "soup"
11
12EXTRA_OECONF += " \
13 --with-builtin-grub2-mkconfig \
14"
15
16FILES_${PN} += " \
17 ${libdir}/ostree/ostree-grub-generator \
18"
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/recipes-sota/ostree/ostree_git.bb b/recipes-sota/ostree/ostree_git.bb
deleted file mode 100644
index 93ae6e7..0000000
--- a/recipes-sota/ostree/ostree_git.bb
+++ /dev/null
@@ -1,69 +0,0 @@
1SUMMARY = "Tool for managing bootable, immutable, versioned filesystem trees"
2HOMEPAGE = "https://ostree.readthedocs.io/en/latest/"
3LICENSE = "LGPLv2+"
4LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
5
6inherit autotools pkgconfig systemd bash-completion gobject-introspection
7
8SRC_URI = "gitsm://github.com/ostreedev/ostree.git;branch=master"
9
10SRCREV = "f3eba6bcec39c163eb831c02c148ffa483292906"
11
12PV = "v2018.9"
13
14S = "${WORKDIR}/git"
15
16BBCLASSEXTEND = "native"
17
18DEPENDS += "attr bison-native libarchive libcap glib-2.0 gpgme fuse e2fsprogs curl xz"
19DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
20RDEPENDS_${PN}-dracut = "bash"
21
22CFLAGS_append = " -Wno-error=missing-prototypes"
23EXTRA_OECONF = "--disable-gtk-doc --disable-man --with-smack --with-builtin-grub2-mkconfig --with-curl --without-soup"
24EXTRA_OECONF_append_class-native = " --enable-wrpseudo-compat"
25
26PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
27PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-dracut"
28
29# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
30# do_configure stage so we do depend on it
31SYSROOT_DIR = "${STAGING_DIR_TARGET}"
32SYSROOT_DIR_class-native = "${STAGING_DIR_NATIVE}"
33do_configure[vardeps] += "SYSROOT_DIR"
34
35SYSTEMD_SERVICE_${PN} = "ostree-prepare-root.service ostree-remount.service ostree-finalize-staged.service"
36
37export BUILD_SYS
38export HOST_SYS
39export STAGING_INCDIR
40export STAGING_LIBDIR
41
42do_configure_prepend() {
43 unset docdir
44 NOCONFIGURE=1 "${S}/autogen.sh"
45}
46
47do_install_append_class-native() {
48 create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
49}
50
51PACKAGES += " \
52 ${PN}-switchroot \
53 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'ostree-dracut', '', d)} \
54"
55
56FILES_${PN} = "${bindir} \
57 ${sysconfdir}/ostree \
58 ${datadir}/ostree \
59 ${libdir}/*.so.* \
60 ${libdir}/ostree/ostree-grub-generator \
61 ${libdir}/ostree/ostree-remount \
62 ${libdir}/girepository-1.0/* \
63 ${@bb.utils.contains('DISTRO_FEATURES','systemd','${libdir}/tmpfiles.d', '', d)} \
64 ${@bb.utils.contains('DISTRO_FEATURES','systemd','${systemd_unitdir}/system/*.path', '', d)} \
65 ${@bb.utils.contains('DISTRO_FEATURES','systemd','${systemd_unitdir}/system-generators', '', d)} \
66"
67FILES_${PN}-dev += " ${datadir}/gir-1.0"
68FILES_${PN}-dracut = "${sysconfdir}/dracut.conf.d ${libdir}/dracut"
69FILES_${PN}-switchroot = "${libdir}/ostree/ostree-prepare-root"
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