GNU bug report logs -
#47163
[PATCH] refresh: Add '--installed' option.
Previous Next
Reported by: Xinglu Chen <public <at> yoctocell.xyz>
Date: Mon, 15 Mar 2021 15:47:01 UTC
Severity: normal
Tags: patch, wontfix
Done: Xinglu Chen <public <at> yoctocell.xyz>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 47163 in the body.
You can then email your comments to 47163 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Mon, 15 Mar 2021 15:47:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Xinglu Chen <public <at> yoctocell.xyz>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Mon, 15 Mar 2021 15:47:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
This lets the user to only check for updates for packages installed in the
current profile.
If the user is using the imperative way to install packages, or uses
multiple manifests, this is a quick way to check for updates for the
installed packages.
* guix/scripts/refresh.scm (%options): Add '--installed' option.
* guix.texi (Invoking guix refresh): Document it.
---
doc/guix.texi | 5 +++++
guix/scripts/refresh.scm | 14 +++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3e7ffc81bc..c778a877d8 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11657,6 +11657,11 @@
Select all the packages from the manifest in @var{file}. This is useful to
check if any packages of the user manifest can be updated.
+@item --installed
+@itemx -i
+Select all the packages installed in the current profile. This is
+useful to check if any of the packages the user is using can be updated.
+
@item --type=@var{updater}
@itemx -t @var{updater}
Select only packages handled by @var{updater} (may be a comma-separated
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index fb6c52a567..c1c672dc0b 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -86,6 +86,9 @@
(option '(#\m "manifest") #t #f
(lambda (opt name arg result)
(alist-cons 'manifest arg result)))
+ (option '(#\i "installed") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'installed #t result)))
(option '(#\e "expression") #t #f
(lambda (opt name arg result)
(alist-cons 'expression arg result)))
@@ -156,6 +159,9 @@ specified with `--select'.\n"))
(display (G_ "
-m, --manifest=FILE select all the packages from the manifest in FILE"))
(display (G_ "
+ -i --installed select all the packages installed in the current
+ profile"))
+ (display (G_ "
-t, --type=UPDATER,... restrict to updates from the specified updaters
(e.g., 'gnu')"))
(display (G_ "
@@ -253,7 +259,13 @@ update would trigger a complete rebuild."
(define packages
(match (assoc-ref opts 'manifest)
- (#f args-packages)
+ (#f (if (assoc-ref opts 'installed)
+ ;; All packages installed in current profile
+ (manifest->packages
+ (match (manifest->code (profile-manifest %current-profile))
+ (('begin expr) (eval expr
+ (make-user-module '((gnu packages)))))))
+ args-packages))
((? string? file) (packages-from-manifest file))))
(if (assoc-ref opts 'recursive?)
base-commit: 266d55dc3080475544bf45e72359c9b9bbcecd53
--
2.30.2
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Mon, 15 Mar 2021 20:39:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi,
Xinglu Chen <public <at> yoctocell.xyz> skribis:
> This lets the user to only check for updates for packages installed in the
> current profile.
>
> If the user is using the imperative way to install packages, or uses
> multiple manifests, this is a quick way to check for updates for the
> installed packages.
>
> * guix/scripts/refresh.scm (%options): Add '--installed' option.
> * guix.texi (Invoking guix refresh): Document it.
I sometimes run:
guix refresh $(guix package -I | cut -f1)
I’m not sure an extra ‘guix refresh’ option is warranted. WDYT?
Thanks,
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Mon, 15 Mar 2021 21:15:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 47163 <at> debbugs.gnu.org (full text, mbox):
On Mon, Mar 15 2021, Ludovic Courtès wrote:
> Hi,
>
> Xinglu Chen <public <at> yoctocell.xyz> skribis:
>
>> This lets the user to only check for updates for packages installed in the
>> current profile.
>>
>> If the user is using the imperative way to install packages, or uses
>> multiple manifests, this is a quick way to check for updates for the
>> installed packages.
>>
>> * guix/scripts/refresh.scm (%options): Add '--installed' option.
>> * guix.texi (Invoking guix refresh): Document it.
>
> I sometimes run:
>
> guix refresh $(guix package -I | cut -f1)
>
> I’m not sure an extra ‘guix refresh’ option is warranted. WDYT?
That's cool, I think your solution would suffice. Maybe we could add it
to the manual or cookbok?
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 09:09:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi,
Xinglu Chen <public <at> yoctocell.xyz> skribis:
> On Mon, Mar 15 2021, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Xinglu Chen <public <at> yoctocell.xyz> skribis:
>>
>>> This lets the user to only check for updates for packages installed in the
>>> current profile.
>>>
>>> If the user is using the imperative way to install packages, or uses
>>> multiple manifests, this is a quick way to check for updates for the
>>> installed packages.
>>>
>>> * guix/scripts/refresh.scm (%options): Add '--installed' option.
>>> * guix.texi (Invoking guix refresh): Document it.
>>
>> I sometimes run:
>>
>> guix refresh $(guix package -I | cut -f1)
>>
>> I’m not sure an extra ‘guix refresh’ option is warranted. WDYT?
>
> That's cool, I think your solution would suffice. Maybe we could add it
> to the manual or cookbok?
That’s a good idea. Do you want to propose a short section on this?
You may also like the new ‘--with-latest’ package transformation
option. :-)
Thanks,
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 09:17:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 47163 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Tue, 2021-03-16 at 10:08 +0100, Ludovic Courtès wrote:
> Hi,
>
> Xinglu Chen <public <at> yoctocell.xyz> skribis:
>
> > On Mon, Mar 15 2021, Ludovic Courtès wrote:
> >
> > > Hi,
> > >
> > > Xinglu Chen <public <at> yoctocell.xyz> skribis:
> > >
> > > > This lets the user to only check for updates for packages
> > > > installed in the
> > > > current profile.
> > > >
> > > > If the user is using the imperative way to install packages, or
> > > > uses
> > > > multiple manifests, this is a quick way to check for updates
> > > > for the
> > > > installed packages.
> > > >
> > > > * guix/scripts/refresh.scm (%options): Add '--installed'
> > > > option.
> > > > * guix.texi (Invoking guix refresh): Document it.
> > >
> > > I sometimes run:
> > >
> > > guix refresh $(guix package -I | cut -f1)
> > >
> > > I’m not sure an extra ‘guix refresh’ option is warranted. WDYT?
> >
> > That's cool, I think your solution would suffice. Maybe we could
> > add it
> > to the manual or cookbok?
>
> That’s a good idea. Do you want to propose a short section on this?
>
> You may also like the new ‘--with-latest’ package transformation
> option. :-)
>
> Thanks,
> Ludo’.
I would also really like such option for 'lint' and 'refresh' that can
take an operating-system definition so I can ensure a certain set of
packages are up to some standards and help me focus my efforts on my or
some fellow's configuration (especially w.r.t. security), rather than
randomly trying to maintain *everything* in the GNU Guix repo which is
quite exhausting and large work to take on. Starting from a place of
actual need for myself and some fellow's configurations looks like a
more achieveable goal mid-term.
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 12:59:03 GMT)
Full text and
rfc822 format available.
Message #20 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi Léo,
On Tue, 16 Mar 2021 at 10:18, Léo Le Bouter via Guix-patches via
<guix-patches <at> gnu.org> wrote:
> I would also really like such option for 'lint' and 'refresh' that can
> take an operating-system definition so I can ensure a certain set of
> packages are up to some standards and help me focus my efforts on my or
> some fellow's configuration (especially w.r.t. security), rather than
> randomly trying to maintain *everything* in the GNU Guix repo which is
> quite exhausting and large work to take on. Starting from a place of
> actual need for myself and some fellow's configurations looks like a
> more achieveable goal mid-term.
Adding the manifest option to "guix lint", is it not enough? I do not
know how many packages you have in your operating-system definition
but from my understanding your user-wide packages should be in
manifest.scm files, and you could also maintain a manifest.scm file
for your packages system-wide. Anyway.
Here an example with an hard-coded path, saved in /tmp/manifest-from-os.scm:
--8<---------------cut here---------------start------------->8---
(use-modules
(gnu system)
(guix profiles))
(define os
(load "/home/simon/src/guix/guix/gnu/system/examples/bare-bones.tmpl"))
(define pkgs (operating-system-packages os))
(packages->manifest pkgs)
--8<---------------cut here---------------end--------------->8---
Then "guix refresh -m /tmp/manifest-from-os.scm" should do the job.
Well, it is an example, the point is simply to show that an option is
not necessary, IMHO. However, a robust script could be in etc/ with
some other tools and with a line in the manual. Maybe. :-)
It seems better to keep separated what operates on packages and what
operates on system.
Cheers,
simon
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 13:11:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 47163 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Tue, 2021-03-16 at 13:58 +0100, zimoun wrote:
> Adding the manifest option to "guix lint", is it not enough? I do
> not
> know how many packages you have in your operating-system definition
> but from my understanding your user-wide packages should be in
> manifest.scm files, and you could also maintain a manifest.scm file
> for your packages system-wide. Anyway.
>
> Here an example with an hard-coded path, saved in /tmp/manifest-from-
> os.scm:
>
> --8<---------------cut here---------------start------------->8---
> (use-modules
> (gnu system)
> (guix profiles))
>
> (define os
> (load "/home/simon/src/guix/guix/gnu/system/examples/bare-
> bones.tmpl"))
>
> (define pkgs (operating-system-packages os))
>
> (packages->manifest pkgs)
> --8<---------------cut here---------------end--------------->8---
>
> Then "guix refresh -m /tmp/manifest-from-os.scm" should do the job.
> Well, it is an example, the point is simply to show that an option is
> not necessary, IMHO. However, a robust script could be in etc/ with
> some other tools and with a line in the manual. Maybe. :-)
> It seems better to keep separated what operates on packages and what
> operates on system.
>
>
> Cheers,
> simon
You are right that looks great!
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 16:06:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 47163 <at> debbugs.gnu.org (full text, mbox):
On Tue, Mar 16 2021, Ludovic Courtès wrote:
>>> I sometimes run:
>>>
>>> guix refresh $(guix package -I | cut -f1)
>>>
>>> I’m not sure an extra ‘guix refresh’ option is warranted. WDYT?
>>
>> That's cool, I think your solution would suffice. Maybe we could add it
>> to the manual or cookbok?
>
> That’s a good idea. Do you want to propose a short section on this?
Sure, I will send a followup patch to this.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 16:20:01 GMT)
Full text and
rfc822 format available.
Message #29 received at 47163 <at> debbugs.gnu.org (full text, mbox):
* doc/guix.texi (Invoking guix refresh): Add snippet that runs 'guix refresh'
on all the packages installed in the current profile.
---
doc/guix.texi | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3e7ffc81bc..752dce9072 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11722,6 +11722,16 @@
@code{idutils} packages. The @option{--select} option would have no
effect in this case.
+You can also quickly update all the packages installed in the current
+profile with the following snippet:
+
+@example
+$ guix refresh -u $(guix package --list-installed | cut -f1)
+@end example
+
+This is handy if you don't use manifests for installing packages into
+your profile.
+
When considering whether to upgrade a package, it is sometimes
convenient to know which packages would be affected by the upgrade and
should be checked for compatibility. For this the following option may
base-commit: 266d55dc3080475544bf45e72359c9b9bbcecd53
--
2.30.2
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 16:45:02 GMT)
Full text and
rfc822 format available.
Message #32 received at 47163 <at> debbugs.gnu.org (full text, mbox):
On Tue, Mar 16 2021, Ludovic Courtès wrote:
> You may also like the new ‘--with-latest’ package transformation
> option. :-)
I really like package transformations but is there a way to use specify
them with Guile so I can use them with `guix home`[1] or in manifests?
Ccing guix-devel
[1]: https://yhetil.org/guix-devel/878s6u2pco.fsf <at> trop.in
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 17:24:01 GMT)
Full text and
rfc822 format available.
Message #35 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi,
On Tue, 16 Mar 2021 at 17:46, Xinglu Chen <public <at> yoctocell.xyz> wrote:
> On Tue, Mar 16 2021, Ludovic Courtès wrote:
>
> > You may also like the new ‘--with-latest’ package transformation
> > option. :-)
>
> I really like package transformations but is there a way to use specify
> them with Guile so I can use them with `guix home`[1] or in manifests?
There is several ways to have package transformations at the manifest
level. One is:
--8<---------------cut here---------------start------------->8---
(use-modules (guix transformations))
(define transform1
(options->transformation
'((with-c-toolchain . "hello=gcc-toolchain <at> 8"))))
(packages->manifest
(list (transform1 (specification->package "hello"))))
--8<---------------cut here---------------end--------------->8---
HTH,
simon
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 18:13:02 GMT)
Full text and
rfc822 format available.
Message #38 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi,
Xinglu Chen <public <at> yoctocell.xyz> skribis:
> * doc/guix.texi (Invoking guix refresh): Add snippet that runs 'guix refresh'
> on all the packages installed in the current profile.
[...]
> +You can also quickly update all the packages installed in the current
> +profile with the following snippet:
> +
> +@example
> +$ guix refresh -u $(guix package --list-installed | cut -f1)
> +@end example
> +
> +This is handy if you don't use manifests for installing packages into
> +your profile.
Note that if you type this literally, it fails along these lines:
--8<---------------cut here---------------start------------->8---
$ guix refresh -u grep
Starting download of /tmp/guix-file.yLXS45
From https://ftpmirror.gnu.org/gnu/grep/grep-3.6.tar.xz...
following redirection to `https://gnu.mirror.constant.com/grep/grep-3.6.tar.xz'...
…6.tar.xz 1.5MiB 2.3MiB/s 00:01 [##################] 100.0%
Starting download of /tmp/guix-file.NgvvW4
From https://ftpmirror.gnu.org/gnu/grep/grep-3.6.tar.xz.sig...
following redirection to `https://mirrors.ocf.berkeley.edu/gnu/grep/grep-3.6.tar.xz.sig'...
…tar.xz.sig 833B 1.8MiB/s 00:00 [##################] 100.0%
gpgv: Signature made Mon 09 Nov 2020 05:40:03 AM CET
gpgv: using RSA key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE
gpgv: Good signature from "Jim Meyering <jim <at> meyering.net>"
gpgv: aka "Jim Meyering <meyering <at> fb.com>"
gpgv: aka "Jim Meyering <meyering <at> gnu.org>"
gnu/packages/base.scm:99:12: grep: updating from version 3.4 to version 3.6...
guix refresh: error: mkstemp!: Read-only file system
--8<---------------cut here---------------end--------------->8---
So I think this example may be misleading. We could instead suggest
./pre-inst-env, with a link to “Running Guix Before It Is Installed”,
and possibly mention the ‘--with-latest’ option as well.
WDYT?
Thanks,
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 18:35:03 GMT)
Full text and
rfc822 format available.
Message #41 received at 47163 <at> debbugs.gnu.org (full text, mbox):
On Tue, Mar 16 2021, Ludovic Courtès wrote:
>> * doc/guix.texi (Invoking guix refresh): Add snippet that runs 'guix refresh'
>> on all the packages installed in the current profile.
>
> [...]
>
>> +You can also quickly update all the packages installed in the current
>> +profile with the following snippet:
>> +
>> +@example
>> +$ guix refresh -u $(guix package --list-installed | cut -f1)
>> +@end example
>> +
>> +This is handy if you don't use manifests for installing packages into
>> +your profile.
>
> Note that if you type this literally, it fails along these lines:
>
> --8<---------------cut here---------------start------------->8---
> $ guix refresh -u grep
>
> Starting download of /tmp/guix-file.yLXS45
> From https://ftpmirror.gnu.org/gnu/grep/grep-3.6.tar.xz...
> following redirection to `https://gnu.mirror.constant.com/grep/grep-3.6.tar.xz'...
> …6.tar.xz 1.5MiB 2.3MiB/s 00:01 [##################] 100.0%
>
> Starting download of /tmp/guix-file.NgvvW4
> From https://ftpmirror.gnu.org/gnu/grep/grep-3.6.tar.xz.sig...
> following redirection to `https://mirrors.ocf.berkeley.edu/gnu/grep/grep-3.6.tar.xz.sig'...
> …tar.xz.sig 833B 1.8MiB/s 00:00 [##################] 100.0%
> gpgv: Signature made Mon 09 Nov 2020 05:40:03 AM CET
> gpgv: using RSA key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE
> gpgv: Good signature from "Jim Meyering <jim <at> meyering.net>"
> gpgv: aka "Jim Meyering <meyering <at> fb.com>"
> gpgv: aka "Jim Meyering <meyering <at> gnu.org>"
> gnu/packages/base.scm:99:12: grep: updating from version 3.4 to version 3.6...
> guix refresh: error: mkstemp!: Read-only file system
> --8<---------------cut here---------------end--------------->8---
>
> So I think this example may be misleading. We could instead suggest
> ./pre-inst-env, with a link to “Running Guix Before It Is Installed”,
> and possibly mention the ‘--with-latest’ option as well.
>
> WDYT?
Sorry, I should have tested the command... When you say "--with-latest",
do you mean `guix package -i grep --with-latest`?
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Tue, 16 Mar 2021 18:36:01 GMT)
Full text and
rfc822 format available.
Message #44 received at 47163 <at> debbugs.gnu.org (full text, mbox):
On Tue, Mar 16 2021, zimoun wrote:
>> I really like package transformations but is there a way to use specify
>> them with Guile so I can use them with `guix home`[1] or in manifests?
>
> There is several ways to have package transformations at the manifest
> level. One is:
>
> --8<---------------cut here---------------start------------->8---
> (use-modules (guix transformations))
>
> (define transform1
> (options->transformation
> '((with-c-toolchain . "hello=gcc-toolchain <at> 8"))))
>
> (packages->manifest
> (list (transform1 (specification->package "hello"))))
> --8<---------------cut here---------------end--------------->8---
Cool, thanks for the help.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Wed, 17 Mar 2021 17:18:02 GMT)
Full text and
rfc822 format available.
Message #47 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Hi,
zimoun <zimon.toutoune <at> gmail.com> skribis:
> There is several ways to have package transformations at the manifest
> level. One is:
>
> (use-modules (guix transformations))
>
> (define transform1
> (options->transformation
> '((with-c-toolchain . "hello=gcc-toolchain <at> 8"))))
>
> (packages->manifest
> (list (transform1 (specification->package "hello"))))
On this topic, do not miss this section of the fine manual:
<https://guix.gnu.org/manual/en/html_node/Defining-Package-Variants.html>.
:-)
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#47163
; Package
guix-patches
.
(Thu, 18 Mar 2021 09:32:02 GMT)
Full text and
rfc822 format available.
Message #50 received at 47163 <at> debbugs.gnu.org (full text, mbox):
Xinglu Chen <public <at> yoctocell.xyz> skribis:
> On Tue, Mar 16 2021, Ludovic Courtès wrote:
[...]
>> So I think this example may be misleading. We could instead suggest
>> ./pre-inst-env, with a link to “Running Guix Before It Is Installed”,
>> and possibly mention the ‘--with-latest’ option as well.
>>
>> WDYT?
>
> Sorry, I should have tested the command... When you say "--with-latest",
> do you mean `guix package -i grep --with-latest`?
Yes, see the “Package Transformation Options” section of the manual.
Ludo’.
Reply sent
to
Xinglu Chen <public <at> yoctocell.xyz>
:
You have taken responsibility.
(Fri, 26 Mar 2021 17:20:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Xinglu Chen <public <at> yoctocell.xyz>
:
bug acknowledged by developer.
(Fri, 26 Mar 2021 17:20:02 GMT)
Full text and
rfc822 format available.
Message #55 received at 47163-done <at> debbugs.gnu.org (full text, mbox):
The v2 patch has been applied. Closing.
Added tag(s) wontfix.
Request was from
Ludovic Courtès <ludo <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Sat, 27 Mar 2021 10:58:02 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 24 Apr 2021 11:24:06 GMT)
Full text and
rfc822 format available.
This bug report was last modified 3 years and 1 day ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.