gnu: slim: Update to 1.4.0.

* gnu/packages/display-managers.scm (slim)[version]: Update to 1.4.0.
[inputs]: Remove input label.
[arguments]: Use gexp and remove fix-0-pointer-comparison.
[home-pages]: Update to slim-fork's url.

* gnu/packages/patches/slim-config.patch: Port to slim-1.4.0.
* gnu/packages/patches/slim-display.patch: Port to slim-1.4.0.
* gnu/packages/patches/slim-reset.patch: Deleted, no ablilty to port this
patch for big change in v1.4.0.
* gnu/packages/patches/slim-session.patch: Deleted. seem to work without this
patch, further observation is needed.
* gnu/packages/patches/slim-sigusr1.patch: Deleted, fixed in upstream.

* gnu/local.mk: Remove slim-reset.patch, slim-session.patch, slim-sigur1.patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Feng Shu 2023-12-14 09:28:44 +08:00 committed by Ludovic Courtès
parent 3320c97043
commit 2c8cdb0550
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
7 changed files with 112 additions and 182 deletions

View File

@ -2004,10 +2004,7 @@ dist_patch_DATA = \
%D%/packages/patches/serf-python3.patch \
%D%/packages/patches/shakespeare-spl-fix-grammar.patch \
%D%/packages/patches/sharutils-CVE-2018-1000097.patch \
%D%/packages/patches/slim-session.patch \
%D%/packages/patches/slim-config.patch \
%D%/packages/patches/slim-sigusr1.patch \
%D%/packages/patches/slim-reset.patch \
%D%/packages/patches/slim-login.patch \
%D%/packages/patches/slim-display.patch \
%D%/packages/patches/stex-copy-from-immutable-store.patch \

View File

