


     RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))            1111....2222....11113333 ((((2222000000006666----00005555----00004444))))            RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))



     NNNNAAAAMMMMEEEE
          rrdbuild - Instructions for building RRDtool

     DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
          OOOOvvvveeeerrrrvvvviiiieeeewwww

          If you downloaded the source of rrdtool you have to compile
          it. This document will give some information on how this is
          done.

          RRDtool relies on services of thrid part libraries. Some of
          these libraries may already be installed on your system. You
          have to compile copies of the other ones before you can
          build RRDtool.

          This document will tell you about all the necessary steps to
          get going.

          BBBBuuuuiiiillllddddiiiinnnngggg

          Before you start to build RRDtool, you have to decide two
          things:

          1.  In which directory you want to build the software.

          2.  Where you want to install the software.

          Once you have decided. Save the two locations into
          environment variables.  Depending on the shell you are
          using, you can do either (bash,zsh):

           BUILD_DIR=/tmp/rrdbuild
           INSTALL_DIR=/usr/local/rrdtool-1.2.13

          Or if you run tcsh:

           set BUILD_DIR=/tmp/rrdbuild
           set INSTALL_DIR=/usr/local/rrdtool-1.2.13

          Now make sure the BUILD_DIR exists and go there:

           mkdir -p $BUILD_DIR
           cd $BUILD_DIR

          Lets first assume you already have all the necessary
          libraries pre-installed. Note that these instructions assume
          that your copies of ttttaaaarrrr and mmmmaaaakkkkeeee are actually GGGGNNNNUUUU ttttaaaarrrr and
          GGGGNNNNUUUU mmmmaaaakkkkeeee respectively. It could be that they are installed
          as ggggttttaaaarrrr and ggggmmmmaaaakkkkeeee on your system.






     Page 1                                          (printed 6/13/06)






     RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))            1111....2222....11113333 ((((2222000000006666----00005555----00004444))))            RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))



           wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.13.tar.gz
           tar zxf rrdtool-1.2.13.tar.gz
           cd rrdtool-1.2.13
           ./configure --prefix=$INSTALL_DIR && make && make install

          Ok, this was very optimistic. This try will probably have
          ended with ccccoooonnnnffffiiiigggguuuurrrreeee complaining about several missing
          libraries. If you are on a Linux or *bsd system you may want
          to just install the missing bits from your software
          repository. When you do that, make sure you also get the
          ----ddddeeeevvvv package for each library you install. Once you have the
          missing bits on board, just re-run the last line of the
          instructions above.

          But again this may have been too optimistic, and you
          actually have to compile your own copies of the required
          libraries. Here is how:

          Building zlib
               cd $BUILD_DIR
               wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
               tar  zxf zlib-1.2.3.tar.gz
               cd zlib-1.2.2
               env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
               make
               make install

          Building libpng
              Libpng itself requires zlib to build, so we need to help
              a bit. If you already have a copy of zlib on your system
              (which is very likley) you can drop the settings of
              LDFLAGS and CPPFLAGS. Note that the backslash (\) at the
              end of line 4 means that line 4 and line 5 are on one
              line.

               cd $BUILD_DIR
               wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.8-config.tar.gz
               tar zxvf libpng-1.2.10.tar.gz
               cd libpng-1.2.10
               env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
                   ./configure --disable-shared --prefix=$BUILD_DIR/lb
               make
               make install

          Building freetype










     Page 2                                          (printed 6/13/06)






     RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))            1111....2222....11113333 ((((2222000000006666----00005555----00004444))))            RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))



               cd $BUILD_DIR
               wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.1.10.tar.bz2
               tar jxvf freetype-2.1.10.tar.bz2
               cd freetype-2.1.10
               env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
                   ./configure --disable-shared --prefix=$BUILD_DIR/lb
               make
               make install

              If you run into problems building freetype on Solaris,
              you may want to try to add the following at the end of
              the configure line:

               GNUMAKE=gmake EGREP=egrep

          Building libart_lgpl
               cd $BUILD_DIR
               wget http://oss.oetiker.ch/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz
               tar zxvf libart_lgpl-2.3.17.tar.gz
               cd libart_lgpl-2.3.17
               env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
               make
               make install

          Now all the dependent libraries are built and you can try
          again. Since these are static libraries, you may have to use
          _r_a_n_l_i_b to make them accessible.  Especially BSD systems like
          Mac OS X may require this, Linux and Solaris will do just
          fine without since their _a_r command does ranlibs job as
          well.

           ranlib $BUILD_DIR/lb/lib/*.a

          This time you tell configure where it should be looking for
          libraries and include files. This is done via environment
          variables. Depending on the shell you are running, the
          syntax for setting environment variables is different. Under
          csh/tcsh you use:

           set IR=-I$BUILD_DIR/lb/include
           setenv CPPFLAGS "$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
           setenv LDFLAGS  -L$BUILD_DIR/lb/lib
           setenv CFLAGS -O3

          If you are running bash/sh/ash/ksh/zsh use this:

           IR=-I$BUILD_DIR/lb/include
           CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
           LDFLAGS="-L$BUILD_DIR/lb/lib"
           CFLAGS=-O3
           export CPPFLAGS LDFLAGS CFLAGS




     Page 3                                          (printed 6/13/06)






     RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))            1111....2222....11113333 ((((2222000000006666----00005555----00004444))))            RRRRRRRRDDDDBBBBUUUUIIIILLLLDDDD((((1111))))



          And finally try building again. We disable the python and
          tcl bindings because it seems that a fair number of people
          have ill configured python and tcl setups that would prevent
          rrdtool from building if they are included in their current
          state.

           cd $BUILD_DIR/rrdtool-1.2.13
           ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
           make clean
           make
           make install

          SOLARIS HINT: if you want to build  the perl module for the
          native perl (the one shipping with solaris) you will need
          the sun forte compiler installed on your box or you have to
          hand-tune bindings/perl-shared/Makefile while building!

          Now go to $_I_N_S_T_A_L_L__D_I_R////sssshhhhaaaarrrreeee////rrrrrrrrddddttttoooooooollll////eeeexxxxaaaammmmpppplllleeeessss//// and run them
          to see if your build has been successful.

     AAAAUUUUTTTTHHHHOOOORRRR
          Tobias Oetiker <tobi@oetiker.ch>

































     Page 4                                          (printed 6/13/06)



