diff --git a/recipes-support/sddm.inc b/recipes-support/sddm.inc deleted file mode 100644 --- a/recipes-support/sddm.inc +++ /dev/null @@ -1,62 +0,0 @@ -DESCRIPTION = "QML based X11 and Wayland display manager" -HOMEPAGE = "https://github.com/sddm/sddm" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4641e94ec96f98fabc56ff9cc48be14b" -PR = "r0" - -DEPENDS = " \ - qtdeclarative \ - qttools \ - qttools-native \ - extra-cmake-modules \ - libpam \ - libxcb \ -" - -SRC_URI = " \ - git://github.com/sddm/${BPN};nobranch=1 \ - file://0001-fix-qml-installation.diff \ - file://sddm.conf \ - file://sddm.pam \ - file://sddm-autologin.pam \ -" -S = "${WORKDIR}/git" - -inherit cmake_qt5 pkgconfig systemd useradd - -EXTRA_OECMAKE += "-DQML_INSTALL_DIR=${OE_QMAKE_PATH_QML}" - -do_install_append() { - mkdir -p ${d}${sysconfdir} - cp ${WORKDIR}/sddm.conf ${D}${sysconfdir}/sddm.conf - - # ensure the home dir exists, sddm doesn't start without that - mkdir -p ${D}${localstatedir}/lib/sddm - chown -R sddm:sddm ${D}${localstatedir}/lib/sddm - chmod 0750 ${D}${localstatedir}/lib/sddm - - # deploy PAM files - cp ${WORKDIR}/sddm.pam ${D}${sysconfdir}/pam.d/sddm - cp ${WORKDIR}/sddm-autologin.pam ${D}${sysconfdir}/pam.d/sddm-autologin - - # make SDDM actually auto-start - echo "WantedBy=multi-user.target" >> ${D}/lib/systemd/system/sddm.service -} - -FILES_${PN} += " \ - ${libdir}/qml \ -" -SYSTEMD_SERVICE_${PN} = "${BPN}.service" -USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/sddm --shell /bin/false --user-group --groups video sddm" - -RDEPENDS_${PN} += "\ - packagegroup-core-x11-xserver \ - xauth \ - xinit \ - xmessage \ - xrdb \ - qtbase-plugins \ - qtdeclarative-plugins \ - qtdeclarative-qmlplugins \ -" diff --git a/recipes-support/sddm/0001-fix-qml-installation.diff b/recipes-support/sddm/0001-fix-qml-installation.diff deleted file mode 100644 --- a/recipes-support/sddm/0001-fix-qml-installation.diff +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8903b52..ce9b5bc 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -178,6 +178,7 @@ set(DATA_INSTALL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/sddm" - set(DBUS_CONFIG_DIR "${CMAKE_INSTALL_SYSCONFDIR}/dbus-1/system.d" CACHE PATH "DBus config files directory") - set(STATE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/sddm" CACHE PATH "State directory") - set(RUNTIME_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/sddm" CACHE PATH "Runtime data storage directory") -+set(QML_INSTALL_DIR "${QT_IMPORTS_DIR}" CACHE PATH "QML component installation directory") - - set(SESSION_COMMAND "${DATA_INSTALL_DIR}/scripts/Xsession" CACHE PATH "Script to execute when starting the X11 desktop session") - set(WAYLAND_SESSION_COMMAND "${DATA_INSTALL_DIR}/scripts/wayland-session" CACHE PATH "Script to execute when starting the Wayland desktop session") -diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt -index 33920a6..22d75c9 100644 ---- a/components/CMakeLists.txt -+++ b/components/CMakeLists.txt -@@ -1,5 +1,5 @@ - configure_file("2.0/LayoutBox.qml" "2.0/LayoutBox.qml") - --install(DIRECTORY "2.0/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") --install(DIRECTORY "common/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") --install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/2.0/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") -+install(DIRECTORY "2.0/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") -+install(DIRECTORY "common/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") -+install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/2.0/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") -diff --git a/src/common/Constants.h.in b/src/common/Constants.h.in -index 7500a49..e174b5b 100644 ---- a/src/common/Constants.h.in -+++ b/src/common/Constants.h.in -@@ -24,7 +24,7 @@ - #define LIBEXEC_INSTALL_DIR "@CMAKE_INSTALL_FULL_LIBEXECDIR@" - #define DATA_INSTALL_DIR "@DATA_INSTALL_DIR@" - #define SYS_CONFIG_DIR "@CMAKE_INSTALL_FULL_SYSCONFDIR@" --#define IMPORTS_INSTALL_DIR "@QT_IMPORTS_DIR@" -+#define IMPORTS_INSTALL_DIR "@QML_INSTALL_DIR@" - #define COMPONENTS_TRANSLATION_DIR "@COMPONENTS_TRANSLATION_DIR@" - #define RUNTIME_DIR "@RUNTIME_DIR@" - #define STATE_DIR "@STATE_DIR@" diff --git a/recipes-support/sddm/sddm.inc b/recipes-support/sddm/sddm.inc new file mode 100644 --- /dev/null +++ b/recipes-support/sddm/sddm.inc @@ -0,0 +1,79 @@ +DESCRIPTION = "QML based X11 and Wayland display manager" +HOMEPAGE = "https://github.com/sddm/sddm" +LICENSE = "GPLv2 & CC-BY-3.0" +LIC_FILES_CHKSUM = " \ + file://LICENSE;md5=4641e94ec96f98fabc56ff9cc48be14b \ + file://LICENSE.CC-BY-3.0;md5=36b7342d5619a3a0d3b581e89803ec25 \ +" + +REQUIRED_DISTRO_FEATURES = "x11" + +DEPENDS = " \ + qtdeclarative \ + qttools \ + qttools-native \ + extra-cmake-modules \ + libpam \ + libxcb \ +" + +SRC_URI = " \ + git://github.com/sddm/${BPN};nobranch=1 \ + file://0001-fix-qml-install-dir.patch \ + file://0002-Workaround-missing-sessions.patch \ + file://sddm.conf \ + file://sddm.pam \ + file://sddm-autologin.pam \ +" +S = "${WORKDIR}/git" + +inherit cmake_qt5 pkgconfig systemd useradd + +EXTRA_OECMAKE += " \ + -DLOGIN_DEFS_PATH=${STAGING_DIR_HOST}${sysconfdir}/login.defs \ + -DQML_INSTALL_DIR=${OE_QMAKE_PATH_QML} \ +" + +do_configure_append() { + # fix sysroot path + sed -i 's:${STAGING_DIR_HOST}.*${libdir}:${libdir}:g' ${B}/src/common/Constants.h +} + +do_install_append() { + install -d ${D}/${sysconfdir}/sddm.conf.d + install -m 644 ${WORKDIR}/sddm.conf ${D}/${sysconfdir}/sddm.conf.d/00-default.conf + + install -d ${D}${sysconfdir}/pam.d + install -m 644 ${WORKDIR}/sddm.pam ${D}${sysconfdir}/pam.d/sddm + install -m 644 ${WORKDIR}/sddm-autologin.pam ${D}${sysconfdir}/pam.d/sddm-autologin + + install -d ${D}${localstatedir}/lib/sddm + chown -R sddm:sddm ${D}${localstatedir}/lib/sddm + chmod 0750 ${D}${localstatedir}/lib/sddm +} + +FILES_${PN} += "${OE_QMAKE_PATH_QML}" + +SYSTEMD_SERVICE_${PN} = "${BPN}.service" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/sddm --shell /bin/false --user-group --groups video sddm" + +RDEPENDS_${PN} += "\ + bash \ + packagegroup-core-x11-xserver \ + xcb-util \ + xauth \ + xinit \ + xmessage \ + xrdb \ + qtbase-plugins \ + qtdeclarative-plugins \ + qtdeclarative-qmlplugins \ + pam-plugin-tally \ +" + +RRECOMMENDS_${PN += " \ + qtvirtualkeyboard-plugins \ + qtvirtualkeyboard-qmlplugins \ +" diff --git a/recipes-support/sddm/sddm/0001-fix-qml-install-dir.patch b/recipes-support/sddm/sddm/0001-fix-qml-install-dir.patch new file mode 100644 --- /dev/null +++ b/recipes-support/sddm/sddm/0001-fix-qml-install-dir.patch @@ -0,0 +1,28 @@ +From 45038115cf962f0b5923a74ae362e3a430ec5a3b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Thu, 8 Nov 2018 10:37:24 +0100 +Subject: [PATCH] fix qml install dir + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Andreas Müller +--- + components/CMakeLists.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt +index 33920a6..22d75c9 100644 +--- a/components/CMakeLists.txt ++++ b/components/CMakeLists.txt +@@ -1,5 +1,5 @@ + configure_file("2.0/LayoutBox.qml" "2.0/LayoutBox.qml") + +-install(DIRECTORY "2.0/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") +-install(DIRECTORY "common/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") +-install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/2.0/" DESTINATION "${QT_IMPORTS_DIR}/SddmComponents") ++install(DIRECTORY "2.0/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") ++install(DIRECTORY "common/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") ++install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/2.0/" DESTINATION "${QML_INSTALL_DIR}/SddmComponents") +-- +2.14.5 + diff --git a/recipes-support/sddm/sddm/0002-Workaround-missing-sessions.patch b/recipes-support/sddm/sddm/0002-Workaround-missing-sessions.patch new file mode 100644 --- /dev/null +++ b/recipes-support/sddm/sddm/0002-Workaround-missing-sessions.patch @@ -0,0 +1,57 @@ +From 68dbaac218216d001706c1a72d2db4819e3ca8cc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sun, 25 Nov 2018 00:29:17 +0100 +Subject: [PATCH] Workaround missing sessions +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The current approach is wrong in many ways: + +* In case a session file does not set TryExec it is kept enabled accidentlty +* Session files with TryExec without full path are ignored. Problem here: sddm + tries to find executables based on PATH environment. Problem at least for my + environment: There is no PATH variable set by systemd. So for session files + without path: Do not perform further checks / just trust for now. + +Upstream-Sttaus: Pending + +Signed-off-by: Andreas Müller +--- + src/greeter/SessionModel.cpp | 19 ++++--------------- + 1 file changed, 4 insertions(+), 15 deletions(-) + +diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp +index 2a3c091..927bce2 100644 +--- a/src/greeter/SessionModel.cpp ++++ b/src/greeter/SessionModel.cpp +@@ -124,22 +124,11 @@ namespace SDDM { + + Session *si = new Session(type, session); + bool execAllowed = true; +- QFileInfo fi(si->tryExec()); +- if (fi.isAbsolute()) { +- if (!fi.exists() || !fi.isExecutable()) ++ if(!si->tryExec().isEmpty()) { ++ QFileInfo fi(si->tryExec()); ++ if (fi.isAbsolute()) { ++ if (!fi.exists() || !fi.isExecutable()) + execAllowed = false; +- } else { +- execAllowed = false; +- QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); +- QString envPath = env.value(QStringLiteral("PATH")); +- QStringList pathList = envPath.split(QLatin1Char(':')); +- foreach(const QString &path, pathList) { +- QDir pathDir(path); +- fi.setFile(pathDir, si->tryExec()); +- if (fi.exists() && fi.isExecutable()) { +- execAllowed = true; +- break; +- } + } + } + // add to sessions list +-- +2.14.5 + diff --git a/recipes-support/sddm/sddm-autologin.pam b/recipes-support/sddm/sddm/sddm-autologin.pam rename from recipes-support/sddm/sddm-autologin.pam rename to recipes-support/sddm/sddm/sddm-autologin.pam diff --git a/recipes-support/sddm/sddm.conf b/recipes-support/sddm/sddm/sddm.conf rename from recipes-support/sddm/sddm.conf rename to recipes-support/sddm/sddm/sddm.conf diff --git a/recipes-support/sddm/sddm.pam b/recipes-support/sddm/sddm/sddm.pam rename from recipes-support/sddm/sddm.pam rename to recipes-support/sddm/sddm/sddm.pam diff --git a/recipes-support/sddm/sddm_0.18.0.bb b/recipes-support/sddm/sddm_0.18.0.bb new file mode 100644 --- /dev/null +++ b/recipes-support/sddm/sddm_0.18.0.bb @@ -0,0 +1,2 @@ +require ${PN}.inc +SRCREV = "v${PV}" diff --git a/recipes-support/sddm_0.17.0.bb b/recipes-support/sddm_0.17.0.bb deleted file mode 100644 --- a/recipes-support/sddm_0.17.0.bb +++ /dev/null @@ -1,4 +0,0 @@ -require ${PN}.inc -# SRCREV = "v${PV}" -# 0.17.0 tries to run generated binaries durign the build, which fails when cross-compiling -SRCREV = "develop"