* [bug#37975] [PATCH 0/2] gnu: Add udiskie.
@ 2019-10-29 9:26 Guillaume Le Vaillant
2019-10-29 9:31 ` [bug#37975] [PATCH 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
0 siblings, 1 reply; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 9:26 UTC (permalink / raw)
To: 37975
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.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH 1/2] gnu: Add python-keyutils.
2019-10-29 9:26 [bug#37975] [PATCH 0/2] gnu: Add udiskie Guillaume Le Vaillant
@ 2019-10-29 9:31 ` Guillaume Le Vaillant
2019-10-29 9:31 ` [bug#37975] [PATCH 2/2] gnu: Add udiskie Guillaume Le Vaillant
0 siblings, 1 reply; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 9:31 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@nicolasgoaziou.fr>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH 2/2] gnu: Add udiskie.
2019-10-29 9:31 ` [bug#37975] [PATCH 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
@ 2019-10-29 9:31 ` Guillaume Le Vaillant
2019-10-29 11:10 ` Pierre Neidhardt
0 siblings, 1 reply; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 9:31 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@ambrevar.xyz>
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH 2/2] gnu: Add udiskie.
2019-10-29 9:31 ` [bug#37975] [PATCH 2/2] gnu: Add udiskie Guillaume Le Vaillant
@ 2019-10-29 11:10 ` Pierre Neidhardt
2019-10-29 14:02 ` Guillaume Le Vaillant
0 siblings, 1 reply; 11+ messages in thread
From: Pierre Neidhardt @ 2019-10-29 11:10 UTC (permalink / raw)
To: Guillaume Le Vaillant; +Cc: 37975
[-- Attachment #1: Type: text/plain, Size: 1716 bytes --]
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/
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH 2/2] gnu: Add udiskie.
2019-10-29 11:10 ` Pierre Neidhardt
@ 2019-10-29 14:02 ` Guillaume Le Vaillant
2019-10-29 14:03 ` [bug#37975] [PATCH v2 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
2019-10-29 14:17 ` [bug#37975] [PATCH " Pierre Neidhardt
0 siblings, 2 replies; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 14:02 UTC (permalink / raw)
To: Pierre Neidhardt; +Cc: 37975
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.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH v2 1/2] gnu: Add python-keyutils.
2019-10-29 14:02 ` Guillaume Le Vaillant
@ 2019-10-29 14:03 ` Guillaume Le Vaillant
2019-10-29 14:03 ` [bug#37975] [PATCH v2 2/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-29 14:17 ` [bug#37975] [PATCH " Pierre Neidhardt
1 sibling, 1 reply; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 14:03 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@nicolasgoaziou.fr>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH v2 2/2] gnu: Add udiskie.
2019-10-29 14:03 ` [bug#37975] [PATCH v2 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
@ 2019-10-29 14:03 ` Guillaume Le Vaillant
0 siblings, 0 replies; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 14:03 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@ambrevar.xyz>
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH 2/2] gnu: Add udiskie.
2019-10-29 14:02 ` Guillaume Le Vaillant
2019-10-29 14:03 ` [bug#37975] [PATCH v2 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
@ 2019-10-29 14:17 ` Pierre Neidhardt
2019-10-29 15:14 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
1 sibling, 1 reply; 11+ messages in thread
From: Pierre Neidhardt @ 2019-10-29 14:17 UTC (permalink / raw)
To: Guillaume Le Vaillant; +Cc: 37975
[-- Attachment #1: Type: text/plain, Size: 404 bytes --]
Guillaume Le Vaillant <glv@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/
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils.
2019-10-29 14:17 ` [bug#37975] [PATCH " Pierre Neidhardt
@ 2019-10-29 15:14 ` Guillaume Le Vaillant
2019-10-29 15:14 ` [bug#37975] [PATCH v3 2/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-30 16:53 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Pierre Neidhardt
0 siblings, 2 replies; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 15:14 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@nicolasgoaziou.fr>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH v3 2/2] gnu: Add udiskie.
2019-10-29 15:14 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
@ 2019-10-29 15:14 ` Guillaume Le Vaillant
2019-10-30 16:53 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Pierre Neidhardt
1 sibling, 0 replies; 11+ messages in thread
From: Guillaume Le Vaillant @ 2019-10-29 15:14 UTC (permalink / raw)
To: 37975; +Cc: Guillaume Le Vaillant
* 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@ambrevar.xyz>
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils.
2019-10-29 15:14 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
2019-10-29 15:14 ` [bug#37975] [PATCH v3 2/2] gnu: Add udiskie Guillaume Le Vaillant
@ 2019-10-30 16:53 ` Pierre Neidhardt
1 sibling, 0 replies; 11+ messages in thread
From: Pierre Neidhardt @ 2019-10-30 16:53 UTC (permalink / raw)
To: Guillaume Le Vaillant; +Cc: 37975
Merged, thanks a lot for this very useful package!
--
Pierre Neidhardt
https://ambrevar.xyz/
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-10-30 16:54 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-29 9:26 [bug#37975] [PATCH 0/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-29 9:31 ` [bug#37975] [PATCH 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
2019-10-29 9:31 ` [bug#37975] [PATCH 2/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-29 11:10 ` Pierre Neidhardt
2019-10-29 14:02 ` Guillaume Le Vaillant
2019-10-29 14:03 ` [bug#37975] [PATCH v2 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
2019-10-29 14:03 ` [bug#37975] [PATCH v2 2/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-29 14:17 ` [bug#37975] [PATCH " Pierre Neidhardt
2019-10-29 15:14 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Guillaume Le Vaillant
2019-10-29 15:14 ` [bug#37975] [PATCH v3 2/2] gnu: Add udiskie Guillaume Le Vaillant
2019-10-30 16:53 ` [bug#37975] [PATCH v3 1/2] gnu: Add python-keyutils Pierre Neidhardt
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).