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

IceRuby 3.2 on OSX

I've been working on upgrading some of my "test" systems to play with the new Ice. Ran into one "gotcha" so far:

I used the prebuilt package of OSX. I next installed IceCS, and that worked great. Next I tried to build IceRuby, but it complained:

caleb-tennis-computer:~/Desktop/IceRuby-3.2b caleb$ make
config/Make.rules:131: /opt/Ice-3.2b/config/Make.rules.Darwin: No such file or directory
config/Make.rules:177: *** You need to define mkshlib in Make.rules.Darwin. Stop.

It seems that the binary package for OSX doesn't come with a Darwin config file that IceRuby would like to have for the install.


  • Note that I simply copied Make.rules.Darwin over from the source package into my Ice's config directory and all worked great.
  • Build system coupling

    The build system used in most Ice packages assume that an existing Ice for C++ is available at ICE_HOME. This is a bit unfortunate for binary packagers. We must deal with these on a case by case basis unless we use a single source package for all of Ice packages.

    If I understood correctly this is on purpose and indeed 3.2b increases such build-time dependencies (IcePHP is now built from a hand-made makefile instead of phpize).

    This is against what I believe it is the usual packaging policy at ZeroC. For example you may see the Slice source files replicated on all Ice packages and the makefile selects the private copy only if Ice for C++ is not available.

    I wonder if ZeroC is willing to accept patches that also reduce coupling in the build system if Ice for C++ is not available.
  • bernard
    bernard Jupiter, FL
    Ice for Python, PHP and Ruby depend on Ice for C++ -- you can't build or run any of them if you don't have Ice for C++. Including the slice files in these source distributions was a mistake which has been corrected for 3.2.0.

  • Right, but I have Ice for C++. I just have the prebuilt binary version.

    So what you're saying is that these utilities require Ice for C++, but the version that has to be built from source?
  • bernard
    bernard Jupiter, FL
    You can build Ice for Ruby (PHP, Python) from source using an Ice for C++ binary distribution (or your own installation).

    However in Ice 3.2b, this did not work with an Ice RPM installation; this bug is now fixed.