Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Installation

HippoDraw is a cross platform library and application.

The components of the distribution are

These instructions will help you install HippoDraw on all supported platforms.

Microsoft Windows

For Microsoft Windows, pre-built binaries are available in the form of a Microsoft installer file (.msi ) located here. It includes support for ROOT, C++ version of Minuit, and FITS files. To use it, one needs Microsoft's .NET Framework 1.1. Download and install the Microsoft .NET Framework 1.1 Redistributable from Microsoft web site if you don't already have it installed.

To install HippoDraw, just double click on the .msi file and follow the instructions. The installer file includes everything you need except Python. To use HippoDraw with Python, pre-built binaries for Python are available from the Python download page. You'll need to add HippoDraw to your Python path. Right click on MyComputer icon and go to

MyComputer->Properties->Advanced->Environmental Variables.

Create a new variable, PYTHONPATH, if you don't already have one, and add HippoDraw to it, for example, C:\Program Files\HippoDraw

Building HippoDraw from source under Windows requires a Trolltech Qt commercial license, Microsoft VC++ 7.1 project files and instructions on how to use them are located in the vs.net2003 directory.

Mac OS X

On a Mac OS x system, HippoDraw can be built from source code like other Unix like systems. However, there are a few steps and precautions one should take and they are noted in the Unix System. section below.

Alternatively, one can find pre-built installer file at the Apple download site or versiontracker. These download sites are not maintained by the HippoDraw developers, but seems to stay up to date.

Unix System.

These are instructions for building the HippoDraw application and Python extension module from source on UNIX-like system. This includes UNIX systems such as Sun's Solaris, Linux systems, and Mac OS X.

In most cases, just doing the standard configure, make, and make install dance should work. The configure script will find the required software if they are installed in their default locations (usually /usr/local). If it doesn't, read the Required and Optional Software. section below for what required software might be missing or located on usual places (especially for Mac OS X).

Required and Optional Software.

Building HippoDraw from source requires a C++ compiler, the Qt library, the Boost.Python library, and Python. On a modern Linux distributions, only Boost.Python might be missing.

C++ compiler

HippoDraw requires a fairly standards complying C++ compiler and library. However, some C preprocessor macros have been defined to enable workaround code for older compilers. These macros all have `_DEFECT' in their name. The configure script (see below) will define these macros as needed. There are also a few #ifdef in the source code for specific operating systems such as Windows and Mac OS X.

The following compilers have been used :

Trolltech's Qt

The current release requires Qt 3.1.0 or later. The current release of Qt is 3.3.4. Modern Linux distributions have a compatible version of the Qt librariesinstalled. However, the header files might be missing unless the "developer" package of Qt was also installed. On some systems, this is part of the KDE developer package.

If an adequate version of Qt is not already installed on your system, it must be built and installed from source. See Installing Trolltech's Qt section below.

This release was developed with Qt 3.3.4.

Python

HippoDraw requires Python 2.3 or later for full functionality of its Python extension module. The reason for this requirement is to allow the user to write classes in Python that are derived from HippoDraw C++ base class. If earlier version of Python is found, these features will be disabled in the build. Only two classes are involved, the ObserverWrap and FunctionWrap.

Python can be obtained from http://www.python.org. This release was tested with Python 2.2, 2.3, and 2.4.

Boost.Python

HippoDraw uses Boost.Python to build its Python extension module. Boost.Python version 1.32.0 or later is required for full functionality of HippoDraw's Python extension modules.. Recent versions of of Boost is much easier to build install than earlier versions.

Only one class, FunctionWrap, requires this recent version of Boost, all others could use Boost-1.29.0 or later. See Boost path and library. for configuring HippoDraw for older versions of Boost.

See the Installing Boost section for tips on installing Boost.

Minuit (optional)

One can use the new C++ version of Minuit located at

http://seal.web.cern.ch/seal/snapshot/work-packages/mathlibs/minuit/index.html

This release was built against Minuit-1.5.2. Versions earlier than 1.4.0 are incompatible. This version does not require a Fortran compiler, versions earlier than 1.4.0 do.

Do not get confused by the libMinuit.so shared library that comes with the ROOT distribution, it is not the same thing. That library is an f2c'd version of the original Fortran. HippoDraw uses the grounds up re-write of Minuit in C++.

FITS (optional)

HippoDraw's built-in support for reading a FITS file is implemented by using the CFITSIO library. FITS binary and ASCII tables are supported as well as images.

Python numerical arrays (optional)

Numarray and Numeric provide numerical array manipulation and computational capabilities similar to those found in IDL, Matlab, or Octave. When sing numerical arrays, it is possible to write many efficient numerical data processing applications directly in Python. Thus it is highly recommended to use HippoDraw with one of the numerical array modules.

HippoDraw can return a numerical array to Python from any of the type of DataSource objects that are supported. One can also import data to a HippoDraw DataSource from a numerical array. This requires that at least one of numerical array Python modules has been installed and HippoDraw configured to build with to use it.

PyFITS (optional)

PyFITS provides an interface to FITS formated files for the Python. HippoDraw also supports reading FITS files from Python but the support is not as complete as PyFits. It requires installation of numarray. It is needed if you want to read FITS files with a Python script. It is not needed for HippoDraw's built-in FITS support.

ROOT (optional)

One common use of ROOT files, is store a table of data as TBranch objects each with a single TLeaf. Files of this type can be imported by HippoDraw as a RootNTuple. HippoDraw has been tested with versions 3.10/02 and 4.02/00 on both Linux and Windows.

SIP (optional)

You only need to build the SIP version of HippoDraw's Python module if you want to use HippoDraw with PyQt. You need to set the PyQt version number in the sip/Makefile. See the INSTALL file in the sip subdirectory for instructions.

OpenGL (optional)

Guy Barrand <barrand@lal.in2p3.fr> has contributed code to use OpenGL for graphics with HippoDraw. See documentation in the OpenGL subdirectory. Although this work is not complete, one can configure HippoDraw to build a test program with it. The options is `--enable-openglbuild'.

