Archived

This forum has been archived. Please start a new discussion on GitHub.

Compiling Ice on Debian

First of all, Ice cannot be compiled on Debian 3.0 (the latest
released version), since it lacks recent enough versions of both
Berkeley DB and Xerces-C++. You can find backport repositories for
the DB through www.apt-get.org, but Xerces you'll have to build (or
possibly backport) yourself.

The reason for build failure on development versions (testing and
unstable) is Ice's fault, at least according to my understanding (I am
not involved in Berkeley DB development nor do I use it; this is based
just on reading the sources). The Freeze library uses the txn_*
functions in the DB, which are just wrappers in versions 4.0 and up,
and if the DB is configured with with-uniquename (as Debian does),
these wrapper functions do not exist. I have attached a patch that
replaces the txn_* calls with calls to the wrapped functions for DB
versions 4.0 and up (if the calls work also in 3.3, they should just
be replaced instead of conditionally compiled).

Comments

  • bernard
    bernard Jupiter, FL
    The latest version of Berkeley DB is 4.1.25, and is supported by all versions of Ice.
    But it's true that we haven't tried to build it --with-uniquename (see http://www.sleepycat.com/docs/ref/install/multiple.html); although txn_begin() is not in the 4.1 documentation anymore, it's still there on all supported Ice platforms (http://www.zeroc.com/platforms.html). So it looks like a bug in --with-uniquename :). Thanks for your patch!

    Ice 1.1 also supports Xerces-C++ 2.1.0 and 2.2.0. It's true that it does not support Xerces-C++ 2.3.0 because they were released pretty much at the same time: Xerces-C++ 2.3.0 was released on May 27 and Ice 1.1 was released on May 28. Naturally the next Ice version will support Xerces-C++ 2.3.0.

    Cheers,
    Bernard
  • Sorry, bernard, but I think the bug *really* is in Ice. I know of a total of at least threee distributions where Ice would not compile without the above patch. These distributions are recent versions of RedHat, Debian and Gentoo.

    Therefore I urge you to include the above patch in the next release of Ice. If this problem remains we will probably have to look for an alternative to Ice. This would be sad because Ice has the cleanest interface of all component frameworks around.

    Regards,
    Gregor
  • bernard
    bernard Jupiter, FL
    In the next release of Ice, Freeze will use the Berkeley DB C++ API instead of the C API, which will solve this issue.
    Which recent version of RedHat are you referring to? We test on RedHat 9 and did not encounter this issue.

    Thanks,
    Bernard