From patchwork Thu May 31 10:58:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [meta-oe,3/4] systemd.bbclass: extract SYSTEMD_SERVICE properly Date: Thu, 31 May 2012 10:58:59 -0000 From: =?utf-8?q?Andreas_M=C3=BCller_=3Cschnitzeltony=40googlemail=2Ecom=3E?= X-Patchwork-Id: 29009 Message-Id: <1338461940-3040-4-git-send-email-schnitzeltony@googlemail.com> To: openembedded-devel@lists.openembedded.org To set service files the following syntax is allowed: SYSTEMD_SERVICE = or SYSTEMD_SERVICE_{} = A function get_package_var was introduced to handle all use-cases [1] properly. Build tested / buildhistory checks [1] http://lists.linuxtogo.org/pipermail/openembedded-devel/2012-May/039870.html Signed-off-by: Andreas Müller --- meta-oe/classes/systemd.bbclass | 22 +++++++++++++++++----- 1 files changed, 17 insertions(+), 5 deletions(-) diff --git a/meta-oe/classes/systemd.bbclass b/meta-oe/classes/systemd.bbclass index 2881abf..976346f 100644 --- a/meta-oe/classes/systemd.bbclass +++ b/meta-oe/classes/systemd.bbclass @@ -24,6 +24,20 @@ systemd_postrm() { systemctl disable ${SYSTEMD_SERVICE} } +def get_package_var(d, var, pkg): + val = d.getVar('%s_%s' % (var, pkg), d, 1) + if val: + val = val.strip() + else: + val = "" + if val == "": + val = bb.data.getVar(var, d, 1) + if val: + val = val.strip() + else: + val = "" + return val + def systemd_after_parse(d): def systemd_check_vars(): if d.getVar('BB_WORKERCONTEXT', True) is not None: @@ -155,8 +169,7 @@ python populate_packages_prepend () { systemd_packages = d.getVar('SYSTEMD_PACKAGES', 1) has_exactly_one_service = len(systemd_packages.split()) == 1 if has_exactly_one_service: - systemd_services = d.getVar('SYSTEMD_SERVICE' + "_" + systemd_packages, 1) or d.getVar('SYSTEMD_SERVICE', 1) - has_exactly_one_service = len(systemd_services.split()) == 1 + has_exactly_one_service = len(get_package_var(d, 'SYSTEMD_SERVICE', systemd_packages)) == 1 keys = 'Also' # Conflicts?? if has_exactly_one_service: @@ -164,8 +177,7 @@ python populate_packages_prepend () { keys = 'Also Conflicts' # scan for all in SYSTEMD_SERVICE[] for pkg_systemd in systemd_packages.split(): - systemd_services = d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1) or d.getVar('SYSTEMD_SERVICE', 1) - for service in systemd_services.split(): + for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split(): path_found = '' for path in searchpaths.split(): if os.path.exists('${D}' + path + service): @@ -196,7 +208,7 @@ python populate_packages_prepend () { # run all modifications once when creating package if os.path.exists('${D}'): for pkg_systemd in d.getVar('SYSTEMD_PACKAGES', 1).split(): - if d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1) and d.getVar('SYSTEMD_SERVICE' + "_" + pkg_systemd, 1).strip(): + if get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd) != "": systemd_generate_package_scripts(pkg_systemd) systemd_add_rdepends(pkg_systemd) systemd_check_services()