X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=doc%2Frrdbuild.pod;h=e513c78ffc019df3aa48d46b3210fc9a5838bc60;hb=7d66dc1a93ed5d717b147e3ee52ff987408a98c3;hp=9bb780cd74911777614c5f0526a5e82999100e7b;hpb=7f408c1ae7d1011c489fbd9123b1dd03d869e088;p=rrdtool.git diff --git a/doc/rrdbuild.pod b/doc/rrdbuild.pod index 9bb780c..e513c78 100644 --- a/doc/rrdbuild.pod +++ b/doc/rrdbuild.pod @@ -2,9 +2,7 @@ rrdbuild - Instructions for building RRDtool -=head1 DESCRIPTION - -=head2 Overview +=head1 OVERVIEW If you downloaded the source of rrdtool you have to compile it. This document will give some information on how this is done. @@ -15,7 +13,16 @@ ones before you can build RRDtool. This document will tell you about all the necessary steps to get going. -=head2 Building +These instructions assume you are using a B shell. If you use csh/tcsh, +then you can either type F to switch to bash for the compilation or if +you know what you are doing just replace the export bits with +setenv. + +We further assume that your copies of B and B are actually B and B respectively. It could be that they are installed as +B and B on your system. + +=head1 OPTIMISTIC BUILD Before you start to build RRDtool, you have to decide two things: @@ -32,15 +39,10 @@ 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.15 - -Or if you run tcsh: + INSTALL_DIR=/usr/local/rrdtool-1.3rc6 - set BUILD_DIR=/tmp/rrdbuild - set INSTALL_DIR=/usr/local/rrdtool-1.2.15 If your F is mounted with the option noexec (RHEL seems todo that) you have to choose a different directory! @@ -51,26 +53,56 @@ Now make sure the BUILD_DIR exists and go there: cd $BUILD_DIR Lets first assume you already have all the necessary libraries -pre-installed. Note that these instructions assume that your copies of -B and B are actually B and B respectively. It -could be that they are installed as B and B on your system. +pre-installed. - wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.15.tar.gz - tar zxf rrdtool-1.2.15.tar.gz - cd rrdtool-1.2.15 + wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3rc6.tar.gz + gunzip -c rrdtool-1.3rc6.tar.gz | tar xf - + cd rrdtool-1.3rc6 ./configure --prefix=$INSTALL_DIR && make && make install Ok, this was very optimistic. This try will probably have ended with -B 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<-dev> -package for each library you install. Once you have the missing bits on -board, just re-run the last line of the instructions above. +B complaining about several missing libraries. + +=head1 INSTALLING DEPENDENCIES + +If your OS lets you install additional packages from a software repository, +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 compilation. + +Additions to this list are welcome. + +=head2 OpenSolaris 2008.05 + +Just add a compiler and the gnome development package: + + pkg install sunstudioexpress + pkg install SUNWgnome-common-devel + +There is a a problem with F 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 F file. Use perl to +fix this: + + perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc + +=head2 Debian / Ubuntu + +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 -But again this may have been too optimistic, and you actually have to -compile your own copies of the required libraries. +=head1 BUILDING DEPENDENCIES -=head2 Building on AIX +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 our +expectations, so you may want to compile their latest versions. + +=head3 Build Tipps for AIX If you are woking with AIX, you may find the the B<--disable-shared> option will cause things to break for you. In that case you may have to install the @@ -86,17 +118,88 @@ Another hint to get rrdtool working on AIX is to use the IBM XL C Compiler: =head2 Building Libraries +In order to build the libraries you need a compiler on your system. +Unfortunately compilers are not all alike. This has an effect on the CFLAGS +you want to set. The examples below are for the popular GCC compiler suite. +If you have an other compilers here are some ides: + +=over + +=item Sun Forte + + CFLAGS="-xO3 -kPIC" + +=back + =over +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 + +This relies on the presence of the F program. Below you find instructions +on how to compile pkgconfig as well. + +Since we are compiling libraries dynamically, they must know +where to find each other. This is done by setting an appropriate LDFLAG. +Unfortunatly, the syntax again differs from system to system: + +=over + +=item Solaris + + export LDFLAGS=-R${INSTALL_DIR}/lib + +=item Linux + + export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib" + +=item HPUX + + export LDFLAGS="+b${INSTALL_DIR}/lib" + +=item AIX + + export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib" + +=back + +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 + +=item Building pkgconfig + +As mentioned above, without pkgconfig the whole build process will be lots +of pain and suffering, so make sure you have a copy on your system. If it is +not available natively, here is how to compile it. + + wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz + gunzip -c pkg-config-0.23.tar.gz | tar xf - + cd pkg-config-0.23 + ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" + $MAKE + $MAKE install + =item 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 =item Building libpng @@ -106,85 +209,122 @@ 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.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 =item 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: +add the following at the start the configure line: - GNUMAKE=gmake EGREP=egrep + env EGREP=egrep -=item Building libart_lgpl +=item Building LibXML2 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 + 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 -=back +=item 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. + + cd $BUILD_DIR + 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 + +=item Building Pixman -Now all the dependent libraries are built and you can try again. Since these -are static libraries, you may have to use F 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 command does ranlibs job as well. + 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 + +=item Building Cairo - ranlib $BUILD_DIR/lb/lib/*.a + 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 + +=item Building Glib -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: + 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 - 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 +=item Building Pango -If you are running bash/sh/ash/ksh/zsh use this: + 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 + +=back - 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 +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.15 - ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl - make clean - make - make install + cd $BUILD_DIR/rrdtool-1.3rc6 + ./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 -installed on your box or you have to hand-tune bindings/perl-shared/Makefile -while building! +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<$INSTALL_DIR>B and run them to see if your -build has been successful. +Now go to I<$INSTALL_DIR>B and run them to see if +your build has been successful. =head1 AUTHOR