GNU bug report logs - #61853
‘guix pack’ shell tests fail

Previous Next

Package: guix;

Reported by: Ludovic Courtès <ludovic.courtes <at> inria.fr>

Date: Mon, 27 Feb 2023 21:47:02 UTC

Severity: important

Done: Ludovic Courtès <ludo <at> gnu.org>

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 61853 in the body.
You can then email your comments to 61853 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


Report forwarded to bug-guix <at> gnu.org:
bug#61853; Package guix. (Mon, 27 Feb 2023 21:47:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ludovic Courtès <ludovic.courtes <at> inria.fr>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Mon, 27 Feb 2023 21:47:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludovic.courtes <at> inria.fr>
To: bug-guix <at> gnu.org
Subject: ‘guix pack’ shell tests fail
Date: Mon, 27 Feb 2023 22:46:37 +0100
The two tests/guix-pack*.sh tests fail:

--8<---------------cut here---------------start------------->8---
$ make check TESTS="tests/guix-pack.sh tests/guix-pack-relocatable.sh" -j5
make  check-recursive
make[1]: Entering directory '/home/ludo/src/guix'
Making check in po/guix
make[2]: Entering directory '/home/ludo/src/guix/po/guix'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/home/ludo/src/guix/po/guix'
Making check in po/packages
make[2]: Entering directory '/home/ludo/src/guix/po/packages'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/home/ludo/src/guix/po/packages'
make[2]: Entering directory '/home/ludo/src/guix'
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
make  check-TESTS check-local
make[3]: Entering directory '/home/ludo/src/guix'
make[3]: Nothing to be done for 'check-local'.
make[4]: Entering directory '/home/ludo/src/guix'
FAIL: tests/guix-pack-relocatable.sh
FAIL: tests/guix-pack.sh
============================================================================
Testsuite summary for GNU Guix 1.3.0.28826-3cff7-dirty
============================================================================
# TOTAL: 2
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to bug-guix <at> gnu.org
============================================================================
make[4]: *** [Makefile:6051: test-suite.log] Error 1
make[4]: Leaving directory '/home/ludo/src/guix'
make[3]: *** [Makefile:6159: check-TESTS] Error 2
make[3]: Leaving directory '/home/ludo/src/guix'
make[2]: *** [Makefile:6408: check-am] Error 2
make[2]: Leaving directory '/home/ludo/src/guix'
make[1]: *** [Makefile:5936: check-recursive] Error 1
make[1]: Leaving directory '/home/ludo/src/guix'
make: *** [Makefile:6410: check] Error 2
$ git log |head -1
commit cf9e0508b26196dc985302776d860a0359652c59
--8<---------------cut here---------------end--------------->8---

In both cases this is because $test_directory is read-only:

--8<---------------cut here---------------start------------->8---
+ drv1='  /home/ludo/src/guix/test-tmp/store/6wrnnnab33wv950cflswi8ffncwr99b0-guile-tarball-pack.tar.gz.drv'
++ guix pack --no-grafts -n --with-source=guile=/tmp/tmp.olhfx3CkHh guile
++ grep 'pack.*.drv'
accepted connection from pid 30805, user ludo
+ drv2='  /home/ludo/src/guix/test-tmp/store/f909hi2ywyyvy7l5p4ibmy26alr7d18d-guile-tarball-pack.tar.gz.drv'
+ test -n '  /home/ludo/src/guix/test-tmp/store/6wrnnnab33wv950cflswi8ffncwr99b0-guile-tarball-pack.tar.gz.drv'
+ test '  /home/ludo/src/guix/test-tmp/store/6wrnnnab33wv950cflswi8ffncwr99b0-guile-tarball-pack.tar.gz.drv' '!=' '  /home/ludo/src/guix/test-tmp/store/f909hi2ywyyvy7l5p4ibmy26alr7d18d-guile-tarball-pack.tar.gz.drv'
+ cat
./tests/guix-pack.sh: line 124: /tmp/tmp.olhfx3CkHh/manifest1.scm: Permission denied
+ chmod -Rf +w /tmp/tmp.olhfx3CkHh
+ rm -rf /tmp/tmp.olhfx3CkHh
FAIL tests/guix-pack.sh (exit status: 1)
--8<---------------cut here---------------end--------------->8---

