gnu: polkit: Look for rules in /run/current-system/profile.

* gnu/packages/polkit.scm (polkit): Configure to look for actions and
  rules in the system profile.  Arrange to look for the setuid helper in
  /run/setuid-programs.  Fix introspection installation.

Based on a patch by Mark H Weaver <mhw@netris.org>.
This commit is contained in:
Andy Wingo 2015-09-01 13:30:31 +02:00
parent 7b6c5c5d74
commit 3f130e42e0

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -62,20 +63,61 @@
(substitute* "src/polkitbackend/polkitbackendsessionmonitor-systemd.c"
(("systemd") "elogind"))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("systemd") "elogind"))))))
(("systemd") "elogind"))
(substitute* "src/polkitagent/polkitagentsession.c"
(("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"")
"\"/run/setuid-programs/polkit-agent-helper-1\""))
(substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c"
(("PACKAGE_DATA_DIR \"/polkit-1/actions\"")
"\"/run/current-system/profile/share/polkit-1/actions\""))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("PACKAGE_SYSCONF_DIR \"/polkit-1/rules.d\"")
"\"/run/current-system/profile/etc/polkit-1/rules.d\""))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("PACKAGE_DATA_DIR \"/polkit-1/rules.d\"")
"\"/run/current-system/profile/share/polkit-1/rules.d\""))))))
(build-system gnu-build-system)
(inputs
`(("expat" ,expat)
("glib:bin" ,glib "bin") ; for glib-mkenums
("elogind" ,elogind)
("intltool" ,intltool)
("linux-pam" ,linux-pam)
("elogind" ,elogind)
("mozjs" ,mozjs)
("nspr" ,nspr)))
(propagated-inputs
`(("glib" ,glib))) ; required by polkit-gobject-1.pc
(native-inputs
`(("pkg-config", pkg-config)))
`(("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin") ; for glib-mkenums
("intltool" ,intltool)
("gobject-introspection" ,gobject-introspection)))
(arguments
`(#:configure-flags '("--sysconfdir=/etc"
"--enable-man-pages")
#:phases
(modify-phases %standard-phases
(add-after
'unpack 'fix-introspection-install-dir
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (find-files "." "Makefile.in")
(("@INTROSPECTION_GIRDIR@")
(string-append out "/share/gir-1.0/"))
(("@INTROSPECTION_TYPELIBDIR@")
(string-append out "/lib/girepository-1.0/"))))))
(replace
'install
(lambda* (#:key outputs (make-flags '()) #:allow-other-keys)
;; Override sysconfdir during "make install", to avoid attempting
;; to install in /etc, and to instead install the skeletons in the
;; output directory.
(let ((out (assoc-ref outputs "out")))
(zero? (apply system*
"make" "install"
(string-append "sysconfdir=" out "/etc")
(string-append "polkit_actiondir="
out "/share/polkit-1/actions")
make-flags))))))))
(home-page "http://www.freedesktop.org/wiki/Software/polkit/")
(synopsis "Authorization API for privilege management")
(description "Polkit is an application-level toolkit for defining and