X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/86a81222cad9841c67e9d9bcd46c567383e9a34f..e1f640db8fa2a3aee018ce80df47b37e245c4b52:/gnu/packages/polkit.scm diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index be7302ed49..ccb8ebf8f8 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -1,5 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Andreas Enge +;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2016 Efraim Flashner +;;; Copyright © 2017 Huang Ying +;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,41 +29,105 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) #:use-module (gnu packages gnuzilla) #:use-module (gnu packages linux) + #:use-module (gnu packages nss) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages xml)) (define-public polkit (package (name "polkit") - (version "0.112") + (version "0.115") (source (origin (method url-fetch) (uri (string-append - "http://www.freedesktop.org/software/polkit/releases/" + "https://www.freedesktop.org/software/polkit/releases/" name "-" version ".tar.gz")) + (patches (search-patches "polkit-CVE-2018-19788.patch")) (sha256 (base32 - "1xkary7yirdcjdva950nqyhmsz48qhrdsr78zciahj27p8yg95fn")) - (patches (list (search-patch "polkit-drop-test.patch"))))) + "0c91y61y4gy6p91cwbzg32dhavw4b7fflg370rimqhdxpzdfr1rg")) + (modules '((guix build utils))) + (snippet + '(begin + (use-modules (guix build utils)) + ;; Disable broken test. + (substitute* "test/Makefile.in" + (("SUBDIRS = mocklibc . polkit polkitbackend") + "SUBDIRS = mocklibc . polkit")) + (substitute* "configure" + ;; Replace libsystemd-login with libelogind. + (("libsystemd-login") "libelogind") + ;; Skip the sanity check that the current system runs + ;; systemd. + (("test ! -d /sys/fs/cgroup/systemd/") "false")) + (substitute* "src/polkit/polkitunixsession-systemd.c" + (("systemd") "elogind")) + (substitute* "src/polkitbackend/polkitbackendsessionmonitor-systemd.c" + (("systemd") "elogind")) + (substitute* "src/polkitbackend/polkitbackendjsauthority.cpp" + (("systemd") "elogind")) + + ;; Guix System's polkit service stores actions under + ;; /etc/polkit-1/actions. + (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c" + (("PACKAGE_DATA_DIR \"/polkit-1/actions\"") + "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\"")) + + ;; Set the setuid helper's real location. + (substitute* "src/polkitagent/polkitagentsession.c" + (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") + "\"/run/setuid-programs/polkit-agent-helper-1\"")) + #t)))) (build-system gnu-build-system) (inputs - `(("expat" ,expat) - ("glib:bin" ,glib "bin") ; for glib-mkenums - ("intltool" ,intltool) - ("linux-pam" ,linux-pam) - ("mozjs" ,mozjs) - ("nspr" ,nspr))) + `(("expat" ,expat) + ("linux-pam" ,linux-pam) + ("elogind" ,elogind) + ("mozjs" ,mozjs-52) + ("nspr" ,nspr))) (propagated-inputs - `(("glib" ,glib))) ; required by polkit-gobject-1.pc + `(("glib" ,glib))) ; required by polkit-gobject-1.pc (native-inputs - `(("pkg-config", pkg-config))) - (home-page "http://www.freedesktop.org/wiki/Software/polkit/") + `(("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/"))) + #t))) + (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"))) + (apply invoke "make" "install" + (string-append "sysconfdir=" out "/etc") + (string-append "polkit_actiondir=" + out "/share/polkit-1/actions") + make-flags) + #t)))))) + (home-page "https://www.freedesktop.org/wiki/Software/polkit/") (synopsis "Authorization API for privilege management") (description "Polkit is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to @@ -80,11 +150,11 @@ for unprivileged applications.") "1ip78x20hjqvm08kxhp6gb8hf6k5n6sxyx6kk2yvvq53djzh7yv7")))) (build-system cmake-build-system) (inputs - `(("polkit" ,polkit))) + `(("polkit" ,polkit))) (propagated-inputs - `(("qt" ,qt-4))) ; according to the pkg-config files + `(("qtbase" ,qtbase))) (native-inputs - `(("pkg-config", pkg-config))) + `(("pkg-config" ,pkg-config))) (arguments `(#:configure-flags (list (string-append "-DCMAKE_INSTALL_RPATH=" (assoc-ref %outputs "out") @@ -99,3 +169,27 @@ PolicyKit API through a Qt-styled API. It is mainly a wrapper around QAction and QAbstractButton that lets you integrate those two component easily with PolicyKit.") (license lgpl2.0+))) + +(define-public polkit-gnome + (package + (name "polkit-gnome") + (version "0.105") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" + name "/" version "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0sckmcbxyj6sbrnfc5p5lnw27ccghsid6v6wxq09mgxqcd4lk10p")))) + (build-system gnu-build-system) + (inputs `(("gtk+" ,gtk+) + ("polkit" ,polkit))) + (native-inputs `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (synopsis "Legacy polkit authentication agent for GNOME") + (description "PolicyKit-gnome provides a D-Bus session bus service +that is used to bring up authentication dialogs used for obtaining +privileges.") + (home-page "https://www.freedesktop.org/wiki/Software/polkit/") + (license lgpl2.0+)))