[OpenAFS-devel] trying to compile for sunx86_58

John Tang Boyland boyland@solomons.cs.uwm.edu
Fri, 14 Sep 2001 22:00:14 -0500


On Frim 14 Sep 2001, Jeffrey Hutzelman wrote:
] On Tue, 11 Sep 2001, John Tang Boyland wrote:
] 
] [...]
] 
] > Next, the code assumes that IPv6 is available even though IPv6 is
] > optional in Solaris 8 (and not installed on the machine I am compiling
] > on):
] > 	/opt/SUNWspro/bin/cc -I. -I..
] >        -I/users/csfac/boyland/src/openafs-1.1.1a/src/config -DAFSDEBUG
] >        -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT
] >        -Dsun4c -DSUN4C_60 -DNFSCLIENT -DSYSACCT -DOLDSCSI -DVDDRV
] >        -D_KERNEL -DSYSV -dn -c ../afs/afs_analyze.c;
] > 	"../afs/afs_analyze.c", line 44: cannot find include file:
] >        <netinet/ip6.h>
] > 	cc: acomp failed for ../afs/afs_analyze.c
] > afs_{cell,conn,server,user,util,volume}.c in the same directory have
] > the same problem, as does src/rx/SOLARIS/rx_knet.c
] 
] Um..  Do you get a different kernel if you don't have IPV6
] installed?

I think so, although the basic kernel is not changed.
When you install Solaris 8, it asks whether to add IPv6 support
and if so, it apparently adds various .h files as well
as several IPv6 kernel modules that are then modload'ed
on system start up.  I'm not completely familiar with
how Solaris 8 works, so I don't know whether my guess is right here.
If so, would that count as a "different kernel" ?

] The files you've mentioned are kernel code, and need to be compiled in the
] same environment as the kernel.  My guess is that you'll need to have the
] IPV6 headers installed in order for the kernel code to compile.  You can't
] just "turn it off"; the inclusion of this header is likely the direct
] result of some kernel data structure needing it.

This is probably no indication of whether it will work, but
it compiles fine if I get rid of the #include <netinet/ip6.h> lines.

The last problem I had mentioned earlier: the fs_freevfs error message
comes from the vfsops structure (in sys/vfsops.h) being different in
different versions of Solaris 8 x86 !!  The older version (where I was
compiling openafs, because it has the Sun cc compiler) doesn't have
the last field in the struct (named vfs_freevfs) although a machine
with a newer version of Solaris 8 x86 *does* have the field (which the
openafs source is expecting)

Should OpenAFS bother about this older version of Solaris 8 x86 ?
(and use some horrible condition like #if sizeof(struct vfsops)==4*9)
or should it not, and let those people who want OpenAFS to edit the
code by hand to remove the extra line ?

In any case, it seems that I have a problem: I can't compile
on an old machine to get executables for a newer one..

John Boyland