… and:

--8<---------------cut here---------------start------------->8---
+ run_without_store /tmp/tmp.c5oSwOgOOD/Bin/sed --version
./tests/guix-pack-relocatable.sh: line 85: /tmp/tmp.c5oSwOgOOD/output: Permission denied
+ chmod -Rf +w /tmp/tmp.c5oSwOgOOD
+ rm -rf /tmp/tmp.c5oSwOgOOD
FAIL tests/guix-pack-relocatable.sh (exit status: 1)
--8<---------------cut here---------------end--------------->8---

Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#61853; Package guix. (Mon, 27 Feb 2023 23:08:01 GMT) Full text and rfc822 format available.

Message #8 received at 61853 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: 61853 <at> debbugs.gnu.org, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: Re: bug#61853: ‘guix pack’ shell tests fail
Date: Tue, 28 Feb 2023 00:07:31 +0100
Ludovic Courtès <ludovic.courtes <at> inria.fr> skribis:

> In both cases this is because $test_directory is read-only:

This in turn is due to a permission change in generated tarballs:

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 248  Feb 27 2023 16:36:12    (current)
  guix cf9e050
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: cf9e0508b26196dc985302776d860a0359652c59
$ guix pack hello
/gnu/store/k0mjzvv76s0yn4r4mwzy6mvf71wxpbg2-hello-tarball-pack.tar.gz
ludo <at> ribbon ~/src/guix$ tar tzvf /gnu/store/k0mjzvv76s0yn4r4mwzy6mvf71wxpbg2-hello-tarball-pack.tar.gz |head
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/include/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/
-r--r--r-- root/root      2056 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/crtbegin.o
--8<---------------cut here---------------end--------------->8---

Compared to:

--8<---------------cut here---------------start------------->8---
$ guix time-machine --commit=v1.4.0 -- pack hello
/gnu/store/vjjavmn16mxzgrlfawjcgq5j4iqm7609-hello-tarball-pack.tar.gz
$ tar tzvf /gnu/store/vjjavmn16mxzgrlfawjcgq5j4iqm7609-hello-tarball-pack.tar.gz | head
drwxr-xr-x root/root         0 1970-01-01 01:00 ./
drwxr-xr-x root/root         0 1970-01-01 01:00 ./gnu/
drwxrwxr-t root/root         0 1970-01-01 01:00 ./gnu/store/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/include/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/
dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/
-r--r--r-- root/root      2056 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/crtbegin.o
tar: stdout: write error
--8<---------------cut here---------------end--------------->8---

That’s an acceptable change IMO, introduced in
68380db4c40a2ee1156349a87254fd7b1f1a52d5.  However, the tests were
evidently not run after that change, which is problematic.

Anyway, fixed in 92a0e60a963a54230e400c5c2ae585205489bf35.  Both tests
now pass for me.

One issue with 68380db4c40a2ee1156349a87254fd7b1f1a52d5, though, is that
it introduces a copy of the profile being built to the store
(“profile-directory”).  This was purposefully avoided before because
it’s very I/O-intensive, space-consuming, and puts more pressure on the
store.  It’s a pattern we avoided for system images too, having noticed
its cost (commit 7f75a7ec08975eb6d6e01db61bd6b91f447f655e for instance.)

We may need to come back to a single derivation well or creating packs
for big profiles will be too costly.

Ludo’.




Severity set to 'important' from 'normal' Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 27 Feb 2023 23:08:02 GMT) Full text and rfc822 format available.

bug closed, send any further explanations to 61853 <at> debbugs.gnu.org and Ludovic Courtès <ludovic.courtes <at> inria.fr> Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 27 Feb 2023 23:08:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-guix <at> gnu.org:
bug#61853; Package guix. (Tue, 28 Feb 2023 02:16:03 GMT) Full text and rfc822 format available.

