aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am2
-rw-r--r--gnu/packages/patches/slim-config.patch27
-rw-r--r--gnu/packages/patches/slim-session.patch17
-rw-r--r--gnu/packages/slim.scm31
4 files changed, 70 insertions, 7 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 66c9ab39cd..2e248c7df7 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -296,6 +296,8 @@ dist_patch_DATA = \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/ripperx-libm.patch \
gnu/packages/patches/scheme48-tests.patch \
+ gnu/packages/patches/slim-session.patch \
+ gnu/packages/patches/slim-config.patch \
gnu/packages/patches/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/valgrind-glibc.patch \
diff --git a/gnu/packages/patches/slim-config.patch b/gnu/packages/patches/slim-config.patch
new file mode 100644
index 0000000000..5e6135d75c
--- /dev/null
+++ b/gnu/packages/patches/slim-config.patch
@@ -0,0 +1,27 @@
+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);
+ string themebase = "";
+ string themefile = "";
+ string themedir = "";
+@@ -208,7 +210,9 @@
+ if (testing) {
+ themeName = testtheme;
+ } else {
+- themebase = string(THEMESDIR) + "/";
++ 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) {
diff --git a/gnu/packages/patches/slim-session.patch b/gnu/packages/patches/slim-session.patch
new file mode 100644
index 0000000000..b85d3f7dd0
--- /dev/null
+++ b/gnu/packages/patches/slim-session.patch
@@ -0,0 +1,17 @@
+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/slim.scm b/gnu/packages/slim.scm
index fd2c73c772..1a1feadede 100644
--- a/gnu/packages/slim.scm
+++ b/gnu/packages/slim.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Guy Grant <gzg@riseup.net>
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,6 +24,7 @@
#:use-module (guix download)
#:use-module (guix build-system cmake)
#:use-module (guix packages)
+ #:use-module (gnu packages)
#:use-module (gnu packages gl)
#:use-module (gnu packages xorg)
#:use-module (gnu packages libpng)
@@ -34,13 +36,17 @@
(define-public slim
(package
(name "slim")
- (version "1.3.3")
+ (version "1.3.6")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/project/slim.berlios/slim-"
+ ;; Used to be available from
+ ;; mirror://sourceforge/project/slim.berlios/.
+ (uri (string-append "http://download.berlios.de/slim/slim-"
version ".tar.gz"))
(sha256
- (base32 "1fdvipj3658s8dm78djmfr8xhg6l8rr7kc4qcb34bjrnkkclhln1"))))
+ (base32 "1pqhk22jb4aja4hkrm7rjgbgzjyh7i4zswdgf5nw862l2znzxpi1"))
+ (patches (map search-patch
+ (list "slim-config.patch" "slim-session.patch")))))
(build-system cmake-build-system)
(inputs `(("linux-pam" ,linux-pam)
("libpng" ,libpng)
@@ -62,12 +68,23 @@
(lambda _
(substitute* "CMakeLists.txt"
(("/etc")
- (string-append
- (assoc-ref %outputs "out") "/etc"))))
+ (string-append (assoc-ref %outputs "out") "/etc"))
+ (("install.*systemd.*")
+ ;; The build system's logic here is: if "Linux", then
+ ;; "systemd". Strip that.
+ "")))
%standard-phases)
- #:configure-flags '("-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no")
+ #:configure-flags '("-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no"
+
+ ;; Don't build libslim.so, because then the build
+ ;; system is unable to set the right RUNPATH on the
+ ;; 'slim' binary.
+ "-DBUILD_SHARED_LIBS=OFF"
+
+ ;; Leave a valid RUNPATH upon install.
+ "-DCMAKE_SKIP_BUILD_RPATH=ON")
#:tests? #f))
- (home-page "http://www.slim.berlios.de/")
+ (home-page "http://slim.berlios.de/")
(synopsis "Desktop-independent graphcal login manager for X11")
(description
"SLiM is a Desktop-independent graphical login manager for X11, derived