Add new variable SYSTEMD_USER_SERVICE and SYSTEM_USER_AUTO_ENABLE to manage user services. Their usage is like SYSTEMD_SERVICE and SYSTEMD_AUTO_ENABLE.
[YOCTO #7800] Signed-off-by: Chen Qi <[email protected]> --- meta/classes/systemd.bbclass | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index db7873f..78cec97 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass @@ -7,6 +7,7 @@ SYSTEMD_PACKAGES_class-nativesdk ?= "" # Whether to enable or disable the services on installation. SYSTEMD_AUTO_ENABLE ??= "enable" +SYSTEMD_USER_AUTO_ENABLE ??= "enable" # This class will be included in any recipe that supports systemd init scripts, # even if systemd is not in DISTRO_FEATURES. As such don't make any changes @@ -30,10 +31,14 @@ fi if type systemctl >/dev/null 2>/dev/null; then systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE} + systemctl $OPTS --global ${SYSTEMD_USER_AUTO_ENABLE} ${SYSTEMD_USER_SERVICE} if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then systemctl restart ${SYSTEMD_SERVICE} fi + if [ -z "$D" -a "${SYSTEMD_USER_AUTO_ENABLE}" = "enable" ]; then + systemctl --global restart ${SYSTEMD_USER_SERVICE} + fi fi } @@ -47,9 +52,11 @@ fi if type systemctl >/dev/null 2>/dev/null; then if [ -z "$D" ]; then systemctl stop ${SYSTEMD_SERVICE} + systemctl --global stop ${SYSTEMD_USER_SERVICE} fi systemctl $OPTS disable ${SYSTEMD_SERVICE} + systemctl $OPTS --global disable ${SYSTEMD_USER_SERVICE} fi } @@ -139,12 +146,14 @@ python systemd_populate_packages() { def systemd_check_services(): searchpaths = [oe.path.join(d.getVar("sysconfdir", True), "systemd", "system"),] searchpaths.append(d.getVar("systemd_system_unitdir", True)) + searchpaths.append(oe.path.join(d.getVar("sysconfdir", True), "systemd", "user")) + searchpaths.append(d.getVar("systemd_user_unitdir", True)) systemd_packages = d.getVar('SYSTEMD_PACKAGES', True) keys = 'Also' # scan for all in SYSTEMD_SERVICE[] for pkg_systemd in systemd_packages.split(): - for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split(): + for service in (get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd) + get_package_var(d, 'SYSTEMD_USER_SERVICE', pkg_systemd)).split(): path_found = '' # Deal with adding, for example, '[email protected]' from @@ -165,14 +174,14 @@ python systemd_populate_packages() { if path_found != '': systemd_add_files_and_parse(pkg_systemd, path_found, service, keys) else: - raise bb.build.FuncFailed("SYSTEMD_SERVICE_%s value %s does not exist" % \ - (pkg_systemd, service)) + raise bb.build.FuncFailed("SYSTEMD_SERVICE_%s or SYSTEMD_USER_SERVICE_%s value %s does not exist" % \ + (pkg_systemd, pkg_systemd, service)) # Run all modifications once when creating package if os.path.exists(d.getVar("D", True)): for pkg in d.getVar('SYSTEMD_PACKAGES', True).split(): systemd_check_package(pkg) - if d.getVar('SYSTEMD_SERVICE_' + pkg, True): + if d.getVar('SYSTEMD_SERVICE_' + pkg, True) or d.getVar('SYSTEMD_USER_SERVICE_' + pkg, True): systemd_generate_package_scripts(pkg) systemd_check_services() } -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
