diff --git a/sddm-0.18.1-openmamba-pam.patch b/sddm-0.18.1-openmamba-pam.patch deleted file mode 100644 index 000629b..0000000 --- a/sddm-0.18.1-openmamba-pam.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff -ru sddm-0.18.1.orig/services/sddm-autologin.pam sddm-0.18.1/services/sddm-autologin.pam ---- sddm-0.18.1.orig/services/sddm-autologin.pam 2019-04-01 08:51:20.000000000 +0200 -+++ sddm-0.18.1/services/sddm-autologin.pam 2020-10-15 20:24:25.497000000 +0200 -@@ -1,13 +1,14 @@ - #%PAM-1.0 - auth required pam_env.so --auth required pam_tally.so file=/var/log/faillog onerr=succeed -+auth required pam_group.so -+auth required pam_faillock.so file=/var/log/faillog onerr=succeed - auth required pam_shells.so - auth required pam_nologin.so - auth required pam_permit.so - -auth optional pam_gnome_keyring.so - -auth optional pam_kwallet5.so --account include system-local-login --password include system-local-login --session include system-local-login -+account include system-auth -+password include system-auth -+session include system-auth - -session optional pam_gnome_keyring.so auto_start - -session optional pam_kwallet5.so auto_start -diff -ru sddm-0.18.1.orig/services/sddm.pam sddm-0.18.1/services/sddm.pam ---- sddm-0.18.1.orig/services/sddm.pam 2019-04-01 08:51:20.000000000 +0200 -+++ sddm-0.18.1/services/sddm.pam 2020-10-15 20:23:28.591000000 +0200 -@@ -1,15 +1,16 @@ - #%PAM-1.0 - --auth include system-login -+auth required pam_group.so -+auth include system-auth - -auth optional pam_gnome_keyring.so - -auth optional pam_kwallet5.so - --account include system-login -+account include system-auth - --password include system-login -+password include system-auth - -password optional pam_gnome_keyring.so use_authtok - - session optional pam_keyinit.so force revoke --session include system-login -+session include system-auth - -session optional pam_gnome_keyring.so auto_start - -session optional pam_kwallet5.so auto_start diff --git a/sddm-0.19.0-fix-xorg-autologin.patch b/sddm-0.19.0-fix-xorg-autologin.patch new file mode 100644 index 0000000..15d3e3c --- /dev/null +++ b/sddm-0.19.0-fix-xorg-autologin.patch @@ -0,0 +1,14 @@ +--- sddm-0.19.0/src/daemon/Display.cpp.orig 2020-12-27 18:36:50.203227500 +0100 ++++ sddm-0.19.0/src/daemon/Display.cpp 2020-12-27 18:37:25.051854984 +0100 +@@ -245,6 +245,11 @@ + } + + bool Display::findSessionEntry(const QDir &dir, const QString &name) const { ++ // Given an absolute path: Check that it matches dir ++ const QFileInfo fileInfo(name); ++ if (fileInfo.isAbsolute() && fileInfo.absoluteFilePath() != dir.absolutePath()) ++ return false; ++ + QString fileName = name; + + // append extension diff --git a/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch b/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch new file mode 100644 index 0000000..c2e35d3 --- /dev/null +++ b/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch @@ -0,0 +1,171 @@ +From 68cc9e31d1a4c4609f42114782fc485cb07353a4 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Fri, 9 Oct 2020 21:06:01 +0200 +Subject: [PATCH] Merge normal and testing paths in XorgDisplayServer::start + +They have much in common and this means that Xephyr can also make use use +of -displayfd now. +--- + src/daemon/XorgDisplayServer.cpp | 132 ++++++++++++++----------------- + 1 file changed, 60 insertions(+), 72 deletions(-) + +diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp +index d5f29a94..e60c0221 100644 +--- a/src/daemon/XorgDisplayServer.cpp ++++ b/src/daemon/XorgDisplayServer.cpp +@@ -136,95 +136,83 @@ namespace SDDM { + return false; + } + +- if (daemonApp->testing()) { +- QStringList args; +- QDir x11socketDir(QStringLiteral("/tmp/.X11-unix")); +- int display = 100; +- while (x11socketDir.exists(QStringLiteral("X%1").arg(display))) { +- ++display; +- } +- m_display = QStringLiteral(":%1").arg(display); +- args << m_display << QStringLiteral("-auth") << m_authPath << QStringLiteral("-br") << QStringLiteral("-noreset") << QStringLiteral("-screen") << QStringLiteral("800x600"); +- process->start(mainConfig.X11.XephyrPath.get(), args); +- +- +- // wait for display server to start +- if (!process->waitForStarted()) { +- // log message +- qCritical() << "Failed to start display server process."; ++ // set process environment ++ QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); ++ env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); ++ process->setProcessEnvironment(env); + +- // return fail +- return false; +- } +- emit started(); +- } else { +- // set process environment +- QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); +- env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); +- process->setProcessEnvironment(env); +- +- //create pipe for communicating with X server +- //0 == read from X, 1== write to from X +- int pipeFds[2]; +- if (pipe(pipeFds) != 0) { +- qCritical("Could not create pipe to start X server"); +- } ++ //create pipe for communicating with X server ++ //0 == read from X, 1== write to from X ++ int pipeFds[2]; ++ if (pipe(pipeFds) != 0) { ++ qCritical("Could not create pipe to start X server"); ++ } + +- // start display server +- QStringList args = mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts); +- args << QStringLiteral("-auth") << m_authPath ++ // start display server ++ QStringList args; ++ if (!daemonApp->testing()) { ++ process->setProgram(mainConfig.X11.ServerPath.get()); ++ args << mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts) + << QStringLiteral("-background") << QStringLiteral("none") +- << QStringLiteral("-noreset") +- << QStringLiteral("-displayfd") << QString::number(pipeFds[1]) + << QStringLiteral("-seat") << displayPtr()->seat()->name(); + + if (displayPtr()->seat()->name() == QLatin1String("seat0")) { + args << QStringLiteral("vt%1").arg(displayPtr()->terminalId()); + } +- qDebug() << "Running:" +- << qPrintable(mainConfig.X11.ServerPath.get()) +- << qPrintable(args.join(QLatin1Char(' '))); +- process->start(mainConfig.X11.ServerPath.get(), args); +- +- // wait for display server to start +- if (!process->waitForStarted()) { +- // log message +- qCritical() << "Failed to start display server process."; +- +- // return fail +- close(pipeFds[0]); +- return false; +- } ++ } else { ++ process->setProgram(mainConfig.X11.XephyrPath.get()); ++ args << QStringLiteral("-br") ++ << QStringLiteral("-screen") << QStringLiteral("800x600"); ++ } + +- // close the other side of pipe in our process, otherwise reading +- // from it may stuck even X server exit. +- close(pipeFds[1]); ++ args << QStringLiteral("-auth") << m_authPath ++ << QStringLiteral("-noreset") ++ << QStringLiteral("-displayfd") << QString::number(pipeFds[1]); + +- QFile readPipe; ++ process->setArguments(args); ++ qDebug() << "Running:" ++ << qPrintable(process->program()) ++ << qPrintable(process->arguments().join(QLatin1Char(' '))); ++ process->start(); + +- if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) { +- qCritical("Failed to open pipe to start X Server"); ++ // wait for display server to start ++ if (!process->waitForStarted()) { ++ // log message ++ qCritical() << "Failed to start display server process."; + +- close(pipeFds[0]); +- return false; +- } +- QByteArray displayNumber = readPipe.readLine(); +- if (displayNumber.size() < 2) { +- // X server gave nothing (or a whitespace). +- qCritical("Failed to read display number from pipe"); ++ // return fail ++ close(pipeFds[0]); ++ return false; ++ } + +- close(pipeFds[0]); +- return false; +- } +- displayNumber.prepend(QByteArray(":")); +- displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace +- m_display = QString::fromLocal8Bit(displayNumber); ++ // close the other side of pipe in our process, otherwise reading ++ // from it may stuck even X server exit. ++ close(pipeFds[1]); ++ ++ QFile readPipe; ++ ++ if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) { ++ qCritical("Failed to open pipe to start X Server"); + +- // close our pipe + close(pipeFds[0]); ++ return false; ++ } ++ QByteArray displayNumber = readPipe.readLine(); ++ if (displayNumber.size() < 2) { ++ // X server gave nothing (or a whitespace). ++ qCritical("Failed to read display number from pipe"); + +- emit started(); ++ close(pipeFds[0]); ++ return false; + } ++ displayNumber.prepend(QByteArray(":")); ++ displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace ++ m_display = QString::fromLocal8Bit(displayNumber); ++ ++ // close our pipe ++ close(pipeFds[0]); ++ ++ emit started(); + + // The file is also used by the greeter, which does care about the + // display number. Write the proper entry, if it's different. diff --git a/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch b/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch new file mode 100644 index 0000000..ada64d7 --- /dev/null +++ b/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch @@ -0,0 +1,25 @@ +From 5fd5ed271a0e5b8c8857cc4f5f2084d43fd228f1 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Mon, 9 Nov 2020 11:22:15 +0100 +Subject: [PATCH] Only use the base name for $DESKTOP_SESSION + +Other DMs don't use the path. + +Fixes #852 +--- + src/common/Session.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/common/Session.cpp b/src/common/Session.cpp +index 2d7b04f1..3de28ef1 100644 +--- a/src/common/Session.cpp ++++ b/src/common/Session.cpp +@@ -89,7 +89,7 @@ namespace SDDM { + + QString Session::desktopSession() const + { +- return fileName().replace(s_entryExtention, QString()); ++ return QFileInfo(m_fileName).completeBaseName(); + } + + QString Session::desktopNames() const diff --git a/sddm-0.19.0-upstream-retry-starting-the-xserver.patch b/sddm-0.19.0-upstream-retry-starting-the-xserver.patch new file mode 100644 index 0000000..704bee4 --- /dev/null +++ b/sddm-0.19.0-upstream-retry-starting-the-xserver.patch @@ -0,0 +1,212 @@ +From adfaa222fdfa6115ea2b320b0bbc2126db9270a5 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Thu, 12 Nov 2020 20:30:55 +0100 +Subject: [PATCH 1/3] Retry starting the display server + +Even if the CanGraphical property of a Seat is true, it's possible that it's +still too early for X to start, as it might need some driver or device which +isn't present yet. + +Fixes #1316 +--- + src/daemon/Seat.cpp | 23 ++++++++++++++++++----- + src/daemon/Seat.h | 4 +++- + src/daemon/XorgDisplayServer.cpp | 10 ++++++---- + 3 files changed, 27 insertions(+), 10 deletions(-) + +diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp +index eef26da4..838c2221 100644 +--- a/src/daemon/Seat.cpp ++++ b/src/daemon/Seat.cpp +@@ -28,6 +28,7 @@ + + #include + #include ++#include + + #include + +@@ -52,7 +53,7 @@ namespace SDDM { + return m_name; + } + +- bool Seat::createDisplay(int terminalId) { ++ void Seat::createDisplay(int terminalId) { + //reload config if needed + mainConfig.load(); + +@@ -84,12 +85,24 @@ namespace SDDM { + m_displays << display; + + // start the display +- if (!display->start()) { +- qCritical() << "Could not start Display server on vt" << terminalId; +- return false; ++ startDisplay(display); ++ } ++ ++ void Seat::startDisplay(Display *display, int tryNr) { ++ if (display->start()) ++ return; ++ ++ // It's possible that the system isn't ready yet (driver not loaded, ++ // device not enumerated, ...). It's not possible to tell when that changes, ++ // so try a few times with a delay in between. ++ qWarning() << "Attempt" << tryNr << "starting the Display server on vt" << display->terminalId() << "failed"; ++ ++ if(tryNr >= 3) { ++ qCritical() << "Could not start Display server on vt" << display->terminalId(); ++ return; + } + +- return true; ++ QTimer::singleShot(2000, display, [=] { startDisplay(display, tryNr + 1); }); + } + + void Seat::removeDisplay(Display* display) { +diff --git a/src/daemon/Seat.h b/src/daemon/Seat.h +index bf22566b..f9fe7331 100644 +--- a/src/daemon/Seat.h ++++ b/src/daemon/Seat.h +@@ -35,13 +35,15 @@ namespace SDDM { + const QString &name() const; + + public slots: +- bool createDisplay(int terminalId = -1); ++ void createDisplay(int terminalId = -1); + void removeDisplay(SDDM::Display* display); + + private slots: + void displayStopped(); + + private: ++ void startDisplay(SDDM::Display *display, int tryNr = 1); ++ + QString m_name; + + QVector m_displays; +diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp +index e60c0221..5f40fe8c 100644 +--- a/src/daemon/XorgDisplayServer.cpp ++++ b/src/daemon/XorgDisplayServer.cpp +@@ -248,6 +248,12 @@ namespace SDDM { + } + + void XorgDisplayServer::finished() { ++ // clean up ++ if (process) { ++ process->deleteLater(); ++ process = nullptr; ++ } ++ + // check flag + if (!m_started) + return; +@@ -283,10 +289,6 @@ namespace SDDM { + displayStopScript->deleteLater(); + displayStopScript = nullptr; + +- // clean up +- process->deleteLater(); +- process = nullptr; +- + // remove authority file + QFile::remove(m_authPath); + + +From d11e1e987b440fa1aaa741719b92472eeee79b17 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 9 Dec 2020 19:28:41 +0100 +Subject: [PATCH 2/3] Explicitly stop Xorg when starting fails + +When Xorg starts but there is an error, stop it explicitly instead of assuming +that X exits itself. This avoids a possibly lingering Xorg process in the +XorgDisplayServer instance. Add a check and warning message if Xorg is +restarted too early (shouldn't happen). +--- + src/daemon/XorgDisplayServer.cpp | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp +index 5f40fe8c..3a7bee0d 100644 +--- a/src/daemon/XorgDisplayServer.cpp ++++ b/src/daemon/XorgDisplayServer.cpp +@@ -118,6 +118,11 @@ namespace SDDM { + if (m_started) + return false; + ++ if (process) { ++ qCritical() << "Tried to start Xorg before previous instance exited"; ++ return false; ++ } ++ + // create process + process = new QProcess(this); + +@@ -195,6 +200,7 @@ namespace SDDM { + qCritical("Failed to open pipe to start X Server"); + + close(pipeFds[0]); ++ stop(); + return false; + } + QByteArray displayNumber = readPipe.readLine(); +@@ -203,6 +209,7 @@ namespace SDDM { + qCritical("Failed to read display number from pipe"); + + close(pipeFds[0]); ++ stop(); + return false; + } + displayNumber.prepend(QByteArray(":")); +@@ -219,6 +226,7 @@ namespace SDDM { + if(m_display != QStringLiteral(":0")) { + if(!addCookie(m_authPath)) { + qCritical() << "Failed to write xauth file"; ++ stop(); + return false; + } + } +@@ -232,8 +240,7 @@ namespace SDDM { + } + + void XorgDisplayServer::stop() { +- // check flag +- if (!m_started) ++ if (!process) + return; + + // log message + +From 78048b22e3988d3daec9c271883fa114abc114dc Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 9 Dec 2020 19:33:08 +0100 +Subject: [PATCH 3/3] Emit XorgDisplayServer::started only when the auth file + is ready + +--- + src/daemon/XorgDisplayServer.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp +index 3a7bee0d..331adcda 100644 +--- a/src/daemon/XorgDisplayServer.cpp ++++ b/src/daemon/XorgDisplayServer.cpp +@@ -219,8 +219,6 @@ namespace SDDM { + // close our pipe + close(pipeFds[0]); + +- emit started(); +- + // The file is also used by the greeter, which does care about the + // display number. Write the proper entry, if it's different. + if(m_display != QStringLiteral(":0")) { +@@ -232,6 +230,8 @@ namespace SDDM { + } + changeOwner(m_authPath); + ++ emit started(); ++ + // set flag + m_started = true; + diff --git a/sddm-0.19.0.20210906git-openmamba-pam.patch b/sddm-0.19.0.20210906git-openmamba-pam.patch new file mode 100644 index 0000000..b364c52 --- /dev/null +++ b/sddm-0.19.0.20210906git-openmamba-pam.patch @@ -0,0 +1,87 @@ +diff -Nru sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam sddm-0.19.0.20210906git/services/sddm-autologin.pam +--- sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam 2021-09-06 20:28:07.000000000 +0200 ++++ sddm-0.19.0.20210906git/services/sddm-autologin.pam 2021-09-06 20:34:16.427806591 +0200 +@@ -1,13 +1,14 @@ + #%PAM-1.0 + auth required pam_env.so ++auth required pam_group.so + auth required pam_faillock.so preauth + auth required pam_shells.so + auth required pam_nologin.so + auth required pam_permit.so + -auth optional pam_gnome_keyring.so + -auth optional pam_kwallet5.so +-account include system-local-login +-password include system-local-login +-session include system-local-login ++account include system-auth ++password include system-auth ++session include system-auth + -session optional pam_gnome_keyring.so auto_start + -session optional pam_kwallet5.so auto_start +diff -Nru sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam.orig sddm-0.19.0.20210906git/services/sddm-autologin.pam.orig +--- sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam.orig 1970-01-01 01:00:00.000000000 +0100 ++++ sddm-0.19.0.20210906git/services/sddm-autologin.pam.orig 2021-09-06 20:32:09.191529393 +0200 +@@ -0,0 +1,13 @@ ++#%PAM-1.0 ++auth required pam_env.so ++auth required pam_faillock.so preauth ++auth required pam_shells.so ++auth required pam_nologin.so ++auth required pam_permit.so ++-auth optional pam_gnome_keyring.so ++-auth optional pam_kwallet5.so ++account include system-local-login ++password include system-local-login ++session include system-local-login ++-session optional pam_gnome_keyring.so auto_start ++-session optional pam_kwallet5.so auto_start +diff -Nru sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam.rej sddm-0.19.0.20210906git/services/sddm-autologin.pam.rej +--- sddm-0.19.0.20210906git/services.orig/sddm-autologin.pam.rej 1970-01-01 01:00:00.000000000 +0100 ++++ sddm-0.19.0.20210906git/services/sddm-autologin.pam.rej 2021-09-06 20:32:09.191529393 +0200 +@@ -0,0 +1,21 @@ ++--- services/sddm-autologin.pam.orig 2020-11-10 10:01:26.923000000 +0100 +++++ services/sddm-autologin.pam 2020-11-10 10:03:03.797000000 +0100 ++@@ -1,13 +1,14 @@ ++ #%PAM-1.0 ++ auth required pam_env.so ++-auth required pam_tally2.so file=/var/log/tallylog onerr=succeed +++auth required pam_group.so +++auth required pam_faillock.so file=/var/log/tallylog onerr=succeed ++ auth required pam_shells.so ++ auth required pam_nologin.so ++ auth required pam_permit.so ++ -auth optional pam_gnome_keyring.so ++ -auth optional pam_kwallet5.so ++-account include system-local-login ++-password include system-local-login ++-session include system-local-login +++account include system-auth +++password include system-auth +++session include system-auth ++ -session optional pam_gnome_keyring.so auto_start ++ -session optional pam_kwallet5.so auto_start +diff -Nru sddm-0.19.0.20210906git/services.orig/sddm.pam sddm-0.19.0.20210906git/services/sddm.pam +--- sddm-0.19.0.20210906git/services.orig/sddm.pam 2021-09-06 20:28:07.000000000 +0200 ++++ sddm-0.19.0.20210906git/services/sddm.pam 2021-09-06 20:32:08.996525967 +0200 +@@ -1,15 +1,16 @@ + #%PAM-1.0 + +-auth include system-login ++auth required pam_group.so ++auth include system-auth + -auth optional pam_gnome_keyring.so + -auth optional pam_kwallet5.so + +-account include system-login ++account include system-auth + +-password include system-login ++password include system-auth + -password optional pam_gnome_keyring.so use_authtok + + session optional pam_keyinit.so force revoke +-session include system-login ++session include system-auth + -session optional pam_gnome_keyring.so auto_start + -session optional pam_kwallet5.so auto_start diff --git a/sddm.spec b/sddm.spec index f1f186e..07e32f0 100644 --- a/sddm.spec +++ b/sddm.spec @@ -1,20 +1,26 @@ %define user_sddm 68 %define group_sddm 68 Name: sddm -Version: 0.18.1 -Release: 4mamba +Version: 0.19.0.20210906git +Release: 1mamba Summary: QML based X11 and Wayland display manager Group: Graphical Desktop/Applications/Environment Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco URL: https://github.com/sddm/sddm -Source: https://github.com/sddm/sddm.git/v%{version}/sddm-%{version}.tar.bz2 -Patch0: sddm-0.18.1-openmamba-pam.patch +Source: https://github.com/sddm/sddm.git/develop/sddm-%{version}.tar.bz2 +#Source: https://github.com/sddm/sddm.git/v%{version}/sddm-%{version}.tar.bz2 +Patch0: sddm-0.19.0.20210906git-openmamba-pam.patch Patch1: sddm-0.17.0.20180408git-fix-pam-group.patch Patch2: sddm-0.18.0-autorotate.patch +Patch3: sddm-0.19.0-fix-xorg-autologin.patch +Patch4: sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch +Patch5: sddm-0.19.0-upstream-retry-starting-the-xserver.patch +Patch6: sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch License: GPL ## AUTOBUILDREQ-BEGIN +#libdl.so.2()(64bit): /usr/lib64/libdl.so: file not owned by any package BuildRequires: glibc-devel BuildRequires: libgcc BuildRequires: libpam-devel @@ -37,8 +43,10 @@ QML based X11 and Wayland display manager. %prep %setup -q %patch0 -p1 -#%patch1 -p1 %patch2 -p1 +#%patch4 -p1 +#%patch5 -p1 +#%patch6 -p1 %build %cmake -d build @@ -134,6 +142,15 @@ fi %doc LICENSE %changelog +* Mon Sep 06 2021 Silvan Calarco 0.19.0.20210906git-1mamba +- update to 0.19.0.20210906git + +* Sun Dec 27 2020 Silvan Calarco 0.19.0-2mamba +- added upstream patches to fix Xorg autologin (see https://github.com/sddm/sddm/issues/1348) + +* Wed Nov 11 2020 Automatic Build System 0.19.0-1mamba +- automatic version update by autodist + * Sun Oct 18 2020 Silvan Calarco 0.18.1-4mamba - fix for pam patch not applied