[omniORB] Release 2 of MacOS Port

Stephen Coy stevec@cia.com.au
Mon, 05 Apr 1999 22:24:11 +1000


Hi,

The 2nd release of the MacOS omniORB2 adaption kit is available at

   http://www.cia.com.au/stevec/downloads/mac-omniORB2.sit

                        omniORB2 on MacOS platforms.
                        ============================

MacOS Adaption Kit Release 2
5th April 1999
----------------------------

This file contains information on installing, building, and using omniORB2
on MacOS platforms.

OmniORB has been tested with the following software configuration:

- Operating System  : MacOS 8.5.1
- Architecture      : PowerPC
- Compiler          : Metrowerks CodeWarrior Pro 4 (with Dec 98 updates)


Introduction
============

This file accompanies a MacOS adaption kit for omniORB 2.7.1. As such, it
does not contain the complete set of omniORB source files. These must be
obtained from the omniORB web site at
http://www.uk.research.att.com/omniORB/omniORB.html.

The adaption kit contains:

a) Modified versions of a small number of original omniORB source files;
b) New source files that explicitly support the MacOS;
c) omniidl output files, so that the examples can be built without stuffing
around;
d) A Metrowerks CodeWarrior Pro 4 project file for building the libraries
and sample programs.

MacOS CORBA applications built with omniORB and this kit use native Open
Transport for tcp/ip communications and native MacOS threads.

At this point in time, the adaption kit supports building:

a) omnithread library;
b) orbcore library;
c) dynamic library;
d) lifecycle library;
e) all of the threads examples;
f) the "echo" examples;
g) the "life cycle" examples;
h) the "anyExample" examples;
i) the "dii" example;
j) the "dsi" example;

In time, the remaining omniORB components will be incorporated, with the
ultimate goal being having it added to the main distribution.


Installation
============

The Stuffit archive containing this document and the kit components reflects
the folder hierachy used by the omniORB distribution itself.

Obtain the omniORB2 distribution from the web site above and install it
somewhere on your development machine.

Using the Finder, drag the kit components to the corresponding folders in
the omniORB hierachy.

Building
========

Open the CodeWarrior project file "omniORB2.mcp" and Make the "Debug
Libraries" target. This will build the precompiled headers and debug
versions of the various omniORB libraries.

Open the "examples.mcp" project file and build the various targets.

Using
=====

The primary hassle at the moment is the lack of a Mac based IDL compiler.
Consequently, a Linux or Windows machine is required for handling this task.


About the Examples
==================

All of the original omniORB examples have been modified substantially so
that they can be executed properly under the Mac's cooperative multitasking
OS.

You will find that in most cases, the same pattern was used to do this. Each
sample program's "main" has been changed to "main_thread" and a mechanism
provided for passing command line parameters to it. This allows the real
main program to loop and handle regular MacOS events.

For uniformity, all the samples put up a dialog asking for command line
parameters, even if parameters are not required.

All of the "echo" examples have been tested both Mac<->Mac and Mac<->Linux.

Note that none of the examples call "CloseOpenTransport". This is because
omniORB uses static destructors to close itself down and calling this
function before it's done "pulls the rug out from beneath it". In production
code, "CloseOpenTransport" should be called from a CFM termination function.


Change History
==============

1) Fixed an embarassing integer demotion bug in omni_condition::timedwait.
2) Split the project file into two: omniORB2.mcp and examples.mcp.
3) Added the lifecycle library.
4) Added the dynamic library.
5) Added the lifecycle and dynamic examples.
6) Removed the CloseOpenTransport code from all the examples.
7) No last minute changes this time (the cause of change 1 above)


Other Random Thoughts
=====================

You will find that you won't get far until you've had a look at "The omniORB
2 Users Guide"

There are no current plans to support MacOS 68k platforms. The timers used
in the omnithread library will need changes if anyone is contemplating this.
If anyone does need this, you probably won't have to twist my arm too hard!

I am not convinced that the "producer consumer" thread example is producing
correct results.

The lifecycle examples have not had much testing yet.

The eg3, dsi and dii examples need access to a NameService running on Unix
or Windows. I'll get the MacOS NameService working next.

The example programs are currently deposited in the "bin" directory. This
does not conform to the omniORB convention and I'll probably change it in
the next release or so.


Enjoy!

Steve Coy
Resolve Software

5th April 1999