* [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).