Configuring HippoDraw

HippoDraw needs to be configured before building. This is done by running the configure script in the build directory. If all the required software was installed in their default places (usually /usr/local) then no configuration options should be needed.

Autogen

If you obtained the source code from the CVS repository, you need to first create the configure script. Due to security restrictions at the SLAC, CVS access is only allowed to users with valid UNIX accounts at SLAC. If you obtained the source code from a gzipped tar file, the configure script has already been built and you can skip this step.

In source directory, just type ...

> ./autogen

This will create the Makefile.in in each subdirectory and the configure script that will be used in the next step. It will also create symbolic links in the config directory for scripts required by autoconf, automake, and libtool.

Configuring

The configure script allows one to specify where the various required and option software libraries are located. If they are installed in their default locations, then configure will find them automatically. Thus, if one runs configure like this...

> ../hippodraw/configure

one should be configured with with the required external packages and any optional packages that were found to be installed. If this doesn't work, then read on in this section for configuring with external packages installed in non-standard places and see section If Configure Fails. for possible causes of the failure. The latter section also contains some special problems with Mac OS X.

It is recommended that you build in a separate directory from the source code. For example, if the name of the directory where the hippodraw source code is located is hippodraw/, then from the directory above it you might do

> mkdir hippodraw-BUILD 
> cd hippodraw-BUILD
> ../hippodraw/configure --with-Qt-dir=/usr/local/qt --with-Qt-lib=qt-mt

This will force using Qt in /usr/local and its multi threaded library. The configure script will test the Qt installation and fail if faulty or incorrect path.

The configure script setups the build for the version of Python in your path. If this is not the version you want to build with, set your PATH environmental variable before running configure.

On Mac OS X, there are some special steps to be taken before running configure. See Old version of libtool on Mac OS X and Boost includes not found on Mac OS X below.

The configure script has many other options, which you can see by typing...

> ./configure --help

Most options are the same as other packages that use the GNU auto-tools suite. Some specific to HippoDraw are

Qt path and library

--with-Qt-dir= sets the path to the root of the Qt tree. The default if not given, is to try /usr/local/qt and if that fails, /usr/lib/qt-3.1.

--with-Qt-lib= sets the name of the Qt shared library. The default is qt-mt corresponding to libqt-mt.so which has multi-threading enabled.

Normally, under the directory where Qt has been installed, one finds Qt's bin, include, and lib directories. If this is not the case, then you need to use the remaining Qt related options to set the appropriate paths.

