diff --git a/0001-Workaround-QTBUG-47066-to-fix-crash-on-startup.patch b/0001-Workaround-QTBUG-47066-to-fix-crash-on-startup.patch new file mode 100644 index 0000000..4e69cf4 --- /dev/null +++ b/0001-Workaround-QTBUG-47066-to-fix-crash-on-startup.patch @@ -0,0 +1,41 @@ +From 0497a6e917c9cf6c49d30658d11d4e624037610d Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Fri, 14 Sep 2018 11:35:12 +0200 +Subject: [PATCH] Workaround QTBUG-47066 to fix crash on startup + +Summary: +The lambda returns a QStringBuilder which contains dangling references. +Work around that by converting to QString inside the lambda's context. + +Test Plan: Does not crash anymore. + +Reviewers: #plasma + +Subscribers: plasma-devel + +Tags: #plasma + +Differential Revision: https://phabricator.kde.org/D15498 +--- + src/sddmkcm.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: sddm-kcm-5.13.90/src/sddmkcm.cpp +=================================================================== +--- sddm-kcm-5.13.90.orig/src/sddmkcm.cpp ++++ sddm-kcm-5.13.90/src/sddmkcm.cpp +@@ -62,10 +62,12 @@ SddmKcm::SddmKcm(QWidget *parent, const + // This does not listen for new config files in the directory. + QStringList configFiles = QDir(QString::fromLatin1(SDDM_CONFIG_DIR)).entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::LocaleAware), + systemConfigFiles = QDir(QString::fromLatin1(SDDM_SYSTEM_CONFIG_DIR)).entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::LocaleAware); ++ ++ // QStringBuilder keeps dangling references, so force return of QString (QTBUG-47066) + std::transform(systemConfigFiles.begin(), systemConfigFiles.end(), systemConfigFiles.begin(), +- [](const QString &filename) { return QStringLiteral(SDDM_SYSTEM_CONFIG_DIR "/") + filename; }); ++ [](const QString &filename) -> QString { return QStringLiteral(SDDM_SYSTEM_CONFIG_DIR "/") + filename; }); + std::transform(configFiles.begin(), configFiles.end(), configFiles.begin(), +- [](const QString &filename) { return QStringLiteral(SDDM_CONFIG_DIR "/") + filename; }); ++ [](const QString &filename) -> QString { return QStringLiteral(SDDM_CONFIG_DIR "/") + filename; }); + + mSddmConfig->addConfigSources(systemConfigFiles + configFiles); + diff --git a/dont-set-empty-autologin.patch b/dont-set-empty-autologin.patch new file mode 100644 index 0000000..67acc11 --- /dev/null +++ b/dont-set-empty-autologin.patch @@ -0,0 +1,16 @@ +Index: sddm-kcm-5.13.80git.20180704T081749~7a9b287/src/advanceconfig.cpp +=================================================================== +--- sddm-kcm-5.13.80git.20180704T081749~7a9b287.orig/src/advanceconfig.cpp ++++ sddm-kcm-5.13.80git.20180704T081749~7a9b287/src/advanceconfig.cpp +@@ -122,7 +122,10 @@ QVariantMap AdvanceConfig::save() + } + + args[QStringLiteral("sddm.conf/Autologin/User")] = ( configUi->autoLogin->isChecked() ) ? configUi->userList->currentText() : QString(); +- args[QStringLiteral("sddm.conf/Autologin/Session")] = ( configUi->autoLogin->isChecked() ) ? configUi->sessionList->currentData() : QString(); ++ if (configUi->autoLogin->isChecked()) { // only save the Autologin session if Autologin is actually enabled otherwise we would override the default session with "" if disabled ++ args[QStringLiteral("sddm.conf/Autologin/Session")] = configUi->sessionList->currentData(); ++ } ++ + + args[QStringLiteral("sddm.conf/Autologin/Relogin")] = configUi->reloginAfterQuit->isChecked(); + //TODO session diff --git a/kcm_sddm.changes b/kcm_sddm.changes index 99c8a15..924400b 100644 --- a/kcm_sddm.changes +++ b/kcm_sddm.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Thu Sep 13 17:24:59 UTC 2018 - fabian@ritter-vogt.de + +- Update to 5.13.90 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/plasma-5.13.90.php +- Changes since 5.13.5: + * QT_MIN_VERSIONS is Qt 5.11 for Plasma 5.14. Agreed at kickoff meeting. Set everywhere for clearity and consistency. + * Sync MAX_UID with upstream + * Remove deprecated class + * Check version + * Remove unused include moc + * Use nullptr. Use const'ref + * Make compile with strict compile flags (I found a missing i18n too) +- Refresh patches remove-wayland-suffix.patch +- Replace set-default-session-to-plasma5-for-autologin.patch with + dont-set-empty-autologin.patch +- Add patch to fix crash on startup: + * 0001-Workaround-QTBUG-47066-to-fix-crash-on-startup.patch + ------------------------------------------------------------------- Tue Sep 4 10:58:40 UTC 2018 - fabian@ritter-vogt.de diff --git a/kcm_sddm.spec b/kcm_sddm.spec index af2a914..b50e6cb 100644 --- a/kcm_sddm.spec +++ b/kcm_sddm.spec @@ -18,21 +18,23 @@ %bcond_without lang Name: kcm_sddm -Version: 5.13.5 +Version: 5.13.90 Release: 0 Summary: A sddm control module for KDE License: GPL-2.0-only Group: System/GUI/KDE Url: https://projects.kde.org/projects/kdereview/sddm-kcm/repository -Source: http://download.kde.org/stable/plasma/%{version}/sddm-kcm-%{version}.tar.xz -# PATCH-FIX-OPENSUSE set-default-session-to-plasma5-for-autologin.patch boo#951886 wbauer@tmo.at -- set the default autologin session to plasma5.desktop -Patch1: set-default-session-to-plasma5-for-autologin.patch +Source: http://download.kde.org/unstable/plasma/%{version}/sddm-kcm-%{version}.tar.xz +# PATCH-FIX-OPENSUSE +Patch1: dont-set-empty-autologin.patch # PATCH-FIX-OPENSUSE Patch2: 0002-Support-default.session-symlink.patch # PATCH-FIX-OPENSUSE Patch3: 0001-Replace-autologin-configuration-with-a-note-to-use-Y.patch # PATCH-FIX-UPSTREAM Patch4: remove-wayland-suffix.patch +# PATCH-FIX-UPSTREAM +Patch5: 0001-Workaround-QTBUG-47066-to-fix-crash-on-startup.patch BuildRequires: extra-cmake-modules >= 1.0.0 BuildRequires: kf5-filesystem BuildRequires: pkgconfig diff --git a/remove-wayland-suffix.patch b/remove-wayland-suffix.patch index 291e32b..e3eff0f 100644 --- a/remove-wayland-suffix.patch +++ b/remove-wayland-suffix.patch @@ -1,24 +1,32 @@ +From c6fda4bb877a71687b37e6a19f9daf7298e32f98 Mon Sep 17 00:00:00 2001 From: Fabian Vogt -Subject: Don't add a (Wayland) suffix to Wayland sessions +Date: Sat, 7 Jul 2018 20:34:44 +0200 +Subject: [PATCH] Don't add a (Wayland) suffix to Wayland sessions It got removed from sddm as well. +--- + src/sessionmodel.cpp | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) -Index: sddm-kcm-5.12.5/src/sessionmodel.cpp -=================================================================== ---- sddm-kcm-5.12.5.orig/src/sessionmodel.cpp -+++ sddm-kcm-5.12.5/src/sessionmodel.cpp -@@ -81,13 +81,8 @@ void SessionModel::loadDir(const QString +diff --git a/src/sessionmodel.cpp b/src/sessionmodel.cpp +index ff63dbd..eeb962c 100644 +--- a/src/sessionmodel.cpp ++++ b/src/sessionmodel.cpp +@@ -81,13 +81,8 @@ void SessionModel::loadDir(const QString &path, SessionType type) if (current_section != QLatin1String("Desktop Entry")) continue; // We are only interested in the "Desktop Entry" section -- if (line.startsWith("Name=")) { -+ if (line.startsWith("Name=")) +- if (line.startsWith(QLatin1String("Name="))) { ++ if (line.startsWith(QLatin1String("Name="))) si->name = line.mid(5); - if (type == SessionTypeWayland) { - //we want to exactly match the SDDM prompt which is formatted in this way - si->name = i18nc("%1 is the name of a session", "%1 (Wayland)", si->name); - } - } - if (line.startsWith("Exec=")) + if (line.startsWith(QLatin1String("Exec="))) si->exec = line.mid(5); - if (line.startsWith("Comment=")) + if (line.startsWith(QLatin1String("Comment="))) +-- +2.17.1 + diff --git a/sddm-kcm-5.13.5.tar.xz b/sddm-kcm-5.13.5.tar.xz deleted file mode 100644 index 002625a..0000000 --- a/sddm-kcm-5.13.5.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:90a1f9f12f2ea6e92693ee6c23f8fd75a1ea007f30b35837f5b80328d5404f88 -size 60560 diff --git a/sddm-kcm-5.13.90.tar.xz b/sddm-kcm-5.13.90.tar.xz new file mode 100644 index 0000000..2af04ee --- /dev/null +++ b/sddm-kcm-5.13.90.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6810eb1aad7ce09cf26d7c1de7f7a563b283689d8bc1aaaa0947a40e5e573eb +size 61056 diff --git a/set-default-session-to-plasma5-for-autologin.patch b/set-default-session-to-plasma5-for-autologin.patch deleted file mode 100644 index cd04ef0..0000000 --- a/set-default-session-to-plasma5-for-autologin.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: sddm-kcm-5.12.2/src/advanceconfig.cpp -=================================================================== ---- sddm-kcm-5.12.2.orig/src/advanceconfig.cpp -+++ sddm-kcm-5.12.2/src/advanceconfig.cpp -@@ -90,7 +90,7 @@ void AdvanceConfig::load() - const QString currentUser = mConfig->group("Autologin").readEntry("User", ""); - configUi->userList->setCurrentIndex(userModel->indexOf(currentUser)); - -- const QString autologinSession = mConfig->group("Autologin").readEntry("Session", ""); -+ const QString autologinSession = mConfig->group("Autologin").readEntry("Session", "plasma5.desktop"); - configUi->sessionList->setCurrentIndex(sessionModel->indexOf(autologinSession)); - - configUi->autoLogin->setChecked(!currentUser.isEmpty()); -@@ -123,7 +123,9 @@ QVariantMap AdvanceConfig::save() - } - - args["sddm.conf/Autologin/User"] = ( configUi->autoLogin->isChecked() ) ? configUi->userList->currentText() : ""; -- args["sddm.conf/Autologin/Session"] = ( configUi->autoLogin->isChecked() ) ? configUi->sessionList->currentData() : ""; -+ if (configUi->autoLogin->isChecked()) { // only save the Autologin session if Autologin is actually enabled otherwise we would override the default session with "" if disabled -+ args["sddm.conf/Autologin/Session"] = configUi->sessionList->currentData(); -+ } - - args["sddm.conf/Autologin/Relogin"] = configUi->reloginAfterQuit->isChecked(); - //TODO session