Hi Mary-Ellen,
Removing the Ice 3.3. dependency on mcpp would be very difficult; we use mcpp to pre-process Slice files, and it would be quite a bit of work to replace mcpp with another preprocessor.
Fixing Ice / mcpp sounds like a more reasonable solution for the Fedora RPMs.
We build Ice in such a way that when you use Ice binaries (at runtime or for development), you don't see mcpp. The libSlice shared library "links in" various mcpp objects from a special mcpp static-library build. It's "special" because we include a number of patches for mcpp (currently patches for mcpp 2.6.4) and we build the objects in this static library with position-independent code. From the mcpp-devel spec file:
Code:
./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared
It's not clear to me why doing the same for Fedora is so bad (who would be affected? who would care?). Is your main concern the version of mcpp? The patching of mcpp? The use of a "fPIC" static library?
Do you want to link your Ice RPMs with a dynamic library version of an unpatched mcpp 2.7 shared library, or static linking with a patched mcpp 2.7 lib would be fine?
We'd rather use an unpatched version of mcpp, and some of our patches (against 2.6.4) were incorporated into mcpp 2.7.
Unfortunately we discovered and addressed more issues later on, after the mcpp 2.7 release. For example, we replaced a number of freopen calls by fopen calls so that Ice for Python and Ice for Ruby can successfully process Slice files at runtime. It doesn't look like there is a good way to work-around these issues in the Ice code.
Thanks,
Bernard