~ruther/guix-local

16686a902276c827455d78860dd62aaa68922cd2 — Ludovic Courtès 12 years ago 1d07e93
gnu: slim: Upgrade to 1.3.6; allow the choice of a config file at run time.

* gnu/packages/slim.scm (slim): Upgrade to 1.3.6.  Add patches.  Comment
  out systemd-related stuff from CMakeLists.txt.  Add
  "-DBUILD_SHARED_LIBS=OFF" and "-DCMAKE_SKIP_BUILD_RPATH=ON" to
  #:configure-flags.  Adjust 'home-page' field.
* gnu/packages/patches/slim-config.patch,
  gnu/packages/patches/slim-session.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
M gnu-system.am => gnu-system.am +2 -0
@@ 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			\

A gnu/packages/patches/slim-config.patch => gnu/packages/patches/slim-config.patch +27 -0
@@ 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) {

A gnu/packages/patches/slim-session.patch => gnu/packages/patches/slim-session.patch +17 -0
@@ 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) {

M gnu/packages/slim.scm => gnu/packages/slim.scm +24 -7
@@ 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