summaryrefslogtreecommitdiffstats
path: root/core/modules/lightdm/module.build
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/lightdm/module.build')
-rw-r--r--core/modules/lightdm/module.build26
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!"
}