Package: guix-patches;
Reported by: Artem Chernyak <artemchernyak <at> gmail.com>
Date: Sat, 16 Oct 2021 03:31:02 UTC
Severity: normal
Tags: patch
Done: Guillaume Le Vaillant <glv <at> posteo.net>
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 51232 in the body.
You can then email your comments to 51232 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
guix-patches <at> gnu.org
:bug#51232
; Package guix-patches
.
(Sat, 16 Oct 2021 03:31:02 GMT) Full text and rfc822 format available.Artem Chernyak <artemchernyak <at> gmail.com>
:guix-patches <at> gnu.org
.
(Sat, 16 Oct 2021 03:31:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Artem Chernyak <artemchernyak <at> gmail.com> To: guix-patches <at> gnu.org Subject: [PATCH 0/2] gnu: Update udiskie to 2.3.3 Date: Fri, 15 Oct 2021 22:30:38 -0500
Since we now have libappindicator packaged, we can safely remove the patch instead of updating it for the new version. Artem Chernyak (2): gnu: Update udiskie to 2.3.3 gnu: Remove udiskie-no-appindicator.patch gnu/packages/freedesktop.scm | 8 +- .../patches/udiskie-no-appindicator.patch | 155 ------------------ 2 files changed, 3 insertions(+), 160 deletions(-) delete mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch -- 2.33.0
guix-patches <at> gnu.org
:bug#51232
; Package guix-patches
.
(Sat, 16 Oct 2021 03:35:03 GMT) Full text and rfc822 format available.Message #8 received at 51232 <at> debbugs.gnu.org (full text, mbox):
From: Artem Chernyak <artemchernyak <at> gmail.com> To: 51232 <at> debbugs.gnu.org Subject: [PATCH 1/2] gnu: Update udiskie to 2.3.3 Date: Fri, 15 Oct 2021 22:33:44 -0500
* gnu/packages/freedesktop.scm (udiskie): Update to 2.3.3 --- gnu/packages/freedesktop.scm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 514125977b..a002e3e807 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1998,17 +1998,14 @@ (define-public python-cchardet (define-public udiskie (package (name "udiskie") - (version "2.1.0") + (version "2.3.3") (source (origin (method url-fetch) (uri (pypi-uri "udiskie" version)) (sha256 (base32 - "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz")) - ;; Remove support for the libappindicator library of the - ;; Unity desktop environment which is not in Guix. - (patches (search-patches "udiskie-no-appindicator.patch")))) + "0sagdmsc5km32h3jvgj843p8bicrrgfz26qhl04ibxmas6725zr0")))) (build-system python-build-system) (native-inputs `(("asciidoc" ,asciidoc) @@ -2017,6 +2014,7 @@ (define-public udiskie (inputs `(("gobject-introspection" ,gobject-introspection) ("gtk+" ,gtk+) + ("libappindicator" ,libappindicator) ("libnotify" ,libnotify) ("udisks" ,udisks))) (propagated-inputs -- 2.33.0
guix-patches <at> gnu.org
:bug#51232
; Package guix-patches
.
(Sat, 16 Oct 2021 03:36:01 GMT) Full text and rfc822 format available.Message #11 received at 51232 <at> debbugs.gnu.org (full text, mbox):
From: Artem Chernyak <artemchernyak <at> gmail.com> To: 51232 <at> debbugs.gnu.org Subject: [PATCH 2/2] gnu: Remove udiskie-no-appindicator.patch Date: Fri, 15 Oct 2021 22:34:50 -0500
* gnu/packages/patches/udiskie-no-appindicator.patch: Remove file --- .../patches/udiskie-no-appindicator.patch | 155 ------------------ 1 file changed, 155 deletions(-) delete mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch deleted file mode 100644 index df3efe104b..0000000000 --- a/gnu/packages/patches/udiskie-no-appindicator.patch +++ /dev/null @@ -1,155 +0,0 @@ -Remove the support for Unity's appindicator. - -diff -Naur udiskie-2.0.4/completions/zsh/_udiskie udiskie-2.0.4-new/completions/zsh/_udiskie ---- udiskie-2.0.4/completions/zsh/_udiskie 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/completions/zsh/_udiskie 2020-01-23 10:15:46.956141667 +0100 -@@ -18,8 +18,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-2.0.4/doc/udiskie.8.txt udiskie-2.0.4-new/doc/udiskie.8.txt ---- udiskie-2.0.4/doc/udiskie.8.txt 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/doc/udiskie.8.txt 2020-01-23 10:16:12.636290647 +0100 -@@ -92,12 +92,6 @@ - *--no-terminal*:: - Disable terminal action. - --*--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-2.0.4/udiskie/appindicator.py udiskie-2.0.4-new/udiskie/appindicator.py ---- udiskie-2.0.4/udiskie/appindicator.py 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/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 .async_ import Future -- -- --class AppIndicatorIcon: -- -- """ -- 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 = Future() -- 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.set_result(True) -- -- @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-2.0.4/udiskie/cli.py udiskie-2.0.4-new/udiskie/cli.py ---- udiskie-2.0.4/udiskie/cli.py 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/udiskie/cli.py 2020-01-23 10:17:13.064810617 +0100 -@@ -287,9 +287,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 - -@@ -312,7 +309,6 @@ - 'notify': True, - 'tray': False, - 'menu': 'flat', -- 'appindicator': False, - 'file_manager': 'xdg-open', - 'terminal': '', - 'password_prompt': 'builtin:gui', -@@ -328,7 +324,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'), -@@ -459,11 +454,7 @@ - - menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat, - config.quickmenu_actions) -- 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-2.0.4/udiskie.egg-info/SOURCES.txt udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt ---- udiskie-2.0.4/udiskie.egg-info/SOURCES.txt 2020-01-21 01:12:41.000000000 +0100 -+++ udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt 2020-01-23 10:17:50.657205798 +0100 -@@ -25,7 +25,6 @@ - test/test_cache.py - test/test_match.py - udiskie/__init__.py --udiskie/appindicator.py - udiskie/async_.py - udiskie/automount.py - udiskie/cache.py -@@ -47,4 +46,4 @@ - udiskie.egg-info/entry_points.txt - udiskie.egg-info/requires.txt - udiskie.egg-info/top_level.txt --udiskie.egg-info/zip-safe -\ Pas de fin de ligne à la fin du fichier -+udiskie.egg-info/zip-safe -- 2.33.0
guix-patches <at> gnu.org
:bug#51232
; Package guix-patches
.
(Mon, 18 Oct 2021 09:08:01 GMT) Full text and rfc822 format available.Message #14 received at 51232 <at> debbugs.gnu.org (full text, mbox):
From: Guillaume Le Vaillant <glv <at> posteo.net> To: Artem Chernyak <artemchernyak <at> gmail.com> Cc: 51232 <at> debbugs.gnu.org Subject: Re: [bug#51232] [PATCH 0/2] gnu: Update udiskie to 2.3.3 Date: Mon, 18 Oct 2021 09:00:11 +0000
[Message part 1 (text/plain, inline)]
Artem Chernyak <artemchernyak <at> gmail.com> skribis: > Since we now have libappindicator packaged, we can safely remove the > patch instead of updating it for the new version. > > Artem Chernyak (2): > gnu: Update udiskie to 2.3.3 > gnu: Remove udiskie-no-appindicator.patch > > gnu/packages/freedesktop.scm | 8 +- > .../patches/udiskie-no-appindicator.patch | 155 ------------------ > 2 files changed, 3 insertions(+), 160 deletions(-) > delete mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch When removing a patch file, you must also remove it in the 'dist_patch_DATA' list of patches in the "gnu/local.mk" file. Also, you don't need to split the patch removal in several commits (see commit 2f0986b0f7cbf4dec5a3e575c67a508cf71c6dd5 for example). Could you send an updated patch?
[signature.asc (application/pgp-signature, inline)]
guix-patches <at> gnu.org
:bug#51232
; Package guix-patches
.
(Mon, 18 Oct 2021 12:16:02 GMT) Full text and rfc822 format available.Message #17 received at 51232 <at> debbugs.gnu.org (full text, mbox):
From: Artem Chernyak <artemchernyak <at> gmail.com> To: 51232 <at> debbugs.gnu.org Subject: [PATCH] gnu: Update udiskie to 2.3.3 Date: Mon, 18 Oct 2021 07:14:57 -0500
Hi Guillaume, Thanks for the feedback on this. I did not realize the patches were also tracked in the "gnu/local.mk" file. Updated and squashed into a single patch. * gnu/packages/freedesktop.scm (udiskie): Update to 2.3.3 [source]: Remove udiskie-no-appindicator.patch [inputs]: Add LIBINDICATOR * gnu/packages/pateches/udiskie-no-appindicator.patch: Remove file * gnu/local.mk: Remove udiskie-no-appindicator.patch --- gnu/local.mk | 1 - gnu/packages/freedesktop.scm | 8 +- .../patches/udiskie-no-appindicator.patch | 155 ------------------ 3 files changed, 3 insertions(+), 161 deletions(-) delete mode 100644 gnu/packages/patches/udiskie-no-appindicator.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8c30eaafba..06ee39e18e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1828,7 +1828,6 @@ dist_patch_DATA = \ %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \ %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \ %D%/packages/patches/ucx-tcp-iface-ioctl.patch \ - %D%/packages/patches/udiskie-no-appindicator.patch \ %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \ %D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \ %D%/packages/patches/ungoogled-chromium-system-nspr.patch \ diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 514125977b..a002e3e807 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1998,17 +1998,14 @@ (define-public python-cchardet (define-public udiskie (package (name "udiskie") - (version "2.1.0") + (version "2.3.3") (source (origin (method url-fetch) (uri (pypi-uri "udiskie" version)) (sha256 (base32 - "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz")) - ;; Remove support for the libappindicator library of the - ;; Unity desktop environment which is not in Guix. - (patches (search-patches "udiskie-no-appindicator.patch")))) + "0sagdmsc5km32h3jvgj843p8bicrrgfz26qhl04ibxmas6725zr0")))) (build-system python-build-system) (native-inputs `(("asciidoc" ,asciidoc) @@ -2017,6 +2014,7 @@ (define-public udiskie (inputs `(("gobject-introspection" ,gobject-introspection) ("gtk+" ,gtk+) + ("libappindicator" ,libappindicator) ("libnotify" ,libnotify) ("udisks" ,udisks))) (propagated-inputs diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch deleted file mode 100644 index df3efe104b..0000000000 --- a/gnu/packages/patches/udiskie-no-appindicator.patch +++ /dev/null @@ -1,155 +0,0 @@ -Remove the support for Unity's appindicator. - -diff -Naur udiskie-2.0.4/completions/zsh/_udiskie udiskie-2.0.4-new/completions/zsh/_udiskie ---- udiskie-2.0.4/completions/zsh/_udiskie 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/completions/zsh/_udiskie 2020-01-23 10:15:46.956141667 +0100 -@@ -18,8 +18,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-2.0.4/doc/udiskie.8.txt udiskie-2.0.4-new/doc/udiskie.8.txt ---- udiskie-2.0.4/doc/udiskie.8.txt 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/doc/udiskie.8.txt 2020-01-23 10:16:12.636290647 +0100 -@@ -92,12 +92,6 @@ - *--no-terminal*:: - Disable terminal action. - --*--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-2.0.4/udiskie/appindicator.py udiskie-2.0.4-new/udiskie/appindicator.py ---- udiskie-2.0.4/udiskie/appindicator.py 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/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 .async_ import Future -- -- --class AppIndicatorIcon: -- -- """ -- 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 = Future() -- 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.set_result(True) -- -- @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-2.0.4/udiskie/cli.py udiskie-2.0.4-new/udiskie/cli.py ---- udiskie-2.0.4/udiskie/cli.py 2020-01-21 01:12:40.000000000 +0100 -+++ udiskie-2.0.4-new/udiskie/cli.py 2020-01-23 10:17:13.064810617 +0100 -@@ -287,9 +287,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 - -@@ -312,7 +309,6 @@ - 'notify': True, - 'tray': False, - 'menu': 'flat', -- 'appindicator': False, - 'file_manager': 'xdg-open', - 'terminal': '', - 'password_prompt': 'builtin:gui', -@@ -328,7 +324,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'), -@@ -459,11 +454,7 @@ - - menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat, - config.quickmenu_actions) -- 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-2.0.4/udiskie.egg-info/SOURCES.txt udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt ---- udiskie-2.0.4/udiskie.egg-info/SOURCES.txt 2020-01-21 01:12:41.000000000 +0100 -+++ udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt 2020-01-23 10:17:50.657205798 +0100 -@@ -25,7 +25,6 @@ - test/test_cache.py - test/test_match.py - udiskie/__init__.py --udiskie/appindicator.py - udiskie/async_.py - udiskie/automount.py - udiskie/cache.py -@@ -47,4 +46,4 @@ - udiskie.egg-info/entry_points.txt - udiskie.egg-info/requires.txt - udiskie.egg-info/top_level.txt --udiskie.egg-info/zip-safe -\ Pas de fin de ligne à la fin du fichier -+udiskie.egg-info/zip-safe -- 2.33.0
Guillaume Le Vaillant <glv <at> posteo.net>
:Artem Chernyak <artemchernyak <at> gmail.com>
:Message #22 received at 51232-done <at> debbugs.gnu.org (full text, mbox):
From: Guillaume Le Vaillant <glv <at> posteo.net> To: Artem Chernyak <artemchernyak <at> gmail.com> Cc: 51232-done <at> debbugs.gnu.org Subject: Re: [bug#51232] [PATCH] gnu: Update udiskie to 2.3.3 Date: Mon, 18 Oct 2021 14:44:54 +0000
[Message part 1 (text/plain, inline)]
Patch pushed as 878744c5e3be6165633ead99c0efdca88abfcaea. Thanks.
[signature.asc (application/pgp-signature, inline)]
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 16 Nov 2021 12:24:06 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.