[comp.windows.x] Need help with R4 Xsun on Sun 3/260 with cgtwo

mike@ai.etl.army.mil (Mike McDonnell) (01/07/90)

I cannot get the Xsun server to run on my Sun 3/260 with a cgtwo graphics
board.  here is what I get when I try to run xinit as root.

First a script with only /dev/cgtwo0 defined.
The ################ signs are before command lines:
================================================================
Script started on Sat Jan  6 15:59:45 1990
################
root:/usr/local/bin/X> ./xinit

Getting interface configuration: Operation not supported on socket
sunOpenFrameBuffer: Inappropriate ioctl for device

Fatal server bug!
no screens found
XIO:  fatal IO error 32 (Broken pipe) on X server "(null)"
      after 0 requests (0 known processed) with 0 events remaining.
      The connection was probably broken by a server shutdown or KillClient.
################
root:/usr/local/bin/X> ./xinit -- -dev /dev/cgtwo0
Getting interface configuration: Operation not supported on socket
sunOpenFrameBuffer: Inappropriate ioctl for device

Fatal server bug!
no screens found
XIO:  fatal IO error 32 (Broken pipe) on X server "(null)"
      after 0 requests (0 known processed) with 0 events remaining.
      The connection was probably broken by a server shutdown or KillClient.
################
root:/usr/local/bin/X> exit
script done on Sat Jan  6 16:00:34 1990
================================================================
now a script with /dev/fb defined.
Note that /dev/fb seems to generate a lot of fruitless ioctl() calls:
================================================================
Script started on Sat Jan  6 16:04:12 1990
################
root:/usr/local/bin/X> xinit

Getting interface configuration: Operation not supported on socket
sunOpenFrameBuffer: Inappropriate ioctl for device
sunOpenFrameBuffer: Inappropriate ioctl for device
sunOpenFrameBuffer: Inappropriate ioctl for device
sunOpenFrameBuffer: Inappropriate ioctl for device
sunOpenFrameBuffer: Inappropriate ioctl for device

Fatal server bug!
no screens found
XIO:  fatal IO error 32 (Broken pipe) on X server "(null)"
      after 0 requests (0 known processed) with 0 events remaining.
      The connection was probably broken by a server shutdown or KillClient.
################
root:/usr/local/bin/X> exit
script done on Sat Jan  6 16:04:21 1990
================================================================

These problems seem to be caused by failure of an FBIOGATTR ioctl() call.
Besides the above problems, I get a similar failure when I try to find out
if my cgtwo0 or fb device is good by making a FBIOGATTR ioctl() call myself
[I used variations of the program 'constype'].  Could there be a
hardware problem?

Some facts:
/dev is mode 777
/dev/cgtwo and /dev/fb are both mode 666
A cgtwo device is found at boot time, so I know it's in there somewhere.
No /dev/bw* devices are defined.
I am not running on top of Sun windows, so macro SUN_WINDOWS is undefined.
The release 3 server worked fine.
I compiled with version 1.36.1 of gcc.
-- 
Mike McDonnell at the U.S. Army Engineer Topographic Laboratories, Bldg. 2592
Fort Belvoir, VA 22060-5546   TEL:(202)355-2716   NET: mike@etl.army.mil

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/07/90)

    I compiled with version 1.36.1 of gcc.

Are you sure you've run "fixincludes" from the gcc distribution?  You
need to in order to get ioctl()s to compile correctly in R4 (this wasn't
the case the way people normally built R3).  If you haven't, you'll have
to fun fixincludes and then rebuild any files with ioctl calls in them.

keith@EXPO.LCS.MIT.EDU (Keith Packard) (01/07/90)

> No /dev/bw* devices are defined.
> I am not running on top of Sun windows, so macro SUN_WINDOWS is undefined.
> The release 3 server worked fine.
> I compiled with version 1.36.1 of gcc.

Every ioctl call in your distribution is not working because the person who
installed gcc neglected to run fixincludes on the machine you're building R4
with.  

