me
/
guix
Archived
1
0
Fork 0

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>
master
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/serf-python3.patch \
%D%/packages/patches/shakespeare-spl-fix-grammar.patch \ %D%/packages/patches/shakespeare-spl-fix-grammar.patch \
%D%/packages/patches/sharutils-CVE-2018-1000097.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-config.patch \
%D%/packages/patches/slim-sigusr1.patch \
%D%/packages/patches/slim-reset.patch \
%D%/packages/patches/slim-login.patch \ %D%/packages/patches/slim-login.patch \
%D%/packages/patches/slim-display.patch \ %D%/packages/patches/slim-display.patch \
%D%/packages/patches/stex-copy-from-immutable-store.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 (define-public slim
(package (package
(name "slim") (name "slim")
(version "1.3.6") (version "1.4.0")
(source (origin (source
(method url-fetch) (origin
;; Used to be available from download.berlios.de. (method url-fetch)
(uri (string-append (uri (string-append "mirror://sourceforge/slim-fork/slim-" version
"mirror://sourceforge/slim.berlios/slim-" ".tar.gz"))
version ".tar.gz")) (sha256
(sha256 (base32 "011jfmksy0kgw4z0y70mc80bm5kmz5i1sgm6krrfj0h00zak22rm"))
(base32 "1pqhk22jb4aja4hkrm7rjgbgzjyh7i4zswdgf5nw862l2znzxpi1")) (patches (search-patches "slim-config.patch"
(patches (search-patches "slim-config.patch" "slim-login.patch"
"slim-reset.patch" "slim-display.patch"))))
"slim-login.patch"
"slim-session.patch"
"slim-sigusr1.patch"
"slim-display.patch"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs `(("linux-pam" ,linux-pam) (inputs (list fontconfig
("libpng" ,libpng) freeglut
("libjpeg" ,libjpeg-turbo) freetype
("freeglut" ,freeglut) libjpeg-turbo
("libxrandr" ,libxrandr) libpng
("libxrender" ,libxrender) libx11
("freetype" ,freetype) libxft
("fontconfig" ,fontconfig) libxmu
("libx11" ,libx11) libxrandr
("libxft" ,libxft) libxrender
("libxmu" ,libxmu) linux-pam
("xauth" ,xauth))) xauth))
(native-inputs (native-inputs (list pkg-config))
(list pkg-config))
(arguments (arguments
'(#:phases (list
(modify-phases %standard-phases #:phases
(add-before 'configure 'set-new-etc-location #~(modify-phases %standard-phases
(lambda _ (add-before 'configure 'set-new-etc-location
(substitute* "CMakeLists.txt" (lambda _
(("/etc") (substitute* "CMakeLists.txt"
(string-append (assoc-ref %outputs "out") "/etc")) (("/etc")
(("install.*systemd.*") (string-append #$output "/etc"))))))
;; The build system's logic here is: if "Linux", then #:configure-flags
;; "systemd". Strip that. #~(list "-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no")
"")) #:tests? #f))
#t)) ;; The original project (https://github.com/iwamatsu/slim) has not been
(add-before 'configure 'fix-0-pointer-comparison ;; maintained since 2013, so we use slim-fork instead.
(lambda _ (home-page "https://slim-fork.sourceforge.io/")
(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")
(synopsis "Desktop-independent graphical login manager for X11") (synopsis "Desktop-independent graphical login manager for X11")
(description (description
"SLiM is a Desktop-independent graphical login manager for X11, derived "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. 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 Patch by Eelco Dolstra, from Nixpkgs.
+++ slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200 ---
@@ -200,7 +200,9 @@ app.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
/* Read configuration and theme */
cfg = new Cfg; diff --git a/app.cpp b/app.cpp
- cfg->readConf(CFGFILE); index 237477d..735df9c 100644
+ char *cfgfile = getenv("SLIM_CFGFILE"); --- a/app.cpp
+ if (!cfgfile) cfgfile = CFGFILE; +++ b/app.cpp
+ cfg->readConf(cfgfile); @@ -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 themebase = "";
string themefile = ""; string themefile = "";
string themedir = ""; @@ -297,7 +299,9 @@ void App::Run()
@@ -208,7 +210,9 @@ }
if (testing) { else
themeName = testtheme; {
} else {
- themebase = string(THEMESDIR) + "/"; - themebase = string(THEMESDIR) + "/";
+ char *themesdir = getenv("SLIM_THEMESDIR"); + const char* themesdir = getenv("SLIM_THEMESDIR");
+ if (!themesdir) themesdir = THEMESDIR; + if (!themesdir) themesdir = THEMESDIR;
+ themebase = string(themesdir) + "/"; + themebase = string(themesdir) + "/";
themeName = cfg->getOption("current_theme"); themeName = cfg->getOption("current_theme");
string::size_type pos; 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 Add "display_name" configuration option and use its value instead of the hard
the hard coded one. coded one.
Patch by Diego N. Barbato 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 diff --git a/app.cpp b/app.cpp
+++ b/app.cpp 2019-04-27 13:48:23.479133531 +0200 index b840e60..4f72da0 100644
@@ -190,7 +190,13 @@ --- a/app.cpp
} +++ b/app.cpp
@@ -270,7 +270,16 @@ App::App(int argc, char** argv)
void App::Run() { void App::Run()
{
- DisplayName = DISPLAY; - DisplayName = DISPLAY;
+ /* Read configuration */ + /* Read configuration */
+ cfg = new Cfg; + if ( cfg == 0 )
+ char *cfgfile = getenv("SLIM_CFGFILE"); + {
+ if (!cfgfile) cfgfile = CFGFILE; + cfg = new Cfg;
+ cfg->readConf(cfgfile); + 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 #ifdef XNEST_DEBUG
char* p = getenv("DISPLAY"); char* p = getenv("DISPLAY");
@@ -200,11 +206,7 @@ @@ -281,14 +287,7 @@ void App::Run()
} }
#endif #endif
- /* Read configuration and theme */ - /* Read configuration and theme */
- cfg = new Cfg; - if ( cfg == 0 )
- char *cfgfile = getenv("SLIM_CFGFILE"); - {
- if (!cfgfile) cfgfile = CFGFILE; - cfg = new Cfg;
- cfg->readConf(cfgfile); - const char* cfgfile = getenv("SLIM_CFGFILE");
+ /* Read theme */ - if (!cfgfile) cfgfile = CFGFILE;
- cfg->readConf(cfgfile);
- }
+ /* Read theme */
string themebase = ""; string themebase = "";
string themefile = ""; string themefile = "";
string themedir = ""; string themedir = "";
@@ -911,9 +913,7 @@ @@ -1115,9 +1114,7 @@ int App::StartServer()
static const int MAX_XSERVER_ARGS = 256; static const int MAX_XSERVER_ARGS = 256;
static char* server[MAX_XSERVER_ARGS+2] = { NULL }; static char* server[MAX_XSERVER_ARGS+2] = { NULL };
server[0] = (char *)cfg->getOption("default_xserver").c_str(); 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 */ char* args = new char[argOption.length()+2]; /* NULL plus vt */
strcpy(args, argOption.c_str()); strcpy(args, argOption.c_str());
@@ -1233,7 +1233,7 @@ @@ -1424,7 +1421,7 @@ void App::CreateServerAuth()
authfile = cfg->getOption("authfile"); authfile = cfg->getOption("authfile");
remove(authfile.c_str()); remove(authfile.c_str());
putenv(StrConcat("XAUTHORITY=", authfile.c_str())); putenv(StrConcat("XAUTHORITY=", authfile.c_str()));
@ -53,9 +66,11 @@ Patch by Diego N. Barbato
authfile); authfile);
} }
--- a/cfg.cpp 1970-01-01 01:00:00.000000000 +0100 diff --git a/cfg.cpp b/cfg.cpp
+++ b/cfg.cpp 2019-04-27 13:49:40.511773743 +0200 index 37fb10d..a0c9bf1 100644
@@ -31,6 +31,7 @@ --- a/cfg.cpp
+++ b/cfg.cpp
@@ -40,6 +40,7 @@ Cfg::Cfg()
/* Configuration options */ /* Configuration options */
options.insert(option("default_path","/bin:/usr/bin:/usr/local/bin")); options.insert(option("default_path","/bin:/usr/bin:/usr/local/bin"));
options.insert(option("default_xserver","/usr/bin/X")); 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("xserver_arguments",""));
options.insert(option("numlock","")); options.insert(option("numlock",""));
options.insert(option("daemon","")); options.insert(option("daemon",""));
--- a/switchuser.cpp 1970-01-01 01:00:00.000000000 +0100 diff --git a/switchuser.cpp b/switchuser.cpp
+++ b/switchuser.cpp 2019-04-27 13:50:19.380096651 +0200 index ca936ae..255f5d9 100644
@@ -54,6 +54,6 @@ --- a/switchuser.cpp
+++ b/switchuser.cpp
@@ -69,6 +69,6 @@ void SwitchUser::SetClientAuth(const char* mcookie)
string home = string(Pw->pw_dir); string home = string(Pw->pw_dir);
string authfile = home + "/.Xauthority"; string authfile = home + "/.Xauthority";
remove(authfile.c_str()); remove(authfile.c_str());
- Util::add_mcookie(mcookie, ":0", cfg->getOption("xauth_path"), - 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); 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);