To try out the Qt 4 build, issue the following...

./hippodraw/configure --with-Qt-include-dir=/usr/local/qt-x11-opensource-4.0.0-b1/include/Qt --with-Qt-lib-dir=/usr/local/qt-x11-opensource-4.0.0-b1/lib --with-Qt-bin-dir=/usr/local/qt-x11-opensource-4.0.0-b1/bin --with-Qt-lib=QtGui

Boost path and library.

--with-boost-version= sets the version or boost installation. Must be 1_32 or later. The default is 1_32.

--with-boost-root= sets the path to the root of the boost installation. The default is /usr/local. This option only works if under this directory there is a subdirectory include/Boost-1_32/ subdirectory and a lib subdirectory.

--with-boost-include= sets the path to directory that contains a subdirectory boost/ which contains the header files. The default is /usr/local/include/boost-1_32/.

--with-boost-lib= sets the path to the boost libraries. The default is /usr/local/lib/.

--with-boost-libname= sets the name of the Boost.Python library. The default, if not given, is boost_python-gcc-1_32. A normal Boost install creates a dozen or so variations of each library. Because the compiler name is part of the library you may need to use this option when not compiling with gcc.

Minuit path and library.

--with-minuit-include= sets the path to the Minuit header files. The default, if not given, is /usr/local/include/Minuit which is the default install of the Minuit package.

--with-minuit-lib= sets the path to the directory where the libMinuit.so shared library is installed. The default, if not given, is /usr/local/lib which is the default install of the Minuit package.

--with-minuit-libname= sets the name the Minuit shared library. The default is lcg_Minuit corresponding to the installed liblcg_Minuit.so file. If the version of Minuit you have installed is 1.5.1 or earlier, then this option should be used to set the library name to Minuit.

If Minuit is not found in the default location, or if the path of one of the above options is set to `no' or incorrect, then HippoDraw will be built without Minuit support.

CFITSIO path and library.

--with-cfitsio-include= sets the path to the CFITSIO header files. The default, if not given, is /usr/local/cfitsio/include which is the default install of the CFITSIO package.

--with-cfitsio-lib= sets the path to the directory where the libCfitsio.so shared library is installed. The default, if not given, is /usr/local/cfitsio/lib which is the default install of the CFITSIO package.

CFITSIO might be installed as part of the FTOOLS package, in which case one should use its installation path.

If CFITSIO is not found in the default location, or if the path of one of the above options is set to `no' or incorrect, then HippoDraw will be built without CFITSIO support.

Build with ROOT support.

--with-root-include= sets the path to the ROOT header files. The default if not given, is /usr/local/include/root.

--with-root-lib= sets the path to the ROOT library files. The default if not given, is /usr/local/lib/root.

If you want to build without ROOT support and ROOT is installed in the above default paths, then use --without-root-include or --without-root-lib.

If ROOT is not found in its default location, or if the path is set to `no' or incorrect, then HippoDraw will be built without ROOT support.

Build with numarray support.

--enable-numarraybuild enables (the default) building HippoDraw with support of importing and exporting numerical arrays. It is assumed numerical Python module is installed in its default location e.g., /usr/local/lib/python2.4/site-packages. configure looks for numarray and if not found looks for numeric. If neither is found, support for Python numerical arrays is disabled.

There is one warning coming from the build ...

g++ -DHAVE_CONFIG_H -I. -I../../hippodraw/numarray -I..
-I../../hippodraw -I../../hippodraw/python 
-I/usr/local/include/boost-1_32 -ftemplate-depth-60 
-I/usr/local/include/python2.3 -g -O2 -Wall 
-c ../../hippodraw/numarray/NumArrayTuple.cxx -MT 
NumArrayTuple.lo -MD -MP -MF .deps/NumArrayTuple.TPlo  -fPIC -DPIC
/usr/local/include/python2.4/numarray/libnumeric.h:47: warning: 
'libnumeric_API' defined but not used

which can be ignored.

Build with numeric support.

--enable-numericbuild enables building HippoDraw with support of importing and exporting numerical arrays. It is assumed the numerical Python module is installed in its default location e.g., /usr/local/lib/python2.4/site-packages. If both numarray and Numeric packages are install, you need to use this option to force support for Numeric, otherwise numarray will be used. The above warning message from the compiler is also seen when using Numeric.

Build the SIP Python extension module.

--enable-sipbuild enables building the SIP based Python extension module. See the INSTALL file in the sip subdirectory for further details.

Requests:
configure script should set the Qt version number in the sip/Makefile.

Building HippoDraw

After configuring building is just ...

> make

This command first compiles core library, than the Qt specific parts and standalone executable, and finally the Python extension module. It will take about 20 minutes on an 850MHz laptop.

To generate the documentation for the C++ library, requires installation of Doxygen (http://www.stack.nl/~dimitri/doxygen/index.html) and Graphviz (http://www.research.att.com/sw/tools/graphviz). You can change the Doxygen configuration file, `doc/Doxyfile.in', so Graphviz is not needed, but you will lose ability to generate some graphs.

