Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / freedesktop.scm
index a304c15..84fa104 100644 (file)
@@ -204,14 +204,14 @@ the freedesktop.org XDG Base Directory specification.")
 (define-public elogind
   (package
     (name "elogind")
-    (version "219.14")
+    (version "232.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://wingolog.org/pub/" name "/"
-                                  name "-" version ".tar.xz"))
+              (uri (string-append "https://github.com/elogind/elogind/"
+                                  "archive/v" version ".tar.gz"))
               (sha256
                (base32
-                "1jckc4wx199n1q4r4fv43ibjs6nlq91s39w9r78ilk1z383m1hcx"))
+                "1qcxian48z2dj5gfmp7brrngdydqf2jm00f4rjr5sy1myh8fy931"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -222,25 +222,58 @@ the freedesktop.org XDG Base Directory specification.")
                     (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "--with-libcap="
-                            (assoc-ref %build-inputs "libcap"))
-             (string-append "--with-udevrulesdir="
+     `(#:tests? #f ;FIXME: "make check" in the "po" directory fails.
+       #:configure-flags
+       (list (string-append "--with-udevrulesdir="
+                            (assoc-ref %outputs "out")
+                            "/lib/udev/rules.d")
+
+             ;; Let elogind be its own cgroup controller, rather than relying
+             ;; on systemd or OpenRC.  By default, 'configure' makes an
+             ;; incorrect guess.
+             "--with-cgroup-controller=elogind"
+
+             (string-append "--with-rootprefix="
+                            (assoc-ref %outputs "out"))
+             (string-append "--with-rootlibexecdir="
                             (assoc-ref %outputs "out")
-                            "/lib/udev/rules.d"))
+                            "/libexec/elogind")
+             ;; These are needed to ensure that lto linking works.
+             "RANLIB=gcc-ranlib"
+             "AR=gcc-ar"
+             "NM=gcc-nm")
        #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")
-       #:phases (modify-phases %standard-phases
-                  (add-before 'build 'fix-service-file
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Fix the file name of the 'elogind' binary in the D-Bus
-                      ;; '.service' file.
-                      (substitute* "src/login/org.freedesktop.login1.service"
-                        (("^Exec=.*")
-                         (string-append "Exec=" (assoc-ref %outputs "out")
-                                        "/libexec/elogind/elogind\n"))))))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'autogen
+           (lambda _
+             (and (zero? (system* "intltoolize" "--force" "--automake"))
+                  (zero? (system* "autoreconf" "-vif")))))
+         (add-before 'build 'fix-service-file
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Fix the file name of the 'elogind' binary in the D-Bus
+             ;; '.service' file.
+             (substitute* "src/login/org.freedesktop.login1.service"
+               (("^Exec=.*")
+                (string-append "Exec=" (assoc-ref %outputs "out")
+                               "/libexec/elogind/elogind\n")))))
+         (add-after 'install 'add-libcap-to-search-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Add a missing '-L' for libcap in libelogind.la.  See
+             ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00084.html>.
+             (let ((libcap (assoc-ref inputs "libcap"))
+                   (out    (assoc-ref outputs "out")))
+               (substitute* (string-append out "/lib/libelogind.la")
+                 (("-lcap")
+                  (string-append "-L" libcap "/lib -lcap")))
+               #t))))))
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("intltool" ,intltool)
        ("gettext" ,gettext-minimal)
+       ("python" ,python)
        ("docbook-xsl" ,docbook-xsl)
        ("docbook-xml" ,docbook-xml)
        ("xsltproc" ,libxslt)
@@ -260,7 +293,7 @@ the freedesktop.org XDG Base Directory specification.")
        ("dbus" ,dbus)
        ("eudev" ,eudev)
        ("acl" ,acl)))           ;to add individual users to ACLs on /dev nodes
-    (home-page "https://github.com/wingo/elogind")
+    (home-page "https://github.com/elogind/elogind")
     (synopsis "User, seat, and session management service")
     (description "Elogind is the systemd project's \"logind\" service,
 extracted out as a separate project.  Elogind integrates with PAM to provide