GNU bug report logs - #37975
[PATCH 0/2] gnu: Add udiskie.

Previous Next

Package: guix-patches;

Reported by: Guillaume Le Vaillant <glv <at> posteo.net>

Date: Tue, 29 Oct 2019 09:27:01 UTC

Severity: normal

Tags: patch

Done: Pierre Neidhardt <mail <at> ambrevar.xyz>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 37975 in the body.
You can then email your comments to 37975 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 09:27:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Guillaume Le Vaillant <glv <at> posteo.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 29 Oct 2019 09:27:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: guix-patches <at> gnu.org
Subject: [PATCH 0/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 10:26:20 +0100
This patch series adds the udiskie frontend for udisks.

Patches:
 - gnu: Add python-keyutils.
 - gnu: Add udiskie

Note: I'm not familiar with the python build system, and I couldn't get
the tests for python-keyutils to work. So if you're a pythoner with some
free time, please check if you can get them to work.




Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 09:33:02 GMT) Full text and rfc822 format available.

Message #8 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH 1/2] gnu: Add python-keyutils.
Date: Tue, 29 Oct 2019 10:31:34 +0100
* gnu/packages/python-crypto.scm (python-keyutils): New variable.
---
 gnu/packages/python-crypto.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index f05c01060f..7dac25eb61 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant <at> debian.org>
 ;;; Copyright © 2018 Nam Nguyen <namn <at> berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1062,3 +1063,30 @@ Password-Authenticated Key Exchange algorithm.")
     (description "This package provides a Twisted-based Tor controller client,
 with state-tracking and configuration abstractions.")
     (license license:expat)))
