Code

Imported upstream version 1.3rc4.
[pkg-rrdtool.git] / doc / rrdbuild.txt
index d63f1396ae32288cb117ceb27afbeac8f5fad306..e825521189917fc368ee17841b964ef1139e935e 100644 (file)
@@ -5,9 +5,7 @@ RRDBUILD(1)                         rrdtool                        RRDBUILD(1)
 N\bNA\bAM\bME\bE
        rrdbuild - Instructions for building RRDtool
 
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-       O\bOv\bve\ber\brv\bvi\bie\bew\bw
-
+O\bOV\bVE\bER\bRV\bVI\bIE\bEW\bW
        If you downloaded the source of rrdtool you have to compile it. This
        document will give some information on how this is done.
 
@@ -17,8 +15,16 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
        This document will tell you about all the necessary steps to get going.
 
-       B\bBu\bui\bil\bld\bdi\bin\bng\bg
+       These instructions assume you are using a b\bba\bas\bsh\bh shell. If you use
+       csh/tcsh, then you can either type _\bb_\ba_\bs_\bh to switch to bash for the com-
+       pilation or if you know what you are doing just replace the export bits
+       with setenv.
+
+       We further assume that your copies of t\bta\bar\br and m\bma\bak\bke\be are actually G\bGN\bNU\bU t\bta\bar\br
+       and G\bGN\bNU\bU m\bma\bak\bke\be respectively. It could be that they are installed as g\bgt\bta\bar\br
+       and g\bgm\bma\bak\bke\be on your system.
 
+O\bOP\bPT\bTI\bIM\bMI\bIS\bST\bTI\bIC\bC B\bBU\bUI\bIL\bLD\bD
        Before you start to build RRDtool, you have to decide two things:
 
        1.  In which directory you want to build the software.
@@ -26,16 +32,10 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        2.  Where you want to install the software.
 
        Once you have decided. Save the two locations into environment vari-
-       ables.  Depending on the shell you are using, you can do either
-       (bash,zsh):
+       ables.
 
         BUILD_DIR=/tmp/rrdbuild
-        INSTALL_DIR=/usr/local/rrdtool-1.2.27
-
-       Or if you run tcsh:
-
-        set BUILD_DIR=/tmp/rrdbuild
-        set INSTALL_DIR=/usr/local/rrdtool-1.2.27
+        INSTALL_DIR=/usr/local/rrdtool-1.3rc4
 
        If your _\b/_\bt_\bm_\bp is mounted with the option noexec (RHEL seems todo that)
        you have to choose a different directory!
@@ -46,24 +46,52 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
         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\bta\bar\br and m\bma\bak\bke\be are actually G\bGN\bNU\bU t\bta\bar\br and G\bGN\bNU\bU m\bma\bak\bke\be respectively. It could
-       be that they are installed as g\bgt\bta\bar\br and g\bgm\bma\bak\bke\be on your system.
+       pre-installed.
 
-        wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz
-        tar zxf rrdtool-1.2.27.tar.gz
-        cd rrdtool-1.2.27
+        wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3rc4.tar.gz
+        gunzip -c rrdtool-1.3rc4.tar.gz | tar xf -
+        cd rrdtool-1.3rc4
         ./configure --prefix=$INSTALL_DIR && make && make install
 
        Ok, this was very optimistic. This try will probably have ended with
-       c\bco\bon\bnf\bfi\big\bgu\bur\bre\be 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
-       -\b-d\bde\bev\bv package for each library you install. Once you have the missing
-       bits on board, just re-run the last line of the instructions above.
+       c\bco\bon\bnf\bfi\big\bgu\bur\bre\be complaining about several missing libraries.
+
+I\bIN\bNS\bST\bTA\bAL\bLL\bLI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
+       If your OS lets you install additional packages from a software reposi-
+       tory, you may get away with installing the missing packages. When the
+       packages are installed, run configure again and try to compile again.
+       Below you find some hints on getting your OS ready for the rrdtool com-
+       pilation. Additions to this list are welcome.
+
+       O\bOp\bpe\ben\bnS\bSo\bol\bla\bar\bri\bis\bs 2\b20\b00\b08\b8.\b.0\b05\b5
+
+       Just add a compiler and the gnome development package:
+
+        pkg install sunstudioexpress
+        pkg install SUNWgnome-common-devel
 
-       But again this may have been too optimistic, and you actually have to
-       compile your own copies of the required libraries.
+       There is a a problem with _\bc_\ba_\bi_\br_\bo_\b._\bp_\bc on opensolaris. It suggests that
+       xrender is required for compilation with cairo. This is not true and
+       also bad since opensolaris does not include an _\bx_\br_\be_\bn_\bd_\be_\br_\b._\bp_\bc file. Use
+       perl to fix this:
+
+        perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc
+
+       D\bDe\beb\bbi\bia\ban\bn /\b/ U\bUb\bbu\bun\bnt\btu\bu
+
+       Use apt-get to make sure you have all that is required. A number of
+       packages will get added through dependencies.
+
+        apt-get install libpango1.0-dev libxml2-dev
+
+B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
+       But again this may have been too optimistic still, and you actually
+       have to compile your own copies of some of the required libraries.
+       Things like libpng and zlib are pretty standard so you will probably
+       have them on your system anyway. Freetype, Fontinst, Cairo, Pango may
+       be installed, but it is possible that they are pretty old and thus
+       don't live up to the expectations, so you may want to compile their
+       latest versions.
 
        _\bB_\bu_\bi_\bl_\bd _\bT_\bi_\bp_\bp_\bs _\bf_\bo_\br _\bA_\bI_\bX
 