@ -486,59 +486,46 @@ GTK+, lets you select a desktop session and log in to it.")
(define-public slim
(package
(name "slim")
(version "1.3.6")
(source (origin
(method url-fetch)
;; Used to be available from download.berlios.de.
(uri (string-append
"mirror://sourceforge/slim.berlios/slim-"
version ".tar.gz"))
(sha256
(base32 "1pqhk22jb4aja4hkrm7rjgbgzjyh7i4zswdgf5nw862l2znzxpi1"))
(patches (search-patches "slim-config.patch"
"slim-reset.patch"
"slim-login.patch"
"slim-session.patch"
"slim-sigusr1.patch"
"slim-display.patch"))))
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/slim-fork/slim-" version
".tar.gz"))
(sha256
(base32 "011jfmksy0kgw4z0y70mc80bm5kmz5i1sgm6krrfj0h00zak22rm"))
(patches (search-patches "slim-config.patch"
"slim-login.patch"
"slim-display.patch"))))
(build-system cmake-build-system)
(inputs `(("linux-pam" ,linux-pam)
("libpng" ,libpng)
("libjpeg" ,libjpeg-turbo)
("freeglut" ,freeglut)
("libxrandr" ,libxrandr)
("libxrender" ,libxrender)
("freetype" ,freetype)
("fontconfig" ,fontconfig)
("libx11" ,libx11)
("libxft" ,libxft)
("libxmu" ,libxmu)
("xauth" ,xauth)))
(native-inputs
(list pkg-config))
(inputs (list fontconfig
freeglut
freetype
libjpeg-turbo
libpng
libx11
libxft
libxmu
libxrandr
libxrender
linux-pam
xauth))
(native-inputs (list pkg-config))
(arguments
'(#:phases
(modify-phases %standard-phases
(add-before 'configure 'set-new-etc-location
(lambda _
(substitute* "CMakeLists.txt"
(("/etc")
(string-append (assoc-ref %outputs "out") "/etc"))
(("install.*systemd.*")
;; The build system's logic here is: if "Linux", then
;; "systemd". Strip that.
""))
#t))
(add-before 'configure 'fix-0-pointer-comparison
(lambda _
(substitute* "panel.cpp"
(("WinGC < 0") "WinGC == NULL")))))
#:configure-flags '("-DUSE_PAM=yes"
"-DUSE_CONSOLEKIT=no")
#:tests? #f))
;; This used to be at <http://slim.berlios.de/>.
(home-page "https://github.com/iwamatsu/slim")
(list
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'set-new-etc-location
(lambda _
(substitute* "CMakeLists.txt"
(("/etc")
(string-append #$output "/etc"))))))
#:configure-flags
#~(list "-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no")
#:tests? #f))
;; The original project (https://github.com/iwamatsu/slim) has not been
;; maintained since 2013, so we use slim-fork instead.
(home-page "https://slim-fork.sourceforge.io/")
(synopsis "Desktop-independent graphical login manager for X11")
(description
"SLiM is a Desktop-independent graphical login manager for X11, derived

View File

@ -1,27 +1,36 @@
Allow the configuration file and theme directory to be specified at run time.
Patch by Eelco Dolstra, from Nixpkgs.
--- slim-1.3.6/app.cpp 2013-10-02 00:38:05.000000000 +0200
+++ slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200
@@ -200,7 +200,9 @@
/* Read configuration and theme */
cfg = new Cfg;
- cfg->readConf(CFGFILE);
+ char *cfgfile = getenv("SLIM_CFGFILE");
+ if (!cfgfile) cfgfile = CFGFILE;
+ cfg->readConf(cfgfile);
Patch by Eelco Dolstra, from Nixpkgs.
---
app.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/app.cpp b/app.cpp
index 237477d..735df9c 100644
--- a/app.cpp
+++ b/app.cpp
@@ -285,7 +285,9 @@ void App::Run()
if ( cfg == 0 )
{
cfg = new Cfg;
- cfg->readConf(CFGFILE);
+ const char* cfgfile = getenv("SLIM_CFGFILE");
+ if (!cfgfile) cfgfile = CFGFILE;
+ cfg->readConf(cfgfile);
}
string themebase = "";
string themefile = "";
string themedir = "";
@@ -208,7 +210,9 @@
if (testing) {
themeName = testtheme;
} else {
@@ -297,7 +299,9 @@ void App::Run()
}
else
{
- themebase = string(THEMESDIR) + "/";
+ char *themesdir = getenv("SLIM_THEMESDIR");
+ const char* themesdir = getenv("SLIM_THEMESDIR");
+ if (!themesdir) themesdir = THEMESDIR;
+ themebase = string(themesdir) + "/";
themeName = cfg->getOption("current_theme");
string::size_type pos;
if ((pos = themeName.find(",")) != string::npos) {
if ((pos = themeName.find(",")) != string::npos)
--
2.39.2

View File

@ -1,39 +1,52 @@
Add "display_name" configuration option and use its value instead of
the hard coded one.
Add "display_name" configuration option and use its value instead of the hard
coded one.
Patch by Diego N. Barbato
---
app.cpp | 23 ++++++++++-------------
cfg.cpp | 1 +
switchuser.cpp | 2 +-
3 files changed, 12 insertions(+), 14 deletions(-)
--- a/app.cpp 1970-01-01 01:00:00.000000000 +0100
+++ b/app.cpp 2019-04-27 13:48:23.479133531 +0200
@@ -190,7 +190,13 @@
}
diff --git a/app.cpp b/app.cpp
index b840e60..4f72da0 100644
--- a/app.cpp
+++ b/app.cpp
@@ -270,7 +270,16 @@ App::App(int argc, char** argv)
void App::Run() {
void App::Run()
{
- DisplayName = DISPLAY;
+ /* Read configuration */
+ cfg = new Cfg;
+ char *cfgfile = getenv("SLIM_CFGFILE");
+ if (!cfgfile) cfgfile = CFGFILE;
+ cfg->readConf(cfgfile);
+ if ( cfg == 0 )
+ {
+ cfg = new Cfg;
+ const char *cfgfile = getenv("SLIM_CFGFILE");
+ if (!cfgfile) cfgfile = CFGFILE;
+ cfg->readConf(cfgfile);
+
+ DisplayName = cfg->getOption("display_name").c_str();
+ DisplayName = cfg->getOption("display_name").c_str();
+ }
#ifdef XNEST_DEBUG
char* p = getenv("DISPLAY");
@@ -200,11 +206,7 @@
@@ -281,14 +287,7 @@ void App::Run()
}
#endif
- /* Read configuration and theme */
- cfg = new Cfg;
- char *cfgfile = getenv("SLIM_CFGFILE");
- if (!cfgfile) cfgfile = CFGFILE;
- cfg->readConf(cfgfile);
+ /* Read theme */
- if ( cfg == 0 )
- {
- cfg = new Cfg;
- const char* cfgfile = getenv("SLIM_CFGFILE");
- if (!cfgfile) cfgfile = CFGFILE;
- cfg->readConf(cfgfile);
- }
+ /* Read theme */
string themebase = "";
string themefile = "";
string themedir = "";
@@ -911,9 +913,7 @@
@@ -1115,9 +1114,7 @@ int App::StartServer()
static const int MAX_XSERVER_ARGS = 256;
static char* server[MAX_XSERVER_ARGS+2] = { NULL };
server[0] = (char *)cfg->getOption("default_xserver").c_str();
@ -44,7 +57,7 @@ Patch by Diego N. Barbato
char* args = new char[argOption.length()+2]; /* NULL plus vt */
strcpy(args, argOption.c_str());
@@ -1233,7 +1233,7 @@
@@ -1424,7 +1421,7 @@ void App::CreateServerAuth()
authfile = cfg->getOption("authfile");
remove(authfile.c_str());
putenv(StrConcat("XAUTHORITY=", authfile.c_str()));
@ -53,9 +66,11 @@ Patch by Diego N. Barbato
authfile);
}
--- a/cfg.cpp 1970-01-01 01:00:00.000000000 +0100
+++ b/cfg.cpp 2019-04-27 13:49:40.511773743 +0200
@@ -31,6 +31,7 @@
diff --git a/cfg.cpp b/cfg.cpp
index 37fb10d..a0c9bf1 100644
--- a/cfg.cpp
+++ b/cfg.cpp
@@ -40,6 +40,7 @@ Cfg::Cfg()
/* Configuration options */
options.insert(option("default_path","/bin:/usr/bin:/usr/local/bin"));
options.insert(option("default_xserver","/usr/bin/X"));
@ -63,13 +78,18 @@ Patch by Diego N. Barbato
options.insert(option("xserver_arguments",""));
options.insert(option("numlock",""));
options.insert(option("daemon",""));
--- a/switchuser.cpp 1970-01-01 01:00:00.000000000 +0100
+++ b/switchuser.cpp 2019-04-27 13:50:19.380096651 +0200
@@ -54,6 +54,6 @@
diff --git a/switchuser.cpp b/switchuser.cpp
index ca936ae..255f5d9 100644
--- a/switchuser.cpp
+++ b/switchuser.cpp
@@ -69,6 +69,6 @@ void SwitchUser::SetClientAuth(const char* mcookie)
string home = string(Pw->pw_dir);
string authfile = home + "/.Xauthority";
remove(authfile.c_str());
- Util::add_mcookie(mcookie, ":0", cfg->getOption("xauth_path"),
+ Util::add_mcookie(mcookie, displayName.c_str(), cfg->getOption("xauth_path"),
+ Util::add_mcookie(mcookie, cfg->getOption("display_name").c_str(), cfg->getOption("xauth_path"),
authfile);
}
--
2.39.2

View File

@ -1,33 +0,0 @@
Do not reset chosen session and maintain the session-choser dialog after a
failed login attempt.
Patch by E. Bavier
--- slim-1.3.6/panel.cpp.orig 1969-12-31 18:00:00.000000000 -0600
+++ slim-1.3.6/panel.cpp 2016-10-17 17:00:07.259649063 -0500
@@ -260,13 +260,12 @@
}
void Panel::ClearPanel() {
- session_name = "";
- session_exec = "";
Reset();
XClearWindow(Dpy, Root);
XClearWindow(Dpy, Win);
Cursor(SHOW);
ShowText();
+ ShowSession();
XFlush(Dpy);
}
@@ -760,9 +760,7 @@
pair<string,string> ses = cfg->nextSession();
session_name = ses.first;
session_exec = ses.second;
- if (session_name.size() > 0) {
- ShowSession();
- }
+ ShowSession();
}
/* Display session type on the screen */

View File

@ -1,17 +0,0 @@
Exit after the user's session has finished. This works around slim's broken
PAM session handling (see
http://developer.berlios.de/bugs/?func=detailbug&bug_id=19102&group_id=2663).
Patch by Eelco Dolstra, from Nixpkgs.
--- slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200
+++ slim-1.3.6/app.cpp 2013-10-15 13:00:10.141210784 +0200
@@ -816,7 +822,7 @@
StopServer();
RemoveLock();
while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */
- Run();
+ exit(OK_EXIT);
}
void App::KillAllClients(Bool top) {

View File

@ -1,33 +0,0 @@
This patch fixes SLiM so it really waits for the X server to be ready
before attempting to connect to it. Indeed, the X server notices that
its parent process has a handler for SIGUSR1, and consequently sends it
SIGUSR1 when it's ready to accept connections.
The problem was that SLiM doesn't pay attention to SIGUSR1. So in practice,
if X starts slowly, then SLiM gets ECONNREFUSED a couple of time on
/tmp/.X11-unix/X0, then goes on trying to connect to localhost:6000,
where nobody answers; eventually, it times out and tries again on
/tmp/.X11-unix/X0, and finally it shows up on the screen.
Patch by L. Courtès.
--- slim-1.3.6/app.cpp 2014-02-05 15:27:20.000000000 +0100
+++ slim-1.3.6/app.cpp 2014-02-09 22:42:04.000000000 +0100
@@ -119,7 +119,9 @@ void CatchSignal(int sig) {
exit(ERR_EXIT);
}
+static volatile int got_sigusr1 = 0;
void User1Signal(int sig) {
+ got_sigusr1 = 1;
signal(sig, User1Signal);
}
@@ -884,6 +886,7 @@ int App::WaitForServer() {
int ncycles = 120;
int cycles;
+ while (!got_sigusr1);
for(cycles = 0; cycles < ncycles; cycles++) {
if((Dpy = XOpenDisplay(DisplayName))) {
XSetIOErrorHandler(xioerror);