[omniORB] Problem building OmniORB 2.8.0 on SunOS 5.7 using SUNSwpro 5.0

Richard Mortier Richard.Mortier@cl.cam.ac.uk
Mon, 21 Feb 2000 14:38:40 +0000


Hi,

We've just had one of our SPARC boxes upgraded to Solaris 2.7
(SunOS 5.7) which apparently included an upgrade of the compiler
suite to SUNSwpro 5.0.  I'm now unable to build OmniORB 2.8.0
(downloaded today from the web site) -- I get the following error
(excuse the long lines) when doing "gnumake export" in the ./src
directory:

[snip]

making export in src/lib/omniORB2/orbcore...
gnumake[3]: Entering directory `/usr/dcan/rmm1002/omniorb-2.8.0/src/lib/omniORB2/orbcore'
../../../../bin/sun4_sosV_5.7/omkdepend -D__SUNPRO_CC -D__cplusplus -DUsePthread -D_REENT
RANT -mt -I. -I./.. -I./../.. -DUSE_omniORB_logStream -D_OMNIORB2_LIBRARY -DUnixArchitecture -DCONFIG_DEFAULT_LOCATION="/etc/omniORB.cfg" -I. -I../../../../include -D__sparc__ -D__sunos__ -D__OSVERSION__=5 Namingstub.cc bootstrapstub.cc logIOstream.cc tcpSocketMTfactory.cc tcpSocket.cc relStream.cc domainManager.cc orbservice.cc policy.cc current.cc proxyCall.cc exceptn.cc scavenger.cc strand.cc ropeFactory.cc objectRef.cc objectKey.cc object.cc nbufferedStream.cc mbufferedStream.cc libcWrapper.cc ior.cc initFile.cc giopServer.cc giopClient.cc exception.cc corbaString.cc corbaOrb.cc corbaObject.cc corbaBoa.cc constants.cc bootstrap_i.cc

[snip]

CC -c -O2 -g    -DUsePthread -D_REENTRANT -mt -I. -I./.. -I./../.. -DUSE_omniORB_logStream -D_OMNIORB2_LIBRARY -DUnixArchitecture -DCONFIG_DEFAULT_LOCATION='"/etc/omniORB.cfg"' -I.  -I../../../../include -D__sparc__ -D__sunos__ -D__OSVERSION__=5 -o exception.o exception.cc
"exception.cc", line 147: Error: omniORB::installTransientExceptionHandler(CORBA::Object*, void*, unsigned char(*)(void*,unsigned long,const CORBA::TRANSIENT&)) already had a body defined.
"exception.cc", line 150: Warning (Anachronism): Cannot cast from unsigned char(*)(void*, unsigned long,const CORBA::TRANSIENT&) to void*.
"exception.cc", line 175: Error: omniORB::installCommFailureExceptionHandler(CORBA::Object*, void*, unsigned char(*)(void*,unsigned long,const CORBA::COMM_FAILURE&)) already hada body defined.
"exception.cc", line 178: Warning (Anachronism): Cannot cast from unsigned char(*)(void*, unsigned long,const CORBA::COMM_FAILURE&) to void*.
"exception.cc", line 202: Error: omniORB::installSystemExceptionHandler(CORBA::Object*, void*, unsigned char(*)(void*,unsigned long,const CORBA::SystemException&)) already had a body defined.

This appears to be caused by the following code (again, excuse
the long lines):

"""

void
omniORB::installTransientExceptionHandler(void* cookie,
                               omniORB::transientExceptionHandler_t fn)
{
  omni_globalTransientExcHandler = fn;
  omni_globalTransientExcHandlerCookie = cookie;
}

void
omniORB::installTransientExceptionHandler(CORBA::Object_ptr obj,
                                   void* cookie,
                                   omniORB::transientExceptionHandler_t fn)
{
  if (CORBA::is_nil(obj)) 
    return;
  obj->PR_getobj()->_transientExceptionHandler((void*)fn,cookie);
}

"""

in ./src/lib/omniORB2/orbcore/exception.cc; they look like
perfectly fine C++ to me :-) and these are the only places that
the string installTransientExceptionHandler appears in the source
as far as I can see.

Having trawled the list archive, I see that whilst there appear
to have been problems running software compiled with this
combination of OS/compiler, many people seem to have managed to
build OmniORB with said combination.

So: has anyone else experienced build problems like this, and
does anyone know of a solution? 

Thanks,

--
Richard Mortier                 --------------------
-----------------        ------ Computer Laboratory,
rmm1002@cam.ac.uk  ----- University of Cambridge, UK
mort@ieee.org ---- http://www.cl.cam.ac.uk/~rmm1002/