RRDTOOL with LIBART

Issues with rrdtool 🙂
On Linux from Scratch.

Updated 2015 April 2. Using up to date package versions

rrdtool without cairo/pango
rrdtool with libart

Well rrdtool works great on all distro’s. I use(d) it my self on fedora and centos. No troubles…
But getting it to work on Linux From Scratch took some effort. The thing is that the latest versions of rrdtool are linked against cairo and pango. Which I don’t have installed nor do I want to. Cairo/Pango are X libs depending on even more X libs and X configurations. I’m running an X less server. No trace of X or GTK installed and I want to keep it that way.
So to get it to work I had to fall back to the latest version of rrdtool that didn’t depend on cairo/pango but depends on libart. Which is version 1.2.30 and is still available on the rrdtool website. The only dependencies are pkg-config, zlib, libpng, freetype, libart (optional Bzip2 but recommended).

Versions used:
zlib-1.2.8.tar.bz2 http://www.zlib.net/zlib-1.2.8.tar.xz

bzip2-1.0.6.tar.gz http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

pkg-config-0.28.tar.gz http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz

libpng-1.6.16.tar.gz http://downloads.sourceforge.net/libpng/libpng-1.6.16.tar.xz

libpng-1.6.16-apng.patch.gz http://downloads.sourceforge.net/libpng-apng/libpng-1.6.16-apng.patch.gz

which-2.20.tar.gz http://ftp.gnu.org/gnu/which/which-2.20.tar.gz

icu4c-54_1-src.tgz http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz

libffi-3.2.1.tar.gz ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz

Python-2.7.9.tar.xz https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz

freetype-2.5.5.tar.bz2 http://downloads.sourceforge.net/freetype/freetype-2.5.5.tar.bz2

harfbuzz-0.9.38.tar.bz2 http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.38.tar.bz2

libart_lgpl-2.3.21.tar.bz2 http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.tar.bz2

rrdtool-1.2.30.tar.gz http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.30.tar.gz

Linux From Scratch users have already zlib, bzip2 and pkg-config installed and should skip those install steps.
Beyond Linux From Scratch users might have already libpng, which, icu, libffi, python, freetype, harfbuzz installed and should skip those install steps.
Or compile/install them again if earlier compiles did not include all dependencies listed above.

Installation documentation used.
rrdtool build instructions
LFS Book 7.7
BLFS Book 7.7

Package Installing:
ZLIB:
As per LFS 7.7 Book directive.

# ./configure --prefix=/usr
# make
# make install
# mv -v /usr/lib/libz.so.* /lib
# ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so

 
BZIP2
As per LFS 7.7 Book directive.

# sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
# make -f Makefile-libbz2_so
# make clean
# make
# make PREFIX=/usr install
# cp -v bzip2-shared /bin/bzip2
# cp -av libbz2.so* /lib
# ln -sv /lib/libbz2.so.1.0 /usr/lib/libbz2.so
# rm -v /usr/bin/{bunzip2,bzcat,bzip2}
# ln -sv bzip2 /bin/bunzip2
# ln -sv bzip2 /bin/bzcat

 
PKG-CONFIG
As per LFS 7.7 Book directive.

# ./configure --prefix=/usr --with-internal-glib --disable-host-tool --docdir=/usr/share/doc/pkg-config-0.28
# make
# make install

 
LIBPNG
As per BLFS 7.7 Book directive.

# gzip -cd ../libpng-1.6.16-apng.patch.gz | patch -p1
# ./configure --prefix=/usr --disable-static
# make
# make install
# mkdir -v /usr/share/doc/libpng-1.6.16
# cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.16

 
WHICH
As per BLFS 7.7 Book directive.

# ./configure --prefix=/usr
# make
# make install

 
ICU
As per BLFS 7.7 Book directive.

# cd source
# ./configure --prefix=/usr
# make
# make install

 
LIBFFI
As per BLFS 7.7 Book directive.

# sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' -i include/Makefile.in
# sed -e '/^includedir/ s/=.*$/=@includedir@/' -e 's/^Cflags: -I${includedir}/Cflags:/' -i libffi.pc.in
# ./configure --prefix=/usr --disable-static
# make
# make install

 
PYTHON
As per BLFS 7.7 Book directive.

# ./configure --prefix=/usr --enable-shared --with-system-expat --with-system-ffi --enable-unicode=ucs4
# make
# make install

 
FREETYPE
As per BLFS 7.7 Book directive.

# sed -i -r 's:.*(#.*SUBPIXEL.*) .*:\1:' include/freetype/config/ftoption.h
(the line above is optional see blfs book for details. patent stuff)
# ./configure --prefix=/usr --disable-static
# make
# make install

 
HARFBUZZ
As per BLFS 7.7 Book directive.

# ./configure --prefix=/usr --with-gobject
# make
# make install

 
FREETYPE (again to satisfy cyclic dependency with harfbuzz)
As per BLFS 7.7 Book directive.

# sed -i -r 's:.*(#.*SUBPIXEL.*) .*:\1:' include/freetype/config/ftoption.h
(the line above is optional see blfs book for details. patent stuff)
# ./configure --prefix=/usr --disable-static
# make
# make install

 
LIBART
(libart used to be in BLFS book but is no longer present in versions > 6.3)

# ./configure --prefix=/usr
# make
# make install

 
RRDTOOL
As per rrdtool build directive.
(–disable-tcl –disable-python are optional.)

# ./configure --prefix=/usr --disable-tcl
# make clean
# make
# make install

Done !
You now have rrdtool without cairo/pango.

Goto Part 2 RRDTool PHP plugin

Happy graphing 🙂