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--