gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] xgcl


From: Camm Maguire
Subject: [Gcl-devel] xgcl
Date: 07 Jun 2006 15:47:28 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

I've finally opened a window big enough (I believe) to finalize xgcl,
and thereby get 2.6.8 out the door, with new acl2,maxima, and possible
axiom packages atop.  Lisp certainly does make dependency issues
interesting. 

I'm about the check in Gordon Novak's xgcl-4 files, and a new build
mechanism which will support both ansi and traditional images.

The issue here is in what we decide to ship in Debian packages.  If
xgcl is seemlessly supported in the base images, then all the programs
above will require x windows to run (i.e. the images will link against
-lX11, etc.)  Right now, the gcl package ships 4 images, ansi and
trad, profiling and non.  I am a bit uncomfortable about adding to
this list.  If this is agreed upon, then we either go with X windows
across the board, or have X windows built in by default by a user
compiling from source only, but not in the shipped images.  Perhaps in
the latter case, we can have an xgcl Debian package so that this
wonderful code sees some distribution and use, but keep the build
dependencies for maxima acl2 and axiom on the original non-xgcl.

The other issue akin to this is what to do about pargcl in the shipped
Debian packages -- is everyone comfortable depending upon an mpi
shared library?

Even if these features were supported by autoloadable modules, the
Debian package would still require X11 as a dependency, etc.  And Bob
Boyer has expressed displeasure with autoloading :-).

Thoughts most appreciated.  Please share your opinion ASAP, as my time
window might close soon.

Take care,

Robert Boyer <address@hidden> writes:

> > What are your patches again?
> 
>    /u/boyer/patch-gcl.el
> 
> does a number of trivial things and includes one auxiliary file, namely,
> 
>   /u/boyer/patch-gcl-init_ansi_gcl.lsp.in 
> 
> I send you both files as text below.
> 
> I also have to do one "touch" to get my
> 
>   make install
> 
> to work:
> 
>   touch gcl.script
> 
> Bob
> 
> -------------------------------------------------------------------------------
> 
> Here is  /u/boyer/patch-gcl.el:
> 
> (require 'cl)
> 
> (defun patch-gcl ()
>   (interactive "")
> 
>   ;; Change the gcl-tk makefile to not build static.
> 
>   (find-file "/u/boyer/my-partition/gcl-2.7.0/gcl-tk/makefile")
>   (widen)
>   (goto-char (point-min))
>   (cond ((not (search-forward "LIBS=" nil t))
>          (search-forward "-include ../makedefs")
>          (forward-char 1)
>          (insert "LIBS=   -Wl,-zmuldefs   -lm\n")
>          (save-buffer 0)))
> 
>   ;; Change the main makefile to call lisp::reset-sys-paths.
> 
>   (find-file "/u/boyer/my-partition/gcl-2.7.0/makefile")
>   (widen)
>   (goto-char (point-min))
>   (replace-string "'(reset-sys-paths" "'(lisp::reset-sys-paths")
>   (save-buffer 0)
> 
>   ;; Change the elisp makefile to stop an attempt to create tmp files in root.
> 
>   (find-file "/u/boyer/my-partition/gcl-2.7.0/elisp/makefile")
>   (widen)
>   (goto-char (point-min))
>   (cond ((search-forward "if [ " nil t)
>          (beginning-of-line 1)
>          (kill-region (point) (point-max))
>          (save-buffer 0)))
> 
>   ;; Load the patches in /u/boyer/patch-gcl-init_ansi_gcl.lsp.in.
> 
>   (find-file "/u/boyer/my-partition/gcl-2.7.0/unixport/init_ansi_gcl.lsp.in")
>   (widen)
>   (goto-char (point-min))
>   (cond ((not (search-forward "Boyer" nil t))
>          (goto-char (point-max))
>          (insert-file "/u/boyer/patch-gcl-init_ansi_gcl.lsp.in")
>          (save-buffer 0)))
> 
>   ;;  Fix the info file in makedefs
> 
>   (find-file "/u/boyer/my-partition/gcl-2.7.0/makedefs")
>   (widen)
>   (goto-char (point-min))
>   (replace-string "INFO_DIR=/usr/share/info/"
>                   
> "INFO_DIR=/u/boyer/my-partition/gcl.big.static.ansi2/infodir")
>   (save-buffer 0)
> 
> )
> 
> 
> -------------------------------------------------------------------------------
> 
> Here is /u/boyer/patch-gcl-init_ansi_gcl.lsp.in:
> 
> ;; Hacks for GCL 2.7.0 by Boyer.  -*-Lisp-*-
> 
> ;; The following text is appended to unixport/init_ansi_gcl.lisp.in when we
> ;; get a fresh copy of cvs head.  We prefer to put all our patches to gcl
> ;; here, but the other patches in /u/boyer/patch-gcl.lisp are not as simple
> ;; as those below.
> 
> (in-package :cl)
> 
> ; The 978 external symbols in the package COMMON-LISP:
> 
> (let ((a '(&allow-other-keys &aux &body &environment &key &optional &rest 
> &whole * **
>      *** *break-on-signals* *compile-file-pathname* *compile-file-truename*
>      *compile-print* *compile-verbose* *debug-io* *debugger-hook*
>      *default-pathname-defaults* *error-output* *features* *gensym-counter*
>      *load-pathname* *load-print* *load-truename* *load-verbose*
>      *macroexpand-hook* *modules* *package* *print-array* *print-base*
>      *print-case* *print-circle* *print-escape* *print-gensym* *print-length*
>      *print-level* *print-lines* *print-miser-width* *print-pprint-dispatch*
>      *print-pretty* *print-radix* *print-readably* *print-right-margin* 
> *query-io*
>      *random-state* *read-base* *read-default-float-format* *read-eval*
>      *read-suppress* *readtable* *standard-input* *standard-output* 
> *terminal-io*
>      *trace-output* + ++ +++ - / // /// /= 1+ 1- < <= = > >= abort abs acons 
> acos
>      acosh add-method adjoin adjust-array adjustable-array-p allocate-instance
>      alpha-char-p alphanumericp and append apply apropos apropos-list aref
>      arithmetic-error arithmetic-error-operands arithmetic-error-operation 
> array
>      array-dimension array-dimension-limit array-dimensions array-displacement
>      array-element-type array-has-fill-pointer-p array-in-bounds-p array-rank
>      array-rank-limit array-row-major-index array-total-size
>      array-total-size-limit arrayp ash asin asinh assert assoc assoc-if
>      assoc-if-not atan atanh atom base-char base-string bignum bit bit-and
>      bit-andc1 bit-andc2 bit-eqv bit-ior bit-nand bit-nor bit-not bit-orc1
>      bit-orc2 bit-vector bit-vector-p bit-xor block boole boole-1 boole-2
>      boole-and boole-andc1 boole-andc2 boole-c1 boole-c2 boole-clr boole-eqv
>      boole-ior boole-nand boole-nor boole-orc1 boole-orc2 boole-set boole-xor
>      boolean both-case-p boundp break broadcast-stream 
> broadcast-stream-streams
>      built-in-class butlast byte byte-position byte-size caaaar caaadr caaar
>      caadar caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr cadr
>      call-arguments-limit call-method call-next-method car case catch ccase 
> cdaaar
>      cdaadr cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr 
> cdddr
>      cddr cdr ceiling cell-error cell-error-name cerror change-class char
>      char-code char-code-limit char-downcase char-equal char-greaterp char-int
>      char-lessp char-name char-not-equal char-not-greaterp char-not-lessp
>      char-upcase char/= char< char<= char= char> char>= character characterp
>      check-type cis class class-name class-of clear-input clear-output close
>      clrhash code-char coerce compilation-speed compile compile-file
>      compile-file-pathname compiled-function compiled-function-p 
> compiler-macro
>      compiler-macro-function complement complex complexp
>      compute-applicable-methods compute-restarts concatenate 
> concatenated-stream
>      concatenated-stream-streams cond condition conjugate cons consp 
> constantly
>      constantp continue control-error copy-alist copy-list 
> copy-pprint-dispatch
>      copy-readtable copy-seq copy-structure copy-symbol copy-tree cos cosh 
> count
>      count-if count-if-not ctypecase debug decf declaim declaration declare
>      decode-float decode-universal-time defclass defconstant defgeneric
>      define-compiler-macro define-condition define-method-combination
>      define-modify-macro define-setf-expander define-symbol-macro defmacro
>      defmethod defpackage defparameter defsetf defstruct deftype defun defvar
>      delete delete-duplicates delete-file delete-if delete-if-not 
> delete-package
>      denominator deposit-field describe describe-object destructuring-bind
>      digit-char digit-char-p directory directory-namestring disassemble
>      division-by-zero do do* do-all-symbols do-external-symbols do-symbols
>      documentation dolist dotimes double-float double-float-epsilon
>      double-float-negative-epsilon dpb dribble dynamic-extent ecase 
> echo-stream
>      echo-stream-input-stream echo-stream-output-stream ed eighth elt
>      encode-universal-time end-of-file endp enough-namestring
>      ensure-directories-exist ensure-generic-function eq eql equal equalp 
> error
>      etypecase eval eval-when evenp every exp export expt extended-char 
> fboundp
>      fceiling fdefinition ffloor fifth file-author file-error 
> file-error-pathname
>      file-length file-namestring file-position file-stream file-string-length
>      file-write-date fill fill-pointer find find-all-symbols find-class 
> find-if
>      find-if-not find-method find-package find-restart find-symbol 
> finish-output
>      first fixnum flet float float-digits float-precision float-radix 
> float-sign
>      floating-point-inexact floating-point-invalid-operation
>      floating-point-overflow floating-point-underflow floatp floor fmakunbound
>      force-output format formatter fourth fresh-line fround ftruncate ftype
>      funcall function function-keywords function-lambda-expression functionp 
> gcd
>      generic-function gensym gentemp get get-decoded-time
>      get-dispatch-macro-character get-internal-real-time get-internal-run-time
>      get-macro-character get-output-stream-string get-properties
>      get-setf-expansion get-universal-time getf gethash go graphic-char-p
>      handler-bind handler-case hash-table hash-table-count hash-table-p
>      hash-table-rehash-size hash-table-rehash-threshold hash-table-size
>      hash-table-test host-namestring identity if ignorable ignore 
> ignore-errors
>      imagpart import in-package incf initialize-instance inline input-stream-p
>      inspect integer integer-decode-float integer-length integerp
>      interactive-stream-p intern internal-time-units-per-second intersection
>      invalid-method-error invoke-debugger invoke-restart
>      invoke-restart-interactively isqrt keyword keywordp labels lambda
>      lambda-list-keywords lambda-parameters-limit last lcm ldb ldb-test ldiff
>      least-negative-double-float least-negative-long-float
>      least-negative-normalized-double-float 
> least-negative-normalized-long-float
>      least-negative-normalized-short-float 
> least-negative-normalized-single-float
>      least-negative-short-float least-negative-single-float
>      least-positive-double-float least-positive-long-float
>      least-positive-normalized-double-float 
> least-positive-normalized-long-float
>      least-positive-normalized-short-float 
> least-positive-normalized-single-float
>      least-positive-short-float least-positive-single-float length let let*
>      lisp-implementation-type lisp-implementation-version list list*
>      list-all-packages list-length listen listp load
>      load-logical-pathname-translations load-time-value locally log logand
>      logandc1 logandc2 logbitp logcount logeqv logical-pathname
>      logical-pathname-translations logior lognand lognor lognot logorc1 
> logorc2
>      logtest logxor long-float long-float-epsilon long-float-negative-epsilon
>      long-site-name loop loop-finish lower-case-p machine-instance 
> machine-type
>      machine-version macro-function macroexpand macroexpand-1 macrolet 
> make-array
>      make-broadcast-stream make-concatenated-stream make-condition
>      make-dispatch-macro-character make-echo-stream make-hash-table 
> make-instance
>      make-instances-obsolete make-list make-load-form 
> make-load-form-saving-slots
>      make-method make-package make-pathname make-random-state make-sequence
>      make-string make-string-input-stream make-string-output-stream 
> make-symbol
>      make-synonym-stream make-two-way-stream makunbound map map-into mapc 
> mapcan
>      mapcar mapcon maphash mapl maplist mask-field max member member-if
>      member-if-not merge merge-pathnames method method-combination
>      method-combination-error method-qualifiers min minusp mismatch mod
>      most-negative-double-float most-negative-fixnum most-negative-long-float
>      most-negative-short-float most-negative-single-float
>      most-positive-double-float most-positive-fixnum most-positive-long-float
>      most-positive-short-float most-positive-single-float muffle-warning
>      multiple-value-bind multiple-value-call multiple-value-list
>      multiple-value-prog1 multiple-value-setq multiple-values-limit name-char
>      namestring nbutlast nconc next-method-p nil nintersection ninth
>      no-applicable-method no-next-method not notany notevery notinline nreconc
>      nreverse nset-difference nset-exclusive-or nstring-capitalize
>      nstring-downcase nstring-upcase nsublis nsubst nsubst-if nsubst-if-not
>      nsubstitute nsubstitute-if nsubstitute-if-not nth nth-value nthcdr null
>      number numberp numerator nunion oddp open open-stream-p optimize or 
> otherwise
>      output-stream-p package package-error package-error-package package-name
>      package-nicknames package-shadowing-symbols package-use-list
>      package-used-by-list packagep pairlis parse-error parse-integer
>      parse-namestring pathname pathname-device pathname-directory 
> pathname-host
>      pathname-match-p pathname-name pathname-type pathname-version pathnamep
>      peek-char phase pi plusp pop position position-if position-if-not pprint
>      pprint-dispatch pprint-exit-if-list-exhausted pprint-fill pprint-indent
>      pprint-linear pprint-logical-block pprint-newline pprint-pop pprint-tab
>      pprint-tabular prin1 prin1-to-string princ princ-to-string print
>      print-not-readable print-not-readable-object print-object
>      print-unreadable-object probe-file proclaim prog prog* prog1 prog2 progn
>      program-error progv provide psetf psetq push pushnew quote random
>      random-state random-state-p rassoc rassoc-if rassoc-if-not ratio rational
>      rationalize rationalp read read-byte read-char read-char-no-hang
>      read-delimited-list read-from-string read-line read-preserving-whitespace
>      read-sequence reader-error readtable readtable-case readtablep real realp
>      realpart reduce reinitialize-instance rem remf remhash remove
>      remove-duplicates remove-if remove-if-not remove-method remprop 
> rename-file
>      rename-package replace require rest restart restart-bind restart-case
>      restart-name return return-from revappend reverse room rotatef round
>      row-major-aref rplaca rplacd safety satisfies sbit scale-float schar 
> search
>      second sequence serious-condition set set-difference
>      set-dispatch-macro-character set-exclusive-or set-macro-character
>      set-pprint-dispatch set-syntax-from-char setf setq seventh shadow
>      shadowing-import shared-initialize shiftf short-float short-float-epsilon
>      short-float-negative-epsilon short-site-name signal signed-byte signum
>      simple-array simple-base-string simple-bit-vector simple-bit-vector-p
>      simple-condition simple-condition-format-arguments
>      simple-condition-format-control simple-error simple-string 
> simple-string-p
>      simple-type-error simple-vector simple-vector-p simple-warning sin
>      single-float single-float-epsilon single-float-negative-epsilon sinh 
> sixth
>      sleep slot-boundp slot-exists-p slot-makunbound slot-missing slot-unbound
>      slot-value software-type software-version some sort space special
>      special-operator-p speed sqrt stable-sort standard standard-char
>      standard-char-p standard-class standard-generic-function standard-method
>      standard-object step storage-condition store-value stream 
> stream-element-type
>      stream-error stream-error-stream stream-external-format streamp string
>      string-capitalize string-downcase string-equal string-greaterp
>      string-left-trim string-lessp string-not-equal string-not-greaterp
>      string-not-lessp string-right-trim string-stream string-trim 
> string-upcase
>      string/= string< string<= string= string> string>= stringp structure
>      structure-class structure-object style-warning sublis subseq subsetp 
> subst
>      subst-if subst-if-not substitute substitute-if substitute-if-not subtypep
>      svref sxhash symbol symbol-function symbol-macrolet symbol-name
>      symbol-package symbol-plist symbol-value symbolp synonym-stream
>      synonym-stream-symbol t tagbody tailp tan tanh tenth terpri the third 
> throw
>      time trace translate-logical-pathname translate-pathname tree-equal 
> truename
>      truncate two-way-stream two-way-stream-input-stream
>      two-way-stream-output-stream type type-error type-error-datum
>      type-error-expected-type type-of typecase typep unbound-slot
>      unbound-slot-instance unbound-variable undefined-function unexport 
> unintern
>      union unless unread-char unsigned-byte untrace unuse-package 
> unwind-protect
>      update-instance-for-different-class update-instance-for-redefined-class
>      upgraded-array-element-type upgraded-complex-part-type upper-case-p
>      use-package use-value user-homedir-pathname values values-list variable
>      vector vector-pop vector-push vector-push-extend vectorp warn warning 
> when
>      wild-pathname-p with-accessors with-compilation-unit 
> with-condition-restarts
>      with-hash-table-iterator with-input-from-string with-open-file
>      with-open-stream with-output-to-string with-package-iterator
>      with-simple-restart with-slots with-standard-io-syntax write write-byte
>      write-char write-line write-sequence write-string write-to-string 
> y-or-n-p
>      yes-or-no-p zerop)))
>   (make-package "Z")
>   (import a "Z")
>   (export a "Z")
>   (delete-package "COMMON-LISP")
>   (rename-package "Z" "COMMON-LISP" '("CL"))
>   (delete-package "COMMON-LISP-USER")
>   (make-package "COMMON-LISP-USER"
>                 :use '("CL")
>                 :nicknames '("CL-USER" "USER"))
>   (loop for x in '(lisp::bye
>                    lisp::by
>                    lisp::help
>                    lisp::help*
>                    lisp::gbc
>                    ; and whatever the implementor wants
>                    )
>         do
>         (import x "CL-USER"))
>   (setq *package* (find-package "CL-USER")))
> 
> (in-package :cl-user)
> 
> ;;  Stops the error caused by:
> ;;    (setf (documentation 'foo 'function) "foo fun doc").
> (defmethod (setf documentation) (new-value (object symbol) &optional doc-type)
>             (assert (symbolp doc-type))
>             (assert (or (stringp new-value) (null new-value)))
>             (let ((prop (intern (concatenate 'string (symbol-name doc-type)
>                                              "-DOCUMENTATION")
>                                 :system)))
>               (cond ((null new-value) (remprop object prop))
>                     (t (setf (get object prop) new-value)))))
> 
> ;; Overcomes a static image problem -- references to ~ break the GCL 2.7.0
> ;; static image because they load a dynamic image even though the image is
> ;; static.
> (defun user-homedir-pathname (&optional host)
>   (declare (ignore host))
>   (pathname (concatenate 'string (si::getenv "HOME") "/")))
> 
> ;; Stops one from making the hole bigger than si::*max-hole-size* pages.
> (in-package :si)
> (or (get 'set-hole-size 'old-def)
>     (setf (get 'set-hole-size 'old-def)
>           (symbol-function 'set-hole-size)))
> (defparameter *max-hole-size* 10000)
> (defun set-hole-size (x)
>   (funcall (get 'set-hole-size 'old-def)
>            (min *max-hole-size* x)))
> 
> ;;  End of appendage.
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]