If these tools are install type ...

> make docs

This will create a directory in your build directory called doc/html, and all of the html documentation will be created in this directory. There is one warning coming from HippoDraw sources depending on the version of Doxygen you are using For example ...

/home/pfkeb/hippodraw/graphics/ViewBase.h:191 Warning: argument
`font' of command @param is not found in the argument list of 
EpsView::drawText(const std::string &s, float x, float y, float
fontsize, float angle, char xp, char yp, bool resize,
const FontBase *)

which appears to be a bug in Doxygen.

Installing.

Before attempting to install, make sure you have write privileges to the directories where HippoDraw will be installed. Typically, this is /usr/local, so you may have to su to root before typing the install command.

To install HippoDraw just type ...

> su
Password:
# make install

By default, installation is in /usr/local/bin. usr/local/include/HippoDraw-1.9.0, and usr/local/lib. Also, the Python module will be installed in /usr/local/lib/python<n.m>/site-packages where `<n.m>' is the Python version (without any further. bug fix releases number). You can change the path to the install area with the --prefix= option to the configure command.

Running HippoDraw

If you installed HippoDraw in the default path, /usr/local, then to run it as a stand-a-lone application, just type hippodraw. To use it as a python extension module, just import hippo.

If you did not install HippoDraw in the default area, then you need to add the path to the HippoDraw executable to your PATH environment variable or type the full path to the executable. To use HippoDraw as a Python extension module in this case, you need to add the path to the module to your PYTHONPATH environment variable. For example, if you installed HippoDraw in /usr/local/test, then csh users would do ...

> setenv PATH /usr/local/test/bin:$PATH
> setenv PYTHONPATH /usr/local/test/lib/python2.4/site-packages:$PYTHONPATH

If Configure Fails.

The configure script can fail in a number of ways. Most of the time the error message you get is pretty clear. Here is a description of some common failures.

AM_PYTHON_PATH not found.

You should only see this message if building from CVS checkout. If autogen fails because of missing `AM_PYTHON_PATH M4 macro, then automake 1.6 or later is not installed. When you install a newer version of automake, it is a good idea to do autoconf and libtool as well as these tools seem to have dependencies on each other.

Files not found.

The configure script will fail if it fails to find header files or library files in the paths you specified with a configure option, or the default locations. Check that there isn't a typo in the options you gave. If the required files are really missing then they might be located elsewhere in your file system. If they are really missing, then you will need to install them.

C++ compiler doesn't work.

If the configure script fails with the following error message

    checking whether the C++ compiler works... 
    configure: error: cannot run C++ compiled programs.

then configure is not finding the libstdc++.so version corresponding to the version of gcc it is using. This can happen, for example, if gcc in /usr/local/bin is being used and your system doesn't use /usr/local/lib in its shared library paths. The fix is to run configure like this ...

> ../hippodraw/configure LD_LIBRARY_PATH=/usr/local/lib
or set your environment variable LD_LIBRARY_PATH accordingly. So for example, if in your environment gcc is found in /usr/local/bin, then you need to set LD_LIBRARY_PATH to /usr/local/lib.

Build in AFS file system.

If your build directory is in an AFS file system, then you must add the following option to configure

--disable-libtool-lock

Failure to do so will lead to the following error message to appear every two seconds

      Waiting for BinnerBase.o.lock to be removed

With libtool locking disabled, one should not attempt to do parallel builds, i.e. using the `-j' option with the make command.

