Error while compiling krb 1.5
Ken Raeburn
raeburn at MIT.EDU
Sat Jul 8 05:31:10 EDT 2006
On Jul 8, 2006, at 02:04, Marcus Watts wrote:
> So let me ask you this:
> /1/ you say GSS mechs might be plugins. Do you have plans or
> intentions for other plugins. Are these only on the kdc machine, or
> the gss libraries, or do you expect to be making significant
> changes to
> other parts of the library environment a vanilla k5 client
> application might see?
Currently we support one other kind in non-KDC programs, for service
location. The krb5 library will look for plugins defining routines
that can be called to find the KDCs of a realm, or the password-
changing service, or krb524, etc. This was desired by some of the
Samba folks. Offhand I'm not sure what else we'll be adding down the
road for non-KDC systems.
> /2/ what systems do you currently support today -- ie, when you
> say "portable" - I'll bet you don't mean ebcdic or 16-bit, but do you
> include aix 4.3? sgi irix? Do you expect everything to run
> everywhere
> (ie, kdc on ms windows, or both static and shared libraries on aix 3.2
> say?) Also, surely you don't expect your contributors to have access
> to exactly the same set of architectures?
We've got a small list of platforms we're doing local testing on at
the moment. Our AIX (4.3.3) machine recently died; the ia64-linux
box we were testing on belongs to another group and is currently off;
our IRIX box (6.5.something-old) has recently been reinstalled and
hasn't had our automated test setup re-established yet, and it's not
running the current OS anyways; our alpha-linux box recently had disk
problems, and I haven't had time to open it up and see about fixing
them or swapping out the disk. So MIT's list of actually-tested
platforms has shrunk a little recently. Our main testing platforms
for the UNIX release are Solaris 9/10 on SPARC, and Red Hat and
Debian GNU/Linux on x86. I don't want to put words in Sam's mouth,
but I personally think it would be good to expand our porting and
testing if it doesn't add much of a workload. (I'm doing a little
outside work on ports to other systems, in my spare time, but it's
not part of my work for MIT.)
We have what might generously be called an automatic testing
framework, that does test builds on various configurations every
night. It's kind of clunky, and collecting results relies on me
having access to each machine and running some commands by hand, so
adding random additional outside systems isn't easy, even if someone
was willing to just run whatever random commands we put in our
configure scripts and makefiles every night.
We don't currently build or test the KDC-side programs on Windows,
and we are already aware of various problems (like DLL export lists)
that will cause difficulties there. Everything else "should" work on
most reasonably modern UNIX/POSIX systems, but we know there will be
porting issues like the specific implementation details for #3
below. On the Mac ... well, we've had some interesting discussions
trying to figure out how to manage things there, and I expect we'll
have some more, but Alexis always manages to beat the KfM release
into decent shape.
> /3/ it seems to me you've already got the complexity when you expect
> initializer routines to work in plugins. c++ constructors aren't
> really part of the C language, so you got mess there. Shared objects
> are inherently hairy - even libtool won't fix that. Somewhere here
> you're going to end up trying to draw a line in the sand. So perhaps
> more importantly, how do you expect people who want to do more to
> cope?
It's not part of C, no, but practically every modern-enough system
supports C++. If it supports destroying static-storage objects when
a library using C++ is unloaded, then the linker or compiler or both
must have support for the functionality; the trick is getting access
to it from C. (On systems with POSIX threads, we generally delay the
initialization and use pthread_once rather than library load-time
initialization, so it's just unloading where we really need this
support.) So far -- and I readily acknowledge that our limited list
of test systems is a problem here -- it appears that every system we
care about does have the support, through compiler options or linker
command-line options or special function names.
It could be argued that if they don't support destroying objects on
unload, then they don't support C++ very well, and everybody wants to
provide C++ support....
Actually, a bit that concerns me more is the ability to build
libraries that can be used with or without linking in POSIX thread
support. On most platforms we can use weak symbol references and
check and see at run time if the functions are there (and if they're
found, whether they actually work or they're broken stub functions
like we've encountered before). Recently it's occurred to me that it
might not work in certain cases involving dlopen, but I haven't had
time to investigate....
Ken
More information about the krbdev
mailing list