[comp.windows.misc] Novice building X on Sun 3/50, SunOS 4.0.3

haynes@ucscc.UCSC.EDU (99700000) (10/05/90)

I just applied all the patches and did a make World in my sun3
directory and got everything made.  Nothing (that I have tried so far)
works; they all report "inappropriate ioctl for device" .  Any hints
from Old Hands where I should start looking?  The one my sidekick made
back in April works fine; but he's now in the depths of Africa, so
can't ask him if this is a familiar problem that he solved.
haynes@ucscc.ucsc.edu
haynes@ucscc.bitnet
..ucbvax!ucscc!haynes

"Any clod can have the facts, but having opinions is an Art."
        Charles McCabe, San Francisco Chronicle

rgrodrig@pb2esac.UUCP (Robert Rodriguez) (10/08/90)

In article <7498@darkstar.ucsc.edu> haynes@ucscc.UCSC.EDU.UUCP (Jim Haynes) writes:
>I just applied all the patches and did a make World in my sun3
>directory and got everything made.  Nothing (that I have tried so far)
>works; they all report "inappropriate ioctl for device" .  Any hints
>from Old Hands where I should start looking?

Jim, I'll have to guess that you are trying to build X11 release 4,
and using the Gnu compiler "gcc".  If I am right, then all you need
to do is a "make clean", then run gcc's fixincludes script, then
another "make World".  Here's an excerpt from "Frequently asked
questions about X":
--

Subject: 30) How do I build X with gcc?

	MIT is now using regularly the Free Software Foundation's
GNU-CC to build the X distribution and uses gcc-built servers to test 
performance increases.

	[These options are gathered from several descriptions of building
X with gcc 1.34, 1.35, and 1.36]:

	Use the options
		-O -fstrength-reduce -fpcc-struct-return

		-traditional may also be necessary if your version of
gcc is sufficiently old.

	Do not use -finline-functions, particularly on the R4 server.

	--->	Make sure to run 'fixincludes' from the gcc distribution 
	--->	before doing anything, or you will get fatal errors such as:
	--->	xterm: Error 15, errno 25: Inappropriate ioctl for device.

HOWEVER, there is a bug in gcc 1.34 and 1.36 (but not in 1.35 or 1.37) which 
miscompiles things of the form (expr == 0 ? exp1 : exp2).  The fix needed in 
X11R4 (and probably X11R3) is to change the definition of XtNewString in 
Intrinsic.h to:
  #define XtNewString(str) \
  ((str) != NULL ? (strcpy(XtMalloc((unsigned)strlen(str) + 1), str)) : NULL)
A work-around is also in fix-2 to X11R4.

--

If you'd like a copy of this complete file, I'll mail you one.

Robert