@@ -91,14 +119,51 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        Sun Forte
             CFLAGS="-xO3 -kPIC"
 
+           Some libraries want to know where other libraries are. For this to
+           work, set the following environamen variable
+
+            export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
+            export PATH=$INSTALL_DIR/bin:$PATH
+
+           Since we are compiling libraries dynamically, you they must further
+           know where to find each other. This is done by setting an appropri-
+           ate LDFLAG.  Unfortunatly the syntax differs from system to system:
+
+           Solaris
+                export LDFLAGS=-R${INSTALL_DIR}/lib
+
+           Linux
+                export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
+
+               If you are on a 64bit platform, but would like to continue to
+               use the rrd files created on your old 32bit linux, you may be
+               able
+
+           HPUX
+                export LDFLAGS="+b${INSTALL_DIR}/lib"
+
+           AIX
+                export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib"
+
+           If you have GNUmake installed and it is not called 'make', then do
+
+            export MAKE=gmake
+            export GNUMAKE=gmake
+
+           otherwhise just do
+
+            export MAKE=make
+
        Building zlib
+           Chances are very high that you already have that on your system ...
+
             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
+            gunzip -c zlib-1.2.3.tar.gz | tar xf -
             cd zlib-1.2.3
-            env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
-            make
-            make install
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --shared
+            $MAKE
+            $MAKE install
 
        Building libpng
            Libpng itself requires zlib to build, so we need to help a bit. If
@@ -108,74 +173,106 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            are on one line.
 
             cd $BUILD_DIR
-            wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.10.tar.gz
-            tar zxvf libpng-1.2.10.tar.gz
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
+            gunzip -c libpng-1.2.18.tar.gz | tar xf -
             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
+            env CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR
+            $MAKE
+            $MAKE install
 
        Building freetype
             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
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
+            gunzip -c freetype-2.3.5.tar.gz | tar xf -
+            cd freetype-2.3.5
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+            $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:
+           to try to add the following at the start the configure line:
 
-            GNUMAKE=gmake EGREP=egrep
+            env EGREP=egrep
+
+       Building LibXML2
+            cd $BUILD_DIR
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz
+            gunzip -c libxml2-sources-2.6.32.tar.gz | tar xf -
+            cd libxml2-sources-2.6.32
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+            $MAKE
+            $MAKE install
+
+       Building fontconfig
+           Note that fontconfig has a runtime configuration file in
+           INSTALL_DIR/etc you may want to adjust that so that fontconfig
+           finds the fonts on your system.  Run the fc-cache program to build
+           the fontconfig cache after changeing the config file.
 
-       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 _\br_\ba_\bn_\bl_\bi_\bb to make them
-       accessible.  Especially BSD systems like Mac OS X may require this,
-       Linux and Solaris will do just fine without since their _\ba_\br 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
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
+            gunzip -c fontconfig-2.4.2.tar.gz   | tar xf -
+            cd fontconfig-2.4.2
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+            $MAKE
+            $MAKE install
+
+       Building Pixman
+            cd $BUILD_DIR
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/pixman-0.10.0.tar.gz
+            gunzip -c pixman-0.10.0.tar.gz  | tar xf -
+            cd fontconfig-2.4.2
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+            $MAKE
+            $MAKE install
+
+       Building Cairo
+            cd $BUILD_DIR
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
+            gunzip -c cairo-1.4.10.tar.gz   | tar xf -
+            cd cairo-1.4.10
+            ./configure --prefix=$INSTALL_DIR \
+               --enable-xlib=no \
+               --enable-xlib-render=no \
+               --enable-win32=no \
+               CFLAGS="-O3 -fPIC"
+            $MAKE
+            $MAKE install
+
+       Building Glib
+            cd $BUILD_DIR
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
+            gunzip -c glib-2.12.13.tar.gz  | tar xf -
+            cd glib-2.12.13
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+            $MAKE
+            $MAKE install
+
+       Building Pango
+            cd $BUILD_DIR
+            wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.21.1.tar.gz
+            gunzip -c pango-1.21.1.tar.gz  | tar xf -
+            cd pango-1.21.1
+            ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --without-x
+            $MAKE
+            $MAKE install
+
+       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
+       shell you are running, the syntax for setting environment variables is
+       different.
 
        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.27
-        ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
-        make clean
-        make
-        make install
+        cd $BUILD_DIR/rrdtool-1.3rc4
+        ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
+        $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
@@ -190,4 +287,4 @@ A\bAU\bUT\bTH\bHO\bOR\bR
 
 
 
-1.2.27                            2008-02-17                       RRDBUILD(1)
+1.3rc4                            2008-05-18                       RRDBUILD(1)