|
From: Denis B. <db...@cc...> - 2004-12-21 23:48:07
|
Could a committer add the following, matlisp.asd, to the cvs tree? It's
quite convenient to use.
This is part of Robbie Sedgewick's port of matlisp to SBCL that never
made it into matlisp cvs.
;;; -*- Mode: lisp; Syntax: ansi-common-lisp; Base: 10 -*-
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;;
;;; Copyright (c) 2000 The Regents of the University of California.
;;; All rights reserved.
;;;
;;; Permission is hereby granted, without written agreement and without
;;; license or royalty fees, to use, copy, modify, and distribute this
;;; software and its documentation for any purpose, provided that the
;;; above copyright notice and the following two paragraphs appear in
all
;;; copies of this software.
;;;
;;; IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
PARTY
;;; FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
;;; ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
IF
;;; THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
;;; SUCH DAMAGE.
;;;
;;; THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
;;; PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
;;; CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES,
;;; ENHANCEMENTS, OR MODIFICATIONS.
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;;
;;; $Id: matlisp.lisp,v 1.21 2003/06/01 15:21:59 rtoy Exp $
;;;
;;; $Log: matlisp.lisp,v $
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;(in-package "COMMON-LISP-USER")
(defpackage :matlisp.system
(:use :cl
:asdf))
(in-package :matlisp.system)
(defvar *fortran-compiler* "g77")
(defvar *c-compiler* "gcc")
(defvar *linker* "ld")
;; just warn on warnings. Some of the f2cl generated files cause
problems
;; without this. See
http://article.gmane.org/gmane.lisp.cclan.general/206
(setf asdf:*compile-file-failure-behaviour* :warn)
;;;BEGIN: code to do alien-files
(defclass unix-dso (module)
((dso-name :reader dso-name
:initarg :dso-name)))
(defun unix-name (pathname)
(namestring
(typecase pathname
(logical-pathname (translate-logical-pathname pathname))
(t pathname))))
;; FIXME: this needs to know about alien-modules
(defmethod asdf::input-files ((operation compile-op) (dso unix-dso))
(mapcar #'component-pathname (module-components dso)))
; (mapcar #'(lambda (x)
; (funcall #'asdf::input-files operation x))
; (module-components dso)))
(defmethod output-files ((operation compile-op) (dso unix-dso))
(let ((dir (component-pathname dso)))
(list
(make-pathname :type "so"
:name (dso-name dso) ;(car (last
(pathname-directory dir)))
:directory (pathname-directory dir)
;; (butlast (pathname-directory dir))
:defaults dir))))
(defclass alien-module (module) ())
(defmethod output-files ((op compile-op) (m alien-module))
(mapcan (lambda (c)
(output-files op c))
(module-components m)))
(defmethod perform :after ((operation compile-op) (dso unix-dso))
(let ((dso-name (unix-name (car (output-files operation dso)))))
(unless (or (operation-done-p operation dso)
(zerop
(run-shell-command
"~A ~A -o ~S ~{~S ~} ~A"
*linker*
; (if (sb-ext:posix-getenv
"LDFLAGS")
; (sb-ext:posix-getenv
"LDFLAGS")
#+sunos "-shared -lresolv -lsocket -lnsl"
#+darwin "-bundle -flat_namespace -undefined suppress"
#-(or darwin sunos) "-shared"
; )
dso-name
(mapcar #'unix-name
(mapcan (lambda (c)
(output-files operation c))
(module-components dso)))
#+darwin
; "-L/sw/lib -lg2c -lm"
;;probably need more here...
"-L/sw/lib -lf2c -lSystem -lcc_dynamic
/usr/lib/bundle1.o"
#-darwin
"-L/usr/lib/gcc-lib/i486-linux/3.3.3
-L/usr/lib/gcc-lib/i486-linux/3.3.3/../../.. -lfrtbegin -lg2c -lm
-lgcc_s")))
(error 'operation-error :operation operation :component dso))))
(defmethod output-files ((op compile-op) (c c-source-file))
(list
(make-pathname :type "o" :defaults
(component-pathname c))))
(defmethod perform ((op compile-op) (c c-source-file))
(unless
(= 0 (run-shell-command "~A ~A -o ~S -c ~S"
; (if (sb-ext:posix-getenv "CFLAGS")
; (sb-ext:posix-getenv "CFLAGS")
; "-fPIC")
*c-compiler*
#+darwin "-fPIC -O3"
#-darwin "-fPIC -O3"
(unix-name (car (output-files op c)))
(unix-name (component-pathname c))))
(error 'operation-error :operation op :component c)))
(defmethod perform ((operation load-op) (c c-source-file))
t)
(defmethod perform ((o load-op) (c unix-dso))
(let ((co (make-instance 'compile-op)))
(let ((filename (car (output-files co c))))
#+cmu (ext:load-foreign filename)
#+sbcl (sb-alien:load-shared-object filename))))
(defclass fortran-source-file (source-file) ())
(defmethod asdf:source-file-type ((f fortran-source-file) (s module))
"f")
(defmethod output-files ((op compile-op) (f fortran-source-file))
(list
(make-pathname :type "o" :defaults
(component-pathname f))))
(defmethod perform ((op compile-op) (f fortran-source-file))
(unless
(= 0 (run-shell-command "~A ~A -o ~S -c ~S"
*fortran-compiler*
#+darwin "-fPIC -O3"
#-darwin "-fPIC -O3"
(unix-name (car (output-files op f)))
(unix-name (component-pathname f))))
(error 'operation-error :operation op :component f)))
(defmethod perform ((operation load-op) (f fortran-source-file))
t)
;;;END: code to do alien-files
;; This is for macros.l which has a nonstandard suffix.
(defclass cl-source-file* (cl-source-file) ())
(defmethod asdf:source-file-type ((c cl-source-file*) (s module)) "l")
(defsystem :matlisp
; :depends-on
("lazy-loader"
;
"matlisp-packages")
:components
((:unix-dso "alien code"
:pathname ""
:dso-name "lib/libmatlisp"
:components
((:alien-module "BLAS"
:pathname "LAPACK/BLAS/SRC/"
:components
#.(mapcar (lambda (x)
`(:fortran-source-file ,x))
'("dgemm" "dswap" "dtrmv" "lsame"
"zdotu"
"zhemv" "ztrmv" "dgemv" "dsymv"
"dtrsm"
"zher2" "ztrsm" "dasum" "dger" "dsyr"
"dtrsv" "zdscal" "zher2k" "ztrsv"
"daxpy"
"dsyr2" "dzasum" "xerbla" "zgemm"
"zherk"
"dcabs1" "dnrm2" "dsyr2k" "dznrm2"
"zaxpy"
"zgemv" "zscal" "dcopy" "drot"
"dsyrk"
"idamax" "zcopy" "zgerc" "zswap"
"ddot"
"dscal" "dtrmm" "izamax" "zdotc"
"zgeru"
"ztrmm" "dsymm")))
(:alien-module "LAPACK"
:pathname "LAPACK/SRC/"
:components
#.(mapcar (lambda (x)
`(:fortran-source-file ,x))
'("dlasq5" "dlasq6" "ieeeck" "zdrot"
"dlabad"
"dlarf" "dorglq" "zhetd2" "zlatrs"
"dbdsqr"
"dlabrd" "dlarfb" "dorgql" "zhetrd"
"zpotf2"
"dgebak" "dlacon" "dlarfg" "dorgqr"
"zhseqr"
"zpotrf" "dgebal" "dlacpy" "dlarft"
"dorgtr"
"zbdsqr" "zlabrd" "zrot" "dgebd2"
"dladiv"
"dlarfx" "dorm2r" "zdrscl" "zlacgv"
"zsteqr"
"dgebrd" "dlae2" "dlartg" "dormbr"
"zgebak" "zlacon" "ztrevc" "dgeesx"
"dlaev2"
"dlas2" "dorml2" "zgebal" "zlacpy"
"ztrexc"
"dgeev" "dlaexc" "dlascl" "dormlq"
"zgebd2"
"zladiv" "ztrsen" "dgehd2" "dlag2"
"dlaset"
"dormqr" "zgebrd" "zlahqr" "ztrsyl"
"dgehrd" "dlahqr" "dlasq1" "drscl"
"zgeesx"
"zlahrd" "zung2l" "dgelq2" "dlahrd"
"dlasq2"
"dsteqr" "zgeev" "zlange" "zung2r"
"dgelqf"
"dlaln2" "dlasq3" "dsterf" "zgehd2"
"zlanhe"
"zungbr" "dgelss" "dlasq4" "dsyev"
"zgehrd"
"zlanhs" "zunghr" "dgeqp3" "dlaqp2"
"dlaqps"
"zgeqp3" "zlaqp2" "zlaqps" "dgeqpf"
"dlasr"
"dsytd2" "zgelq2" "zlarf" "zungl2"
"dgeqr2"
"dlasrt" "dsytrd" "zgelqf" "zlarfb"
"zunglq"
"dgeqrf" "dlassq" "dtrevc" "zgelss"
"zlarfg"
"zungql" "dlasv2" "dtrexc" "zgeqpf"
"zlarft"
"zungqr" "dgesvd" "dlamch" "dtrsen"
"zgeqr2"
"zlarfx" "zungtr" "dgetf2" "dlange"
"dlasy2"
"dtrsyl" "zgeqrf" "zlartg" "zunm2r"
"dlanhs"
"dlatrd" "dzsum1" "zlascl" "zunmbr"
"dlanst"
"dorg2l""ilaenv" "zgesvd" "zlaset"
"zunml2"
"dggbal" "dlansy" "dorg2r""izmax1"
"zgetf2"
"zlasr" "zunmlq" "dgghrd" "dlanv2"
"dorgbr"
"zlassq" "zunmqr" "dhgeqz" "dlapy2"
"dorghr"
"dhseqr" "dlapy3" "dorgl2" "zheev"
"zlatrd"
;;Atlas lapack objects
"dgetrf" "zgetrf" "dgetrs" "zgetrs"
"dlaswp"
"zlaswp" "dgesv" "zgesv"
)))
(:alien-module "DFFTPACK"
:pathname "dfftpack/"
:components
#.(mapcar (lambda (x)
`(:fortran-source-file ,x))
'("zfftb" "cfftb1" "zfftf" "cfftf1"
"zffti"
"cffti1" "dcosqb" "cosqb1" "dcosqf"
"cosqf1" "dcosqi" "dcost" "dcosti"
"ezfft1"
"dzfftb" "dzfftf" "dzffti" "passb"
"passb2"
"passb3" "passb4" "passb5" "passf"
"passf2"
"passf3" "passf4" "passf5" "radb2"
"radb3"
"radb4" "radb5" "radbg" "radf2"
"radf3"
"radf4" "radf5" "radfg" "dfftb"
"rfftb1"
"dfftf" "rfftf1" "dffti" "rffti1"
"dsinqb"
"dsinqf" "dsinqi" "dsint" "sint1"
"dsinti")))
(:alien-module "CPOLY"
:pathname "lib-src/cpoly/"
:components
((:fortran-source-file "cpoly")))
(:alien-module "SPECFUN"
:pathname "lib-src/toms715/"
:components
#.(mapcar (lambda (x)
`(:fortran-source-file ,x))
'("anorm" "besei0" "besei1" "besek0"
"besek1" "besi0" "besi1" "besj0"
"besj1"
"besk0" "besk1" "besy0" "besy1"
"calcei"
"calci0" "calci1" "calck0" "calck1"
"calerf"
"caljy0" "caljy1" "daw" "derf"
"derfc"
"derfcx" "dgamma" "dlgama" "dsubn"
"ei"
"eone" "expei" "machar" "psi"
"ribesl"
"rjbesl" "rkbesl" "rybesl")))))
(:file "packages")
#+(or) ;; asdf now does the loading
(:module "alien code"
:pathname "lib/"
:depends-on ("packages")
:components
((:file "lazy-loader")))
(:module "foreign-interface"
:pathname "src/"
:depends-on ("packages" "alien code")
:components ((:file "f77-mangling")
#+:cmu (:file "ffi-cmu")
#+:sbcl (:file "ffi-sbcl")
#+:allegro (:file "ffi-acl")
))
(:module "foreign-functions"
:pathname "src/"
:depends-on ("foreign-interface" "alien code")
:components ((:file "blas")
(:file "lapack")
#-:mswindows (:file "dfftpack")
#+nil (:file "ranlib")))
(:module "matlisp-essentials"
:pathname "src/"
:depends-on ("foreign-interface"
"foreign-functions"
"alien code")
:components ((:file "conditions")
(:file "matrix")
(:file "ref")
(:file "print")
(:file "copy")))
(:module "matlisp-blas-wrappers"
:pathname "src/"
:depends-on ("foreign-interface"
"foreign-functions"
"matlisp-essentials"
"alien code")
:components ((:file "axpy")
(:file "scal")
(:file "swap")
(:file "gemm")))
(:module "matlisp-lapack-wrappers"
:pathname "src/"
:depends-on ("foreign-interface"
"foreign-functions"
"matlisp-essentials"
"alien code")
:components ((:file "gesv")
(:file "geev")
(:file "getrf")
(:file "getrs")))
(:module "matlisp-functions"
:pathname "src/"
:depends-on ("foreign-interface"
"foreign-functions"
"matlisp-essentials"
"matlisp-blas-wrappers"
"matlisp-lapack-wrappers"
"alien code")
:components ((:file "compat")
(:file "help")
(:file "diag")
(:file "special")
(:file "reader")
(:file "trans")
(:file "realimag")
(:file "reshape")
(:file "join")
(:file "svd")
(:file "sum")
(:file "norm")
(:file "dot")
(:file "trace")
(:file "seq")
(:file "vec")
(:file "map")
(:file "mplus")
(:file "mminus")
(:file "mtimes")
(:file "mdivide")
(:file "msqrt")
#-:mswindows (:file "fft")
(:file "geqr")))
(:module "special-functions"
:pathname "src/"
:depends-on ("matlisp-functions" "alien code")
:components
((:file "specfun")))
;; Various add-on packages for matlisp
;; This is just the f2cl macros we need, not all of f2cl.
(:module "f2cl-macros"
:pathname "lib-src/"
; :source-extension "l"
:components
((:cl-source-file* "macros")))
;; This is Quadpack, converted from the Fortran
;; implementation to Lisp via f2cl.
(:module "quadpack-functions"
:pathname ""
; :source-pathname ""
; :binary-pathname ""
:depends-on ("f2cl-macros" "alien code")
:components
((:module "quadpack-interface"
:pathname "src/"
:components
((:file "quadpack")))
(:module "quadpack-lib"
:pathname "lib-src/quadpack/"
;; :package "QUADPACK"
:components
(
#+nil
(:module mach-par
:components
((:file "d1mach")
(:file "i1mach")))
(:module src
;; :depends-on ("mach-par")
:pathname ""
:components
(
;; Support
(:file "dqwgtf")
(:file "dqcheb")
(:file "dqk15w")
(:file "dqwgts")
(:file "dqwgtc")
(:file "dgtsl")
(:file "xerror")
;; Core integration routines
(:file "dqk15")
(:file "dqk31")
(:file "dqk41")
(:file "dqk51")
(:file "dqk61")
(:file "dqk21")
(:file "dqk15i")
(:file "dqelg")
(:file "dqpsrt")
(:file "dqc25s"
:depends-on ("dqcheb" "dqk15w"))
(:file "dqmomo")
(:file "dqc25c"
:depends-on ("dqcheb"
"dqk15w"))
(:file "dqc25f"
:depends-on ("dgtsl"
"dqcheb"
"dqk15w"
"dqwgtf"))
;; Basic integrators
(:file "dqage"
:depends-on ("dqk15"
"dqk31"
"dqk41"
"dqk51"
"dqk61"
"dqk21"
"dqpsrt"))
(:file "dqagie"
:depends-on ("dqelg"
"dqk15i"
"dqpsrt"))
(:file "dqagpe"
:depends-on ("dqelg"
"dqpsrt"
"dqk21"
))
(:file "dqagse"
:depends-on ("dqk21"
"dqelg"
"dqpsrt"))
(:file "dqawfe"
:depends-on ("dqagie"
"dqawoe"
"dqelg"))
(:file "dqawoe"
:depends-on ("dqc25f"
"dqpsrt"
"dqelg"))
(:file "dqawse"
:depends-on ("dqc25s"
"dqmomo"
"dqpsrt"))
(:file "dqawce"
:depends-on ("dqc25c"
"dqpsrt"))
;; Simplified interface routines
(:file "dqng"
:depends-on ("xerror"))
(:file "dqag"
:depends-on ("dqage"
"xerror"))
(:file "dqags"
:depends-on ("dqagse"
"xerror"))
(:file "dqagi"
:depends-on ("dqagie"
"xerror"))
(:file "dqawf"
:depends-on ("dqawfe"
"xerror"))
(:file "dqawo"
:depends-on ("dqawoe"
"xerror"))
(:file "dqaws"
:depends-on ("dqawse"
"xerror"))
(:file "dqawc"
:depends-on ("dqawce"
"xerror"))))))))
(:module "minpack-functions"
:depends-on ("f2cl-macros" "alien code")
:pathname ""
:components
(
#+nil
(:module "quadpack-interface"
:pathname "src/"
:components
((:file "quadpack")))
(:module "minpack-lib"
:pathname "lib-src/minpack/"
;; :package "MINPACK"
:components
((:file "dpmpar")
(:file "enorm")
(:file "fdjac2")
(:file "qrsolv")
(:file "lmpar")
(:file "qrfac")
(:file "lmdif")
(:file "lmdif1")
(:file "lmder")
(:file "lmder1")
(:file "dogleg")
(:file "qform")
(:file "r1mpyq")
(:file "r1updt")
(:file "hybrj" :depends-on ("dogleg" "qform"
"r1mpyq" "r1updt"))
(:file "hybrj1" :depends-on ("hybrj"))
))))
(:module "lib-src"
:components
(#+nil
(:file "d1mach"
:package "MATLISP-LIB")
(:module "cpoly"
:components
((:file "cpoly")
(:file "zeroin")))
#+(or :cmu :sbcl)
(:module "gnuplot"
:components
((:file "gnuplot")))))))
;; needed for lazy-loader
(setf (logical-pathname-translations "matlisp")
(let ((matlisp-pathname
(asdf:component-pathname (asdf:find-system :matlisp))))
`(("**;*.*.*"
,(namestring (merge-pathnames "**/*.*" matlisp-pathname)))
("*.*.*"
,(namestring (merge-pathnames "*.*" matlisp-pathname))))))
--
Denis Bueno
PGP: http://pgp.mit.edu:11371/pks/lookup?search=0xA1B51B4B&op=index
"Politeness, n. The most acceptable hypocrisy." - Ambrose Bierce, The
Devil's Dictionary
|
|
From: Raymond T. <ray...@er...> - 2004-12-22 15:07:01
|
>>>>> "Denis" == Denis Bueno <db...@cc...> writes:
Denis> Could a committer add the following, matlisp.asd, to the cvs tree?
Denis> It's quite convenient to use.
Is there something that this asd file does that mk-defsys doesn't do?
I'm not really keen on maintaining two defsystems for matlisp.
Ray
|
|
From: Robert S. <rd...@me...> - 2004-12-24 01:41:19
|
On Dec 22, 2004, at 9:21 AM, Raymond Toy wrote: >>>>>> "Denis" == Denis Bueno <db...@cc...> writes: > > Denis> Could a committer add the following, matlisp.asd, to the > cvs tree? > Denis> It's quite convenient to use. > > Is there something that this asd file does that mk-defsys doesn't do? > I'm not really keen on maintaining two defsystems for matlisp. Well, the asd file takes care of compiling the fortran sources, while the mk-defsys solution needs a makefile for that. Also, asdf is integrated with slime (I don't think mk-defsys is). On the other hand, I don't think the asd file currently works with windows, although it probably wouldn't be too hard to fix that for someone with a windows box. I think it is mostly a matter of personal preference. --Robbie |
|
From: Raymond T. <ray...@er...> - 2005-01-04 14:53:07
|
>>>>> "Robert" == Robert Sedgewick <rd...@me...> writes:
Robert> 1. (*) text/plain ( ) text/html
Robert> On Dec 22, 2004, at 9:21 AM, Raymond Toy wrote:
>>>>>>> "Denis" == Denis Bueno <db...@cc...> writes:
>>
Denis> Could a committer add the following, matlisp.asd, to the
>> cvs tree?
Denis> It's quite convenient to use.
>>
>> Is there something that this asd file does that mk-defsys doesn't do?
>> I'm not really keen on maintaining two defsystems for matlisp.
Robert> Well, the asd file takes care of compiling the fortran sources, while
Robert> the mk-defsys solution needs a makefile for that. Also, asdf is
Robert> integrated with slime (I don't think mk-defsys is).
For the asd file to work properly, I think it needs to be generated
from configure so that the right options are given to the Fortran
compiler. At one point mk-defsys file could also compile the Fortran
sources, but I don't know if I ever committed the changes or if it
even works anymore.
If one of you wants to maintain the asd file, then I can commmit it.
But you'll have to make it so that it's either created by configure or
you punt and have a makefile build the Fortran sources.
Ray
|
|
From: Robert S. <rd...@me...> - 2005-01-07 04:53:50
|
(sorry for the delay in replying, I've been busy lately) On Jan 4, 2005, at 9:52 AM, Raymond Toy wrote: > > For the asd file to work properly, I think it needs to be generated > from configure so that the right options are given to the Fortran > compiler. yeah, that is true. I just stuck in by hand what works for linux and darwin. I'll try to do this at some point, but I might not get to it for a little while. If someone else wants to do this they are welcome to it. On another issue, do you think that my modified configure.in could be committed to CVS? darwin doesn't like the AC_F77_FUNC autoconf command (autoconf version 2.59). I modified the configure.in not to use it on darwin. Other platforms should not be affected. I appended the diff, and put my version of configure.in up at http://mercury.chem.pitt.edu/~rds/configure.in Once this gets committed, then I think you can add Mac OS X to the list of supported platforms. Thanks, Robbie > At one point mk-defsys file could also compile the Fortran > sources, but I don't know if I ever committed the changes or if it > even works anymore. > > If one of you wants to maintain the asd file, then I can commmit it. > But you'll have to make it so that it's either created by configure or > you punt and have a makefile build the Fortran sources. > > Ray > ================================================================== --- matlisp/configure.in 2004-05-25 20:17:24.000000000 -0400 +++ matlisp.newautoconf/configure.in 2004-06-03 01:01:20.000000000 -0400 @@ -263,7 +263,15 @@ dnl Figure out what the Fortran name mangling is dnl dnl This is only for autoconf 2.49d or later! -AC_F77_FUNC(f77_name) +dnl This breaks on darwin, so just insert the correct value +case "$host" in + *-*-darwin*) + f77_name=f77_name_ + ;; + *) + AC_F77_FUNC(f77_name) + ;; +esac # Setup our environment variables based on the value of f77_name F77_LOWER_CASE=t F77_UNDERSCORE=t |
|
From: Raymond T. <ray...@er...> - 2005-01-07 14:29:27
|
>>>>> "Robert" == Robert Sedgewick <rd...@me...> writes:
Robert> On another issue, do you think that my modified configure.in could be
Robert> committed to CVS? darwin doesn't like the AC_F77_FUNC autoconf command
Robert> (autoconf version 2.59). I modified the configure.in not to use it on
Robert> darwin. Other platforms should not be affected.
Did I forget to do that? Sorry! I ran into some problems with that
as well, but I forgot how I worked around it, and I obviously didn't
check in my fixes.
Ray
|