From 2c8cdb05502cacaf603da231796ccafa59671117 Mon Sep 17 00:00:00 2001 From: Feng Shu Date: Thu, 14 Dec 2023 09:28:44 +0800 Subject: gnu: slim: Update to 1.4.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- gnu/local.mk | 3 -- gnu/packages/display-managers.scm | 89 ++++++++++++++------------------- gnu/packages/patches/slim-config.patch | 43 +++++++++------- gnu/packages/patches/slim-display.patch | 74 +++++++++++++++++---------- gnu/packages/patches/slim-reset.patch | 33 ------------ gnu/packages/patches/slim-session.patch | 17 ------- gnu/packages/patches/slim-sigusr1.patch | 33 ------------ 7 files changed, 111 insertions(+), 181 deletions(-) delete mode 100644 gnu/packages/patches/slim-reset.patch delete mode 100644 gnu/packages/patches/slim-session.patch delete mode 100644 gnu/packages/patches/slim-sigusr1.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index eca52cd39f..a472c62acb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 935563c94c..7120c2ad75 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -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 . - (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 diff --git a/gnu/packages/patches/slim-config.patch b/gnu/packages/patches/slim-config.patch index 5e6135d75c..91eeb5f56c 100644 --- a/gnu/packages/patches/slim-config.patch +++ b/gnu/packages/patches/slim-config.patch @@ -1,27 +1,36 @@ Allow the configuration file and theme directory to be specified at run time. + Patch by Eelco Dolstra, from Nixpkgs. +--- + app.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) ---- 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); +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 + diff --git a/gnu/packages/patches/slim-display.patch b/gnu/packages/patches/slim-display.patch index f68604a94b..b59e20c25c 100644 --- a/gnu/packages/patches/slim-display.patch +++ b/gnu/packages/patches/slim-display.patch @@ -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 + diff --git a/gnu/packages/patches/slim-reset.patch b/gnu/packages/patches/slim-reset.patch deleted file mode 100644 index eebee6b7b5..0000000000 --- a/gnu/packages/patches/slim-reset.patch +++ /dev/null @@ -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 ses = cfg->nextSession(); - session_name = ses.first; - session_exec = ses.second; -- if (session_name.size() > 0) { -- ShowSession(); -- } -+ ShowSession(); - } - - /* Display session type on the screen */ diff --git a/gnu/packages/patches/slim-session.patch b/gnu/packages/patches/slim-session.patch deleted file mode 100644 index b85d3f7dd0..0000000000 --- a/gnu/packages/patches/slim-session.patch +++ /dev/null @@ -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) { diff --git a/gnu/packages/patches/slim-sigusr1.patch b/gnu/packages/patches/slim-sigusr1.patch deleted file mode 100644 index 344b02933e..0000000000 --- a/gnu/packages/patches/slim-sigusr1.patch +++ /dev/null @@ -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); -- cgit v1.2.3