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.
Dependencies
- 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 https://svn.lbto.org/repos/dimm/trunk 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" https://svn.lbto.org/repos/dimm/trunk https://svn.lbto.org/repos/dimm/branches/2.2
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 ksummers@rm580f-1.tucson.lbto.org:/home/cbiddick/LBT-hdf5-1.10.0.bz2 .
$ 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.
Telemetry
Build the telemetry library in
/local/telemetry/x.x
> cd /local/telemetry
> svn export https://svn.lbto.org/repos/telemetry/branches/4.0
> 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