gnu: Add udiskie.
* gnu/packages/freedesktop.scm (udiskie): New variable. * gnu/packages/patches/udiskie-no-appindicator.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
		
							parent
							
								
									93953ec714
								
							
						
					
					
						commit
						d29d04c9e6
					
				
					 3 changed files with 219 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1386,6 +1386,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		\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										155
									
								
								gnu/packages/patches/udiskie-no-appindicator.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								gnu/packages/patches/udiskie-no-appindicator.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
		Reference in a new issue