~ruther/guix-local

d5de4e163ccef80f78bc5fe330f568d8fe3a23ab — Maxim Cournoyer 4 years ago bf445d3
gnu: polkit: Define polkit package variable based on architecture.

* gnu/packages/polkit.scm (polkit): Rename to...
(polkit*): ... this.
(polkit-duktape): Adjust to inherit from polkit*.
(polkit-for-system): New procedure.
(polkit): New variable.
1 files changed, 47 insertions(+), 28 deletions(-)

M gnu/packages/polkit.scm
M gnu/packages/polkit.scm => gnu/packages/polkit.scm +47 -28
@@ 29,6 29,7 @@
  #:use-module ((guix licenses) #:select (lgpl2.0+))
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix memoization)
  #:use-module (guix utils)
  #:use-module (guix build utils)
  #:use-module (guix build-system cmake)


@@ 46,9 47,10 @@
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages qt)
  #:use-module (gnu packages xml))
  #:use-module (gnu packages xml)
  #:export (polkit))

(define-public polkit
(define-public polkit*
  (package
    (name "polkit")
    (version "0.120")


@@ 151,32 153,49 @@ for unprivileged applications.")
;;; Variant of polkit built with Duktape, a lighter JavaScript engine compared
;;; to mozjs.
(define-public polkit-duktape
  (package/inherit polkit
    (name "polkit-duktape")
    (source
     (origin
       (inherit (package-source polkit))
       (patches
        (append
            (search-patches "polkit-use-duktape.patch")
            (origin-patches (package-source polkit))))))
    (arguments
     (substitute-keyword-arguments (package-arguments polkit)
       ((#:configure-flags flags)
        `(cons "--with-duktape" ,flags))
       ((#:phases phases)
        `(modify-phases ,phases
           (add-after 'unpack 'force-gnu-build-system-bootstrap
             (lambda _
               (delete-file "configure")))))))
    (native-inputs
     (append `(("autoconf" ,autoconf)
               ("automake" ,automake)
               ("libtool" ,libtool)
               ("pkg-config" ,pkg-config))
         (package-native-inputs polkit)))
    (inputs (alist-replace "mozjs" `(,duktape)
                           (package-inputs polkit)))))
  (let ((base polkit*))
    (package/inherit base
      (name "polkit-duktape")
      (source
       (origin
         (inherit (package-source base))
         (patches
          (append
              (search-patches "polkit-use-duktape.patch")
              (origin-patches (package-source base))))))
      (arguments
       (substitute-keyword-arguments (package-arguments base)
         ((#:configure-flags flags)
          `(cons "--with-duktape" ,flags))
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'force-gnu-build-system-bootstrap
               (lambda _
                 (delete-file "configure")))))))
      (native-inputs
       (append `(("autoconf" ,autoconf)
                 ("automake" ,automake)
                 ("libtool" ,libtool)
                 ("pkg-config" ,pkg-config))
           (package-native-inputs base)))
      (inputs (alist-replace "mozjs" `(,duktape)
                             (package-inputs base))))))

(define polkit-for-system
  (mlambda (system)
    "Return a polkit package that can be built for SYSTEM; that is, either the
regular polkit that requires mozjs or its duktape variant."
    (if (string-prefix? "x86_64" system)
        polkit*
        polkit-duktape)))

;;; Define a top level polkit variable that can be built on any of the
;;; supported platforms.  This is to work around the fact that our
;;; mrustc-bootstrapped rust toolchain currently only supports the x86_64
;;; architecture.
(define-syntax polkit
  (identifier-syntax (polkit-for-system
                      (or (%current-target-system) (%current-system)))))

(define-public polkit-qt
  (package