+
+(define-public python-keyutils
+  (package
+    (name "python-keyutils")
+    (version "0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "keyutils" version))
+       (sha256
+        (base32
+         "0lipygpzhwzzsq2k5imb1jgkmj8y4khxdwhzadjs3bd56g6bmkx9"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (inputs
+     `(("keyutils" ,keyutils)))
+    (arguments
+     '(#:tests? #f))
+    (home-page "https://github.com/sassoftware/python-keyutils")
+    (synopsis "Python bindings for keyutils")
+    (description
+     "This is a set of python bindings for keyutils, a key management suite
+that leverages the infrastructure provided by the Linux kernel for safely
+storing and retrieving sensitive infromation in your programs.")
+    (license license:asl2.0)))
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 09:33:02 GMT) Full text and rfc822 format available.

Message #11 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 10:31:35 +0100
* gnu/packages/freedesktop.scm (udiskie): New variable.
---
 gnu/packages/freedesktop.scm | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index b18d71cb98..67d587ee48 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail <at> ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic <at> gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd <at> pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -74,6 +75,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages valgrind)
@@ -1439,3 +1441,62 @@ encoding names are iconv-compatible.")
     ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
     ;; combination is GPL 2.0+.
     (license license:gpl2+)))
+
+(define-public udiskie
+  (package
+    (name "udiskie")
+    (version "1.7.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "udiskie" version))
+       (sha256
+        (base32
+         "121g9dkr7drv9igpdbcbkj59x15mm72rzp3198bp50zj0lr4wbvi"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)))
+    (inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("udisks" ,udisks)))
+    (propagated-inputs
+     `(("python-docopt" ,python-docopt)
+       ("python-pygobject" ,python-pygobject)
+       ("python-keyutils" ,python-keyutils)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-pyyaml" ,python-pyyaml)))
+    (arguments
+     `(;; The tests want libappindicator, which is not available.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-gi-typelib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/udiskie")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
+    (home-page "https://github.com/coldfix/udiskie")
+    (synopsis "Automounter for removable media")
+    (description
+     "The udiskie program is a udisks2 front-end that allows to manage
+removeable media such as CDs or flash drives from userspace.
+
+Its features include:
+
+@itemize
+@item automount removable media
+@item notifications
+@item tray icon
+@item command line tools for manual un-/mounting
+@item LUKS encrypted devices
+@item unlocking with keyfiles
+@item loop devices (mounting iso archives)
+@item password caching
+@end itemize")
+    (license license:expat)))
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 11:11:02 GMT) Full text and rfc822 format available.

Message #14 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Pierre Neidhardt <mail <at> ambrevar.xyz>
To: Guillaume Le Vaillant <glv <at> posteo.net>
Cc: 37975 <at> debbugs.gnu.org
Subject: Re: [bug#37975] [PATCH 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 12:10:15 +0100
[Message part 1 (text/plain, inline)]
Hi Guillaume,

Looking great, just a few nits below:

> +    (arguments
> +     `(;; The tests want libappindicator, which is not available.

Why isn't available?  Should we package it?  URL of the lib?

> +       #:tests? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'install 'wrap-gi-typelib
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out"))
> +                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
> +               (wrap-program (string-append out "/bin/udiskie")
> +                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
> +             #t)))))
> +    (home-page "https://github.com/coldfix/udiskie")
> +    (synopsis "Automounter for removable media")
> +    (description
> +     "The udiskie program is a udisks2 front-end that allows to manage

@command{udiskie}.

> +removeable media such as CDs or flash drives from userspace.

Typo: removable.

> +
> +Its features include:
> +
> +@itemize
> +@item automount removable media
> +@item notifications
> +@item tray icon
> +@item command line tools for manual un-/mounting

I find the "-/" syntax a bit unconventional.  Maybe "(un)mounting" would be
better.
In doubt, "mounting and unmounting" works in all cases :)

> +@item LUKS encrypted devices
> +@item unlocking with keyfiles
> +@item loop devices (mounting iso archives)

iso => ISO

> +@item password caching
> +@end itemize")

=> @end itemize\n

Also maybe improve the typography of the list, e.g. add commas at the
end of every line and a period for the last line.

-- 
Pierre Neidhardt
https://ambrevar.xyz/
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 14:03:02 GMT) Full text and rfc822 format available.

Message #17 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: Pierre Neidhardt <mail <at> ambrevar.xyz>
Cc: 37975 <at> debbugs.gnu.org
Subject: Re: [bug#37975] [PATCH 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 15:02:05 +0100
Pierre Neidhardt skribis:

>> +    (arguments
>> +     `(;; The tests want libappindicator, which is not available.
>
> Why isn't available?  Should we package it?  URL of the lib?

Apparently libappindicator is a library for the Unity desktop
environment. I think it does not make much sense to add it as Unity is
not in Guix. Instead I added a patch removing the support for
libappindicator from udiskie.




Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 14:05:01 GMT) Full text and rfc822 format available.

Message #20 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH v2 1/2] gnu: Add python-keyutils.
Date: Tue, 29 Oct 2019 15:03:51 +0100
* gnu/packages/python-crypto.scm (python-keyutils): New variable.
---
 gnu/packages/python-crypto.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index f05c01060f..7dac25eb61 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant <at> debian.org>
 ;;; Copyright © 2018 Nam Nguyen <namn <at> berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1062,3 +1063,30 @@ Password-Authenticated Key Exchange algorithm.")
     (description "This package provides a Twisted-based Tor controller client,
 with state-tracking and configuration abstractions.")
     (license license:expat)))
+
+(define-public python-keyutils
+  (package
+    (name "python-keyutils")
+    (version "0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "keyutils" version))
+       (sha256
+        (base32
+         "0lipygpzhwzzsq2k5imb1jgkmj8y4khxdwhzadjs3bd56g6bmkx9"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (inputs
+     `(("keyutils" ,keyutils)))
+    (arguments
+     '(#:tests? #f))
+    (home-page "https://github.com/sassoftware/python-keyutils")
+    (synopsis "Python bindings for keyutils")
+    (description
+     "This is a set of python bindings for keyutils, a key management suite
+that leverages the infrastructure provided by the Linux kernel for safely
+storing and retrieving sensitive infromation in your programs.")
+    (license license:asl2.0)))
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 14:05:02 GMT) Full text and rfc822 format available.

Message #23 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH v2 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 15:03:52 +0100
* gnu/packages/freedesktop.scm (udiskie): New variable.
* gnu/packages/patches/udiskie-no-appindicator.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/freedesktop.scm                  |  61 +++++++
 .../patches/udiskie-no-appindicator.patch     | 155 ++++++++++++++++++
 3 files changed, 217 insertions(+)
 create mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1b04485422..01ab967148 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1387,6 +1387,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/txr-shell.patch				\
   %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch	\
+  %D%/packages/patches/udiskie-no-appindicator.patch		\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
   %D%/packages/patches/unzip-CVE-2014-8141.patch		\
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index b18d71cb98..91c0a70b9c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail <at> ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic <at> gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd <at> pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -74,6 +75,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages valgrind)
@@ -1439,3 +1441,62 @@ encoding names are iconv-compatible.")
     ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
     ;; combination is GPL 2.0+.
     (license license:gpl2+)))
+
+(define-public udiskie
+  (package
+    (name "udiskie")
+    (version "1.7.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "udiskie" version))
+       (sha256
+        (base32
+         "121g9dkr7drv9igpdbcbkj59x15mm72rzp3198bp50zj0lr4wbvi"))
+       (patches (search-patches "udiskie-no-appindicator.patch"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)))
+    (inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("udisks" ,udisks)))
+    (propagated-inputs
+     `(("python-docopt" ,python-docopt)
+       ("python-pygobject" ,python-pygobject)
+       ("python-keyutils" ,python-keyutils)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-pyyaml" ,python-pyyaml)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-gi-typelib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/udiskie")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
+    (home-page "https://github.com/coldfix/udiskie")
+    (synopsis "Automounter for removable media")
+    (description
+     "The @command{udiskie} program is a udisks2 front-end that allows to
+manage removable media such as CDs or flash drives from userspace.
+
+Its features include:
+
+@itemize
+@item automount removable media,
+@item notifications,
+@item tray icon,
+@item command line tools for manual (un)mounting,
+@item LUKS encrypted devices,
+@item unlocking with keyfiles,
+@item loop devices (mounting ISO archives),
+@item password caching.
+@end itemize
+")
+    (license license:expat)))
diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch
new file mode 100644
index 0000000000..c19099cdaa
--- /dev/null
+++ b/gnu/packages/patches/udiskie-no-appindicator.patch
@@ -0,0 +1,155 @@
+Remove the support for Unity's appindicator.
+
+diff -Naur udiskie-1.7.7/completions/_udiskie udiskie-1.7.7a/completions/_udiskie
+--- udiskie-1.7.7/completions/_udiskie	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/completions/_udiskie	2019-10-29 14:21:04.556193639 +0100
+@@ -21,8 +21,6 @@
+     '(-a)'{-A,--no-automount}"[disable automounting]"
+     '(-N)'{-n,--notify}"[show popup notifications]"
+     '(-n)'{-N,--no-notify}"[disable notifications]"
+-    '(--no-appindicator)'--appindicator"[use appindicator for status icon]"
+-    '(--appindicator)'--no-appindicator"[don't use appindicator]"
+     '(-T -s)'{-t,--tray}"[show tray icon]"
+     '(-T -t)'{-s,--smart-tray}"[auto hide tray icon]"
+     '(-t -s)'{-T,--no-tray}"[disable tray icon]"
+diff -Naur udiskie-1.7.7/doc/udiskie.8.txt udiskie-1.7.7a/doc/udiskie.8.txt
+--- udiskie-1.7.7/doc/udiskie.8.txt	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/doc/udiskie.8.txt	2019-10-29 14:21:52.304570344 +0100
+@@ -95,12 +95,6 @@
+ *-F, \--no-file-manager*::
+ 	Disable browsing.
+ 
+-*-appindicator*::
+-	Use AppIndicator3 for the status icon. Use this on Ubuntu/Unity if no icon is shown.
+-
+-*--no-appindicator*::
+-	Use Gtk.StatusIcon for the status icon (default).
+-
+ *--password-cache MINUTES*::
+ 	Cache passwords for LUKS partitions and set the timeout.
+ 
+diff -Naur udiskie-1.7.7/udiskie/appindicator.py udiskie-1.7.7a/udiskie/appindicator.py
+--- udiskie-1.7.7/udiskie/appindicator.py	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/udiskie/appindicator.py	1970-01-01 01:00:00.000000000 +0100
+@@ -1,61 +0,0 @@
+-"""
+-Status icon using AppIndicator3.
+-"""
+-
+-from gi.repository import Gtk
+-from gi.repository import AppIndicator3
+-
+-from udiskie.async_ import Async
+-
+-
+-class AppIndicatorIcon(object):
+-
+-    """
+-    Show status icon using AppIndicator as backend. Replaces
+-    `udiskie.tray.StatusIcon` on ubuntu/unity.
+-    """
+-
+-    def __init__(self, menumaker, _icons):
+-        self._maker = menumaker
+-        self._menu = Gtk.Menu()
+-        self._indicator = AppIndicator3.Indicator.new(
+-            'udiskie',
+-            _icons.get_icon_name('media'),
+-            AppIndicator3.IndicatorCategory.HARDWARE)
+-        self._indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
+-        self._indicator.set_menu(self._menu)
+-        # Get notified before menu is shown, see:
+-        # https://bugs.launchpad.net/screenlets/+bug/522152/comments/15
+-        dbusmenuserver = self._indicator.get_property('dbus-menu-server')
+-        self._dbusmenuitem = dbusmenuserver.get_property('root-node')
+-        self._conn = self._dbusmenuitem.connect('about-to-show', self._on_show)
+-        self.task = Async()
+-        menumaker._quit_action = self.destroy
+-        # Populate menu initially, so libdbusmenu does not ignore the
+-        # 'about-to-show':
+-        self._maker(self._menu)
+-
+-    def destroy(self):
+-        self.show(False)
+-        self._dbusmenuitem.disconnect(self._conn)
+-        self.task.callback()
+-
+-    @property
+-    def visible(self):
+-        status = self._indicator.get_status()
+-        return status == AppIndicator3.IndicatorStatus.ACTIVE
+-
+-    def show(self, show=True):
+-        if show == self.visible:
+-            return
+-        status = (AppIndicator3.IndicatorStatus.ACTIVE if show else
+-                  AppIndicator3.IndicatorStatus.PASSIVE)
+-        self._indicator.set_status(status)
+-
+-    def _on_show(self, menu):
+-        # clear menu:
+-        for item in self._menu.get_children():
+-            self._menu.remove(item)
+-        # repopulate:
+-        self._maker(self._menu)
+-        self._menu.show_all()
+diff -Naur udiskie-1.7.7/udiskie/cli.py udiskie-1.7.7a/udiskie/cli.py
+--- udiskie-1.7.7/udiskie/cli.py	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/udiskie/cli.py	2019-10-29 14:18:22.678919186 +0100
+@@ -376,9 +376,6 @@
+         -T, --no-tray                           Disable tray icon
+         -m MENU, --menu MENU                    Tray menu [flat/nested]
+ 
+-        --appindicator                          Use appindicator for status icon
+-        --no-appindicator                       Don't use appindicator
+-
+         --password-cache MINUTES                Set password cache timeout
+         --no-password-cache                     Disable password cache
+ 
+@@ -400,7 +397,6 @@
+         'notify': True,
+         'tray': False,
+         'menu': 'flat',
+-        'appindicator': False,
+         'file_manager': 'xdg-open',
+         'password_prompt': 'builtin:gui',
+         'password_cache': False,
+@@ -415,7 +411,6 @@
+             '--no-tray': False,
+             '--smart-tray': 'auto'}),
+         'menu': Value('--menu'),
+-        'appindicator': Switch('appindicator'),
+         'file_manager': OptionalValue('--file-manager'),
+         'password_prompt': OptionalValue('--password-prompt'),
+         'password_cache': OptionalValue('--password-cache'),
+@@ -541,11 +536,7 @@
+             raise ValueError("Invalid menu: %s" % (options['menu'],))
+ 
+         menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat)
+-        if options['appindicator']:
+-            import udiskie.appindicator
+-            TrayIcon = udiskie.appindicator.AppIndicatorIcon
+-        else:
+-            TrayIcon = udiskie.tray.TrayIcon
++        TrayIcon = udiskie.tray.TrayIcon
+         trayicon = TrayIcon(menu_maker, icons)
+         return udiskie.tray.UdiskieStatusIcon(trayicon, menu_maker, smart)
+ 
+diff -Naur udiskie-1.7.7/udiskie.egg-info/SOURCES.txt udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt
+--- udiskie-1.7.7/udiskie.egg-info/SOURCES.txt	2019-02-17 19:42:25.000000000 +0100
++++ udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt	2019-10-29 14:40:09.333315287 +0100
+@@ -24,7 +24,6 @@
+ test/test_cache.py
+ test/test_match.py
+ udiskie/__init__.py
+-udiskie/appindicator.py
+ udiskie/async_.py
+ udiskie/automount.py
+ udiskie/cache.py
+@@ -46,4 +45,4 @@
+ udiskie.egg-info/dependency_links.txt
+ udiskie.egg-info/entry_points.txt
+ udiskie.egg-info/requires.txt
+-udiskie.egg-info/top_level.txt
+\ Pas de fin de ligne à la fin du fichier
++udiskie.egg-info/top_level.txt
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 14:18:02 GMT) Full text and rfc822 format available.

Message #26 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Pierre Neidhardt <mail <at> ambrevar.xyz>
To: Guillaume Le Vaillant <glv <at> posteo.net>
Cc: 37975 <at> debbugs.gnu.org
Subject: Re: [bug#37975] [PATCH 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 15:17:51 +0100
[Message part 1 (text/plain, inline)]
Guillaume Le Vaillant <glv <at> posteo.net> writes:

> Apparently libappindicator is a library for the Unity desktop
> environment. I think it does not make much sense to add it as Unity is
> not in Guix. Instead I added a patch removing the support for
> libappindicator from udiskie.

Alright, could you the just explain this in the comment?
Thanks!

-- 
Pierre Neidhardt
https://ambrevar.xyz/
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 15:15:01 GMT) Full text and rfc822 format available.

Message #29 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH v3 1/2] gnu: Add python-keyutils.
Date: Tue, 29 Oct 2019 16:14:13 +0100
* gnu/packages/python-crypto.scm (python-keyutils): New variable.
---
 gnu/packages/python-crypto.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index f05c01060f..7dac25eb61 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant <at> debian.org>
 ;;; Copyright © 2018 Nam Nguyen <namn <at> berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1062,3 +1063,30 @@ Password-Authenticated Key Exchange algorithm.")
     (description "This package provides a Twisted-based Tor controller client,
 with state-tracking and configuration abstractions.")
     (license license:expat)))
+
+(define-public python-keyutils
+  (package
+    (name "python-keyutils")
+    (version "0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "keyutils" version))
+       (sha256
+        (base32
+         "0lipygpzhwzzsq2k5imb1jgkmj8y4khxdwhzadjs3bd56g6bmkx9"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (inputs
+     `(("keyutils" ,keyutils)))
+    (arguments
+     '(#:tests? #f))
+    (home-page "https://github.com/sassoftware/python-keyutils")
+    (synopsis "Python bindings for keyutils")
+    (description
+     "This is a set of python bindings for keyutils, a key management suite
+that leverages the infrastructure provided by the Linux kernel for safely
+storing and retrieving sensitive infromation in your programs.")
+    (license license:asl2.0)))
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Tue, 29 Oct 2019 15:15:02 GMT) Full text and rfc822 format available.

Message #32 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Guillaume Le Vaillant <glv <at> posteo.net>
To: 37975 <at> debbugs.gnu.org
Cc: Guillaume Le Vaillant <glv <at> posteo.net>
Subject: [PATCH v3 2/2] gnu: Add udiskie.
Date: Tue, 29 Oct 2019 16:14:14 +0100
* gnu/packages/freedesktop.scm (udiskie): New variable.
* gnu/packages/patches/udiskie-no-appindicator.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/freedesktop.scm                  |  63 +++++++
 .../patches/udiskie-no-appindicator.patch     | 155 ++++++++++++++++++
 3 files changed, 219 insertions(+)
 create mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1b04485422..01ab967148 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1387,6 +1387,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/txr-shell.patch				\
   %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch	\
+  %D%/packages/patches/udiskie-no-appindicator.patch		\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
   %D%/packages/patches/unzip-CVE-2014-8141.patch		\
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index b18d71cb98..2574153cef 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail <at> ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic <at> gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd <at> pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv <at> posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -74,6 +75,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages valgrind)
@@ -1439,3 +1441,64 @@ encoding names are iconv-compatible.")
     ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
     ;; combination is GPL 2.0+.
     (license license:gpl2+)))
+
+(define-public udiskie
+  (package
+    (name "udiskie")
+    (version "1.7.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "udiskie" version))
+       (sha256
+        (base32
+         "121g9dkr7drv9igpdbcbkj59x15mm72rzp3198bp50zj0lr4wbvi"))
+       ;; Remove support for the libappindicator library of the
+       ;; Unity desktop environment which is not in Guix.
+       (patches (search-patches "udiskie-no-appindicator.patch"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)))
+    (inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("udisks" ,udisks)))
+    (propagated-inputs
+     `(("python-docopt" ,python-docopt)
+       ("python-pygobject" ,python-pygobject)
+       ("python-keyutils" ,python-keyutils)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-pyyaml" ,python-pyyaml)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-gi-typelib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/udiskie")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
+    (home-page "https://github.com/coldfix/udiskie")
+    (synopsis "Automounter for removable media")
+    (description
+     "The @command{udiskie} program is a udisks2 front-end that allows to
+manage removable media such as CDs or flash drives from userspace.
+
+Its features include:
+
+@itemize
+@item automount removable media,
+@item notifications,
+@item tray icon,
+@item command line tools for manual (un)mounting,
+@item LUKS encrypted devices,
+@item unlocking with keyfiles,
+@item loop devices (mounting ISO archives),
+@item password caching.
+@end itemize
+")
+    (license license:expat)))
diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch
new file mode 100644
index 0000000000..c19099cdaa
--- /dev/null
+++ b/gnu/packages/patches/udiskie-no-appindicator.patch
@@ -0,0 +1,155 @@
+Remove the support for Unity's appindicator.
+
+diff -Naur udiskie-1.7.7/completions/_udiskie udiskie-1.7.7a/completions/_udiskie
+--- udiskie-1.7.7/completions/_udiskie	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/completions/_udiskie	2019-10-29 14:21:04.556193639 +0100
+@@ -21,8 +21,6 @@
+     '(-a)'{-A,--no-automount}"[disable automounting]"
+     '(-N)'{-n,--notify}"[show popup notifications]"
+     '(-n)'{-N,--no-notify}"[disable notifications]"
+-    '(--no-appindicator)'--appindicator"[use appindicator for status icon]"
+-    '(--appindicator)'--no-appindicator"[don't use appindicator]"
+     '(-T -s)'{-t,--tray}"[show tray icon]"
+     '(-T -t)'{-s,--smart-tray}"[auto hide tray icon]"
+     '(-t -s)'{-T,--no-tray}"[disable tray icon]"
+diff -Naur udiskie-1.7.7/doc/udiskie.8.txt udiskie-1.7.7a/doc/udiskie.8.txt
+--- udiskie-1.7.7/doc/udiskie.8.txt	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/doc/udiskie.8.txt	2019-10-29 14:21:52.304570344 +0100
+@@ -95,12 +95,6 @@
+ *-F, \--no-file-manager*::
+ 	Disable browsing.
+ 
+-*-appindicator*::
+-	Use AppIndicator3 for the status icon. Use this on Ubuntu/Unity if no icon is shown.
+-
+-*--no-appindicator*::
+-	Use Gtk.StatusIcon for the status icon (default).
+-
+ *--password-cache MINUTES*::
+ 	Cache passwords for LUKS partitions and set the timeout.
+ 
+diff -Naur udiskie-1.7.7/udiskie/appindicator.py udiskie-1.7.7a/udiskie/appindicator.py
+--- udiskie-1.7.7/udiskie/appindicator.py	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/udiskie/appindicator.py	1970-01-01 01:00:00.000000000 +0100
+@@ -1,61 +0,0 @@
+-"""
+-Status icon using AppIndicator3.
+-"""
+-
+-from gi.repository import Gtk
+-from gi.repository import AppIndicator3
+-
+-from udiskie.async_ import Async
+-
+-
+-class AppIndicatorIcon(object):
+-
+-    """
+-    Show status icon using AppIndicator as backend. Replaces
+-    `udiskie.tray.StatusIcon` on ubuntu/unity.
+-    """
+-
+-    def __init__(self, menumaker, _icons):
+-        self._maker = menumaker
+-        self._menu = Gtk.Menu()
+-        self._indicator = AppIndicator3.Indicator.new(
+-            'udiskie',
+-            _icons.get_icon_name('media'),
+-            AppIndicator3.IndicatorCategory.HARDWARE)
+-        self._indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
+-        self._indicator.set_menu(self._menu)
+-        # Get notified before menu is shown, see:
+-        # https://bugs.launchpad.net/screenlets/+bug/522152/comments/15
+-        dbusmenuserver = self._indicator.get_property('dbus-menu-server')
+-        self._dbusmenuitem = dbusmenuserver.get_property('root-node')
+-        self._conn = self._dbusmenuitem.connect('about-to-show', self._on_show)
+-        self.task = Async()
+-        menumaker._quit_action = self.destroy
+-        # Populate menu initially, so libdbusmenu does not ignore the
+-        # 'about-to-show':
+-        self._maker(self._menu)
+-
+-    def destroy(self):
+-        self.show(False)
+-        self._dbusmenuitem.disconnect(self._conn)
+-        self.task.callback()
+-
+-    @property
+-    def visible(self):
+-        status = self._indicator.get_status()
+-        return status == AppIndicator3.IndicatorStatus.ACTIVE
+-
+-    def show(self, show=True):
+-        if show == self.visible:
+-            return
+-        status = (AppIndicator3.IndicatorStatus.ACTIVE if show else
+-                  AppIndicator3.IndicatorStatus.PASSIVE)
+-        self._indicator.set_status(status)
+-
+-    def _on_show(self, menu):
+-        # clear menu:
+-        for item in self._menu.get_children():
+-            self._menu.remove(item)
+-        # repopulate:
+-        self._maker(self._menu)
+-        self._menu.show_all()
+diff -Naur udiskie-1.7.7/udiskie/cli.py udiskie-1.7.7a/udiskie/cli.py
+--- udiskie-1.7.7/udiskie/cli.py	2019-02-17 18:28:58.000000000 +0100
++++ udiskie-1.7.7a/udiskie/cli.py	2019-10-29 14:18:22.678919186 +0100
+@@ -376,9 +376,6 @@
+         -T, --no-tray                           Disable tray icon
+         -m MENU, --menu MENU                    Tray menu [flat/nested]
+ 
+-        --appindicator                          Use appindicator for status icon
+-        --no-appindicator                       Don't use appindicator
+-
+         --password-cache MINUTES                Set password cache timeout
+         --no-password-cache                     Disable password cache
+ 
+@@ -400,7 +397,6 @@
+         'notify': True,
+         'tray': False,
+         'menu': 'flat',
+-        'appindicator': False,
+         'file_manager': 'xdg-open',
+         'password_prompt': 'builtin:gui',
+         'password_cache': False,
+@@ -415,7 +411,6 @@
+             '--no-tray': False,
+             '--smart-tray': 'auto'}),
+         'menu': Value('--menu'),
+-        'appindicator': Switch('appindicator'),
+         'file_manager': OptionalValue('--file-manager'),
+         'password_prompt': OptionalValue('--password-prompt'),
+         'password_cache': OptionalValue('--password-cache'),
+@@ -541,11 +536,7 @@
+             raise ValueError("Invalid menu: %s" % (options['menu'],))
+ 
+         menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat)
+-        if options['appindicator']:
+-            import udiskie.appindicator
+-            TrayIcon = udiskie.appindicator.AppIndicatorIcon
+-        else:
+-            TrayIcon = udiskie.tray.TrayIcon
++        TrayIcon = udiskie.tray.TrayIcon
+         trayicon = TrayIcon(menu_maker, icons)
+         return udiskie.tray.UdiskieStatusIcon(trayicon, menu_maker, smart)
+ 
+diff -Naur udiskie-1.7.7/udiskie.egg-info/SOURCES.txt udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt
+--- udiskie-1.7.7/udiskie.egg-info/SOURCES.txt	2019-02-17 19:42:25.000000000 +0100
++++ udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt	2019-10-29 14:40:09.333315287 +0100
+@@ -24,7 +24,6 @@
+ test/test_cache.py
+ test/test_match.py
+ udiskie/__init__.py
+-udiskie/appindicator.py
+ udiskie/async_.py
+ udiskie/automount.py
+ udiskie/cache.py
+@@ -46,4 +45,4 @@
+ udiskie.egg-info/dependency_links.txt
+ udiskie.egg-info/entry_points.txt
+ udiskie.egg-info/requires.txt
+-udiskie.egg-info/top_level.txt
+\ Pas de fin de ligne à la fin du fichier
++udiskie.egg-info/top_level.txt
-- 
2.23.0





Information forwarded to guix-patches <at> gnu.org:
bug#37975; Package guix-patches. (Wed, 30 Oct 2019 16:54:01 GMT) Full text and rfc822 format available.

Message #35 received at 37975 <at> debbugs.gnu.org (full text, mbox):

From: Pierre Neidhardt <mail <at> ambrevar.xyz>
To: Guillaume Le Vaillant <glv <at> posteo.net>
Cc: 37975 <at> debbugs.gnu.org
Subject: Re: [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils.
Date: Wed, 30 Oct 2019 17:53:40 +0100
Merged, thanks a lot for this very useful package!

-- 
Pierre Neidhardt
https://ambrevar.xyz/




bug closed, send any further explanations to 37975 <at> debbugs.gnu.org and Guillaume Le Vaillant <glv <at> posteo.net> Request was from Pierre Neidhardt <mail <at> ambrevar.xyz> to control <at> debbugs.gnu.org. (Wed, 30 Oct 2019 16:54:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 28 Nov 2019 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 266 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.