Old version of libtool on Mac OS X

For Mac OS X version 10.3, an update to date version of autoconf and automake are part of the standard developer's environment. However, the version of libtool is very old and doesn't support building of shared libraries on Mac OS X. Version 1.4.3 or newer is required. However, installing a newer version in its default install location, /usr/local, will not be sufficient because libtool expects to be in the same directory level as autoconf. A work around is to make a copy of /usr/local/share/aclocal/libtool.m4 in the HippoDraw config/m4 directory. Also make sure that the symbolic link config/ltmain.sh in the source directory points to the newer version of libtool.

Boost includes not found on Mac OS X

On Mac OS X, Python is in /usr/bin, however, the required header files for building HippoDraw with Boost.Python are not in /usr/include and the configure script will appear to fail to find Boost include files. What is really happening is that the Boost header files are failing to include Python header files.

With this release, the temporary fix is to pre-pend to your PATH environment variable the following

export PATH=/System/Library/Frameworks/Python.framework/Versions/2.3/bin:$PATH

A second problem is that the Boost library name is different than the default. On most UNIX systems (including Linux), gcc is part of the library name when the GCC compiler is used. On Mac OS X, even though GCC is the compiler, gcc is not part of the library name. Thus, you need to configure the Boost options something like this

bartok:~/hippodraw-BUILD pfkeb$ ../hippodraw/configure --with-Qt-dir=$HOME/qt\
--with-Qt-lib=qt-mt --with-boost-include=$HOME/include/boost-1_32\
--with-boost-lib=$HOME/lib --with-boost-libname=boost_python-1_32

With this release, the configure script will fail to find the Boost shared libraries with a warning message like this...

configure: checking boost installation with
    BOOST_CXXFLAGS=-I/Users/pfkeb/include/boost-1_32
    BOOST_LIB=/Users/pfkeb/lib
    BOOST_LIBNAME=boost_python-1_32
checking boost/python.hpp usability... yes
checking boost/python.hpp presence... yes
checking for boost/python.hpp... yes
checking for /Users/pfkeb/lib/libboost_python-1_32.so... no
configure: WARNING:
        Build will fail to build Python module, the last step

This is because the script is dumb enough to assume that shared libraries file names end with .so while on Mac OS X, they end with .dylib . The warning can be ignored as the Makefile is correctly generated anyway.

Hints on Installing External Packages.

Most required or optional software packages used by HippoDraw install with the standard configure, make, make install dance. They usually install binaries, header files, and libraries in /usr/local/bin, /usr/local/include, and /usr/local/lib respectively where the HippoDraw configure script will find them by default. If you do not have write access to /usr/local and can not convince your system administrator to install them there for you, then you'll have to install them elsewhere. I recommend that you when you configure these external packages, you type...

> configure --prefix=$HOME

then they will be installed in your home directory under bin/, include/, and lib/. This will it easier to install and use them and other packages that depend on them. Just set your PATH environment variable in include $HOME/bin and your LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on Mac OS X) to include $HOME/lib.

Some external packages cause some trouble if you don't read the instructions carefully. This sections give some tips that have been learn over time by the developers of HippoDraw.

Installing Trolltech's Qt

Trolltech recommends unpacking the sources in /usr/local and doing a build in place. If you do that, then all the example files will be built in your /usr/local which you not may want. I do a build in a work area, and then an install to /usr/local. If you do it this way, you must use the `-R' option of the Qt's configure script to set the run-time path for the moc and uic executables. Also, if you build Qt with a compiler not normally in your path, you should also use the `-R' option to set its library path. A recent build of Qt was done as follows:

> tar zxvf qt-x11-free-3.3.4.tar.gz
> cd /home/pfkeb/qt-x11-free-3.3.4/
> setenv QTDIR /home/pfkeb/qt-x11-free-3.3.4
> setenv PATH $QTDIR/bin:$PATH
> setenv MANPATH $QTDIR/doc/man
> setenv LD_LIBRARY_PATH $QTDIR/lib:/usr/local/lib
> ./configure -prefix /usr/local/qt-x11-free-3.3.4 
  -R/usr/local/qt-x11-free-3.3.4/lib -R/usr/local/lib -thread -qt-gif