Message #15 received at 61853 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 61853 <at> debbugs.gnu.org
Subject: Re: bug#61853: ‘guix pack’ shell tests fail
Date: Mon, 27 Feb 2023 21:15:18 -0500
Hi Ludovic,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Ludovic Courtès <ludovic.courtes <at> inria.fr> skribis:
>
>> In both cases this is because $test_directory is read-only:
>
> This in turn is due to a permission change in generated tarballs:
>
> $ guix describe
> Generation 248  Feb 27 2023 16:36:12    (current)
>   guix cf9e050
>     repository URL: https://git.savannah.gnu.org/git/guix.git
>     branch: master
>     commit: cf9e0508b26196dc985302776d860a0359652c59
> $ guix pack hello
> /gnu/store/k0mjzvv76s0yn4r4mwzy6mvf71wxpbg2-hello-tarball-pack.tar.gz
> ludo <at> ribbon ~/src/guix$ tar tzvf /gnu/store/k0mjzvv76s0yn4r4mwzy6mvf71wxpbg2-hello-tarball-pack.tar.gz |head
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/include/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/
> -r--r--r-- root/root      2056 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/crtbegin.o
>
>
> Compared to:
>
> $ guix time-machine --commit=v1.4.0 -- pack hello
> /gnu/store/vjjavmn16mxzgrlfawjcgq5j4iqm7609-hello-tarball-pack.tar.gz
> $ tar tzvf /gnu/store/vjjavmn16mxzgrlfawjcgq5j4iqm7609-hello-tarball-pack.tar.gz | head
> drwxr-xr-x root/root         0 1970-01-01 01:00 ./
> drwxr-xr-x root/root         0 1970-01-01 01:00 ./gnu/
> drwxrwxr-t root/root         0 1970-01-01 01:00 ./gnu/store/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/include/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/
> dr-xr-xr-x root/root         0 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/
> -r--r--r-- root/root      2056 1970-01-01 01:00 ./gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/gcc/x86_64-unknown-linux-gnu/10.3.0/crtbegin.o
> tar: stdout: write error
>
> That’s an acceptable change IMO, introduced in
> 68380db4c40a2ee1156349a87254fd7b1f1a52d5.  However, the tests were
> evidently not run after that change, which is problematic.

Interesting.  I had done all my testing using tests/pack.scm (and the
new tests/rpm.scm), and overlooked tests/pack.sh.

> Anyway, fixed in 92a0e60a963a54230e400c5c2ae585205489bf35.  Both tests
> now pass for me.

Thanks (again)!

> One issue with 68380db4c40a2ee1156349a87254fd7b1f1a52d5, though, is that
> it introduces a copy of the profile being built to the store
> (“profile-directory”).  This was purposefully avoided before because
> it’s very I/O-intensive, space-consuming, and puts more pressure on the
> store.  It’s a pattern we avoided for system images too, having noticed
> its cost (commit 7f75a7ec08975eb6d6e01db61bd6b91f447f655e for instance.)
>
> We may need to come back to a single derivation well or creating packs
> for big profiles will be too costly.

I agree it's expensive; we're trading IO for storage though, so the case
of generating the same pack in multiple format, it could be beneficial
by only computing the union directory once.  The real motivation was
avoiding code duplication though; perhaps this could be accomplished by
moving the common logic to (guix build pack-utils)?

-- 
Thanks,
Maxim




Information forwarded to bug-guix <at> gnu.org:
bug#61853; Package guix. (Fri, 03 Mar 2023 10:45:03 GMT) Full text and rfc822 format available.

Message #18 received at 61853 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 61853 <at> debbugs.gnu.org
Subject: Re: bug#61853: ‘guix pack’ shell tests fail
Date: Fri, 03 Mar 2023 11:43:55 +0100
Hi Maxim,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:

> Ludovic Courtès <ludo <at> gnu.org> writes:

[...]

>> That’s an acceptable change IMO, introduced in
>> 68380db4c40a2ee1156349a87254fd7b1f1a52d5.  However, the tests were
>> evidently not run after that change, which is problematic.
>
> Interesting.  I had done all my testing using tests/pack.scm (and the
> new tests/rpm.scm), and overlooked tests/pack.sh.

