[OE-core] [PATCH] systemd: update version from 216 to 218

Bottazzini, Bruno bruno.bottazzini at intel.com
Tue Feb 3 21:33:22 UTC 2015


On Tue, 3 Feb 2015 13:23:32 -0800
Randy Witt <randy.e.witt at linux.intel.com> wrote:

> On 02/03/2015 10:21 AM, Bruno Bottazzini wrote:
> > Spliting into packages to be able to choose what to be installed.
> > The final result may get smaller, if the user wanted to.
> > By default it will install the whole systemd which may be big.
> > ---
> >   ...r-executing-scripts-under-etc-systemd-218.patch |  131 ++
> >   .../systemd/systemd_218-pam-fix-fallocate.patch    |   91 ++
> >   meta/recipes-core/systemd/systemd_218.bb           | 1251
> > ++++++++++++++++++++ 3 files changed, 1473 insertions(+)
> >   create mode 100644
> > meta/recipes-core/systemd/systemd/0001-add-support-for-executing-scripts-under-etc-systemd-218.patch
> > create mode 100644
> > meta/recipes-core/systemd/systemd/systemd_218-pam-fix-fallocate.patch
> > create mode 100644 meta/recipes-core/systemd/systemd_218.bb
> >
> > diff --git
> > a/meta/recipes-core/systemd/systemd/0001-add-support-for-executing-scripts-under-etc-systemd-218.patch
> > b/meta/recipes-core/systemd/systemd/0001-add-support-for-executing-scripts-under-etc-systemd-218.patch
> > new file mode 100644 index 0000000..d50f2cb --- /dev/null
> > +++
> > b/meta/recipes-core/systemd/systemd/0001-add-support-for-executing-scripts-under-etc-systemd-218.patch
> > @@ -0,0 +1,131 @@ +From 0dec519c563654148d3cdd363d2598b50313de60
> > Mon Sep 17 00:00:00 2001 +From: Bruno Bottazzini
> > <bruno.bottazzini at intel.com> +Date: Mon, 2 Feb 2015 13:53:24 -0200
> > +Subject: [PATCH 1/1] add support for executing scripts
> > under /etc/rcS.d/ +
> > +To be compatible, all services translated from scripts
> > under /etc/rcS.d would +run before services translated from scripts
> > under /etc/rcN.d. +---
> > + src/sysv-generator/sysv-generator.c | 46
> > ++++++++++++++++++++++++++++---------
> > + 1 file changed, 35 insertions(+), 11 deletions(-)
> > +
> > +diff --git a/src/sysv-generator/sysv-generator.c
> > b/src/sysv-generator/sysv-generator.c +index b8b77aa..9494afb 100644
> > +--- a/src/sysv-generator/sysv-generator.c
> > ++++ b/src/sysv-generator/sysv-generator.c
> > +@@ -42,7 +42,8 @@
> > +
> > + typedef enum RunlevelType {
> > +         RUNLEVEL_UP,
> > +-        RUNLEVEL_DOWN
> > ++        RUNLEVEL_DOWN,
> > ++        RUNLEVEL_SYSINIT
> > + } RunlevelType;
> > +
> > + static const struct {
> > +@@ -57,6 +58,9 @@ static const struct {
> > +         { "rc4.d",  SPECIAL_RUNLEVEL4_TARGET, RUNLEVEL_UP },
> > +         { "rc5.d",  SPECIAL_RUNLEVEL5_TARGET, RUNLEVEL_UP },
> > +
> > ++        /* Debian style rcS.d, also adopted by OE */
> > ++        { "rcS.d",  SPECIAL_SYSINIT_TARGET,   RUNLEVEL_SYSINIT},
> > ++
> > +         /* Standard SysV runlevels for shutdown */
> > +         { "rc0.d",  SPECIAL_POWEROFF_TARGET,  RUNLEVEL_DOWN },
> > +         { "rc6.d",  SPECIAL_REBOOT_TARGET,    RUNLEVEL_DOWN }
> > +@@ -65,7 +69,7 @@ static const struct {
> > +            directories in this order, and we want to make sure
> > that
> > +            sysv_start_priority is known when we first load the
> > +            unit. And that value we only know from S links. Hence
> > +-           UP must be read before DOWN */
> > ++           UP/SYSINIT must be read before DOWN */
> > + };
> > +
> > + typedef struct SysvStub {
> > +@@ -81,6 +85,8 @@ typedef struct SysvStub {
> > +         char **conflicts;
> > +         bool has_lsb;
> > +         bool reload;
> > ++        bool default_dependencies;
> > ++        bool from_rcsd;
> > + } SysvStub;
> > +
> > + const char *arg_dest = "/tmp";
> > +@@ -189,6 +195,8 @@ static int generate_unit_file(SysvStub *s) {
> > +                 "Description=%s\n",
> > +                 s->path, s->description);
> > +
> > ++        if (!s->default_dependencies)
> > ++                fprintf(f, "DefaultDependencies=no\n");
> > +         if (!isempty(before))
> > +                 fprintf(f, "Before=%s\n", before);
> > +         if (!isempty(after))
> > +@@ -717,15 +725,26 @@ static int fix_order(SysvStub *s, Hashmap
> > *all_services) {
> > +                         r = strv_extend(&s->after, other->name);
> > +                         if (r < 0)
> > +                                 return log_oom();
> > +-                }
> > +-                else if (other->sysv_start_priority >
> > s->sysv_start_priority) { +-                        r =
> > strv_extend(&s->before, other->name); ++               } else if
> > (other->from_rcsd && !s->from_rcsd) { ++                        r =
> > strv_extend(&s->after, other->name);
> > +                         if (r < 0)
> > +                                 return log_oom();
> > +-                }
> > +-                else
> > +-                        continue;
> > +-
> > ++        } else {
> > ++          /* All scripts under /etc/rcS.d should execute before
> > scripts under ++           * /etc/rcN.d */
> > ++                 if (!other->from_rcsd && s->from_rcsd) {
> > ++                         r = strv_extend(&s->before, other->name);
> > ++                                if (r < 0)
> > ++                                        return log_oom();
> > ++                        }
> > ++                        else if (other->sysv_start_priority >
> > s->sysv_start_priority) { ++                                r =
> > strv_extend(&s->before, other->name);
> > ++                                if (r < 0)
> > ++                                        return log_oom();
> > ++                        } ++                        else
> > ++                                continue;
> > ++               }
> > +                 /* FIXME: Maybe we should compare the name here
> > lexicographically? */
> > +         }
> > +
> > +@@ -784,6 +803,8 @@ static int enumerate_sysv(LookupPaths lp,
> > Hashmap *all_services) {
> > +                                 return log_oom();
> > +
> > +                         service->sysv_start_priority = -1;
> > ++                        service->default_dependencies = true;
> > ++                        service->from_rcsd = false;
> > +                         service->name = name;
> > +                         service->path = fpath;
> > +
> > +@@ -869,9 +890,11 @@ static int
> > set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services)
> > { +
> > +                                 if (de->d_name[0] == 'S')  {
> > +
> > +-                                        if (rcnd_table[i].type ==
> > RUNLEVEL_UP) { ++                                        if
> > (rcnd_table[i].type == RUNLEVEL_UP || rcnd_table[i].type ==
> > RUNLEVEL_SYSINIT) {
> > +
> > service->sysv_start_priority =
> > +                                                         MAX(a*10
> > + b, service->sysv_start_priority);
> > ++
> > service->default_dependencies = (rcnd_table[i].type ==
> > RUNLEVEL_SYSINIT)?false:true;
> > ++
> > service->from_rcsd = (rcnd_table[i].type ==
> > RUNLEVEL_SYSINIT)?true:false;
> > +                                         }
> > +
> > +                                         r =
> > set_ensure_allocated(&runlevel_services[i], NULL); +@@ -883,7
> > +906,8 @@ static int set_dependencies_from_rcnd(LookupPaths lp,
> > Hashmap *all_services) {
> > +                                                 goto finish;
> > +
> > +                                 } else if (de->d_name[0] == 'K' &&
> > +-                                           (rcnd_table[i].type ==
> > RUNLEVEL_DOWN)) { ++
> > (rcnd_table[i].type == RUNLEVEL_DOWN ||
> > ++                                         rcnd_table[i].type ==
> > RUNLEVEL_SYSINIT)) { +
> > +                                         r =
> > set_ensure_allocated(&shutdown_services, NULL);
> > +                                         if (r < 0)
> > +--
> > +1.9.1
> > +
> > diff --git
> > a/meta/recipes-core/systemd/systemd/systemd_218-pam-fix-fallocate.patch
> > b/meta/recipes-core/systemd/systemd/systemd_218-pam-fix-fallocate.patch
> > new file mode 100644 index 0000000..2fbf4b4 --- /dev/null
> > +++
> > b/meta/recipes-core/systemd/systemd/systemd_218-pam-fix-fallocate.patch
> > @@ -0,0 +1,91 @@ +From 84c87cf474f9ffd23332a40b7e06900ff8272a69 Mon
> > Sep 17 00:00:00 2001 +From: Bruno Bottazzini
> > <bruno.bottazzini at intel.com> +Date: Fri, 30 Jan 2015 18:14:42 -0200
> > +Subject: [PATCH 1/1] This patch is uclibc specific, thus not
> > suitable for
> > + upstream.
> > +
> > +---
> > + src/journal/journal-file.c  | 15 ++++++++++++++-
> > + src/journal/journald-kmsg.c | 16 ++++++++++++++--
> > + 2 files changed, 28 insertions(+), 3 deletions(-)
> > +
> > +diff --git a/src/journal/journal-file.c
> > b/src/journal/journal-file.c +index ec12e89..3d21528 100644
> > +--- a/src/journal/journal-file.c
> > ++++ b/src/journal/journal-file.c
> > +@@ -35,6 +35,7 @@
> > + #include "lookup3.h"
> > + #include "compress.h"
> > + #include "fsprg.h"
> > ++#include "config.h"
> > +
> > + #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem))
> > + #define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem))
> > +@@ -354,7 +355,7 @@ static int journal_file_fstat(JournalFile *f) {
> > +
> > + static int journal_file_allocate(JournalFile *f, uint64_t offset,
> > uint64_t size) {
> > +         uint64_t old_size, new_size;
> > +-        int r;
> > ++        int r = 0;
> > +
> > +         assert(f);
> > +
> > +@@ -418,9 +419,21 @@ static int journal_file_allocate(JournalFile
> > *f, uint64_t offset, uint64_t size)
> > +         /* Note that the glibc fallocate() fallback is very
> > +            inefficient, hence we try to minimize the allocation
> > area
> > +            as we can. */
> > ++#ifdef HAVE_POSIX_FALLOCATE
> > +         r = posix_fallocate(f->fd, old_size, new_size - old_size);
> > +         if (r != 0)
> > +                 return -r;
> > ++#else
> > ++        /* Write something every 512 bytes to make sure the block
> > is allocated */ ++        uint64_t len = new_size - old_size;
> > ++        uint64_t offset = old_size;
> > ++        for (offset += (len-1) % 512; len > 0; offset += 512) {
> > ++                len -= 512;
> > ++                if (pwrite(f->fd, "", 1, offset) != 1)
> > ++                        return -errno;
> > ++        }
> > ++
> > ++#endif /* HAVE_POSIX_FALLOCATE */
> > +
> > +         f->header->arena_size = htole64(new_size -
> > le64toh(f->header->header_size)); +
> > +diff --git a/src/journal/journald-kmsg.c
> > b/src/journal/journald-kmsg.c +index aca4571..f3c2c19 100644
> > +--- a/src/journal/journald-kmsg.c
> > ++++ b/src/journal/journald-kmsg.c
> > +@@ -437,6 +437,7 @@ fail:
> > + int server_open_kernel_seqnum(Server *s) {
> > +         _cleanup_close_ int fd;
> > +         uint64_t *p;
> > ++        int r = 0;
> > +
> > +         assert(s);
> > +
> > +@@ -449,8 +450,19 @@ int server_open_kernel_seqnum(Server *s) {
> > +                 log_error_errno(errno, "Failed to
> > open /run/systemd/journal/kernel-seqnum, ignoring: %m");
> > +                 return 0;
> > +         }
> > +-
> > +-        if (posix_fallocate(fd, 0, sizeof(uint64_t)) < 0) {
> > ++#ifdef HAVE_POSIX_FALLOCATE
> > ++        r = posix_fallocate(fd, 0, sizeof(uint64_t));
> > ++#else
> > ++       /* Use good old method to write zeros into the journal file
> > ++          perhaps very inefficient yet working. */
> > ++       char *buf = alloca(sizeof(uint64_t));
> > ++       off_t oldpos = lseek(fd, 0, SEEK_CUR);
> > ++       bzero(buf, sizeof(uint64_t));
> > ++       lseek(fd, 0, SEEK_SET);
> > ++       r = write(fd, buf, sizeof(uint64_t));
> > ++       lseek(fd, oldpos, SEEK_SET);
> > ++#endif /* HAVE_POSIX_FALLOCATE */
> > ++       if (r < 0) {
> > +                 log_error_errno(errno, "Failed to allocate
> > sequential number file, ignoring: %m");
> > +                 return 0;
> > +         }
> > +--
> > +1.9.1
> > +
> > diff --git a/meta/recipes-core/systemd/systemd_218.bb
> > b/meta/recipes-core/systemd/systemd_218.bb new file mode 100644
> > index 0000000..9f9dbb0
> > --- /dev/null
> > +++ b/meta/recipes-core/systemd/systemd_218.bb
> > @@ -0,0 +1,1251 @@
> > +SUMMARY = "System and service manager for Linux, replacing
> > SysVinit" +HOMEPAGE =
> > "http://www.freedesktop.org/wiki/Software/systemd" +
> > +LICENSE = "GPLv2 & LGPLv2.1 & MIT"
> > +LIC_FILES_CHKSUM =
> > "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> > +
> > file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
> > +
> > file://LICENSE.MIT;md5=544799d0b492f119fa04641d1b8868ed" +
> > +PE = "1"
> > +
> > +DEPENDS = "docbook-sgml-dtd-4.1-native intltool-native
> > gperf-native libcap qemu-native curl glibc" +DEPENDS +=
> > "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" +
> > +SECTION = "base/shell"
> > +
> > +inherit gtk-doc pkgconfig autotools perlnative update-rc.d
> > update-alternatives qemu systemd ptest gettext +
> > +SRCREV = "820aced6f6067a6b7c57b7d36e44f64378870cbf"
> > +
> > +PV = "218+git${SRCPV}"
> > +
> > +SRC_URI =
> > "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git
> > \
> > +           file://systemd-pam-configure-check-uclibc.patch \
> > +           file://systemd-pam-fix-execvpe.patch \
> > +           file://systemd-pam-fix-mkostemp.patch \
> > +           file://systemd_218-pam-fix-fallocate.patch \
> > +           file://optional_secure_getenv.patch \
> > +           file://uclibc-get-physmem.patch \
> > +
> > file://0001-add-support-for-executing-scripts-under-etc-systemd-218.patch
> > \
> > +           file://0001-systemd-user-avoid-using-system-auth.patch \
> > +           file://touchscreen.rules \
> > +           file://00-create-volatile.conf \
> > +           file://init \
> > +           file://run-ptest \
> > +          "
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +SRC_URI_append_libc-uclibc = "\
> > +
> > file://systemd-pam-fix-getty-unit.patch \
> > +                            "
> > +LDFLAGS_append_libc-uclibc = " -lrt"
> > +
> > +GTKDOC_DOCDIR = "${S}/docs/"
> > +
> > +# regardless of PACKAGECONFIG, libgcrypt is always required to
> > expand +# the AM_PATH_LIBGCRYPT autoconf macro
> > +DEPENDS += "libgcrypt"
> > +
> > +PACKAGECONFIG ??= "acl blkid efi kmod gcrypt lz4 xz libidn"
> > +
> > +PACKAGECONFIG[glib] = "--enable-gudev,--disable-gudev,glib-2.0"
> > +
> > +
> > +########################################################################
> > +# Highly Recommended Section
> > +########################################################################
> > +
> > +# ACL (Access Control List), see
> > http://savannah.nongnu.org/projects/acl +# used by systemd,
> > journald and logind to provide fine grained access to files. +#
> > NOTE: do not remove unless you know what you are doing.
> > +PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl" +
> > +# blkid from util-linux to read block devices, see
> > ftp://ftp.kernel.org/pub/linux/utils/util-linux +# required to:
> > +#  - discover and mount GPT partitions as /, /home and /srv based
> > on GUIDs. +#  - nspawn to locate partitions
> > +#  - udev to probe and use block devices
> > +# NOTE: do not remove unless you know what you are doing.
> > +PACKAGECONFIG[blkid] = "--enable-blkid,--disable-blkid,util-linux"
> > +
> > +# EFI support in systemd and udev, includes discovery and mount of
> > partitions and efivars. +# NOTE: do not remove unless you know what
> > you are doing. +PACKAGECONFIG[efi] = "--enable-efi,--disable-efi"
> > +
> > +# kmod to load kernel modules, provides modprobe, insmod et al,
> > see https://www.kernel.org/pub/linux/utils/kernel/kmod/ +# required
> > to: +#  - let systemd load required modules automatically (ipv6,
> > unix, kdbus...) +#  - let udev load modules for devices (hotplug
> > and coldplug) using a built-in +# NOTE: do not remove unless you
> > know what you are doing. +PACKAGECONFIG[kmod] =
> > "--enable-kmod,--disable-kmod,kmod" +
> > +# D-Bus policy and authentication framework, see
> > http://www.freedesktop.org/wiki/Software/polkit/ +# WARN: no
> > package "polkit" in poky +PACKAGECONFIG[polkit] =
> > "--enable-polkit,--disable-polkit,,polkit" +
> > +
> > +########################################################################
> > +# Security Section
> > +########################################################################
> > +
> > +# SELinux (Security Enhanced Linux), see
> > http://selinuxproject.org/page/Main_Page +# WARN: no package
> > "libselinux" in poky +PACKAGECONFIG[selinux] =
> > "--enable-selinux,--disable-selinux,libselinux" +
> > +# See http://people.redhat.com/sgrubb/audit/
> > +# WARN: no package "libaudit" in poky
> > +PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,libaudit"
> > +
> > +# SMACK (Simplified Mandatory Access Control Kernel), see
> > http://schaufler-ca.com/ +# needs Kernel CONFIG_SECURITY_SMACK
> > and /etc/smack/accesses.d/ to be useful, otherwise is unused.
> > +PACKAGECONFIG[smack] = "--enable-smack,--disable-smack" +
> > +# IMA (Integrity Measurement Architecture) setup, see
> > http://linux-ima.sourceforge.net/ +# needs Kernel CONFIG_IMA
> > and /etc/ima/ima-policy to be useful, otherwise is unused.
> > +PACKAGECONFIG[ima] = "--enable-ima,--disable-ima" +
> > +# AppArmor, proactively protects the operating system and
> > applications +# from external or internal threats, even zero-day
> > attacks, by +# enforcing good behavior and preventing even unknown
> > application flaws +# from being exploited. See
> > http://wiki.apparmor.net/index.php/Main_Page +# needs Kernel
> > CONFIG_SECURITY_APPARMOR to be useful, otherwise is unused. +#
> > WARN: no package "libapparmor" in poky +PACKAGECONFIG[apparmor] =
> > "--enable-apparmor,--disable-apparmor,libapparmor" +
> > +# SECCOMP provides syscall filtering and sandboxing, see
> > http://sourceforge.net/projects/libseccomp/ +# It is used by
> > browsers to implement their plugins. +# systemd will allow
> > restricting the syscalls available to an application with a line
> > like below +# in [Service] block: +#    SystemCallFilter=brk mmap
> > access open fstat close read fstat mprotect arch_prctl munmap write
> > +# needs Kernel CONFIG_SECCOMP, CONFIG_SECCOMP_FILTER and
> > CONFIG_HAVE_ARCH_SECCOMP_FILTER to be useful. +# WARN: no package
> > "libseccomp" in poky +PACKAGECONFIG[seccomp] =
> > "--enable-seccomp,--disable-seccomp,libseccomp" + +
> > +########################################################################
> > +# Journal Section
> > +########################################################################
> > +
> > +# extract ELF symbols and store the stack trace along the coredump
> > +PACKAGECONFIG[elfutils] =
> > "--enable-elfutils,--disable-elfutils,elfutils (>= 0.158)" +
> > +# Sign the journal for anti-tampering
> > +PACKAGECONFIG[gcrypt] =
> > "--enable-gcrypt,--disable-gcrypt,libgcrypt" +
> > +# Compress the journal (and coredumps stored in the journal) using
> > lz4 +PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
> > +
> > +# Compress the journal (and coredumps stored in the journal) using
> > xz (lzma) +# xz has lower priority than lz4 for compression, but
> > having both may help to extract and decompress +# journal entries
> > generated in other systems. +PACKAGECONFIG[xz] =
> > "--enable-xz,--disable-xz,xz" +
> > +# when generating gcrypt verification keys (journalctl
> > --setup-keys), output the secret +# as QR code so it can be easily
> > scanned by a phone or systems with digital camera and QR scanner.
> > +# WARN: no package "libqrencode" in poky +PACKAGECONFIG[qrencode]
> > = "--enable-qrencode,--disable-qrencode,libqrencode" +
> > +
> > +########################################################################
> > +# Resolve Daemon Section
> > +########################################################################
> > +
> > +# IDN (Internationalized Domain Name) see
> > http://www.gnu.org/software/libidn/ +PACKAGECONFIG[libidn] =
> > "--enable-libidn,--disable-libidn,libidn" +
> > +CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill"
> > +
> > +# Helper variables to clarify locations.  This mirrors the logic
> > in systemd's +# build system.
> > +rootprefix ?= "${base_prefix}"
> > +rootlibdir ?= "${base_libdir}"
> > +rootlibexecdir = "${rootprefix}/lib"
> > +
> > +EXTRA_OECONF = " --with-rootprefix=${rootprefix} \
> > +                 --with-rootlibdir=${rootlibdir} \
> > +                 ${@bb.utils.contains('DISTRO_FEATURES', 'pam',
> > '--enable-pam', '--disable-pam', d)} \
> > +                 --disable-manpages \
> > +                 --disable-introspection \
> > +                 --disable-kdbus \
> > +                 --disable-terminal \
> > +                 --enable-split-usr \
> > +                 --without-python \
> > +                 --enable-libcurl \
> > +                 --enable-coredump \
> > +                 --enable-ldconfig \
> > +                 --enable-backlight \
> > +                 --enable-binfmt \
> > +                 --enable-bootchart \
> > +                 --enable-firstboot \
> > +                 --enable-hostnamed \
> > +                 --enable-localed \
> > +                 --enable-logind \
> > +                 --enable-machined \
> > +                 --enable-networkd \
> > +                 --enable-quotacheck \
> > +                 --enable-randomseed \
> > +                 --enable-resolved \
> > +                 --enable-rfkill \
> > +                 --enable-sysusers \
> > +                 --enable-vconsole \
> > +                 --with-sysvrcnd-path=${sysconfdir} \
> > +                 ac_cv_path_KILL=${base_bindir}/kill \
> > +               "
> > +
> > +# uclibc does not have NSS
> > +EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname "
> > +
> > +do_configure_prepend() {
> > +	export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS}
> > ${HOST_CC_ARCH}"
> > +	export NM="${HOST_PREFIX}gcc-nm"
> > +	export AR="${HOST_PREFIX}gcc-ar"
> > +	export RANLIB="${HOST_PREFIX}gcc-ranlib"
> > +	export KMOD="${base_bindir}/kmod"
> > +	if [ -d ${S}/units.pre_sed ] ; then
> > +		cp -r ${S}/units.pre_sed ${S}/units
> > +	else
> > +		cp -r ${S}/units ${S}/units.pre_sed
> > +	fi
> > +	sed -i -e 's:=/root:=${ROOT_HOME}:g' ${S}/units/*.service*
> > +	sed -i '/ln --relative --help/d' ${S}/configure.ac
> > +	sed -i -e 's:\$(LN_S) --relative -f:lnr:g' ${S}/Makefile.am
> > +	sed -i -e 's:\$(LN_S) --relative:lnr:g' ${S}/Makefile.am
> > +}
> > +
> > +do_install() {
> > +	autotools_do_install
> > +	install -d ${D}/${base_sbindir}
> > +
> > +	# Provide support for initramfs
> > +	[ ! -e ${D}/init ] && ln -s
> > ${rootlibexecdir}/systemd/systemd ${D}/init
> > +	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s
> > ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd +
> > +	# Create machine-id
> > +	# 20:12 < mezcalero> koen: you have three options: a) run
> > systemd-machine-id-setup at install time, b) have / read-only and
> > an empty file there (for stateless) and c) boot with / writable
> > +	touch ${D}${sysconfdir}/machine-id
> > +
> > +	install -m 0644 ${WORKDIR}/*.rules
> > ${D}${rootlibexecdir}/udev/rules.d/ +
> > +	install -m 0644 ${WORKDIR}/00-create-volatile.conf
> > ${D}${exec_prefix}/lib/tmpfiles.d/ +
> > +	if
> > ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)};
> > then
> > +		install -d ${D}${sysconfdir}/init.d
> > +		install -m 0755 ${WORKDIR}/init
> > ${D}${sysconfdir}/init.d/systemd-udevd
> > +		sed -i
> > s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd%
> > ${D}${sysconfdir}/init.d/systemd-udevd
> > +	fi
> > +
> > +	# Move libgudev back to ${rootlibdir} to keep backward
> > compatibility
> > +	if
> > ${@bb.utils.contains('PACKAGECONFIG','glib','true','false',d)}; then
> > +		if [ ${rootlibdir} != ${exec_prefix}/lib ]; then
> > +			mv -t ${D}${rootlibdir}
> > ${D}${exec_prefix}/lib/libgudev*
> > +		fi
> > +	fi
> > +
> > +        # Delete journal README, as log can be symlinked inside
> > volatile.
> > +        rm -f ${D}/${localstatedir}/log/README
> > +}
> > +
> > +do_install_ptest () {
> > +       install -d ${D}${PTEST_PATH}/test
> > +       cp -rf ${S}/test/* ${D}${PTEST_PATH}/test
> > +       install -m 0755  ${B}/test-udev ${D}${PTEST_PATH}/
> > +       install -d ${D}${PTEST_PATH}/build-aux
> > +       cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
> > +       cp -rf ${B}/rules ${D}${PTEST_PATH}/
> > +       # This directory needs to be there for udev-test.pl to work.
> > +       install -d ${D}${libdir}/udev/rules.d
> > +       cp ${B}/Makefile ${D}${PTEST_PATH}/
> > +       cp ${S}/test/sys.tar.xz ${D}${PTEST_PATH}/test
> > +       sed -i 's/"tree"/"ls"/' ${D}${PTEST_PATH}/test/udev-test.pl
> > +       sed -i 's#${S}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile
> > +       sed -i 's#${B}#${PTEST_PATH}#g' ${D}${PTEST_PATH}/Makefile
> > +}
> > +
> > +python populate_packages_prepend (){
> > +    systemdlibdir = d.getVar("rootlibdir", True)
> > +    do_split_packages(d, systemdlibdir,
> > '^lib(udev|gudev|systemd|nss)\.so\.*', 'lib%s', 'Systemd %s
> > library', extra_depends='', allow_links=True) +} +PACKAGES_DYNAMIC
> > += "^lib(udev|gudev|systemd|nss).*" +
> > +########################################################################
> > +# Base Packages
> > +########################################################################
> > +
> > +PACKAGES =+ "${PN}-generators-filesystems"
> > +SUMMARY_${PN}-generators-filesystems = "systemd's generator for
> > filesystem services based on fstab and GPT"
> > +RDEPENDS_${PN}-generators-filesystems = "${PN}-services-fsck"
> > +FILES_${PN}-generators-filesystems = "\
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-fstab-generator
> > \
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator
> > \
> > +        ${rootlibexecdir}/systemd/systemd-remount-fs \
> > +
> > ${systemd_unitdir}/system/local-fs.target.wants/systemd-remount-fs.service
> > \
> > +        ${systemd_unitdir}/system/systemd-remount-fs.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-generators-getty"
> > +SUMMARY_${PN}-generators-getty = "systemd's generator TTY services"
> > +RDEPENDS_${PN}-generators-getty = "${PN}-services-getty"
> > +FILES_${PN}-generators-getty = "\
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-getty-generator
> > \ +" +
> > +PACKAGES =+ "${PN}-tools"
> > +SUMMARY_${PN}-tools = "systemd command line tools (cgls, delta,
> > run, analyze...)" +RRECOMMENDS_${PN}-tools = "${PN}-services-base"
> > +FILES_${PN}-tools = "\
> > +        ${base_bindir}/systemd-machine-id-setup \
> > +        ${bindir}/busctl \
> > +        ${bindir}/coredumpctl \
> > +        ${bindir}/systemd-analyze \
> > +        ${bindir}/systemd-cat \
> > +        ${bindir}/systemd-cgls \
> > +        ${bindir}/systemd-cgtop \
> > +        ${bindir}/systemd-delta \
> > +        ${bindir}/systemd-detect-virt \
> > +        ${bindir}/systemd-path \
> > +        ${bindir}/systemd-run \
> > +        ${rootlibexecdir}/systemd/systemd-ac-power \
> > +        ${rootlibexecdir}/systemd/systemd-activate \
> > +        ${rootlibexecdir}/systemd/systemd-reply-password \
> > +        ${rootprefix}/bin/systemd-escape \
> > +        ${rootprefix}/bin/systemd-notify \
> > +"
> > +
> > +########################################################################
> > +# Services Packages
> > +########################################################################
> > +
> > +PACKAGES =+ "${PN}-services-ask-password"
> > +SUMMARY_${PN}-services-ask-password = "systemd's service and tool
> > to query the user for a system password"
> > +RRECOMMENDS_${PN}-services-ask-password = "${PN}-services-base"
> > +FILES_${PN}-services-ask-password = "\
> > +        ${rootprefix}/bin/systemd-ask-password \
> > +        ${rootprefix}/bin/systemd-tty-ask-password-agent \
> > +
> > ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path
> > \
> > +
> > ${systemd_unitdir}/system/systemd-ask-password-console.path \
> > +
> > ${systemd_unitdir}/system/systemd-ask-password-console.service \
> > +        ${systemd_unitdir}/system/systemd-ask-password-wall.path \
> > +
> > ${systemd_unitdir}/system/systemd-ask-password-wall.service \ +"
> > +
> > +PACKAGES =+ "${PN}-services-backlight"
> > +SUMMARY_${PN}-services-backlight = "systemd's backlight state
> > save/restore service" +FILES_${PN}-services-backlight = "\
> > +        ${systemd_unitdir}/system/systemd-backlight at .service \
> > +        ${rootlibexecdir}/systemd/systemd-backlight \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-binfmt"
> > +SUMMARY_${PN}-services-binfmt = "systemd's service to configure
> > additional binary formats for executables"
> > +RRECOMMENDS_${PN}-services-binfmt = "kernel-module-binfmt-misc"
> > +FILES_${PN}-services-binfmt = "\
> > +        ${sysconfdir}/binfmt.d/ \
> > +        ${exec_prefix}/lib/binfmt.d/ \
> > +
> > ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.automount \
> > +        ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.mount \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/proc-sys-fs-binfmt_misc.automount
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-binfmt.service
> > \
> > +        ${systemd_unitdir}/system/systemd-binfmt.service \
> > +        ${rootlibexecdir}/systemd/systemd-binfmt \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-bootchart"
> > +SUMMARY_${PN}-services-bootchart = "systemd's boot performance
> > service and graphing tool" +CONFFILES_${PN}-services-bootchart =
> > "${sysconfdir}/systemd/bootchart.conf"
> > +FILES_${PN}-services-bootchart = "\
> > +        ${sysconfdir}/systemd/bootchart.conf \
> > +        ${rootlibexecdir}/systemd/systemd-bootchart \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-coredump"
> > +SUMMARY_${PN}-services-coredump = "systemd's coredump log hook and
> > service" +RDEPENDS_${PN}-services-coredump = "${PN}-services-sysctl"
> > +CONFFILES_${PN}-services-coredump =
> > "${sysconfdir}/systemd/coredump.conf"
> > +FILES_${PN}-services-coredump = "\
> > +        ${exec_prefix}/lib/sysctl.d/50-coredump.conf \
> > +        ${sysconfdir}/systemd/coredump.conf \
> > +        ${rootlibexecdir}/systemd/systemd-coredump \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-cryptsetup"
> > +SUMMARY_${PN}-services-cryptsetup = "systemd's disk decryption
> > service" +ALLOW_EMPTY_${PN}-services-cryptsetup = "1"
> > +FILES_${PN}-services-cryptsetup = "\
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-cryptsetup-generator
> > \
> > +        ${systemd_unitdir}/system/cryptsetup-pre.target \
> > +        ${systemd_unitdir}/system/cryptsetup.target \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/cryptsetup.target \
> > +        ${rootlibexecdir}/systemd/systemd-cryptsetup \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-dbus"
> > +SUMMARY_${PN}-services-dbus = "systemd's DBus daemon system
> > service" +# NOTE: dbus dependency will go away when kdbus is in use
> > +RDEPENDS_${PN}-services-dbus = "dbus"
> > +FILES_${PN}-services-dbus = "\
> > +
> > ${datadir}/dbus-1/services/org.freedesktop.systemd1.service \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.systemd1.service \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
> > +        ${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf
> > \
> > +        ${systemd_unitdir}/system/sockets.target.wants/dbus.socket
> > \
> > +        ${systemd_unitdir}/system/dbus.target.wants/dbus.socket \
> > +
> > ${systemd_unitdir}/system/multi-user.target.wants/dbus.service \
> > +        ${systemd_unitdir}/system/dbus.socket \
> > +        ${systemd_unitdir}/system/dbus.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-debug"
> > +SUMMARY_${PN}-services-debug = "systemd's debug service"
> > +RRECOMMENDS_${PN}-services-debug = "${PN}-services-base
> > ${PN}-tools" +FILES_${PN}-services-debug = "\
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-debug-generator
> > \
> > +        ${systemd_unitdir}/system/debug-shell.service \
> > +        ${systemd_unitdir}/system/sys-kernel-config.mount \
> > +        ${systemd_unitdir}/system/sys-kernel-debug.mount \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/sys-kernel-config.mount
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/sys-kernel-debug.mount
> > \ +" +
> > +PACKAGES =+ "${PN}-services-firstboot"
> > +SUMMARY_${PN}-services-firstboot = "systemd's service to
> > initialize basic system settings" +FILES_${PN}-services-firstboot =
> > "\
> > +        ${base_bindir}/systemd-firstboot \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-firstboot.service
> > \
> > +        ${systemd_unitdir}/system/systemd-firstboot.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-fsck"
> > +SUMMARY_${PN}-services-fsck = "systemd's filesystem check service"
> > +RRECOMMENDS_${PN}-services-fsck = "util-linux-fsck
> > e2fsprogs-e2fsck" +FILES_${PN}-services-fsck = "\
> > +        ${systemd_unitdir}/system/systemd-fsck-root.service \
> > +        ${systemd_unitdir}/system/systemd-fsck at .service \
> > +        ${rootlibexecdir}/systemd/systemd-fsck \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-fuse"
> > +SUMMARY_${PN}-services-fuse = "systemd's FUSE (filesystem in
> > userspace) service" +FILES_${PN}-services-fuse = "\
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/sys-fs-fuse-connections.mount
> > \
> > +        ${systemd_unitdir}/system/sys-fs-fuse-connections.mount \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-getty"
> > +SUMMARY_${PN}-services-getty = "systemd's getty service"
> > +RRECOMMENDS_${PN}-services-getty = "util-linux-agetty
> > ${PN}-generators-getty" +FILES_${PN}-services-getty = "\
> > +        ${systemd_unitdir}/system/autovt at .service \
> > +        ${systemd_unitdir}/system/console-getty.service \
> > +        ${systemd_unitdir}/system/container-getty at .service \
> > +        ${systemd_unitdir}/system/getty at .service \
> > +        ${systemd_unitdir}/system/serial-getty at .service \
> > +        ${sysconfdir}/systemd/system/getty.target.wants/ \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-hostnamed"
> > +SUMMARY_${PN}-services-hostnamed = "systemd's hostname management
> > service" +RDEPENDS_${PN}-services-hostnamed = "${PN}-services-dbus"
> > +CONFFILES_${PN}-services-hostnamed =
> > "${sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf"
> > +FILES_${PN}-services-hostnamed = "\
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
> > +        ${bindir}/hostnamectl \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.hostname1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.hostname1.service \
> > +
> > ${systemd_unitdir}/system/org.freedesktop.hostname1.busname \
> > +        ${systemd_unitdir}/system/systemd-hostnamed.service \
> > +        ${rootlibexecdir}/systemd/systemd-hostnamed \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
> > \
> > +
> > ${datadir}/polkit-1/actions/org.freedesktop.hostname1.policy \ +"
> > +
> > +PACKAGES =+ "${PN}-services-journal"
> > +SUMMARY_${PN}-services-journal = "systemd's journal (logging)
> > service" +CONFFILES_${PN}-services-journal =
> > "${sysconfdir}/systemd/journald.conf" +FILES_${PN}-services-journal
> > = "\
> > +        ${base_bindir}/journalctl \
> > +        ${rootlibexecdir}/systemd/systemd-journald \
> > +        ${sysconfdir}/systemd/journald.conf \
> > +
> > ${systemd_unitdir}/system/sockets.target.wants/systemd-journald-dev-log.socket
> > \
> > +
> > ${systemd_unitdir}/system/sockets.target.wants/systemd-journald.socket
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-journal-catalog-update.service
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-journal-flush.service
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-journald.service
> > \
> > +
> > ${systemd_unitdir}/system/systemd-journal-catalog-update.service \
> > +        ${systemd_unitdir}/system/systemd-journal-flush.service \
> > +        ${systemd_unitdir}/system/systemd-journald-dev-log.socket \
> > +        ${systemd_unitdir}/system/systemd-journald.service \
> > +        ${systemd_unitdir}/system/systemd-journald.socket \
> > +        ${exec_prefix}/lib/systemd/catalog/ \
> > +"
> > +
> > +
> > +PACKAGES =+ "${PN}-services-journal-remote"
> > +SUMMARY_${PN}-services-journal-remote = "systemd's service and
> > tools to receive journal messages over the network"
> > +RDEPENDS_${PN}-services-journal-remote = "${PN}-services-journal"
> > +# NOTE: if no sysusers or tmpfiles, then users/groups and FS
> > structure must be setup +RRECOMMENDS_${PN}-services-journal-remote
> > = "${PN}-services-sysusers ${PN}-services-tmpfiles"
> > +CONFFILES_${PN}-services-journal-remote =
> > "${sysconfdir}/systemd/journald-remote.conf"
> > +FILES_${PN}-services-journal-remote = "\
> > +        ${exec_prefix}/lib/sysusers.d/systemd-remote.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/systemd-remote.conf \
> > +        ${rootlibexecdir}/systemd/systemd-journal-remote \
> > +        ${sysconfdir}/systemd/journal-remote.conf \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-journal-upload"
> > +SUMMARY_${PN}-services-journal-upload = "systemd's service and
> > tools to send journal messages over the network"
> > +RDEPENDS_${PN}-services-journal-upload = "${PN}-services-journal"
> > +# NOTE: if no sysusers, then users/groups must be setup
> > +RRECOMMENDS_${PN}-services-journal-upload =
> > "${PN}-services-sysusers" +CONFFILES_${PN}-services-journal-upload
> > = "${sysconfdir}/systemd/journald-upload.conf"
> > +FILES_${PN}-services-journal-upload = "\
> > +        ${rootlibexecdir}/systemd/systemd-journal-upload \
> > +        ${sysconfdir}/systemd/journal-upload.conf \
> > +        ${systemd_unitdir}/system/systemd-journal-upload.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-ldconfig"
> > +SUMMARY_${PN}-services-ldconfig = "systemd's service to run
> > ldconfig after updates" +FILES_${PN}-services-ldconfig = "\
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/ldconfig.service \
> > +        ${systemd_unitdir}/system/ldconfig.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-localed"
> > +SUMMARY_${PN}-services-localed = "systemd's locale management
> > service" +RDEPENDS_${PN}-services-localed = "${PN}-services-dbus"
> > +CONFFILES_${PN}-services-localed =
> > "${sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf"
> > +FILES_${PN}-services-localed = "\
> > +        ${sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
> > \
> > +        ${bindir}/localectl \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.locale1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.locale1.service \
> > +        ${systemd_unitdir}/system/org.freedesktop.locale1.busname \
> > +        ${systemd_unitdir}/system/systemd-localed.service \
> > +        ${rootlibexecdir}/systemd/systemd-localed \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.locale1.service \
> > +        ${datadir}/polkit-1/actions/org.freedesktop.locale1.policy
> > \
> > +        ${datadir}/systemd/kbd-model-map \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-logind"
> > +SUMMARY_${PN}-services-logind = "systemd's login management
> > service" +RDEPENDS_${PN}-services-logind = "${PN}-services-dbus
> > ${PN}-services-tmpfiles" +RRECOMMENDS_${PN}-services-logind = "udev"
> > +CONFFILES_${PN}-services-logind = "\
> > +        ${sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf \
> > +        ${sysconfdir}/systemd/logind.conf \
> > +"
> > +FILES_${PN}-services-logind = "\
> > +        ${sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf \
> > +        ${sysconfdir}/systemd/logind.conf \
> > +        ${base_bindir}/loginctl \
> > +        ${base_bindir}/systemd-inhibit \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.login1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.login1.service \
> > +
> > ${systemd_unitdir}/system/multi-user.target.wants/systemd-logind.service
> > \
> > +
> > ${systemd_unitdir}/system/multi-user.target.wants/systemd-user-sessions.service
> > \
> > +        ${systemd_unitdir}/system/org.freedesktop.login1.busname \
> > +        ${systemd_unitdir}/system/systemd-logind.service \
> > +        ${systemd_unitdir}/system/systemd-user-sessions.service \
> > +        ${systemd_unitdir}/system/user at .service \
> > +        ${rootlibexecdir}/systemd/systemd-logind \
> > +        ${rootlibexecdir}/systemd/systemd-user-sessions \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.login1.service \
> > +        ${datadir}/polkit-1/actions/org.freedesktop.login1.policy \
> > +        ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
> > +        ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
> > +        ${rootlibexecdir}/udev/rules.d/71-seat.rules \
> > +        ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-machined"
> > +SUMMARY_${PN}-services-machined = "systemd's virtual machine and
> > container management service" +RDEPENDS_${PN}-services-machined =
> > "${PN}-services-dbus" +CONFFILES_${PN}-services-machined =
> > "${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf"
> > +FILES_${PN}-services-machined = "\
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
> > +        ${base_bindir}/machinectl \
> > +        ${exec_prefix}/lib/libnss_mymachines.so.2 \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.machine1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.machine1.service \
> > +        ${systemd_unitdir}/system/machine.slice \
> > +        ${systemd_unitdir}/system/org.freedesktop.machine1.busname
> > \
> > +        ${systemd_unitdir}/system/systemd-machined.service \
> > +        ${rootlibexecdir}/systemd/systemd-machined \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service
> > \ +" +
> > +PACKAGES =+ "${PN}-services-modules-load"
> > +SUMMARY_${PN}-services-modules-load = "systemd's kernel module
> > loading service" +FILES_${PN}-services-modules-load = "\
> > +        ${sysconfdir}/modules-load.d/ \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-modules-load.service
> > \
> > +        ${systemd_unitdir}/system/systemd-modules-load.service \
> > +        ${rootlibexecdir}/systemd/systemd-modules-load \
> > +        ${exec_prefix}/lib/modules-load.d \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-modules-static-nodes"
> > +SUMMARY_${PN}-services-modules-static-nodes = "systemd's kernel
> > module static nodes creation service"
> > +RDEPENDS_${PN}-services-modules-static-nodes = "kmod
> > ${PN}-services-tmpfiles" +FILES_${PN}-services-modules-static-nodes
> > = "\
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/kmod-static-nodes.service
> > \
> > +        ${systemd_unitdir}/system/kmod-static-nodes.service \
> > +"
> > +
> > +
> > +PACKAGES =+ "${PN}-services-multi-seat-x"
> > +SUMMARY_${PN}-services-multi-seat-x = "systemd's X11 multi-seat
> > support service" +RDEPENDS_${PN}-services-multi-seat-x =
> > "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/xserver',
> > '', d)}" +FILES_${PN}-services-multi-seat-x = "\
> > +        ${rootlibexecdir}/systemd/systemd-multi-seat-x \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-networkd"
> > +SUMMARY_${PN}-services-networkd = "systemd's network management
> > (static, DHCP, bridge...) service" +# NOTE: if no sysusers, then
> > users/groups must be setup +RRECOMMENDS_${PN}-services-networkd =
> > "${PN}-services-sysusers" +FILES_${PN}-services-networkd = "\
> > +        ${sysconfdir}/systemd/network/ \
> > +
> > ${sysconfdir}/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
> > \
> > +
> > ${sysconfdir}/systemd/system/multi-user.target.wants/systemd-networkd.service
> > \
> > +        ${base_bindir}/networkctl \
> > +
> > ${rootlibexecdir}/systemd/network/80-container-host0.network \
> > +        ${rootlibexecdir}/systemd/network/80-container-ve.network \
> > +        ${rootlibexecdir}/systemd/network/99-default.link \
> > +
> > ${systemd_unitdir}/system/systemd-networkd-wait-online.service \
> > +        ${systemd_unitdir}/system/systemd-networkd.service \
> > +        ${rootlibexecdir}/systemd/systemd-networkd \
> > +        ${rootlibexecdir}/systemd/systemd-networkd-wait-online \
> > +        ${exec_prefix}/lib/systemd/network \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-nspawn"
> > +SUMMARY_${PN}-services-nspawn = "systemd's namespace spawing
> > service and tool" +FILES_${PN}-services-nspawn = "\
> > +        ${systemd_unitdir}/system/systemd-nspawn at .service \
> > +        ${bindir}/systemd-nspawn \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-quota"
> > +SUMMARY_${PN}-services-quota = "systemd's file system quota enable
> > and check service" +RDEPENDS_${PN}-services-quota = "quota"
> > +FILES_${PN}-services-quota = "\
> > +        ${systemd_unitdir}/system/quotaon.service \
> > +        ${systemd_unitdir}/system/systemd-quotacheck.service \
> > +        ${rootlibexecdir}/systemd/systemd-quotacheck \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-randomseed"
> > +SUMMARY_${PN}-services-randomseed = "systemd's random seed
> > save/restore service" +FILES_${PN}-services-randomseed = "\
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-random-seed.service
> > \
> > +        ${systemd_unitdir}/system/systemd-random-seed.service \
> > +        ${rootlibexecdir}/systemd/systemd-random-seed \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-readahead"
> > +SUMMARY_${PN}-services-readahead = "systemd's disk read ahead
> > service" +FILES_${PN}-services-readahead = "\
> > +
> > ${systemd_unitdir}/system/systemd-readahead-collect.service \
> > +        ${systemd_unitdir}/system/systemd-readahead-done.service \
> > +        ${systemd_unitdir}/system/systemd-readahead-done.timer \
> > +        ${systemd_unitdir}/system/systemd-readahead-drop.service \
> > +        ${systemd_unitdir}/system/systemd-readahead-replay.service
> > \
> > +        ${rootlibexecdir}/systemd/systemd-readahead \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-resolved"
> > +SUMMARY_${PN}-services-resolved = "systemd's network name
> > resolution management service" +# NOTE: if no sysusers or tmpfiles,
> > then users/groups and FS structure must be setup
> > +RRECOMMENDS_${PN}-services-resolved = "${PN}-services-dbus
> > ${PN}-services-sysusers ${PN}-services-tmpfiles"
> > +CONFFILES_${PN}-services-resolved = "\
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
> > +        ${sysconfdir}/systemd/resolved.conf \
> > +"
> > +FILES_${PN}-services-resolved = "\
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
> > +        ${sysconfdir}/systemd/resolved.conf \
> > +
> > ${sysconfdir}/systemd/system/multi-user.target.wants/systemd-resolved.service
> > \
> > +        ${exec_prefix}/lib/libnss_resolve.so.2 \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.resolve1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.resolve1.service \
> > +        ${systemd_unitdir}/system/org.freedesktop.resolve1.busname
> > \
> > +        ${systemd_unitdir}/system/systemd-resolved.service \
> > +        ${rootlibexecdir}/systemd/systemd-resolve-host \
> > +        ${rootlibexecdir}/systemd/systemd-resolved \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
> > \ +" +
> > +PACKAGES =+ "${PN}-services-rfkill"
> > +SUMMARY_${PN}-services-rfkill = "systemd's rfkill state
> > save/restore service" +FILES_${PN}-services-rfkill = "\
> > +        ${systemd_unitdir}/system/systemd-rfkill at .service \
> > +        ${rootlibexecdir}/systemd/systemd-rfkill \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-sleep"
> > +SUMMARY_${PN}-services-sleep = "systemd's sleep, suspend and
> > hiberate services" +FILES_${PN}-services-sleep = "\
> > +        ${systemd_unitdir}/system/systemd-hybrid-sleep.service \
> > +        ${systemd_unitdir}/system/systemd-suspend.service \
> > +        ${systemd_unitdir}/system/systemd-hibernate.service \
> > +        ${systemd_unitdir}/system-sleep/ \
> > +        ${rootlibexecdir}/systemd/systemd-sleep \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-sysctl"
> > +SUMMARY_${PN}-services-sysctl = "systemd's kernel parameters
> > configuration service" +FILES_${PN}-services-sysctl = "\
> > +        ${sysconfdir}/sysctl.d/ \
> > +        ${exec_prefix}/lib/sysctl.d/ \
> > +        ${exec_prefix}/lib/sysctl.d/50-default.conf \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-sysctl.service
> > \
> > +        ${systemd_unitdir}/system/systemd-sysctl.service \
> > +        ${rootlibexecdir}/systemd/systemd-sysctl \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-sysusers"
> > +SUMMARY_${PN}-services-sysusers = "systemd's service and tool to
> > allocate system users and groups" +FILES_${PN}-services-sysusers =
> > "\
> > +        ${base_bindir}/systemd-sysusers \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-sysusers.service
> > \
> > +        ${systemd_unitdir}/system/systemd-sysusers.service \
> > +        ${exec_prefix}/lib/sysusers.d/basic.conf \
> > +        ${exec_prefix}/lib/sysusers.d/systemd.conf \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-sysvcompat"
> > +SUMMARY_${PN}-services-sysvcompat = "systemd's SYSV legacy and
> > compatibility service" +# NOTE: if no sysusers or tmpfiles, then
> > users/groups and FS structure must be setup
> > +RRECOMMENDS_${PN}-services-sysvcompat = "${PN}-services-sysusers
> > ${PN}-services-tmpfiles" +FILES_${PN}-services-sysvcompat = "\
> > +        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
> > +        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
> > +        ${bindir}/systemd-stdio-bridge \
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-rc-local-generator
> > \
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-sysv-generator \
> > +        ${rootlibexecdir}/systemd/systemd-initctl \
> > +        ${rootlibexecdir}/systemd/systemd-update-utmp \
> > +        ${systemd_unitdir}/system/halt-local.service \
> > +        ${systemd_unitdir}/system/rc-local.service \
> > +
> > ${systemd_unitdir}/system/runlevel1.target.wants/systemd-update-utmp-runlevel.service
> > \
> > +
> > ${systemd_unitdir}/system/runlevel2.target.wants/systemd-update-utmp-runlevel.service
> > \
> > +
> > ${systemd_unitdir}/system/runlevel3.target.wants/systemd-update-utmp-runlevel.service
> > \
> > +
> > ${systemd_unitdir}/system/runlevel4.target.wants/systemd-update-utmp-runlevel.service
> > \
> > +
> > ${systemd_unitdir}/system/runlevel5.target.wants/systemd-update-utmp-runlevel.service
> > \
> > +
> > ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-update-utmp.service
> > \
> > +        ${systemd_unitdir}/system/systemd-initctl.service \
> > +        ${systemd_unitdir}/system/systemd-initctl.socket \
> > +
> > ${systemd_unitdir}/system/systemd-update-utmp-runlevel.service \
> > +        ${systemd_unitdir}/system/systemd-update-utmp.service \
> > +        ${exec_prefix}/lib/tmpfiles.d/legacy.conf \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-timedated"
> > +SUMMARY_${PN}-services-timedated = "systemd's time and date
> > management service" +RDEPENDS_${PN}-services-timedated =
> > "${PN}-services-dbus" +CONFFILES_${PN}-services-timedated =
> > "${sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf"
> > +FILES_${PN}-services-timedated = "\
> > +
> > ${sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
> > +        ${bindir}/timedatectl \
> > +
> > ${systemd_unitdir}/system/busnames.target.wants/org.freedesktop.timedate1.busname
> > \
> > +
> > ${systemd_unitdir}/system/dbus-org.freedesktop.timedate1.service \
> > +
> > ${systemd_unitdir}/system/org.freedesktop.timedate1.busname \
> > +        ${systemd_unitdir}/system/systemd-timedated.service \
> > +        ${rootlibexecdir}/systemd/systemd-timedated \
> > +
> > ${datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
> > \
> > +
> > ${datadir}/polkit-1/actions/org.freedesktop.timedate1.policy \ +"
> > +
> > +PACKAGES =+ "${PN}-services-timesyncd"
> > +SUMMARY_${PN}-services-timesyncd = "systemd's NTP sync service"
> > +# NOTE: if no sysusers, then users/groups must be setup
> > +RRECOMMENDS_${PN}-services-timesyncd = "${PN}-services-sysusers"
> > +CONFFILES_${PN}-services-timesyncd =
> > "${sysconfdir}/systemd/timesyncd.conf"
> > +FILES_${PN}-services-timesyncd = "\
> > +
> > ${sysconfdir}/systemd/system/sysinit.target.wants/systemd-timesyncd.service
> > \
> > +        ${sysconfdir}/systemd/timesyncd.conf \
> > +        ${systemd_unitdir}/system/systemd-timesyncd.service \
> > +        ${rootlibexecdir}/systemd/systemd-timesyncd \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-tmpfiles"
> > +SUMMARY_${PN}-services-tmpfiles = "systemd's service to create,
> > delete and clean up volatile/tmp files/dirs"
> > +FILES_${PN}-services-tmpfiles = "\
> > +        ${sysconfdir}/tmpfiles.d/ \
> > +        ${base_bindir}/systemd-tmpfiles \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-tmpfiles-setup-dev.service
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-tmpfiles-setup.service
> > \
> > +        ${systemd_unitdir}/system/systemd-tmpfiles-clean.service \
> > +        ${systemd_unitdir}/system/systemd-tmpfiles-clean.timer \
> > +
> > ${systemd_unitdir}/system/systemd-tmpfiles-setup-dev.service \
> > +        ${systemd_unitdir}/system/systemd-tmpfiles-setup.service \
> > +
> > ${systemd_unitdir}/system/timers.target.wants/systemd-tmpfiles-clean.timer
> > \
> > +        ${exec_prefix}/lib/tmpfiles.d/etc.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/systemd-nologin.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/systemd.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/tmp.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/var.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/00-create-volatile.conf \
> > +        ${exec_prefix}/lib/tmpfiles.d/x11.conf \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-udev"
> > +SUMMARY_${PN}-services-udev = "systemd's udev services"
> > +RDEPENDS_${PN}-services-udev = "udev"
> > +FILES_${PN}-services-udev = "\
> > +
> > ${systemd_unitdir}/system/initrd-udevadm-cleanup-db.service \
> > +        ${systemd_unitdir}/system/systemd-udev-hwdb-update.service
> > \
> > +        ${systemd_unitdir}/system/systemd-udev-settle.service \
> > +        ${systemd_unitdir}/system/systemd-udev-trigger.service \
> > +        ${systemd_unitdir}/system/systemd-udevd-control.socket \
> > +        ${systemd_unitdir}/system/systemd-udevd-kernel.socket \
> > +        ${systemd_unitdir}/system/systemd-udevd.service \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-udevd.service
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-udev-trigger.service
> > \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-udev-hwdb-update.service
> > \
> > +
> > ${systemd_unitdir}/system/sockets.target.wants/systemd-udevd-kernel.socket
> > \
> > +
> > ${systemd_unitdir}/system/sockets.target.wants/systemd-udevd-control.socket
> > \ +" +
> > +PACKAGES =+ "${PN}-services-update"
> > +SUMMARY_${PN}-services-update = "systemd's post update service"
> > +FILES_${PN}-services-update = "\
> > +
> > ${rootlibexecdir}/systemd/system-generators/systemd-system-update-generator
> > \
> > +        ${rootlibexecdir}/systemd/systemd-update-done \
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-update-done.service
> > \
> > +        ${systemd_unitdir}/system/systemd-update-done.service \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-vconsole"
> > +SUMMARY_${PN}-services-vconsole = "systemd's service to configure
> > the virtual console (keyboard/font)"
> > +RDEPENDS_${PN}-services-vconsole = "kbd kbd-consolefonts
> > kbd-keymaps" +FILES_${PN}-services-vconsole = "\
> > +
> > ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service
> > \
> > +        ${systemd_unitdir}/system/systemd-vconsole-setup.service \
> > +        ${rootlibexecdir}/systemd/systemd-vconsole-setup \
> > +"
> > +
> > +########################################################################
> > +# Standard BitBake Packages
> > +########################################################################
> > +
> > +FILES_${PN}-dbg += "\
> > +        ${base_libdir}/security/.debug/ \
> > +        ${libdir}/systemd/ptest/.debug \
> > +        ${rootlibdir}/.debug \
> > +        ${systemd_unitdir}/*/.debug \
> > +        ${systemd_unitdir}/.debug \
> > +"
> > +
> > +FILES_${PN}-dev += "\
> > +        ${base_libdir}/security/*.la \
> > +        ${datadir}/dbus-1/interfaces/ \
> > +"
> > +
> > +# The test cases need perl and bash to run correctly.
> > +RDEPENDS_${PN}-ptest += "perl bash"
> > +FILES_${PN}-ptest += "\
> > +        ${libdir}/udev/rules.d \
> > +"
> > +
> > +########################################################################
> > +# Misc Packages
> > +########################################################################
> > +
> > +PACKAGES =+ "${PN}-bash"
> > +SUMMARY_${PN}-bash = "systemd bash shell commands completion"
> > +FILES_${PN}-bash = "\
> > +        ${datadir}/bash-completion/completions/bootctl \
> > +        ${datadir}/bash-completion/completions/busctl \
> > +        ${datadir}/bash-completion/completions/coredumpctl \
> > +        ${datadir}/bash-completion/completions/hostnamectl \
> > +        ${datadir}/bash-completion/completions/journalctl \
> > +        ${datadir}/bash-completion/completions/kernel-install \
> > +        ${datadir}/bash-completion/completions/localectl \
> > +        ${datadir}/bash-completion/completions/loginctl \
> > +        ${datadir}/bash-completion/completions/machinectl \
> > +        ${datadir}/bash-completion/completions/systemctl \
> > +        ${datadir}/bash-completion/completions/systemd-* \
> > +        ${datadir}/bash-completion/completions/timedatectl \
> > +"
> > +
> > +PACKAGES =+ "${PN}-initramfs"
> > +SUMMARY_${PN}-initramfs = "systemd's initramfs support"
> > +FILES_${PN}-initramfs = "/init"
> > +RDEPENDS_${PN}-initramfs = "${PN}"
> > +
> > +PACKAGES =+ "${PN}-kernel-install"
> > +SUMMARY_${PN}-kernel-install = "systemd tool to add/remove kernel
> > and initramfs images to/from /boot" +RDEPENDS_${PN}-kernel-install
> > = "bash kmod" +FILES_${PN}-kernel-install = "\
> > +        ${bindir}/kernel-install \
> > +        ${sysconfdir}/kernel/install.d/ \
> > +        ${exec_prefix}/lib/kernel/install.d/ \
> > +"
> > +
> > +PACKAGES =+ "${PN}-pam"
> > +SUMMARY_${PN}-pam = "systemd PAM modules and configuration"
> > +FILES_${PN}-pam = "\
> > +        ${sysconfdir}/pam.d \
> > +        ${base_libdir}/security/pam_systemd.so \
> > +"
> > +
> > +PACKAGES =+ "${PN}-preset"
> > +SUMMARY_${PN}-preset = "systemd's service enablement presets"
> > +FILES_${PN}-preset =
> > "${systemd_unitdir}/system-preset/90-systemd.preset" +
> > +PACKAGES =+ "${PN}-rpm-macros"
> > +SUMMARY_${PN}-rpm-macros = "systemd RPM macros"
> > +FILES_${PN}-rpm-macros =
> > "${exec_prefix}/lib/rpm/macros.d/macros.systemd" +
> > +PACKAGES =+ "${PN}-zsh"
> > +SUMMARY_${PN}-zsh = "systemd zsh shell commands completion"
> > +FILES_${PN}-zsh = "\
> > +        ${datadir}/zsh/site-functions/_bootctl \
> > +        ${datadir}/zsh/site-functions/_busctl \
> > +        ${datadir}/zsh/site-functions/_coredumpctl \
> > +        ${datadir}/zsh/site-functions/_hostnamectl \
> > +        ${datadir}/zsh/site-functions/_journalctl \
> > +        ${datadir}/zsh/site-functions/_kernel-install \
> > +        ${datadir}/zsh/site-functions/_localectl \
> > +        ${datadir}/zsh/site-functions/_loginctl \
> > +        ${datadir}/zsh/site-functions/_machinectl \
> > +        ${datadir}/zsh/site-functions/_sd_* \
> > +        ${datadir}/zsh/site-functions/_systemctl \
> > +        ${datadir}/zsh/site-functions/_systemd \
> > +        ${datadir}/zsh/site-functions/_systemd-* \
> > +        ${datadir}/zsh/site-functions/_timedatectl \
> > +"
> > +
> > +
> > +########################################################################
> > +# Aggregation of Split Packages
> > +########################################################################
> > +
> > +PACKAGES =+ "${PN}-services-essential"
> > +SUMMARY_${PN}-services-essential = "systemd's essential services
> > aggregation" +ALLOW_EMPTY_${PN}-services-essential = "1"
> > +RDEPENDS_${PN}-services-essential = "\
> > +        ${PN}-generators-filesystems \
> > +        ${PN}-preset \
> > +        ${PN}-services-fsck \
> > +        ${PN}-services-journal \
> > +        ${PN}-services-modules-load \
> > +        ${PN}-services-randomseed \
> > +        ${PN}-services-sleep \
> > +        ${PN}-services-sysctl \
> > +        ${PN}-services-sysusers \
> > +        ${PN}-services-tmpfiles \
> > +        ${PN}-services-udev \
> > +        udev-rules-systemd \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-base"
> > +SUMMARY_${PN}-services-base = "systemd's base services aggregation"
> > +ALLOW_EMPTY_${PN}-services-base = "1"
> > +RDEPENDS_${PN}-services-base = "${PN}-services-essential \
> > +        ${PN}-services-ask-password \
> > +        ${PN}-services-backlight \
> > +        ${PN}-services-binfmt \
> > +        ${PN}-services-coredump \
> > +        ${PN}-services-dbus \
> > +        ${PN}-services-firstboot \
> > +        ${PN}-services-fuse \
> > +        ${PN}-services-hostnamed \
> > +        ${PN}-services-ldconfig \
> > +        ${PN}-services-localed \
> > +        ${PN}-services-logind \
> > +        ${PN}-services-networkd \
> > +        ${PN}-services-quota \
> > +        ${PN}-services-resolved \
> > +        ${PN}-services-rfkill \
> > +        ${PN}-services-timedated \
> > +        ${PN}-services-timesyncd \
> > +        ${PN}-services-update \
> > +        ${PN}-services-vconsole \
> > +"
> > +
> > +PACKAGES =+ "${PN}-services-all"
> > +SUMMARY_${PN}-services-all = "systemd's all services and tools
> > aggregation" +ALLOW_EMPTY_${PN}-services-all = "1"
> > +RDEPENDS_${PN}-services-all = "${PN}-services-base \
> > +        ${PN}-services-bootchart \
> > +        ${PN}-services-cryptsetup \
> > +        ${PN}-services-debug \
> > +        ${PN}-services-journal-remote \
> > +        ${PN}-services-journal-upload \
> > +        ${PN}-services-machined \
> > +        ${PN}-services-nspawn \
> > +        ${PN}-services-sysvcompat \
> > +        ${@bb.utils.contains('DISTRO_FEATURES', 'x11',
> > '${PN}-services-multi-seat-x', '', d)} \
> > +        ${PN}-tools \
> > +"
> > +
> > +
> > +########################################################################
> > +# Core Package
> > +########################################################################
> > +
> > +CONFFILES_${PN} = "\
> > +        ${sysconfdir}/machine-id \
> > +        ${sysconfdir}/systemd/system.conf \
> > +        ${sysconfdir}/systemd/user.conf \
> > +"
> > +
> > +FILES_${PN} = "\
> > +        ${base_bindir}/systemctl \
> > +        ${base_bindir}/systemd-hwdb \
> > +        ${bindir}/bootctl \
> > +        ${datadir}/${BPN} \
> > +        ${datadir}/factory \
> > +        ${exec_prefix}/lib/libnss_myhostname* \
> > +        ${libdir}/systemd/user-generators/ \
> > +        ${libdir}/systemd/user/ \
> > +        ${localstatedir} \
> > +        ${rootlibexecdir}/systemd/systemd \
> > +        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
> > +        ${rootlibexecdir}/systemd/systemd-shutdown \
> > +        ${rootlibexecdir}/systemd/systemd-shutdownd \
> > +        ${rootlibexecdir}/systemd/systemd-machine-id-commit \
> > +        ${rootlibexecdir}/systemd/systemd-hibernate-resume \
> > +        ${rootlibexecdir}/systemd/systemd-importd \
> > +        ${rootlibexecdir}/systemd/import-pubring.gpg \
> > +        ${rootlibexecdir}/systemd/systemd-pull \
> > +        ${sysconfdir}/init.d/README \
> > +        ${sysconfdir}/machine-id \
> > +        ${sysconfdir}/systemd/system.conf \
> > +        ${sysconfdir}/systemd/system/ \
> > +        ${sysconfdir}/systemd/user.conf \
> > +        ${sysconfdir}/systemd/user/ \
> > +        ${sysconfdir}/xdg/systemd/ \
> > +        ${systemd_unitdir}/system-generators/ \
> > +        ${systemd_unitdir}/system-preset/ \
> > +        ${systemd_unitdir}/system-shutdown/ \
> > +        ${systemd_unitdir}/system/ \
> > +"
> > +
> > +#RDEPENDS_${PN} += "volatile-binds"
> > +
> > +RRECOMMENDS_${PN} += "\
> > +        ${PN}-services-base \
> > +        ${PN}-services-essential \
> > +        ${PN}-generators-getty \
> > +        ${@bb.utils.contains('DISTRO_FEATURES', 'pam',
> > '${PN}-pam', '', d)} \
> > +        ${PN}-services-getty \
> > +        ${PN}-tools \
> > +        kernel-module-autofs4 \
> > +        kernel-module-ipv6 \
> > +        kernel-module-unix \
> > +        os-release \
> > +        udev (= ${EXTENDPKGV}) \
> > +        udev-hwdb \
> > +"
> > +
> > +ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel"
> > +
> > +ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
> > +ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
> > +ALTERNATIVE_PRIORITY[init] ?= "300"
> > +
> > +ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
> > +ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
> > +ALTERNATIVE_PRIORITY[halt] ?= "300"
> > +
> > +ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
> > +ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
> > +ALTERNATIVE_PRIORITY[reboot] ?= "300"
> > +
> > +ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
> > +ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
> > +ALTERNATIVE_PRIORITY[shutdown] ?= "300"
> > +
> > +ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
> > +ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
> > +ALTERNATIVE_PRIORITY[poweroff] ?= "300"
> > +
> > +ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
> > +ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
> > +ALTERNATIVE_PRIORITY[runlevel] ?= "300"
> > +
> > +
> > +########################################################################
> > +# UDEV Section
> > +########################################################################
> > +
> > +PACKAGES =+ "udev-dbg"
> > +SUMMARY_udev-dbg = "Dynamic device management - Debugging files"
> > +RRECOMMENDS_udev-dbg += "${PN}-dbg"
> > +FILES_udev-dbg = "\
> > +        ${rootlibexecdir}/udev/.debug \
> > +        ${base_sbindir}/.debug/udevd \
> > +        ${base_bindir}/.debug/udevadm \
> > +        ${rootlibexecdir}/systemd/.debug/systemd-udevd \
> > +        ${base_libdir}/.debug/libudev* \
> > +        ${base_libdir}/.debug/libgudev* \
> > +        ${exec_prefix}/lib/.debug/libgudev* \
> > +"
> > +
> > +PACKAGES =+ "udev-dev"
> > +SUMMARY_udev-dev = "Dynamic device management - Development files"
> > +RRECOMMENDS_udev-dev += "${PN}-dev"
> > +FILES_udev-dev = "\
> > +        ${datadir}/pkgconfig/*udev* \
> > +        ${libdir}/pkgconfig/*udev* \
> > +        ${libdir}/lib*udev*.la \
> > +        ${includedir}/*udev* \
> > +"
> > +
> > +PACKAGES =+ "udev-hwdb"
> > +SUMMARY_udev-hwdb = "Dynamic device management - Hardware database"
> > +RDEPENDS_udev-hwdb = "udev"
> > +FILES_udev-hwdb = "\
> > +        ${rootlibexecdir}/udev/hwdb.d/ \
> > +"
> > +
> > +pkg_postinst_udev-hwdb () {
> > +	if test -n "$D"; then
> > +		${@qemu_run_binary(d, '$D',
> > '${base_bindir}/udevadm')} hwdb --update \
> > +			--root $D
> > +	else
> > +		udevadm hwdb --update
> > +	fi
> > +}
> > +
> > +pkg_prerm_udev-hwdb () {
> > +	if test -n "$D"; then
> > +		exit 1
> > +	fi
> > +
> > +	rm -f ${sysconfdir}/udev/hwdb.bin
> > +}
> > +
> > +PACKAGES =+ "udev-bash"
> > +SUMMARY_udev-bash = "Dynamic device management - Bash shell
> > commands completion" +FILES_udev-bash =
> > "${datadir}/bash-completion/completions/udevadm" +
> > +PACKAGES =+ "udev-zsh"
> > +SUMMARY_udev-zsh = "Dynamic device management - zsh shell commands
> > completion" +FILES_udev-zsh =
> > "${datadir}/zsh/site-functions/_udevadm" +
> > +
> > +########################################################################
> > +# UDEV Rules Packages
> > +# split rules that require external programs or dependencies.
> > +# those that use only builtins are not split
> > +########################################################################
> > +
> > +PACKAGES =+ "udev-rules-accelerometer"
> > +SUMMARY_udev-rules-accelerometer = "Dynamic device management -
> > accelerometer rules" +FILES_udev-rules-accelerometer = "\
> > +        ${rootlibexecdir}/udev/accelerometer \
> > +        ${rootlibexecdir}/udev/rules.d/61-accelerometer.rules \
> > +"
> > +
> > +PACKAGES =+ "udev-rules-cdrom"
> > +SUMMARY_udev-rules-cdrom = "Dynamic device management - cdrom
> > rules" +FILES_udev-rules-cdrom = "\
> > +        ${rootlibexecdir}/udev/cdrom_id \
> > +        ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
> > +"
> > +
> > +PACKAGES =+ "udev-rules-mtd"
> > +SUMMARY_udev-rules-mtd = "Dynamic device management - mtd rules"
> > +FILES_udev-rules-mtd = "\
> > +        ${rootlibexecdir}/udev/mtd_probe \
> > +        ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
> > +"
> > +
> > +PACKAGES =+ "udev-rules-persistent-storage"
> > +SUMMARY_udev-rules-persistent-storage = "Dynamic device management
> > - persistent storage rules" +FILES_udev-rules-persistent-storage =
> > "\
> > +        ${rootlibexecdir}/udev/ata_id \
> > +        ${rootlibexecdir}/udev/scsi_id \
> > +        ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules
> > \
> > +
> > ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \ +"
> > +
> > +PACKAGES =+ "udev-rules-systemd"
> > +SUMMARY_udev-rules-systemd = "Dynamic device management - systemd
> > rules" +RDEPENDS_udev-rules-systemd = "${PN} ${PN}-services-sysctl"
> > +FILES_udev-rules-systemd = "\
> > +        ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
> > +"
> > +
> > +PACKAGES =+ "udev-rules-v4l"
> > +SUMMARY_udev-rules-v4l = "Dynamic device management - v4l rules"
> > +FILES_udev-rules-v4l = "\
> > +        ${rootlibexecdir}/udev/v4l_id \
> > +        ${rootlibexecdir}/udev/rules.d/*-persistent-v4l.rules \
> > +"
> > +
> > +PACKAGES =+ "udev-rules-all"
> > +SUMMARY_udev-rules-all = "Dynamic device management - all rules
> > aggregation" +ALLOW_EMPTY_udev-rules-all = "1"
> > +RDEPENDS_udev-rules-all = "\
> > +        udev-rules-accelerometer \
> > +        udev-rules-cdrom \
> > +        udev-rules-mtd \
> > +        udev-rules-persistent-storage \
> > +        udev-rules-systemd \
> > +        udev-rules-v4l \
> > +"
> > +
> > +PACKAGES =+ "udev"
> > +SUMMARY_udev = "Dynamic device management"
> > +RPROVIDES_udev = "hotplug"
> > +PROVIDES = "udev"
> > +CONFFILES_udev = "${sysconfdir}/udev/udev.conf"
> > +FILES_udev = "\
> > +        ${base_bindir}/udevadm \
> > +        ${base_sbindir}/udevd \
> > +        ${rootlibexecdir}/systemd/systemd-udevd \
> > +        ${rootlibexecdir}/udev/collect \
> > +        ${rootlibexecdir}/udev/rules.d/42-usb-hid-pm.rules \
> > +        ${rootlibexecdir}/udev/rules.d/50-firmware.rules \
> > +        ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
> > +        ${rootlibexecdir}/udev/rules.d/60-drm.rules \
> > +        ${rootlibexecdir}/udev/rules.d/60-keyboard.rules \
> > +        ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
> > +        ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
> > +        ${rootlibexecdir}/udev/rules.d/60-persistent-serial.rules \
> > +        ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
> > +        ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
> > +        ${rootlibexecdir}/udev/rules.d/75-tty-description.rules \
> > +        ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
> > +        ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
> > +        ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
> > +        ${rootlibexecdir}/udev/rules.d/95-udev-late.rules \
> > +        ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
> > +        ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
> > +        ${rootlibexecdir}/udev/rules.d/touchscreen.rules \
> > +        ${sysconfdir}/init.d/systemd-udevd \
> > +        ${sysconfdir}/udev \
> > +"
> > +
> > +RRECOMMENDS_udev = "\
> > +        udev-hwdb \
> > +        udev-rules-all \
> > +"
> > +
> > +INITSCRIPT_PACKAGES = "udev"
> > +INITSCRIPT_NAME_udev = "systemd-udevd"
> > +INITSCRIPT_PARAMS_udev = "start 03 S ."
> > +
> > +python __anonymous() {
> > +    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True,
> > False, d):
> > +        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
> > +}
> > +
> > +# As this recipe builds udev, respect systemd being in
> > DISTRO_FEATURES so +# that we don't build both udev and systemd in
> > world builds. +python () {
> > +    if not bb.utils.contains ('DISTRO_FEATURES', 'systemd', True,
> > False, d):
> > +        raise bb.parse.SkipPackage("'systemd' not in
> > DISTRO_FEATURES") +}
> >
> 
> Bruno, could you create separate patches for the upgrade and for the 
> repackaging? Also what type of testing has been done for partial
> installs?
> 
> 

Randy,

Sure thing I can separate it. I will send to the mailing list later.

I wrote on my local.conf the following as an example:

PACKAGE_EXCLUDE = "systemd-services-base
systemd-services-essential" 

Also, doing this you can remove some lib dependency such as:
PACKAGECONFIG_remove_pn-systemd = "           \
                   acl                        \
                   blkid                      \
                   efi                        \
                   gcrypt                     \
                   lz4                        \
                   xz                         \
                   libidn                     \
                   "


This example will install the smallest possible.




More information about the Openembedded-core mailing list