Archived

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

Ice installation locations

(Am posting here because on Linux, Ice installation directories seem to be not following LSB recommendations, that may be eventually considered as kind of bug).

Still working on creating Slackware package for Ice. Ice 3.3.0 compiles fine with system-wide installed mcpp 2.7.1, but I encountered several other smaller issues:

1. Would it be possible, without changing Ice makefiles, to select languages for which Ice will be compiled? For example, compiling Ice for Java requires JDK and Ant, none of which is installed on Slackware by default. I can skip compiling Ice for Java by editing SUBDIRS and INSTALL_SUBDIRS variables in top-level Makefile, however more preferable would be to be able to compile and install Ice through not changing makefile, but through specifying some kind of make variable when running make instead, something like:
make install LANGUAGES="cpp py"

2. Ice seems to be intended to be installed in dedicated directory, which makes it hard to create a package that will have installed files properly distributed throughout file system according to the LSB (Linux Standard Base (LSB) - The Linux Foundation) file system hierarchy recommendations. Having "bin", "include" and "lib" subdirectories under installation prefix is fine, but I'm wondering is it possible to change where "ICE_LICENSE" and "LICENSE" files, as well as "config" and "slice" sub-directories, and language sub-directories (like "python" or "ruby") under installation directory are stored (also, skipping creating /opt/Ice-3.3 symlink to the installation directory would be nice)? According to LSB, I guess these should be put under "share/Ice" subdirectory of the installation prefix.

Thanks.

Comments

  • asamardzic wrote: »
    2. Ice seems to be intended to be installed in dedicated directory, which makes it hard to create a package that will have installed files properly distributed throughout file system according to the LSB (Linux Standard Base (LSB) - The Linux Foundation) file system hierarchy recommendations. Having "bin", "include" and "lib" subdirectories under installation prefix is fine, but I'm wondering is it possible to change where "ICE_LICENSE" and "LICENSE" files, as well as "config" and "slice" sub-directories, and language sub-directories (like "python" or "ruby") under installation directory are stored (also, skipping creating /opt/Ice-3.3 symlink to the installation directory would be nice)? According to LSB, I guess these should be put under "share/Ice" subdirectory of the installation prefix.

    On Fedora, I just have a big step after compiling where I move $ICE_HOME/bin/*, $ICE_HOME/lib/* to /usr/lib[64], etc ...

    MEF
  • mefoster wrote: »
    On Fedora, I just have a big step after compiling where I move $ICE_HOME/bin/*, $ICE_HOME/lib/* to /usr/lib[64], etc ...

    Sure - these are obvious, and unlikely to make any kind of problem. But, as mentioned in my first post, I'm more concerned about "config", "slice", and language sub-directories - am not still sure how these are exactly used by the rest of the Ice, and would moving them to some random locations in the file-system break anything?
  • asamardzic wrote: »
    Sure - these are obvious, and unlikely to make any kind of problem. But, as mentioned in my first post, I'm more concerned about "config", "slice", and language sub-directories - am not still sure how these are exactly used by the rest of the Ice, and would moving them to some random locations in the file-system break anything?

    I also put the Python and Ruby files into the corresponding site_arch directories (i.e., python stuff goes into /usr/lib/python2.5/site-packages and /usr/lib/ruby/site_ruby/1.8/i386-linux on my Fedora 8 i386 box). The Mono stuff also goes into a Mono-specific directory, although I'm currently trying to figure out whether I've got that part totally correct.

    The other stuff I just put under /usr/share/Ice-${version}; I don't think that's a big problem.

    MEF
  • mefoster wrote: »
    I also put the Python and Ruby files into the corresponding site_arch directories (i.e., python stuff goes into /usr/lib/python2.5/site-packages and /usr/lib/ruby/site_ruby/1.8/i386-linux on my Fedora 8 i386 box). The Mono stuff also goes into a Mono-specific directory, although I'm currently trying to figure out whether I've got that part totally correct.

    The other stuff I just put under /usr/share/Ice-${version}; I don't think that's a big problem.

    Thanks for hints - good to know that it could work this way.

    So, before just doing something alike in my install script, I'd like to ask ZeroC stuff is there any chance that makefiles will be extended to support (seems to me that most of following, especially #3, could be considered as bugs):

    1. Having set of languages selected during "make" phase remembered for "make install" phase? I realized, after writing previous messages, that I could compile desired set of languages through simply enumerating corresponding make targets explicitly, for example "make cpp py". However, for "make install", I'd still have to edit top-level makefile in order to change INSTALL_SUBDIRS (and "make install INSTALL_SUBDIRS='cpp py'" wouldn't work, because there is another INSTALL_SUBDIRS instance in cpp/Makefile)?

    2. Having set of flags (say, CXXFLAGS="-march=i686 -mtune=i686" comes to my mind) passed to the compiler at "make" phase?

    3. Having "slice", as well as "python" and other languages installation sub-directories selectable at "make install" phase? I found that I could set "config" installation sub-directory through "make install install_configdir=$my_install_prefix/share/Ice/config/" (also, it is possible to disable creating /opt/Ice-3.3.0 symlink through "make install create_runpath_symlink=no"), however "make install install_slicedir=$my_install_prefix/share/Ice/slice" doesn't work because "-p" flag is not employed to corresponding "mkdir" command, and also something like "make install install_pythondir=$my_install_prefix/lib/python2.5/site-packages" doesn't work because in corresponding makefile (it's py/config/Make.rules), install_libdir is just hard-coded back to $(prefix)/python, thus completely ignoring install_pythondir.

    Thanks.
  • bernard
    bernard Jupiter, FL
    Hi Aleksandar,

    We don't plan to change 'make install' to support other types of installation layout. I recommend to download our source RPM and see what it does.

    After build/installation, you can move files around as you see fit. Pretty much any file can go anywhere. There are just a few files that "look" for other files in a list of locations, for example Ice.jar finds db.jar in a few locations, IceGridGUI.jar tries to find its online help in a few locations, the demo build system (if you install the demo tarball) looks for the Ice installation in a few locations.

    Cheers,
    Bernard
  • (I guess it may not be best place here for an announcement, but as "Announcements" seems to be used for official ZeroC announcements only, and as it is already discussed here:)

    FWIW, Slackware package for Ice is available at: SlackBuilds.org - Ice. It is actually in the form of the so-called "SlackBuild", that is the script that could be used together with the Ice source archive to build proper Slackware package.

    Regards,
    Alex