…

>> Anyway, fixed in 92a0e60a963a54230e400c5c2ae585205489bf35.  Both tests
>> now pass for me.
>
> Thanks (again)!

To be clear, it’s time-consuming and stressful.  That’s not sane and I’d
rather not work that way.

>> One issue with 68380db4c40a2ee1156349a87254fd7b1f1a52d5, though, is that
>> it introduces a copy of the profile being built to the store
>> (“profile-directory”).  This was purposefully avoided before because
>> it’s very I/O-intensive, space-consuming, and puts more pressure on the
>> store.  It’s a pattern we avoided for system images too, having noticed
>> its cost (commit 7f75a7ec08975eb6d6e01db61bd6b91f447f655e for instance.)
>>
>> We may need to come back to a single derivation well or creating packs
>> for big profiles will be too costly.
>
> I agree it's expensive; we're trading IO for storage though, so the case
> of generating the same pack in multiple format, it could be beneficial
> by only computing the union directory once.  The real motivation was
> avoiding code duplication though; perhaps this could be accomplished by
> moving the common logic to (guix build pack-utils)?

Yes, that’s a good idea.  There’s already (guix build pack) and I guess
we could move roughly the contents of ‘self-contained-tarball/builder’
and ‘populate-profile-root’ there.

How does that sound?

Thanks,
Ludo’.




Information forwarded to bug-guix <at> gnu.org:
bug#61853; Package guix. (Sat, 04 Mar 2023 03:23:02 GMT) Full text and rfc822 format available.

Message #21 received at 61853 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 61853 <at> debbugs.gnu.org
Subject: Re: bug#61853: ‘guix pack’ shell tests fail
Date: Fri, 03 Mar 2023 22:22:10 -0500
Hi,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Hi Maxim,
>
> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:
>
>> Ludovic Courtès <ludo <at> gnu.org> writes:
>
> [...]
>
>>> That’s an acceptable change IMO, introduced in
>>> 68380db4c40a2ee1156349a87254fd7b1f1a52d5.  However, the tests were
>>> evidently not run after that change, which is problematic.
>>
>> Interesting.  I had done all my testing using tests/pack.scm (and the
>> new tests/rpm.scm), and overlooked tests/pack.sh.
>
> …
>
>>> Anyway, fixed in 92a0e60a963a54230e400c5c2ae585205489bf35.  Both tests
>>> now pass for me.
>>
>> Thanks (again)!
>
> To be clear, it’s time-consuming and stressful.  That’s not sane and I’d
> rather not work that way.

Again, thanks for fixing up after me, but you didn't need to put
yourself under such pressure.  As the author of the problematic change,
the responsibility of fixing it was on me; I understand this well.

>>> One issue with 68380db4c40a2ee1156349a87254fd7b1f1a52d5, though, is that
>>> it introduces a copy of the profile being built to the store
>>> (“profile-directory”).  This was purposefully avoided before because
>>> it’s very I/O-intensive, space-consuming, and puts more pressure on the
>>> store.  It’s a pattern we avoided for system images too, having noticed
>>> its cost (commit 7f75a7ec08975eb6d6e01db61bd6b91f447f655e for instance.)
>>>
>>> We may need to come back to a single derivation well or creating packs
>>> for big profiles will be too costly.
>>
>> I agree it's expensive; we're trading IO for storage though, so the case
>> of generating the same pack in multiple format, it could be beneficial
>> by only computing the union directory once.  The real motivation was
>> avoiding code duplication though; perhaps this could be accomplished by
>> moving the common logic to (guix build pack-utils)?
>
> Yes, that’s a good idea.  There’s already (guix build pack) and I guess
> we could move roughly the contents of ‘self-contained-tarball/builder’
> and ‘populate-profile-root’ there.
>
> How does that sound?

Sounds good.  See an implementation in #61949, to which you should be
CC'd already (per 'etc/teams.scm cc-members HEAD^ HEAD').

-- 
Thanks,
Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 01 Apr 2023 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 42 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.