diff options
Diffstat (limited to 'core/modules/lightdm/module.build')
-rw-r--r-- | core/modules/lightdm/module.build | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/core/modules/lightdm/module.build b/core/modules/lightdm/module.build index 656d71a9..a86d0baa 100644 --- a/core/modules/lightdm/module.build +++ b/core/modules/lightdm/module.build @@ -12,9 +12,29 @@ build() { post_copy() { mkdir -p "${TARGET_BUILD_DIR}/var/lib/lightdm"{,-data} - local LDMUID=$(add_user "lightdm") - local LDMGID=$(add_group "lightdm") + local LDMUID=$(add_system_user "lightdm") + local LDMGID=$(add_system_group "lightdm") pinfo "lightdm user and group is $LDMUID $LDMGID" - chown -R "${LDMUID}:${LDMGID}" "${TARGET_BUILD_DIR}/var/lib/lightdm/" || perror "chowning '${TARGET_BUILD_DIR}/var/lib/lightdm/' failed." + chown -R "${LDMUID}:${LDMGID}" "${TARGET_BUILD_DIR}/var/lib/lightdm/" || \ + perror "chowning '${TARGET_BUILD_DIR}/var/lib/lightdm/' failed." + + # NOTE this might cause problems on systemd-based systems where use our + # own systemd module instead of using the distro's module, which we shouldn't + # in the first place! First, check if service file is present on system: + local LIGHTDM_SERVICE_PATH="$(systemctl show -p FragmentPath lightdm.service | cut -c 14-)" + if [ -z "${LIGHTDM_SERVICE_PATH}" ]; then + # Not found, so use our template + local LIGHTDM_SERVICE_TPL="${MODULE_DIR}/templates/lightdm.service" + [ -s "${LIGHTDM_SERVICE_TPL}" ] || perror "Unable to find template at ${LIGHTDM_SERVICE_TPL}." + local LIGHTDM_SERVICE_DEST="${TARGET_BUILD_DIR}/etc/systemd/system/lightdm.service" + mkdir -p "${LIGHTDM_SERVICE_DEST%/*}" || perror "Could not create '${LIGHTDM_SERVICE_DEST%/*}'." + cp "${MODULE_DIR}/templates/lightdm.service" "${LIGHTDM_SERVICE_DEST}" || \ + perror "Could not cp lightdm.service template to '${LIGHTDM_SERVICE_DEST}'." + LIGHTDM_SERVICE_PATH="${LIGHTDM_SERVICE_DEST//${TARGET_BUILD_DIR}/}" + fi + # either way link display-manager to LIGHTDM_SERVICE_PATH + ln -sf "${LIGHTDM_SERVICE_PATH}" \ + "${TARGET_BUILD_DIR}/etc/systemd/system/display-manager.service" || \ + perror "Could not set lightdm as display-manager!" } |