GNU bug report logs - #32352
build sometimes fails with "Directory-local variables error: (invalid-read-syntax #)"

Previous Next

Package: emacs;

Reported by: markusffm <at> fn.de

Date: Fri, 3 Aug 2018 05:52:01 UTC

Severity: minor

Tags: fixed

Found in version 27.0.50

Done: Noam Postavsky <npostavs <at> gmail.com>

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 32352 in the body.
You can then email your comments to 32352 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-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Fri, 03 Aug 2018 05:52:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to markusffm <at> fn.de:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 03 Aug 2018 05:52:02 GMT) Full text and rfc822 format available.

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

From: Markus FFM <markusffm <at> fn.de>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; build error
Date: Fri, 03 Aug 2018 07:48:07 +0200
build emacs from sources.
error messages:
make -C ../admin/grammars all EMACS="../../src/bootstrap-emacs"
make[3]: Entering directory '/usr/local/src/sdm/emacs/trunk/admin/grammars'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/usr/local/src/sdm/emacs/trunk/admin/grammars'
Directories for loaddefs: . ./calc ./calendar ./cedet ./cedet/ede ./cedet/semantic ./cedet/semantic/analyze ./cedet/semantic/bovine ./cedet/semantic/decorate ./cedet/semantic/symref ./cedet/semantic/wisent ./cedet/srecode ./emacs-lisp ./emulation ./erc ./eshell ./gnus ./image ./international ./language ./leim ./leim/ja-dic ./leim/quail ./mail ./mh-e ./net ./nxml ./org ./play ./progmodes ./textmodes ./url ./vc
  GEN      loaddefs.el