> make
> su
Password:
# make install

The multi-thread version is required so that HippoDraw can be used as a Python extension modules. You must also build Qt with the same compiler as you will use to build HippoDraw.

Installing Boost

Boost uses bjam to do a build instead of make. Boost.Jam can be obtained as pre-built executable by following the links on the Boost installation instruction web pages. You only need one file which one could copy to /usr/local/bin.

Boost version 1_31.0 and later are easy to build following the its web pages. Its seems that setting the environment variable `PYTHON_VERSION' is missing from these pages, otherwise it builds as instructed. This is true for both Windows and Unix like systems. With Boost version 1_31 there are warning messages about redefining _POSIX_C_SOURCE which apparently can be ignored. These warning don't appear with version 1_32

The following was done for installing Boost

> tar zxvf boost_1_32_0.tar.gz
> cd boost_1_32_0
> su
Password:
# export PYTHON_VERSION=2.4
# bjam "-sTOOLS=gcc" install

This puts dozens of shared and static library files in /usr/local/lib. One probably doesn't need them all. If short on disk space, one might try the --without-<library> option to the bjam command. Or one might use the `stage' option and only copy the header directory boost and the required library files to /usr/local manually.

Possible Unicode Problem

If you get the following error after building HippoDraw ...

[pfkeb@localhost testsuite]$ python -i canvas.py
Traceback (most recent call last):
  File "canvas.py", line 13, in ?
    from hippo import HDApp
ImportError: /usr/local/lib/libboost_python-gcc-1_32.so.1.32.0: undefined symbol: PyUnicodeUCS4_FromEncodedObject

it is most likely caused by building Boost.Python with one version of Python and building Hippodraw with another that has different Unicode handling. The fix is to make sure you are using the same version of Python for building Boost.Python and HippoDraw.

Installing Boost on Mac OS X

From the Boost install instructions, it looked like one would build Boost like any other UNIX platform. However, I didn't get any shared libraries. Guy Barrand told me that I had to use a bjam built with the script located in tools/build/jam_src/build.sh of the boost source distribution.

Using that bjam was still not enough on my first try. I found I also had to do the following...

export PYTHON_VERSION=2.3
bjam --with-python-root=/System/Library/Frameworks/Python.framework/Versions/2.3 "-sTOOLS=darwin" install

Maybe if I had done the second in the first place I wouldn't have to build bjam.

Known Problems.

Here are some know problems with certain versions of external software.

_POSIX_C_SOURCE warning

When compiling HippoDraw or Boost.Python, you may see warnings that "_POSIX_C_SOURCE being redefined". They can safely be ignored. The problem is that the Python configure scripts defined _POSIX_C_SOURCE to a different value from what is defined in a system header file. To get rid of the warnings, change the pyconfig.h file so this macro has the same value as the system header file. For example, on a Red Hat 9 Linux system, make it read...

/* Define to activate features from IEEE Stds 1003.1-2001 */
#define _POSIX_C_SOURCE 199506L

Internal compiler error with Boost.Python

If you get the following error

/usr/include/boost/python/detail/def_helper.hpp:80: internal compiler error: 
Segmentation fault

then the following might help...

Modified "boost/python/detail/translate_exception.hpp"(line 40)
From:        catch(exception_cref e)
To:          catch(exception_cref& e)

This problem was reported by Akito Kusaka. He was using SuSE 9.1, boost.python 1.31.0 from RPM package, gcc 3.3.3 from RPM package. He found the fix in http://mail.python.org/pipermail/c++-sig/2004-June/007587.html

Boost.Python 1.30.x

Gcc 3.3.x series with Boost.Python 1_30_x has a problem. The error is first seen in compiling python/QtCut.cxx with the following message.