Run 'fixincludes' from the gcc distribution and rebuild the X distribution.
You could search the entire X tree for users of ioctl and rebuild those
files, but it is sufficient just to 'make clean; make' from the top level
(if a bit slower).

Keith Packard
MIT X Consortium

casey@gauss.llnl.gov (Casey Leedom) (01/07/90)

| From: keith@EXPO.LCS.MIT.EDU (Keith Packard)
| 
| Every ioctl call in your distribution is not working because the person
| who installed gcc neglected to run fixincludes on the machine you're
| building R4 with.  

  Doing that is annoying.  Some of us strive to avoid modifying the
vendor's stock software.  There are many reasons for this:

    1.	Unbridled hacking obviously leaves one with a totally worthless
	system.  Nothing works in any standard way any more.  That said,
	let's assume we're merely talking about moderate modifications
	to vendor software systems in the following comments.

    2.	Whenever a new version of the vendor software comes out one has
	to hunt up all the special hacks that were made against the last
	version of the vendor software, checking which ones still need to
	be made, etc.

    3.	Often, hacks on the vendor software will have unexpected side-
	effects on other vendor software or even user software.  Quite
	reasonably vendors don't have a lot of sympathy when people
	get themselves into trouble this way.

  All in all, it's obvious that one wants to keep the number of hacks
against vendor stock software to an absolute minimum.  (This, by the way,
is why a lot of people prefer to install X under /usr/local/... rather
than the current defaults.  If you're going to insist on defaults and
leave those defaults accidentally hard coded in various places from time
to time, at least use a more reasonable default like /usr/local/... or
even just test installing it under /usr/local even once ...)

  So my question: why did you set up the server so we can't use
-traditional with gcc??????  I really don't want to screw around with my
vendor software by running gcc's fixincludes script.

Casey

casey@gauss.llnl.gov (Casey Leedom) (01/07/90)

  I've been told that GCC's fixincludes script doesn't edit the vendor
include files.  It creates a shadow symbolic link tree containing a few
edited files.  GCC searches for include files in the shadow tree first.
Thanks to Tad Guy (tadguy@cs.odu.edu) for pointing this out to me.  I
will go and run GCC's fixincludes forthwith.

  Note that I continue to stand by my observations and feeling regarding
modifying vendor stock software.

Casey

csu@alembic.acs.com (Dave Mack) (01/13/90)

In article <9001062237.AA14264@expo.lcs.mit.edu> keith@EXPO.LCS.MIT.EDU (Keith Packard) writes:
>
>> No /dev/bw* devices are defined.
>> I am not running on top of Sun windows, so macro SUN_WINDOWS is undefined.
>> The release 3 server worked fine.
>> I compiled with version 1.36.1 of gcc.
>
>Every ioctl call in your distribution is not working because the person who
>installed gcc neglected to run fixincludes on the machine you're building R4
>with.  
>
>Run 'fixincludes' from the gcc distribution and rebuild the X distribution.
>You could search the entire X tree for users of ioctl and rebuild those
>files, but it is sufficient just to 'make clean; make' from the top level
>(if a bit slower).

This assumption is not necessarily valid. I tried building R4 with
gcc 1.36, and got the ioctl errors. I then ran fixincludes, did 
another make World, and got the same thing. fixincludes had decided
that there was nothing wrong with with my ioctl.h and omitted it
from gcc-includes. Since I'm not sure what a "fixed" ioctl.h should
look like, I punted and rebuilt everything with cc.

You'll be happy to know (probably) that R4 runs beautifully on
a Sun-2/120 under SunOS3.4. The mfb server is noticeably faster,
which is sort of important on a machine of this vintage. I was
particularly pleased that you included the UseInstalled code in
the Imake rules. SHAPES is also very slick.

Bravo, people! Very nice work.

-- 
Dave Mack
even if it did take eleven hours to compile. Each time.