Yegor Bryukhov ( yegor@markov.math.msu.ru) was able to run Nuprl under GCL on PC(Linux) and Sun station(Solaris). I asked him to describe changes that he made to Nuprl and CLX to be able to do it. Here is his answer.
Pavel
Date: Tue, 05 Nov 1996 15:08:27 -0300 From: "Yegor N. Bryukhov"Organization: Math. Dep. of MSU Hello ! Here it is a fixing list for Nuprl and CLX running on GCL: 1.CLX sources contain a error in font support. Try to run 'hello.l' from CLX demo directory.If you obtained: Error: #(1 12 9 ...) is not of type XLIB::CHAR-INFO-VEC. Fast links are on: do (si::use-fast-links nil) for debugging Error signalled by THE. Broken at THE. Type :H for Help. The your CLX have the same error. To fix it open fonts.l from CLX sources and locate the following fragment: (setq name (xintern 'min-char- (caar field))) (push `(defun ,name (font) (declare (type font font)) (declare (clx-values (or null ,type))) (when (font-name font) (the ,type ,(from `(the int16 (aref (the char-info-vec (font-min-bounds font)) ,n)))))) result) Delete "(the char-info-vec" with appropriate closing parenthesis to obtain: (setq name (xintern 'min-char- (caar field))) (push `(defun ,name (font) (declare (type font font)) (declare (clx-values (or null ,type))) (when (font-name font) (the ,type ,(from `(the int16 (aref (font-min-bounds font) ,n)))))) result) Do the same with definition of "max-char-". You've deleted assertion about a type of some font describing structure. I don't know does it may cause any other bugs but now CLX can work with fonts. 2.Delete nuprl/sys/prl/web.lsp (.lisp .l ...). It defines hash-table with EQUALP as test function but Common Lisp (and GCL as its instance) does not like it. Try to load it and on GCL you'll obtain: Loading nuprl/sys/prl/web.lsp Error: # is an illegal hash-table test function. Fast links are on: do (si::use-fast-links nil) for debugging Error signalled by SETQ. Broken at MAKE-HASH-TABLE. Type :H for Help. And now delete reference on web.lisp from nuprl/sys/defsystem. Find line: (("sys" "prl") . "web") and comment it: ; (("sys" "prl") . "web") 3.Delete reference on c-interface from nuprl/sys/defsystem also cause it absence in Nuprl sources. Change: (("sys" "prl") . "c-interface") to: ; (("sys" "prl") . "c-interface") 4.Now you must delete one more reference on web.lsp from nuprl's sources. Open nuprl/sys/prl/dtree.lsp and locate the following fragment: (when (and dform (or (not (www-annoying-p)) (null (hidden-of-dform-lhs (car (lhss-of-dform dform)))))) (test-dform term dform dform-selection state))) And change it to: (when dform ;;(and dform ;; (or (not (www-annoying-p)) ;; (null (hidden-of-dform-lhs ;; (car (lhss-of-dform dform)))))) (test-dform term dform dform-selection state))) 5.Now you must delete reference on missing files nuprl/lib/theories/standard/ isect_1.thy sequal_1.thy rfunction_1.thy from nuprl/lib/theories/standard/theory-init.ml a.Locate in it the next fragment: set_theory_filenames sdir ["boot" ;"core_1" ;"rules_1" ;"rules_2" ;"ml_1" ;"isect_1" ;"core_2" ;"sqequal_1" ;"rfunction_1" ;"prog_1" ;"well_fnd" ;"int_1" ;"bool_1" ;"union" ;"fun_1" ;"rel_1" ;"subtyping" ;"quot_1" ;"int_2" ;"num_thy_1" ;"list_1"] ;; Delete lines wich reference on missing theories. b.Delete lines: set_theory_chain ["rules_2";"isect_1"];; set_theory_chain ["bool_1";"sqequal_1"];; c.Change: set_theory_ancestors "core_2" ["ml_1";"isect_1"];; to: set_theory_ancestors "core_2" ["ml_1"];; d.Change: set_theory_chain ["core_2";"fun_1";"rfunction_1"];; to: set_theory_chain ["core_2";"fun_1"];; e.Change: set_theory_ancestors "prog_1" ["int_1";"union";"sqequal_1";"rfunction_1";"subtyping";"quot_1"] ;; to: set_theory_ancestors "prog_1" ["int_1";"union";"subtyping";"quot_1"] ;; 6.The last correction needs only for GCL on Sun/Solaris. Try to say: >(xlib::open-display "markov") and you'll obtain: calling 'dl' function sun did not supply..exitting Open nuprl/sys/prl/x-win.lsp and locate: (defun initialize-window-system () (let (display) (unwind-protect (progn (setf display (xlib:open-display (option :host) :display (option :display))) (let* ((font (check-and-open-font display (option :font-name) "fixed")) Change it for call xlib::open-display with one empty string as argument: (defun initialize-window-system () (let (display) (unwind-protect (progn ; (setf display (xlib:open-display (option :host) ; :display (option :display))) (setf display (xlib:open-display "")) (let* ((font (check-and-open-font display (option :font-name) "fixed")) 7.If you have problem such as: Error: Connection failure to X11.0 server alfheim display 0: Client is not authorized to connect to Server Run from shell xhost utility with name of host where you whant to display nuprl's windows as argument. If you run nuprl from Sun you'll can't display its windows on another machines (see previous paragraph). At least I don't know how to do it. Yegor. --------------5C3D734242F--