From patchwork Tue Feb 12 17:42:50 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: systemd.bbclass: Introduce do_install_append and use systemd unitdir Date: Tue, 12 Feb 2013 17:42:50 -0000 From: Khem Raj X-Patchwork-Id: 44539 Message-Id: <1360690970-9432-1-git-send-email-raj.khem@gmail.com> To: openembedded-core@lists.openembedded.org systemd always uses /lib and /usr/lib to store unit files so using libdir and base_libdir is incorrect. It will work where libdir is usr/lib and base_libdir is /lib but wont work when say its /lib64 Additionally introduce the install append from meta-oe lot of recipe appends in meta-systemd depend on that Signed-off-by: Khem Raj --- meta/classes/systemd.bbclass | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index e0ea65c..32cc5c2 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass @@ -115,11 +115,9 @@ def systemd_populate_packages(d): # Check service-files and call systemd_add_files_and_parse for each entry def systemd_check_services(): - base_libdir = d.getVar('base_libdir', True) - searchpaths = [oe.path.join(d.getVar("sysconfdir", True), "systemd", "system"),] - searchpaths.append(oe.path.join(d.getVar("base_libdir", True), "systemd", "system")) - searchpaths.append(oe.path.join(d.getVar("libdir", True), "systemd", "system")) - searchpaths.append(oe.path.join(d.getVar("libdir", True), "systemd", "user")) + searchpaths = '/etc/systemd/system/' + ' ' + searchpaths += '/lib/systemd/system/' + ' ' + searchpaths += '/usr/lib/systemd/system/' + ' ' systemd_packages = d.getVar('SYSTEMD_PACKAGES', True) has_exactly_one_service = len(systemd_packages.split()) == 1 if has_exactly_one_service: @@ -133,7 +131,7 @@ def systemd_populate_packages(d): for pkg_systemd in systemd_packages.split(): for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split(): path_found = '' - for path in searchpaths: + for path in searchpaths.split(): if os.path.exists(oe.path.join(d.getVar("D", True), path, service)): path_found = path break @@ -156,3 +154,14 @@ python populate_packages_prepend () { if oe.utils.contains ('DISTRO_FEATURES', 'systemd', True, False, d): systemd_populate_packages (d) } +# automatically install all *.service and *.socket supplied in recipe's SRC_URI +do_install_append() { + for service in `find ${WORKDIR} -maxdepth 1 -name '*.service' -o -name '*.socket'` ; do + # ensure installing systemd-files only (e.g not avahi *.service) + if grep -q '\[Unit\]' $service ; then + install -d ${D}${systemd_unitdir}/system + install -m 644 $service ${D}${systemd_unitdir}/system + fi + done +} +