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:
parent
3320c97043
commit
2c8cdb0550
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
@ -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) {
|
@ -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);
|
Loading…
Reference in New Issue
Block a user