Directory-local variables error: (invalid-read-syntax #)
Error: (void-variable =)
Directory-local variables error: (invalid-read-syntax #)
make[2]: Leaving directory '/usr/local/src/sdm/emacs/trunk/lisp'
make[2]: Entering directory '/usr/local/src/sdm/emacs/trunk/lisp'
  ELC      ../lisp/files.elc
Directory-local variables error: (invalid-read-syntax #)

In toplevel form:
files.el:31:1:Error: Symbol’s value as variable is void: =
make[2]: *** [Makefile:285: ../lisp/files.elc] Error 1
make[2]: Leaving directory '/usr/local/src/sdm/emacs/trunk/lisp'
make[1]: *** [Makefile:733: ../lisp/files.elc] Error 2
make[1]: Leaving directory '/usr/local/src/sdm/emacs/trunk/src'
make: *** [Makefile:418: src] Error 2



In GNU Emacs 27.0.50 (build 29, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2018-08-02 built on INDRA
Repository revision: 2f37ecaefcc61b0bf389f1c1eb3ac1b15105f056
System Description: Fedora 28 (Twenty Eight)

Recent messages:
>>>loaded: GNU Emacs 27.0.50 of 2018-08-02<<<
>>>load time: Friday, August  3, 2018 07:42:43<<<
Desktop: 3 buffers restored, 2 to restore lazily.
For information about GNU Emacs and the GNU system, type C-M-h C-a.
Desktop lazily opening user-profile.el (2 remaining)...done
Desktop lazily opening init.el (1 remaining)...done
Lazy desktop load complete
Making completion list... [2 times]

Configured using:
 'configure --prefix=/opt/emacs --sysconfdir=/etc
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --libexecdir=/opt/emacs/lib/ --localstatedir=/usr/local/var
 --enable-largefile --with-x-toolkit=gtk3 --with-sound=no --with-modules
 --with-xwidgets --without-pop --without-selinux --without-gnutls
 --disable-acl --with-file-notification=yes --with-json --without-xml2
 'CFLAGS=-march=native -Os''

Configured features:
XPM JPEG TIFF GIF PNG RSVG GPM DBUS GSETTINGS NOTIFY FREETYPE M17N_FLT
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS XWIDGETS
LIBSYSTEMD JSON

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  show-paren-mode: t
  recentf-mode: t
  desktop-save-mode: 1
  delete-selection-mode: t
  cua-mode: t
  global-hl-line-mode: t
  gpm-mouse-mode: t
  savehist-mode: t
  global-auto-revert-mode: t
  auto-insert-mode: t
  smooth-scroll-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  save-place-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-quote-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  global-prettify-symbols-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow mail-extr emacsbug message rmc puny rfc822 mml mml-sec epa epg
epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mail-utils cursor-sensor mule-util jka-compr info
term/linux user-profile powerline powerline-separators powerline-themes
server default-profile default-ui paren man mm-util mail-prsvr recentf
rng-nxml rng-valid nxml-mode nxml-outln nxml-rap sgml-mode dom sort
dired-sort-menu dired dired-loaddefs autoload radix-tree lisp-mnt
checkdoc help-mode vc-dispatcher vc-svn desktop frameset avoid
default-faces default-keymap delsel cua-base default-run default-restart
default-modes default-platform default-nw hl-line t-mouse default-unix
default-flymake default-flymake-go default-flymake-csharp
default-flymake-ruby default-flymake-js default-flymake-py
default-flymake-java default-flymake-shell flymake-proc flymake compile
warnings default-run-assoc run-assoc default-tempo default-tempo-rexx
default-tempo-sh default-tempo-pas default-tempo-js default-tempo-java
default-tempo-perl default-tempo-elisp default-tempo-c-cpp default-menu
default-help default-options default-tools default-search default-format
default-view aquamacs-cmm-menu default-edit default-file default-generic
savehist autorevert filenotify autoinsert default-functions elec-pair
default-autoload ox-man ox-odt rng-loc rng-uri rng-parse rng-match
rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util
ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-element
avl-tree generator org org-macro org-footnote org-pcomplete pcomplete
org-list org-faces org-entities time-date org-version ob-emacs-lisp ob
ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-comint comint
ansi-color ring org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs ob-exp ob-core org-compat ob-eval org-macs markdown-mode rx
color thingatpt noutline outline easy-mmode jison-mode bison-mode
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs flex-mode derived aquamacs-tabbar cus-start cus-load
aquamacs-tools tabbar restore-last-frame-size org-bullets syslog-mode
hide-lines web-mode disp-table vimrc-mode neotree advice smooth-scroll
aok cl fill-column-indicator tempbuf auto-complete-config auto-complete
edmacro kmacro popup undo-tree diff multi-shell windata tree-mode
tree-widget wid-edit imenu imenu-tree tempo saveplace google-translate
google-translate-default-ui google-translate-core-ui ido
google-translate-core google-translate-tk url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars mailcap json map seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib eol-conversion easymenu
default-path tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting
xwidget-internal move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 300072 174730)
 (symbols 48 40316 8)
 (miscs 40 261 630)
 (strings 32 101557 26783)
 (string-bytes 1 3043377)
 (vectors 16 39010)
 (vector-slots 8 742017 213098)
 (floats 8 385 1480)
 (intervals 56 1868 418)
 (buffers 992 26))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Fri, 03 Aug 2018 06:08:01 GMT) Full text and rfc822 format available.

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

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Markus FFM <markusffm <at> fn.de>
Cc: 32352 <at> debbugs.gnu.org
Subject: Re: bug#32352: 27.0.50; build error
Date: Fri, 03 Aug 2018 15:07:00 +0900
On Fri, 03 Aug 2018 07:48:07 +0200, Markus FFM wrote:
> build emacs from sources.
> error messages:
[...]
> Directory-local variables error: (invalid-read-syntax #)
> Error: (void-variable =)

This sometimes happens to me, too :).  Try `make bootstrap'.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Fri, 03 Aug 2018 06:51:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: 32352 <at> debbugs.gnu.org, markusffm <at> fn.de
Subject: Re: bug#32352: 27.0.50; build error
Date: Fri, 03 Aug 2018 09:50:06 +0300
> Date: Fri, 03 Aug 2018 15:07:00 +0900
> From: Katsumi Yamaoka <yamaoka <at> jpl.org>
> Cc: 32352 <at> debbugs.gnu.org
> 
> On Fri, 03 Aug 2018 07:48:07 +0200, Markus FFM wrote:
> > build emacs from sources.
> > error messages:
> [...]
> > Directory-local variables error: (invalid-read-syntax #)
> > Error: (void-variable =)
> 
> This sometimes happens to me, too :).  Try `make bootstrap'.

No need to bootstrap: just rename .dir-locals.el and re-run "make",
then rename the file back.

Would someone please look into this annoying problem?  It seems to
happen every time files.el and/or dired.el is changed.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Fri, 03 Aug 2018 12:41:02 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: markusffm <at> fn.de, Katsumi Yamaoka <yamaoka <at> jpl.org>, 32352 <at> debbugs.gnu.org
Subject: Re: bug#32352: 27.0.50; build error
Date: Fri, 03 Aug 2018 08:40:44 -0400
Eli Zaretskii <eliz <at> gnu.org> writes:

> No need to bootstrap: just rename .dir-locals.el and re-run "make",
> then rename the file back.
>
> Would someone please look into this annoying problem?  It seems to
> happen every time files.el and/or dired.el is changed.

    In toplevel form:
    files.el:31:1:Error: Symbol’s value as variable is void: =

Line 31 has this:

(eval-when-compile
  (require 'pcase)
  (require 'easy-mmode)) ; For `define-minor-mode'.

So to narrow it down, I tried changing to

(eval-when-compile
  (require 'pcase))
(eval-when-compile
  (require 'easy-mmode)) ; For `define-minor-mode'.

But then the problem disappeared.  I have no idea if this fixes
anything, or it just covered up the problem until next time.





Changed bug title to 'build sometimes fails with "Directory-local variables error: (invalid-read-syntax #)"' from '27.0.50; build error' Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Tue, 07 Aug 2018 23:42:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Mon, 12 Nov 2018 19:02:02 GMT) Full text and rfc822 format available.

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

From: Glenn Morris <rgm <at> gnu.org>
To: Noam Postavsky <npostavs <at> gmail.com>
Cc: markusffm <at> fn.de, Eli Zaretskii <eliz <at> gnu.org>, 32352 <at> debbugs.gnu.org,
 Katsumi Yamaoka <yamaoka <at> jpl.org>
Subject: Re: bug#32352: 27.0.50; build error
Date: Mon, 12 Nov 2018 14:01:40 -0500
I seem to be able to reproduce it at will with (after a bootstrap):

touch lisp/files.el src/emacs.c 
rm src/bootstrap-emacs
make

which dies doing

./src/bootstrap-emacs -batch -f batch-byte-compile lisp/files.el

at (alist-get class dir-locals-class-alist) when gv.elc loads.
(It's fine if you load bytecomp.el instead of .elc.)

See also
http://lists.gnu.org/r/emacs-devel/2018-11/msg00156.html




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Tue, 13 Nov 2018 01:38:02 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 32352 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, markusffm <at> fn.de,
 Katsumi Yamaoka <yamaoka <at> jpl.org>
Subject: Re: bug#32352: 27.0.50; build error
Date: Mon, 12 Nov 2018 20:37:09 -0500
Glenn Morris <rgm <at> gnu.org> writes:

> I seem to be able to reproduce it at will with (after a bootstrap):
>
> touch lisp/files.el src/emacs.c 
> rm src/bootstrap-emacs
> make

Ah right, I missed removing bootstrap-emacs.

> which dies doing
>
> ./src/bootstrap-emacs -batch -f batch-byte-compile lisp/files.el
>
> at (alist-get class dir-locals-class-alist) when gv.elc loads.
> (It's fine if you load bytecomp.el instead of .elc.)

Not entirely sure about bytecomp.el vs elc, but the problem seems to be
that files.el binds read-circle over too much code, and gv.elc has some
circular structure in it.  The following patch fixes it:

--- c/lisp/files.el
+++ i/lisp/files.el
@@ -4099,7 +4099,6 @@ dir-locals-read-from-dir
 Return the new class name, which is a symbol named DIR."
   (let* ((class-name (intern dir))
          (files (dir-locals--all-files dir))
-         (read-circle nil)
 	 ;; If there was a problem, use the values we could get but
 	 ;; don't let the cache prevent future reads.
 	 (latest 0) (success 0)
@@ -4114,7 +4113,8 @@ dir-locals-read-from-dir
           (insert-file-contents file)
           (let ((newvars
                  (condition-case-unless-debug nil
-                     (read (current-buffer))
+                     (let ((read-circle nil))
+                       (read (current-buffer)))
                    (end-of-file nil))))
             (setq variables
                   ;; Try and avoid loading `map' since that also loads cl-lib


I guess this could go to emacs-26 (although I'm suddenly unable to build
it today, I get tons of "undefined reference to X" link errors
(including X=main!?)).





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Tue, 13 Nov 2018 03:37:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Noam Postavsky <npostavs <at> gmail.com>
Cc: rgm <at> gnu.org, yamaoka <at> jpl.org, 32352 <at> debbugs.gnu.org, markusffm <at> fn.de
Subject: Re: bug#32352: 27.0.50; build error
Date: Tue, 13 Nov 2018 05:35:50 +0200
> From: Noam Postavsky <npostavs <at> gmail.com>
> Cc: markusffm <at> fn.de,  Eli Zaretskii <eliz <at> gnu.org>,  32352 <at> debbugs.gnu.org,  Katsumi Yamaoka <yamaoka <at> jpl.org>
> Date: Mon, 12 Nov 2018 20:37:09 -0500
> 
> Not entirely sure about bytecomp.el vs elc, but the problem seems to be
> that files.el binds read-circle over too much code, and gv.elc has some
> circular structure in it.  The following patch fixes it:
> 
> --- c/lisp/files.el
> +++ i/lisp/files.el
> @@ -4099,7 +4099,6 @@ dir-locals-read-from-dir
>  Return the new class name, which is a symbol named DIR."
>    (let* ((class-name (intern dir))
>           (files (dir-locals--all-files dir))
> -         (read-circle nil)
>  	 ;; If there was a problem, use the values we could get but
>  	 ;; don't let the cache prevent future reads.
>  	 (latest 0) (success 0)
> @@ -4114,7 +4113,8 @@ dir-locals-read-from-dir
>            (insert-file-contents file)
>            (let ((newvars
>                   (condition-case-unless-debug nil
> -                     (read (current-buffer))
> +                     (let ((read-circle nil))
> +                       (read (current-buffer)))
>                     (end-of-file nil))))
>              (setq variables
>                    ;; Try and avoid loading `map' since that also loads cl-lib

Thanks.

> I guess this could go to emacs-26

I see no need to do this on the release branch, especially since a
pretest of Emacs 26.2 is about to be produced.

> (although I'm suddenly unable to build it today, I get tons of
> "undefined reference to X" link errors (including X=main!?)).

Builds fine for me, FWIW.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Tue, 13 Nov 2018 13:55:02 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: rgm <at> gnu.org, yamaoka <at> jpl.org, 32352 <at> debbugs.gnu.org, markusffm <at> fn.de
Subject: Re: bug#32352: 27.0.50; build error
Date: Tue, 13 Nov 2018 08:54:24 -0500
tags 32352 fixed
close 32352 
quit

Eli Zaretskii <eliz <at> gnu.org> writes:

> I see no need to do this on the release branch, especially since a
> pretest of Emacs 26.2 is about to be produced.

Yeah, I there's an easy workaround and we probably won't be changing
files.el all that often on the release branch anyway.  Pushed to master.

[1: 197bf4eaac]: 2018-11-13 08:25:35 -0500
  Fix build fail on files.el change (Bug#32352)
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=197bf4eaac0ed98549f4343a653ba21aac47c855>

>> (although I'm suddenly unable to build it today, I get tons of
>> "undefined reference to X" link errors (including X=main!?)).

> Builds fine for me, FWIW.

I'm not surprised, it looks like some kind of toolchain failure (maybe I
have some selective hard drive corruption?  It's very strange...).




Added tag(s) fixed. Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Tue, 13 Nov 2018 13:55:02 GMT) Full text and rfc822 format available.

bug closed, send any further explanations to 32352 <at> debbugs.gnu.org and markusffm <at> fn.de Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Tue, 13 Nov 2018 13:55:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Tue, 13 Nov 2018 14:00:02 GMT) Full text and rfc822 format available.

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

From: Noam Postavsky <npostavs <at> gmail.com>
To: Glenn Morris <rgm <at> gnu.org>
Cc: markusffm <at> fn.de, Eli Zaretskii <eliz <at> gnu.org>, 32352 <at> debbugs.gnu.org,
 Katsumi Yamaoka <yamaoka <at> jpl.org>
Subject: Re: bug#32352: 27.0.50; build error
Date: Tue, 13 Nov 2018 08:58:52 -0500
Noam Postavsky <npostavs <at> gmail.com> writes:

>> which dies doing
>>
>> ./src/bootstrap-emacs -batch -f batch-byte-compile lisp/files.el
>>
>> at (alist-get class dir-locals-class-alist) when gv.elc loads.
>> (It's fine if you load bytecomp.el instead of .elc.)
>
> Not entirely sure about bytecomp.el vs elc,

Just for the record, the reason it works with bytecomp.el is that an
uncompiled bytecomp triggers loading of gv earlier, and so avoids the
problem by reading it while read-circle is not bound to nil.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#32352; Package emacs. (Tue, 13 Nov 2018 18:12:02 GMT) Full text and rfc822 format available.

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

From: Glenn Morris <rgm <at> gnu.org>
To: Noam Postavsky <npostavs <at> gmail.com>
Cc: 32352 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, markusffm <at> fn.de,
 Katsumi Yamaoka <yamaoka <at> jpl.org>
Subject: Re: bug#32352: 27.0.50; build error
Date: Tue, 13 Nov 2018 13:10:27 -0500
Noam Postavsky wrote:

> that files.el binds read-circle over too much code, and gv.elc has some
> circular structure in it.  The following patch fixes it:

Fantastic work! :)




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 12 Dec 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 128 days ago.

Previous Next


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