/usr/include/boost/python/converter/as_to_python_function.hpp:28: sorry,
unimplemented: `method_call_expr' not supported by dump_expr

Suggested work around is found on Python C++-sig mailing list . It allows compilation and linking but two the the test scripts, datareps.py and cuts.py, both fail at runtime.

Two headed display systems.

With the Qt 3.1 installed on Red Hat Linux 9, HippoDraw doesn't work on computers with multi-head displays. It works with Qt 3.3.1 and perhaps earlier versions

Segmentation fault on exit.

With Qt version 3.1.0, there is a segmentation fault when one exits the application run as a Python extension module. This appears to be a bug in Qt later version of Qt do not have the problem.

Internal QThread error on exit.

With Qt version 3.3.3, there is error message

>>> QThread: internal error: zero data for running thread.
when one terminates the application.

Boost 1.31.0 required for Python 2.3.

Python 2.3 has some problems due change in C preprocessor macros (see http://mail.python.org/pipermail/c++-sig/2003-August/005046.html). Use Boost version 1_31.0 or later if you have Python 2.3 installed. With version 1.29.0, there are some warning message issued by gcc 3.x which can safely be ignored. They do not appear with earlier versions of gcc or with Boost.python version 1.30.0 or later.

Installing Python

Building and installing Python is the standard dance...

> cd Python-2.4
> ./configure
> make
> su
Password:
# make install

When installing Python as root user with its make install it might fail with

/usr/bin/install -c -m 644 ./LICENSE /usr/local/lib/python2.3/LICENSE.txt
PYTHONPATH=/usr/local/lib/python2.3   \
        ./python -Wi -tt /usr/local/lib/python2.3/compileall.py \
        -d /usr/local/lib/python2.3 -f \
        -x 'badsyntax|site-packages' /usr/local/lib/python2.3
./python: error while loading shared libraries: libstdc++.so.6: cannot open sha
red object file: No such file or directory
make: *** [libinstall] Error 127

The problem can be caused by the compiler being installed in /usr/local and the root user not having /usr/local/lib in his LD_LIBRARY_PATH. Just do

export LD_LIBRARY_PATH=/usr/local/lib

and try again.

Rebuilding Python

If you built and installed Python, and then install a newer version of gcc with a newer version of libstdc++.so, then HippoDraw's Python extension module might fail. This is because HippoDraw built with the new version of the compiler is linked to a library incompatible with the one Python was built with. The solution to the problem is rebuild and install Python with the same compiler version used to built HippoDraw.

Linking main on Mac OS X fails.

At the time of this release, you may have trouble building the HippoDraw application on a Mac OS X system. If you see the following

/bin/sh ../libtool --mode=link g++  -g -O2 -Wall   -o hippodraw \
-R /usr/local/lib    -R /usr/lib  main.o libhippoqt.la
libtool: link: cannot find the library `'

then libtool is not handling the Mac OS X frameworks correctly. There is a patch for libtool 1.5 available from http://ranger.befunk.com/patches/libtool-framework.patch which I have not tested. Alternatively, after the qt/libhippoqt.la has been created, edit the line

dependency_libs=' -R/Users/pfkeb/qt/lib  -L/Users/pfkeb/qt/lib /Users/pfkeb/qt/
lib/libqt-mt.la -lz Carbon QuickTime OpenGL -framework AGL               '

so that it looks like

dependency_libs=' -R/Users/pfkeb/qt/lib  -L/Users/pfkeb/qt/lib /Users/pfkeb/qt/
lib/libqt-mt.la '

Installing numarray

The instructions for installing numarray on its Web site are not entirely correct. The script setupall.py does not exist. As root user, use the setup.py script like this...

> python setup.py install
>

Installing PyFITS

The instructions for installing PyFITS on its Web say just to download and copy the file pyfits.py . However, if you do this as root user, it will not have the correct permissions for normal user. To fix this, as root user just type...

> cp pyfits /usr/local/lib/python2.4/site-packages/.
> chmod 755 /usr/local/lib/python2.4/site-packages/pyfits.py
>

Change the above to your version of Python as appropriate.

ROOT crashes at startup.

If HippoDraw was built with ROOT file support, and ROOT crashes at startup of a HippoDraw Python extension module, then the cause may be that ROOT's linkage to the C++ standard library is incompatible with HippoDraw's. This has been observed, for example, if ROOT is built with gcc 3.2, and HippoDraw is built with gcc 3.4 or later. The fix is to compile ROOT from source with later version of gcc. ROOT doesn't appear to compile with gcc 4.0, but building ROOT from source with gcc 3.4 and HippoDraw with gcc 4.0 seems to work ok.
Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3