prepare for the release of rrdtool-1.2.9
[rrdtool.git] / doc / rrdbuild.pod
index a428c0f..00a9162 100644 (file)
@@ -17,14 +17,44 @@ This document will tell you about all the necessary steps to get going.
 
 =head2 Building
 
+Before you start to build RRDtool, you have to decide two things:
+
+=over
+
+=item 1.
+
+In which directory you want to build the software.
+
+=item 2.
+
+Where you want to install the software.
+
+=back
+
+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.9
+
+Or if you run tcsh:
+
+ set BUILD_DIR=/tmp/rrdbuild
+ set INSTALL_DIR=/usr/local/rrdtool-1.2.9
+
+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
 per-installed. Note that these instructions assume that your copies of
 B<tar> and B<make> are actually B<GNU tar> and B<GNU make> respectively. It
 could be that they are installed as B<gtar> and B<gmake> on your system.
 
- wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/rrdtool-1.2.2
- tar zxf rrdtool-1.2.2
- cd rrdtool-1.2.2
+ wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/rrdtool-1.2.9.tar.gz
+ tar zxf rrdtool-1.2.9.tar.gz
+ cd rrdtool-1.2.9
  ./configure --prefix=/path/to/installation && make && make install
 
 Ok, this was very optimistic. This try will probably have ended with
@@ -41,26 +71,33 @@ compile your own copies of the required libraries. Here is how:
 
 =item Building cgilib
 
+ cd $BUILD_DIR
  wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/cgilib-0.5.tar.gz
  tar zxf cgilib-0.5.tar.gz
  cd cgilib-0.5
+
+If you are on Mac OSX you want to fix a little header problem here by doing
+
+ touch malloc.h
+
+and now you are ready to build
+
  make CC=gcc CFLAGS="-O3 -fPIC -I."
- mkdir -p ../lb/include
- cp *.h ../lb/include
- mkdir -p ../lb/lib
- cp libcgi* ../lb/lib
- cd ..
+ mkdir -p $BUILD_DIR/lb/include
+ cp *.h $BUILD_DIR/lb/include
+ mkdir -p $BUILD_DIR/lb/lib
+ cp libcgi* $BUILD_DIR/lb/lib
 
 =item Building zlib
 
+ cd $BUILD_DIR
  wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/zlib-1.2.2.tar.gz
  tar  zxf zlib-1.2.2.tar.gz
  cd zlib-1.2.2
- env CFLAGS="-O3 -fPIC" ./configure --prefix=`pwd`/../lb
- make 
+ env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
+ make
  make install
- cd ..
+
 =item Building libpng
 
 Libpng itself requires zlib to build, so we need to help a bit. If you
@@ -68,58 +105,72 @@ 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://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/libpng-1.2.8-config.tar.gz
  tar zxvf libpng-1.2.8-config.tar.gz
  cd libpng-1.2.8-config
- env CPPFLAGS="-I../lb/include" LDFLAGS="-L../lb/lib" CFLAGS="-O3 -fPIC" \
-     ./configure --disable-shared --prefix=`pwd`/../lb
+ 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
- cd ..
+
 =item Building freetype
 
- wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/freetype-2.1.9.tar.gz
+ cd $BUILD_DIR
+ wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/freetype-2.1.9.tar.gz
  tar zxvf freetype-2.1.9.tar.gz
  cd freetype-2.1.9
- env CPPFLAGS="-I../lb/include" LDFLAGS="-L../lb/lib" CFLAGS="-O3 -fPIC" \
-     ./configure --disable-shared --prefix=`pwd`/../lb
+ 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
- cd ..
 
 =item Building libart_lgpl
 
- wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz
+ cd $BUILD_DIR
+ wget http://people.ee.ethz.ch/oetiker/webtools/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=`pwd`/../lb
+ env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
+ make
  make install
- cd ..
 
 =back
 
-Now all the dependent libraries are built and you can try again. This time
-you tell configure where it should be looking for libraries and include
-files. This is done via environment variables. Depending on the shellyou are running, the syntax for setting
-environment variables is different. Under csh/tcsh you use:
+Now all the dependent libraries are built and you can try again. Since these
+are static libraries, you may have to use F<ranlib> to make them accessible.
+Especially BSD systems like Mac OS X may require this, Linux and Solaris
+will do just fine without since their F<ar> command does ranlibs job as well.
+
+ ranlib $BUILD_DIR/lb/lib/*.a
 
- set IR=-I`pwd`/lb/include 
+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`pwd`/lb/lib
+ setenv LDFLAGS  -L$BUILD_DIR/lb/lib
  setenv CFLAGS -O3
 
 If you are running bash/sh/ash/ksh/zsh use this:
 
- IR=-I`pwd`/lb/include 
+ IR=-I$BUILD_DIR/lb/include
  CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
- LDFLAGS="-L`pwd`/lb/lib"
+ LDFLAGS="-L$BUILD_DIR/lb/lib"
  CFLAGS=-O3
  export CPPFLAGS LDFLAGS CFLAGS
 
-And finally try building again:
- ./configure --prefix=/path/to/installation && make && make install
+And finally try building again. We disable the python bindings because it
+seems that a fair number of people have ill configured python setups that
+would prevent rrdtool from building if they are included in their current
+state.
+
+ cd $BUILD_DIR
+ ./configure --prefix=$INSTALL_DIR --disable-python && make && make install
 
-Now go to I</path/to/installation>B</examples> and run them to see if your
+Now go to I<$INSTALL_DIR>B</examples> and run them to see if your
 build has been successful.
 
 =head1 AUTHOR