Building and Installing the DIMM Software on the DIMM Control computer.

The DIMM software is built and run on the dimm linux box as the user dimmuser.
Current working version is in the trunk subdirectory.


  • EDT API for camera control - installed in /opt/EDTpdv (in subversion in opt directory of the DIMM repository)
  • Ice - installed in /usr/share/Ice-3.2.1
  • qt version 3.3 (uses this to implement the mysql interface as well as the GUI)
  • slalib - installed in /lbt/dimm_devel/slalib - our version has an updated slaDat routine that is correct for leap seconds (although DIMM doesn't use this function);
    built in /home/dimmuser/Software/slalib
  • cfitsio - installed in /usr/lib, include files in /usr/include/fitsio/
  • boost - installed in /usr/local/encap/boost_1_58_0/ - required for the telemetry collection's use of std::tr1
    (this may not be required when we upgrade the DIMM computer to a newer gcc )
  • ImageMagick 6.9.3-4 installed for web image processing (configure with --without-tiff and gmake in /lbt/dimm_devel )
  • telemetry collection library - installed in /local/telemetry/n.n
  • HDF5 - installed in /lbt/telemetry_runtime/hdf5-1.10.0 - this is our version, with updates from CJB that are not part of the HDF5 release, required for telemetry collection

Login to dimm computer and checkout trunk

> ssh -x dimmuser@dimm
> svn co trunk

Build the Software

The build environment is a TCS-type build (using a .build subdirectory) that I am trying to clean up. It has too much overhead for what's necessary for DIMM and it makes it too complicated.

Update the version number in config files and dimmMainControlWidget.ui before doing a build:

    Dimm.Server.Version=2.1   in   ./etc/dimmClient.cfg
    Dimm.Version=2.1          in   ./etc/dimmServer.cfg
    setCaption( tr( "2.1 DIMM for LBT" ) );     in   ./Client/dimmMainControlWidget.ui
    BUILD ?= 2.1     in .build/environment

> cd ~dimmuser/trunk
> gmake            (builds the executables in the home directory)
> gmake install    (which copies to /local/dimm into version directory)

make clean cleans up everything
make -j4 spawns threaded make

Update current to point to the new build

Install into the /local/dimm directory:

> cd /local/dimm
> ln -sfT 2.1 current

Sanity check

Shutdown any DimmServer that is running and restart:
> ~dimmuser/restart/DimmKillServices restart

When the build is checked out, tag it in subversion. The DIMM system has always tagged into the branches directory. So, to tag the current version (trunk) as release 2.2, for example:
> svn copy -m"Tagging DIMM version 2.2 - released Sept-2012"

Notes for setting up HDF5 and Boost to compile telemetry

Telemetry requires std::tr1 and of course HDF5 to compile. The compiler on the CentOS 4.8 dimm machine is s 3.4.6 (evidently std::tr1 comes with compilers 4 and higher). So, I tried to build the latest Boost library for the tr1 implementation. I downloaded boost_1_58_0.tar.bz2

Had to change everywhere in the collection library that it includes tr1/memory to be boost/tr1/memory.hpp

HDF5 has to come from our version, with an update CB has made. As of Aug-2016, CB has a tar file and instructions to build the 1.10.0 HDF5 version - see notes here.

            $ cd /lbt/telemetry_runtime
            $ scp -p .
            $ bunzip2 hdf5-1.10.0.tar.bz2 
            $ tar xvf hdf5-1.10.0
            $ cd hdf5-1.10.0
            $ ./configure --prefix=/lbt/telemetry_runtime/hdf5-1.10.0 \
               --disable-shared  --enable-static-exec --enable-threadsafe \
               --with-pthread --enable-unsupported
            $ make
            $ make install

The older version of telemetry used hdf5-1.9.131, built in /usr/local/encap/hdf5-1.9.131 and installed it into /usr/local/hdf5 From the INSTALL file:
            $ gunzip < hdf5-X.Y.Z.tar.gz | tar xf -
            $ cd hdf5-X.Y.Z
            $ ./configure --prefix=/usr/local/hdf5 --enable-cxx --enable-debug
            $ make

Boost didn't require a build

Several updates to the makefiles to find the right files.


Build the telemetry library in /local/telemetry/x.x

> cd /local/telemetry
> svn export 
> cd 4.0
            for some reason, if you change the BOOST directory in the collection/Makefile to have boost in the path,
            it does not work correctly and cannot find memory.hpp from the #include <memory> statement     ???
            so, I've modified the telemetry source files that include boost includes to have a   "boost/" in the name
                    cd collection
                    find . -name \*.hxx -exec perl -p -i -e 's,tr1/memory,boost/tr1/memory.hpp,' {} \;
                    find . -name \*.cxx -exec perl -p -i -e 's,tr1/memory,boost/tr1/memory.hpp,' {} \;
                    find . -name \*.hxx -exec perl -p -i -e 's,tr1/type_traits,boost/tr1/type_traits.hpp,' {} \;
            also - copy collection/utility/leap_second_manager.hxx (from a previous DIMM version of telemetry) for a problem with the scoping and the compiler on DIMM
> update the collection/Makefile for the correct boost path and to output the full commands (or just copy from the last version)
> delete tests target from the top-level Makefile
> gmake

> change the .build/environment file in your DIMM build directory to use this path for TELEM_DIR
Topic revision: r30 - 19 Dec 2016, KelleeSummers
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback