[ome-users] Building client for Beta 3.2 (better to wait for beta4?)

josh.moore at gmx.de josh.moore at gmx.de
Wed Jan 14 09:14:30 GMT 2009


Hi Mario,

Mario Valle writes:
 > To solve the client/server mismatch I tried to recompile OmeroCpp
 > starting from Beta 3.2 svn.
 > 
 > Besides the comments I already have sent to the list, I had to make
 > the following workaround to make compile succeed (but not to have a
 > working client yet...)
 > 
 > 1) I have ice.home=/Users/mvalle/Ice-3.3.0
 > 2) I had to add two symbolic links under Ice-3.3.0
 > 	ln -s /Users/mvalle/Ice-3.3.0/cpp/include /Users/mvalle/Ice-3.3.0/include
 > 	ln -s /Users/mvalle/Ice-3.3.0/cpp/lib     /Users/mvalle/Ice-3.3.0/lib

Ok. Probably not for 4.0, but soon I'll try to add a test against a
self-compiled Ice distribution so we can catch things like
this. Thanks, Mario.

 > 3) I have a PPC Mac, so I had to edit Beta3.2/components/tools/make.xml to remove "-arch 
 > i386" from the following line:
 > 
 >      <condition property="env.MAC_UNIVERSAL" value="-arch ppc" else="">

Understood. Though not documented, setting the environment variable
MAC_UNIVERSAL="-arch ppc" would have worked. Not having a PPC to test,
this is good to know. On Intel, it's possible to compile the universal
binary with both "-arch" statements. Someone smarter can say if this
is possible on PPC.

 > Well, everything worked. But at my client compilation time, there are missing includes 
 > (like RTypesI.h), constructs that do not compile anymore (like 
 > ::omero::rtypes::rlong(100);). Anyway, maybe it is better to wait for beta4 to have more 
 > stable foundations.

The problem isn't as much instability as it is changes to the API. The
method rlong() is an addition to 4.x.

 > But also the very minimal client:
 > int main(int argc, char* argv[]) {omero::client omero(argc, argv);}
 > called as: ./client --omero.host=localhost --omero.user=uuuuuu --omero.pass=zzzzzzzzz
 > crashes with the mysterious message:
 > 
 > terminate called after throwing an instance of 'omero::ClientError'
 >    what():  Ice.ImplicitContext not set to Shared

This is another 3.x/4.x conflict. In 4.x, it is possible to omit the
Ice.Config as long as you have these three properties. All the other
required properties:

  Ice.Default.Router
  omero.client.Endpoints
  Ice.ImplicitContext=Shared

are set in the C++ code itself. To make this work in 3.x, you can
either pass those properties on the command-line, or pass --Ice.Config
to the executable.

 > Any idea? Or do you suggest to wait for beta4?

That's a tough question. I know you had gotten fairly far with
Beta4. What made you switch back to Beta3 in the first place? Is it a
matter of time? If that's the case, switching to Beta3 will certainly
be faster (barring the code changes required) since it works
today. Eventually, you'll have to undo those changes, like converting
new omero::RLong() back to omero::rtypes::rlong.

Waiting for Beta4 is certainly an option. As thing settle down and we
go into testing mode, we'll write to the list so that any early
up-takers can test with us. Using Beta4 until then means more likely
running into bugs. Obviously this helps us, but we understand fully
that that's not you're highest concern.

 > Thanks!
 > 		mario

Gladly,
~Josh.



More information about the ome-users mailing list