aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2012-05-13 13:14:12 +0000
committerKoen Kooi <koen@dominion.thruhere.net>2012-05-14 16:01:59 +0200
commitfbfa12572611748c87c8d1f63aab5ae355b86571 (patch)
tree253d41f8f973aa60c6e29e07c3ef95631608f0d3
parentfa7187883442441467087c3a954f9f40ee516d78 (diff)
downloadmeta-openembedded-contrib-fbfa12572611748c87c8d1f63aab5ae355b86571.tar.gz
rrdtool: add 1.4.7
All binding are disabled since they are not safe for cross-compilation. Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-rw-r--r--meta-oe/recipes-extended/rrdtool/rrdtool/0001-rrdtool-eradicate-tcl-support.patch1733
-rw-r--r--meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb33
2 files changed, 1766 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/rrdtool/rrdtool/0001-rrdtool-eradicate-tcl-support.patch b/meta-oe/recipes-extended/rrdtool/rrdtool/0001-rrdtool-eradicate-tcl-support.patch
new file mode 100644
index 0000000000..1157dc7201
--- /dev/null
+++ b/meta-oe/recipes-extended/rrdtool/rrdtool/0001-rrdtool-eradicate-tcl-support.patch
@@ -0,0 +1,1733 @@
+From 2dcb4bb8aadfead3e77bdb78b96ec8022e605a0d Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sat, 12 May 2012 20:41:35 +0200
+Subject: [PATCH] rrdtool: eradicate tcl support
+
+TCL breaks autoreconf
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ Makefile.am | 3 -
+ bindings/Makefile.am | 5 +-
+ bindings/tcl/Makefile.am | 58 ----
+ bindings/tcl/Makefile.in | 668 ------------------------------------
+ bindings/tcl/README | 31 --
+ bindings/tcl/ifOctets.tcl.in | 45 ---
+ bindings/tcl/tclrrd.c | 762 ------------------------------------------
+ configure.ac | 54 ---
+ 8 files changed, 1 insertion(+), 1625 deletions(-)
+ delete mode 100644 bindings/tcl/Makefile.am
+ delete mode 100644 bindings/tcl/Makefile.in
+ delete mode 100644 bindings/tcl/README
+ delete mode 100644 bindings/tcl/ifOctets.tcl.in
+ delete mode 100644 bindings/tcl/tclrrd.c
+
+diff --git a/Makefile.am b/Makefile.am
+index 2003373..969e36b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -36,9 +36,6 @@ site-perl-install: all bindings/perl-piped/Makefile bindings/perl-shared/Makefil
+ cd bindings/perl-piped && $(MAKE) install
+ cd bindings/perl-shared && $(MAKE) install
+
+-site-tcl-install: all
+- cd bindings/tcl && $(MAKE) tcl-install
+-
+ site-python-install: all
+ cd bindings/python && $(PYTHON) setup.py install $(if $(DESTDIR),--root=$(DESTDIR))
+
+diff --git a/bindings/Makefile.am b/bindings/Makefile.am
+index c4fdc10..3574a60 100644
+--- a/bindings/Makefile.am
++++ b/bindings/Makefile.am
+@@ -1,13 +1,10 @@
+ .PHONY: python ruby
+
+-if BUILD_TCL
+-SUB_tcl = tcl
+-endif
+ if BUILD_LUA
+ SUB_lua = lua
+ endif
+
+-SUBDIRS = $(SUB_tcl) $(SUB_lua)
++SUBDIRS = $(SUB_lua)
+
+ # the following files are not mentioned in any other Makefile
+ EXTRA_DIST = perl-piped/MANIFEST perl-piped/README perl-piped/Makefile.PL perl-piped/RRDp.pm perl-piped/t/base.t \
+diff --git a/bindings/tcl/Makefile.am b/bindings/tcl/Makefile.am
+deleted file mode 100644
+index c0e8b0f..0000000
+--- a/bindings/tcl/Makefile.am
++++ /dev/null
+@@ -1,58 +0,0 @@
+-
+-EXTRA_DIST = README tclrrd.c
+-
+-VERSION = @VERSION@
+-
+-AM_CFLAGS = @CFLAGS@
+-### no including this by default @WERROR@
+-
+-TCL_PREFIX = @TCL_PREFIX@
+-TCL_SHLIB_LD = @TCL_SHLIB_LD@
+-TCL_SHLIB_CFLAGS = @TCL_SHLIB_CFLAGS@
+-TCL_SHLIB_SUFFIX = @TCL_SHLIB_SUFFIX@
+-TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@
+-TCL_LD_SEARCH_FLAGS = @TCL_LD_SEARCH_FLAGS@
+-TCL_STUB_LIB_SPEC = @TCL_STUB_LIB_SPEC@
+-TCL_INCLUDE_SPEC = @TCL_INCLUDE_SPEC@
+-
+-CLEANFILES = tclrrd.o tclrrd.so
+-
+-SRC_DIR = $(top_srcdir)/src
+-AM_CPPFLAGS = $(TCL_INCLUDE_SPEC) -I$(SRC_DIR) -DUSE_TCL_STUBS
+-LIBDIRS = -L$(top_builddir)/src/.libs -L$(top_builddir)/src -L$(libdir)
+-LIB_RUNTIME_DIR = $(libdir)
+-
+-if BUILD_TCL_SITE
+-tclpkgdir = @TCL_PACKAGE_DIR@
+-tclpkg_DATA = pkgIndex.tcl
+-tclpkg_SCRIPTS = ifOctets.tcl
+-else
+-pkglib_DATA = pkgIndex.tcl
+-pkglib_SCRIPTS = ifOctets.tcl
+-endif
+-
+-# Automake doen't like `tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)' as
+-# library name. So we build and install this library `by hand'.
+-#
+-# We do, however, specify a lib_LIBRARIES target such that
+-# automake creates the directory (if neecessary).
+-#
+-TCL_RRD_LIB = tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)
+-
+-lib_LIBRARIES =
+-
+-all-local: $(TCL_RRD_LIB)
+-
+-$(TCL_RRD_LIB): tclrrd.o
+- $(TCL_SHLIB_LD) $(TCL_LD_SEARCH_FLAGS) $(LIBDIRS) $< -o $@ -lrrd_th -lm $(TCL_STUB_LIB_SPEC) $(LDFLAGS) $(LIBS)
+-
+-tclrrd.o: tclrrd.c
+- $(CC) $(AM_CFLAGS) $(CFLAGS) $(TCL_SHLIB_CFLAGS) $(AM_CPPFLAGS) -c tclrrd.c -DVERSION=\"$(VERSION)\"
+-
+-pkgIndex.tcl:
+- echo "package ifneeded Rrd $(VERSION) \"load $(libdir)/tclrrd$(VERSION)[info sharedlibextension]\"" > $@
+-
+-install-exec-local: $(TCL_RRD_LIB)
+- @$(NORMAL_INSTALL)
+- $(INSTALL_PROGRAM) $(TCL_RRD_LIB) $(DESTDIR)$(libdir)/$(TCL_RRD_LIB)
+-
+diff --git a/bindings/tcl/Makefile.in b/bindings/tcl/Makefile.in
+deleted file mode 100644
+index 0a36517..0000000
+--- a/bindings/tcl/Makefile.in
++++ /dev/null
+@@ -1,668 +0,0 @@
+-# Makefile.in generated by automake 1.11 from Makefile.am.
+-# @configure_input@
+-
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+-# Inc.
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-@SET_MAKE@
+-
+-
+-
+-VPATH = @srcdir@
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkglibexecdir = $(libexecdir)/@PACKAGE@
+-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-install_sh_DATA = $(install_sh) -c -m 644
+-install_sh_PROGRAM = $(install_sh) -c
+-install_sh_SCRIPT = $(install_sh) -c
+-INSTALL_HEADER = $(INSTALL_DATA)
+-transform = $(program_transform_name)
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-build_triplet = @build@
+-host_triplet = @host@
+-target_triplet = @target@
+-subdir = bindings/tcl
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+- $(srcdir)/ifOctets.tcl.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+- $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+- $(top_srcdir)/configure.ac
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/rrd_config.h
+-CONFIG_CLEAN_FILES = ifOctets.tcl
+-CONFIG_CLEAN_VPATH_FILES =
+-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+-am__vpath_adj = case $$p in \
+- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+- *) f=$$p;; \
+- esac;
+-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+-am__install_max = 40
+-am__nobase_strip_setup = \
+- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+-am__nobase_strip = \
+- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+-am__nobase_list = $(am__nobase_strip_setup); \
+- for p in $$list; do echo "$$p $$p"; done | \
+- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+- if (++n[$$2] == $(am__install_max)) \
+- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+- END { for (dir in files) print dir, files[dir] }'
+-am__base_list = \
+- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" \
+- "$(DESTDIR)$(tclpkgdir)" "$(DESTDIR)$(pkglibdir)" \
+- "$(DESTDIR)$(tclpkgdir)"
+-LIBRARIES = $(lib_LIBRARIES)
+-SCRIPTS = $(pkglib_SCRIPTS) $(tclpkg_SCRIPTS)
+-AM_V_GEN = $(am__v_GEN_$(V))
+-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+-am__v_GEN_0 = @echo " GEN " $@;
+-AM_V_at = $(am__v_at_$(V))
+-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+-am__v_at_0 = @
+-SOURCES =
+-DIST_SOURCES =
+-DATA = $(pkglib_DATA) $(tclpkg_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-ACLOCAL = @ACLOCAL@
+-ALL_LIBS = @ALL_LIBS@
+-AMTAR = @AMTAR@
+-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+-AR = @AR@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-AUTOMAKE = @AUTOMAKE@
+-AWK = @AWK@
+-CC = @CC@
+-CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
+-COMP_LUA = @COMP_LUA@
+-COMP_PERL = @COMP_PERL@
+-COMP_PYTHON = @COMP_PYTHON@
+-COMP_RUBY = @COMP_RUBY@
+-CORE_LIBS = @CORE_LIBS@
+-CPP = @CPP@
+-CPPFLAGS = @CPPFLAGS@
+-CYGPATH_W = @CYGPATH_W@
+-DEFS = @DEFS@
+-DEPDIR = @DEPDIR@
+-DSYMUTIL = @DSYMUTIL@
+-DUMPBIN = @DUMPBIN@
+-ECHO_C = @ECHO_C@
+-ECHO_N = @ECHO_N@
+-ECHO_T = @ECHO_T@
+-EGREP = @EGREP@
+-EXEEXT = @EXEEXT@
+-FGREP = @FGREP@
+-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+-GMSGFMT = @GMSGFMT@
+-GMSGFMT_015 = @GMSGFMT_015@
+-GREP = @GREP@
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+-INTLLIBS = @INTLLIBS@
+-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+-LD = @LD@
+-LDFLAGS = @LDFLAGS@
+-LIBICONV = @LIBICONV@
+-LIBINTL = @LIBINTL@
+-LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
+-LIBTOOL = @LIBTOOL@
+-LIBVERS = @LIBVERS@
+-LIPO = @LIPO@
+-LN_S = @LN_S@
+-LTLIBICONV = @LTLIBICONV@
+-LTLIBINTL = @LTLIBINTL@
+-LTLIBOBJS = @LTLIBOBJS@
+-LUA = @LUA@
+-LUA_CFLAGS = @LUA_CFLAGS@
+-LUA_DEFINES = @LUA_DEFINES@
+-LUA_INSTALL_CMOD = @LUA_INSTALL_CMOD@
+-LUA_INSTALL_LMOD = @LUA_INSTALL_LMOD@
+-LUA_LFLAGS = @LUA_LFLAGS@
+-MAINT = @MAINT@
+-MAKEINFO = @MAKEINFO@
+-MKDIR_P = @MKDIR_P@
+-MSGFMT = @MSGFMT@
+-MSGFMT_015 = @MSGFMT_015@
+-MSGMERGE = @MSGMERGE@
+-MULTITHREAD_CFLAGS = @MULTITHREAD_CFLAGS@
+-MULTITHREAD_LDFLAGS = @MULTITHREAD_LDFLAGS@
+-NM = @NM@
+-NMEDIT = @NMEDIT@
+-NROFF = @NROFF@
+-NUMVERS = @NUMVERS@
+-OBJDUMP = @OBJDUMP@
+-OBJEXT = @OBJEXT@
+-OTOOL = @OTOOL@
+-OTOOL64 = @OTOOL64@
+-PACKAGE = @PACKAGE@
+-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+-PACKAGE_NAME = @PACKAGE_NAME@
+-PACKAGE_STRING = @PACKAGE_STRING@
+-PACKAGE_TARNAME = @PACKAGE_TARNAME@
+-PACKAGE_VERSION = @PACKAGE_VERSION@
+-PATH_SEPARATOR = @PATH_SEPARATOR@
+-PERL = @PERL@
+-PERLCC = @PERLCC@
+-PERLCCFLAGS = @PERLCCFLAGS@
+-PERLFLAGS = @PERLFLAGS@
+-PERLLD = @PERLLD@
+-PERLLDFLAGS = @PERLLDFLAGS@
+-PERL_CC = @PERL_CC@
+-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
+-PERL_VERSION = @PERL_VERSION@
+-PKGCONFIG = @PKGCONFIG@
+-POD2HTML = @POD2HTML@
+-POD2MAN = @POD2MAN@
+-POSUB = @POSUB@
+-PTHREAD_CC = @PTHREAD_CC@
+-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+-PTHREAD_LIBS = @PTHREAD_LIBS@
+-PYTHON = @PYTHON@
+-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+-PYTHON_INCLUDES = @PYTHON_INCLUDES@
+-PYTHON_PLATFORM = @PYTHON_PLATFORM@
+-PYTHON_PREFIX = @PYTHON_PREFIX@
+-PYTHON_VERSION = @PYTHON_VERSION@
+-RANLIB = @RANLIB@
+-RRDDOCDIR = @RRDDOCDIR@
+-RRDGRAPH_YLEGEND_ANGLE = @RRDGRAPH_YLEGEND_ANGLE@
+-RRD_DEFAULT_FONT = @RRD_DEFAULT_FONT@
+-RRD_GETOPT_LONG = @RRD_GETOPT_LONG@
+-RUBY = @RUBY@
+-RUBY_MAKE_OPTIONS = @RUBY_MAKE_OPTIONS@
+-SED = @SED@
+-SET_MAKE = @SET_MAKE@
+-SHELL = @SHELL@
+-STRIP = @STRIP@
+-TCL_INCLUDE_SPEC = @TCL_INCLUDE_SPEC@
+-TCL_LD_SEARCH_FLAGS = @TCL_LD_SEARCH_FLAGS@
+-TCL_PACKAGE_DIR = @TCL_PACKAGE_DIR@
+-TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@
+-### no including this by default @WERROR@
+-TCL_PREFIX = @TCL_PREFIX@
+-TCL_SHLIB_CFLAGS = @TCL_SHLIB_CFLAGS@
+-TCL_SHLIB_LD = @TCL_SHLIB_LD@
+-TCL_SHLIB_SUFFIX = @TCL_SHLIB_SUFFIX@
+-TCL_STUB_LIB_SPEC = @TCL_STUB_LIB_SPEC@
+-TCL_VERSION = @TCL_VERSION@
+-TROFF = @TROFF@
+-USE_NLS = @USE_NLS@
+-VERSION = @VERSION@
+-WERROR = @WERROR@
+-XGETTEXT = @XGETTEXT@
+-XGETTEXT_015 = @XGETTEXT_015@
+-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+-abs_builddir = @abs_builddir@
+-abs_srcdir = @abs_srcdir@
+-abs_top_builddir = @abs_top_builddir@
+-abs_top_srcdir = @abs_top_srcdir@
+-ac_ct_CC = @ac_ct_CC@
+-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+-acx_pthread_config = @acx_pthread_config@
+-am__include = @am__include@
+-am__leading_dot = @am__leading_dot@
+-am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+-bindir = @bindir@
+-build = @build@
+-build_alias = @build_alias@
+-build_cpu = @build_cpu@
+-build_os = @build_os@
+-build_vendor = @build_vendor@
+-builddir = @builddir@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-docdir = @docdir@
+-dvidir = @dvidir@
+-exec_prefix = @exec_prefix@
+-host = @host@
+-host_alias = @host_alias@
+-host_cpu = @host_cpu@
+-host_os = @host_os@
+-host_vendor = @host_vendor@
+-htmldir = @htmldir@
+-includedir = @includedir@
+-infodir = @infodir@
+-install_sh = @install_sh@
+-libdir = @libdir@
+-libexecdir = @libexecdir@
+-localedir = @localedir@
+-localstatedir = @localstatedir@
+-lt_ECHO = @lt_ECHO@
+-mandir = @mandir@
+-mkdir_p = @mkdir_p@
+-oldincludedir = @oldincludedir@
+-pdfdir = @pdfdir@
+-pkgpyexecdir = @pkgpyexecdir@
+-pkgpythondir = @pkgpythondir@
+-prefix = @prefix@
+-program_transform_name = @program_transform_name@
+-psdir = @psdir@
+-pyexecdir = @pyexecdir@
+-pythondir = @pythondir@
+-sbindir = @sbindir@
+-sharedstatedir = @sharedstatedir@
+-srcdir = @srcdir@
+-sysconfdir = @sysconfdir@
+-target = @target@
+-target_alias = @target_alias@
+-target_cpu = @target_cpu@
+-target_os = @target_os@
+-target_vendor = @target_vendor@
+-top_build_prefix = @top_build_prefix@
+-top_builddir = @top_builddir@
+-top_srcdir = @top_srcdir@
+-EXTRA_DIST = README tclrrd.c
+-AM_CFLAGS = @CFLAGS@
+-CLEANFILES = tclrrd.o tclrrd.so
+-SRC_DIR = $(top_srcdir)/src
+-AM_CPPFLAGS = $(TCL_INCLUDE_SPEC) -I$(SRC_DIR) -DUSE_TCL_STUBS
+-LIBDIRS = -L$(top_builddir)/src/.libs -L$(top_builddir)/src -L$(libdir)
+-LIB_RUNTIME_DIR = $(libdir)
+-@BUILD_TCL_SITE_TRUE@tclpkgdir = @TCL_PACKAGE_DIR@
+-@BUILD_TCL_SITE_TRUE@tclpkg_DATA = pkgIndex.tcl
+-@BUILD_TCL_SITE_TRUE@tclpkg_SCRIPTS = ifOctets.tcl
+-@BUILD_TCL_SITE_FALSE@pkglib_DATA = pkgIndex.tcl
+-@BUILD_TCL_SITE_FALSE@pkglib_SCRIPTS = ifOctets.tcl
+-
+-# Automake doen't like `tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)' as
+-# library name. So we build and install this library `by hand'.
+-#
+-# We do, however, specify a lib_LIBRARIES target such that
+-# automake creates the directory (if neecessary).
+-#
+-TCL_RRD_LIB = tclrrd$(VERSION)$(TCL_SHLIB_SUFFIX)
+-lib_LIBRARIES =
+-all: all-am
+-
+-.SUFFIXES:
+-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+- && { if test -f $@; then exit 0; else break; fi; }; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bindings/tcl/Makefile'; \
+- $(am__cd) $(top_srcdir) && \
+- $(AUTOMAKE) --gnu bindings/tcl/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(am__aclocal_m4_deps):
+-ifOctets.tcl: $(top_builddir)/config.status $(srcdir)/ifOctets.tcl.in
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+-install-libLIBRARIES: $(lib_LIBRARIES)
+- @$(NORMAL_INSTALL)
+- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+- @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+- list2=; for p in $$list; do \
+- if test -f $$p; then \
+- list2="$$list2 $$p"; \
+- else :; fi; \
+- done; \
+- test -z "$$list2" || { \
+- echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+- $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+- @$(POST_INSTALL)
+- @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+- for p in $$list; do \
+- if test -f $$p; then \
+- $(am__strip_dir) \
+- echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+- ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+- else :; fi; \
+- done
+-
+-uninstall-libLIBRARIES:
+- @$(NORMAL_UNINSTALL)
+- @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+- test -n "$$files" || exit 0; \
+- echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
+- cd "$(DESTDIR)$(libdir)" && rm -f $$files
+-
+-clean-libLIBRARIES:
+- -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+-install-pkglibSCRIPTS: $(pkglib_SCRIPTS)
+- @$(NORMAL_INSTALL)
+- test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+- @list='$(pkglib_SCRIPTS)'; test -n "$(pkglibdir)" || list=; \
+- for p in $$list; do \
+- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+- done | \
+- sed -e 'p;s,.*/,,;n' \
+- -e 'h;s|.*|.|' \
+- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+- if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+- if (++n[d] == $(am__install_max)) { \
+- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+- else { print "f", d "/" $$4, $$1 } } \
+- END { for (d in files) print "f", d, files[d] }' | \
+- while read type dir files; do \
+- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+- test -z "$$files" || { \
+- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkglibdir)$$dir'"; \
+- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkglibdir)$$dir" || exit $$?; \
+- } \
+- ; done
+-
+-uninstall-pkglibSCRIPTS:
+- @$(NORMAL_UNINSTALL)
+- @list='$(pkglib_SCRIPTS)'; test -n "$(pkglibdir)" || exit 0; \
+- files=`for p in $$list; do echo "$$p"; done | \
+- sed -e 's,.*/,,;$(transform)'`; \
+- test -n "$$list" || exit 0; \
+- echo " ( cd '$(DESTDIR)$(pkglibdir)' && rm -f" $$files ")"; \
+- cd "$(DESTDIR)$(pkglibdir)" && rm -f $$files
+-install-tclpkgSCRIPTS: $(tclpkg_SCRIPTS)
+- @$(NORMAL_INSTALL)
+- test -z "$(tclpkgdir)" || $(MKDIR_P) "$(DESTDIR)$(tclpkgdir)"
+- @list='$(tclpkg_SCRIPTS)'; test -n "$(tclpkgdir)" || list=; \
+- for p in $$list; do \
+- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+- done | \
+- sed -e 'p;s,.*/,,;n' \
+- -e 'h;s|.*|.|' \
+- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+- if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+- if (++n[d] == $(am__install_max)) { \
+- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+- else { print "f", d "/" $$4, $$1 } } \
+- END { for (d in files) print "f", d, files[d] }' | \
+- while read type dir files; do \
+- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+- test -z "$$files" || { \
+- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(tclpkgdir)$$dir'"; \
+- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(tclpkgdir)$$dir" || exit $$?; \
+- } \
+- ; done
+-
+-uninstall-tclpkgSCRIPTS:
+- @$(NORMAL_UNINSTALL)
+- @list='$(tclpkg_SCRIPTS)'; test -n "$(tclpkgdir)" || exit 0; \
+- files=`for p in $$list; do echo "$$p"; done | \
+- sed -e 's,.*/,,;$(transform)'`; \
+- test -n "$$list" || exit 0; \
+- echo " ( cd '$(DESTDIR)$(tclpkgdir)' && rm -f" $$files ")"; \
+- cd "$(DESTDIR)$(tclpkgdir)" && rm -f $$files
+-
+-mostlyclean-libtool:
+- -rm -f *.lo
+-
+-clean-libtool:
+- -rm -rf .libs _libs
+-install-pkglibDATA: $(pkglib_DATA)
+- @$(NORMAL_INSTALL)
+- test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+- @list='$(pkglib_DATA)'; test -n "$(pkglibdir)" || list=; \
+- for p in $$list; do \
+- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+- echo "$$d$$p"; \
+- done | $(am__base_list) | \
+- while read files; do \
+- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkglibdir)'"; \
+- $(INSTALL_DATA) $$files "$(DESTDIR)$(pkglibdir)" || exit $$?; \
+- done
+-
+-uninstall-pkglibDATA:
+- @$(NORMAL_UNINSTALL)
+- @list='$(pkglib_DATA)'; test -n "$(pkglibdir)" || list=; \
+- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+- test -n "$$files" || exit 0; \
+- echo " ( cd '$(DESTDIR)$(pkglibdir)' && rm -f" $$files ")"; \
+- cd "$(DESTDIR)$(pkglibdir)" && rm -f $$files
+-install-tclpkgDATA: $(tclpkg_DATA)
+- @$(NORMAL_INSTALL)
+- test -z "$(tclpkgdir)" || $(MKDIR_P) "$(DESTDIR)$(tclpkgdir)"
+- @list='$(tclpkg_DATA)'; test -n "$(tclpkgdir)" || list=; \
+- for p in $$list; do \
+- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+- echo "$$d$$p"; \
+- done | $(am__base_list) | \
+- while read files; do \
+- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tclpkgdir)'"; \
+- $(INSTALL_DATA) $$files "$(DESTDIR)$(tclpkgdir)" || exit $$?; \
+- done
+-
+-uninstall-tclpkgDATA:
+- @$(NORMAL_UNINSTALL)
+- @list='$(tclpkg_DATA)'; test -n "$(tclpkgdir)" || list=; \
+- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+- test -n "$$files" || exit 0; \
+- echo " ( cd '$(DESTDIR)$(tclpkgdir)' && rm -f" $$files ")"; \
+- cd "$(DESTDIR)$(tclpkgdir)" && rm -f $$files
+-tags: TAGS
+-TAGS:
+-
+-ctags: CTAGS
+-CTAGS:
+-
+-
+-distdir: $(DISTFILES)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+- list='$(DISTFILES)'; \
+- dist_files=`for file in $$list; do echo $$file; done | \
+- sed -e "s|^$$srcdirstrip/||;t" \
+- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+- case $$dist_files in \
+- */*) $(MKDIR_P) `echo "$$dist_files" | \
+- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+- sort -u` ;; \
+- esac; \
+- for file in $$dist_files; do \
+- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+- if test -d $$d/$$file; then \
+- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test -d "$(distdir)/$$file"; then \
+- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+- fi; \
+- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+- fi; \
+- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+- else \
+- test -f "$(distdir)/$$file" \
+- || cp -p $$d/$$file "$(distdir)/$$file" \
+- || exit 1; \
+- fi; \
+- done
+-check-am: all-am
+-check: check-am
+-all-am: Makefile $(LIBRARIES) $(SCRIPTS) $(DATA) all-local
+-installdirs:
+- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(tclpkgdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(tclpkgdir)"; do \
+- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+- done
+-install: install-am
+-install-exec: install-exec-am
+-install-data: install-data-am
+-uninstall: uninstall-am
+-
+-install-am: all-am
+- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-
+-installcheck: installcheck-am
+-install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+- `test -z '$(STRIP)' || \
+- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+-mostlyclean-generic:
+-
+-clean-generic:
+- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+-
+-distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+-
+-maintainer-clean-generic:
+- @echo "This command is intended for maintainers to use"
+- @echo "it deletes files that may require special tools to rebuild."
+-clean: clean-am
+-
+-clean-am: clean-generic clean-libLIBRARIES clean-libtool \
+- mostlyclean-am
+-
+-distclean: distclean-am
+- -rm -f Makefile
+-distclean-am: clean-am distclean-generic
+-
+-dvi: dvi-am
+-
+-dvi-am:
+-
+-html: html-am
+-
+-html-am:
+-
+-info: info-am
+-
+-info-am:
+-
+-install-data-am: install-tclpkgDATA install-tclpkgSCRIPTS
+-
+-install-dvi: install-dvi-am
+-
+-install-dvi-am:
+-
+-install-exec-am: install-exec-local install-libLIBRARIES \
+- install-pkglibDATA install-pkglibSCRIPTS
+-
+-install-html: install-html-am
+-
+-install-html-am:
+-
+-install-info: install-info-am
+-
+-install-info-am:
+-
+-install-man:
+-
+-install-pdf: install-pdf-am
+-
+-install-pdf-am:
+-
+-install-ps: install-ps-am
+-
+-install-ps-am:
+-
+-installcheck-am:
+-
+-maintainer-clean: maintainer-clean-am
+- -rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+-
+-pdf: pdf-am
+-
+-pdf-am:
+-
+-ps: ps-am
+-
+-ps-am:
+-
+-uninstall-am: uninstall-libLIBRARIES uninstall-pkglibDATA \
+- uninstall-pkglibSCRIPTS uninstall-tclpkgDATA \
+- uninstall-tclpkgSCRIPTS
+-
+-.MAKE: install-am install-strip
+-
+-.PHONY: all all-am all-local check check-am clean clean-generic \
+- clean-libLIBRARIES clean-libtool distclean distclean-generic \
+- distclean-libtool distdir dvi dvi-am html html-am info info-am \
+- install install-am install-data install-data-am install-dvi \
+- install-dvi-am install-exec install-exec-am install-exec-local \
+- install-html install-html-am install-info install-info-am \
+- install-libLIBRARIES install-man install-pdf install-pdf-am \
+- install-pkglibDATA install-pkglibSCRIPTS install-ps \
+- install-ps-am install-strip install-tclpkgDATA \
+- install-tclpkgSCRIPTS installcheck installcheck-am installdirs \
+- maintainer-clean maintainer-clean-generic mostlyclean \
+- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+- uninstall uninstall-am uninstall-libLIBRARIES \
+- uninstall-pkglibDATA uninstall-pkglibSCRIPTS \
+- uninstall-tclpkgDATA uninstall-tclpkgSCRIPTS
+-
+-
+-all-local: $(TCL_RRD_LIB)
+-
+-$(TCL_RRD_LIB): tclrrd.o
+- $(TCL_SHLIB_LD) $(TCL_LD_SEARCH_FLAGS) $(LIBDIRS) $< -o $@ -lrrd_th -lm $(TCL_STUB_LIB_SPEC) $(LDFLAGS) $(LIBS)
+-
+-tclrrd.o: tclrrd.c
+- $(CC) $(AM_CFLAGS) $(CFLAGS) $(TCL_SHLIB_CFLAGS) $(AM_CPPFLAGS) -c tclrrd.c -DVERSION=\"$(VERSION)\"
+-
+-pkgIndex.tcl:
+- echo "package ifneeded Rrd $(VERSION) \"load $(libdir)/tclrrd$(VERSION)[info sharedlibextension]\"" > $@
+-
+-install-exec-local: $(TCL_RRD_LIB)
+- @$(NORMAL_INSTALL)
+- $(INSTALL_PROGRAM) $(TCL_RRD_LIB) $(DESTDIR)$(libdir)/$(TCL_RRD_LIB)
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/bindings/tcl/README b/bindings/tcl/README
+deleted file mode 100644
+index 065a03a..0000000
+--- a/bindings/tcl/README
++++ /dev/null
+@@ -1,31 +0,0 @@
+-TCLRRD -- A TCL interpreter extension to access the RRD library,
+- contributed to Tobias Oetiker's RRD tools.
+-
+-Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig.
+-
+-See the file "COPYING" for information on usage and redistribution
+-of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+-
+-TCLRRD adds a dynamically loadable package to the Tcl 8.x interpreter
+-to access all RRD functions as of RRDtool 1.0.13. All command names
+-and arguments are equal to those of RRDtool. They are assigned to the
+-namespace `Rrd', e.g. `Rrd::create'. Return values are a bit
+-different from plain RRDtool behavior to enable more native Tcl
+-usage. Errors are mapped to the TCL_ERROR return code together with
+-the RRD error strings.
+-
+-TCLRRD makes it easy to combine RRD use with advanced SNMP functionality
+-of scotty (http://wwwsnmp.cs.utwente.nl/~schoenw/scotty/). E.g., it's easy
+-to use some scotty code to get the counters of some interfaces by their
+-interface name and then use Rrd::update to store the values. Furthermore,
+-data source types (see RRD::create documentation) and integer value ranges
+-could be easily retrieved from MIB information.
+-
+-TCLRRD has been written on a Linux system for use with Tcl 8.x. It should
+-work on many other platforms, although it has not been tested. There are
+-no fool proof installation procedures. Take a look at Makefile.am and
+-adapt it, if required.
+-
+-TCLRRD has been written for RRD 1.0.13.
+-
+- Frank Strauss <strauss@ibr.cs.tu-bs.de>, 09-Mar-2000
+diff --git a/bindings/tcl/ifOctets.tcl.in b/bindings/tcl/ifOctets.tcl.in
+deleted file mode 100644
+index 7a36397..0000000
+--- a/bindings/tcl/ifOctets.tcl.in
++++ /dev/null
+@@ -1,45 +0,0 @@
+-#!/bin/sh
+-# the next line restarts using tclsh -*- tcl -*- \
+-exec tclsh@TCL_VERSION@ "$0" "$@"
+-
+-#package require Tnm 3.0
+-package require Rrd @VERSION@
+-
+-set rrdfile "[lindex $argv 0]-[lindex $argv 1].rrd"
+-
+-# create rrdfile if not yet existent
+-if {[file exists $rrdfile] == 0} {
+- Rrd::create $rrdfile --step 5 \
+- DS:inOctets:COUNTER:10:U:U DS:outOctets:COUNTER:10:U:U \
+- RRA:AVERAGE:0.5:1:12
+-}
+-
+-# get an snmp session context
+-set session [Tnm::snmp generator -address [lindex $argv 0]]
+-
+-# walk through the ifDescr column to find the right interface
+-$session walk descr IF-MIB!ifDescr {
+-
+- # is this the right interface?
+- if {"[Tnm::snmp value $descr 0]" == "[lindex $argv 1]"} {
+-
+- # get the instance part of this table row
+- set inst [lindex [Tnm::mib split [Tnm::snmp oid $descr 0]] 1]
+-
+- # get the two interface's octet counter values
+- set in [lindex [lindex [$session get IF-MIB!ifInOctets.$inst] 0] 2]
+- set out [lindex [lindex [$session get IF-MIB!ifOutOctets.$inst] 0] 2]
+-
+- # write the values to the rrd
+- puts "$in $out"
+- Rrd::update $rrdfile --template inOctets:outOctets N:$in:$out
+-
+- Rrd::graph gaga.png --title "gaga" \
+- DEF:in=$rrdfile:inOctets:AVERAGE \
+- DEF:out=$rrdfile:outOctets:AVERAGE \
+- AREA:in#0000FF:inOctets \
+- LINE2:out#00C000:outOctets
+-
+- #puts [Rrd::fetch $rrdfile AVERAGE]
+- }
+-}
+diff --git a/bindings/tcl/tclrrd.c b/bindings/tcl/tclrrd.c
+deleted file mode 100644
+index f1f0234..0000000
+--- a/bindings/tcl/tclrrd.c
++++ /dev/null
+@@ -1,762 +0,0 @@
+-/*
+- * tclrrd.c -- A TCL interpreter extension to access the RRD library.
+- *
+- * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig.
+- *
+- * Thread-safe code copyright (c) 2005 Oleg Derevenetz, CenterTelecom Voronezh ISP.
+- *
+- * See the file "COPYING" for information on usage and redistribution
+- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+- *
+- * $Id: tclrrd.c 1854 2009-06-07 14:46:21Z oetiker $
+- */
+-
+-
+-
+-#include <errno.h>
+-#include <string.h>
+-#include <time.h>
+-#include <unistd.h>
+-#include <tcl.h>
+-#include <stdlib.h>
+-#include "../../src/rrd_tool.h"
+-#include "../../src/rrd_format.h"
+-
+-/* support pre-8.4 tcl */
+-
+-#ifndef CONST84
+-# define CONST84
+-#endif
+-
+-extern int Tclrrd_Init(
+- Tcl_Interp *interp);
+-extern int Tclrrd_SafeInit(
+- Tcl_Interp *interp);
+-
+-
+-/*
+- * some rrd_XXX() and new thread-safe versions of Rrd_XXX()
+- * functions might modify the argv strings passed to it.
+- * Hence, we need to do some preparation before
+- * calling the rrd library functions.
+- */
+-static char **getopt_init(
+- int argc,
+- CONST84 char *argv[])
+-{
+- char **argv2;
+- int i;
+-
+- argv2 = calloc(argc, sizeof(char *));
+- for (i = 0; i < argc; i++) {
+- argv2[i] = strdup(argv[i]);
+- }
+- return argv2;
+-}
+-
+-static void getopt_cleanup(
+- int argc,
+- char **argv2)
+-{
+- int i;
+-
+- for (i = 0; i < argc; i++) {
+- if (argv2[i] != NULL) {
+- free(argv2[i]);
+- }
+- }
+- free(argv2);
+-}
+-
+-static void getopt_free_element(
+- char *argv2[],
+- int argn)
+-{
+- if (argv2[argn] != NULL) {
+- free(argv2[argn]);
+- argv2[argn] = NULL;
+- }
+-}
+-
+-static void getopt_squieeze(
+- int *argc,
+- char *argv2[])
+-{
+- int i, null_i = 0, argc_tmp = *argc;
+-
+- for (i = 0; i < argc_tmp; i++) {
+- if (argv2[i] == NULL) {
+- (*argc)--;
+- } else {
+- argv2[null_i++] = argv2[i];
+- }
+- }
+-}
+-
+-
+-
+-/* Thread-safe version */
+-static int Rrd_Create(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- int argv_i;
+- char **argv2;
+- char *parsetime_error = NULL;
+- time_t last_up = time(NULL) - 10;
+- long int long_tmp;
+- unsigned long int pdp_step = 300;
+- rrd_time_value_t last_up_tv;
+-
+- argv2 = getopt_init(argc, argv);
+-
+- for (argv_i = 1; argv_i < argc; argv_i++) {
+- if (!strcmp(argv2[argv_i], "--start") || !strcmp(argv2[argv_i], "-b")) {
+- if (argv_i++ >= argc) {
+- Tcl_AppendResult(interp, "RRD Error: option '",
+- argv2[argv_i - 1], "' needs an argument",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- if ((parsetime_error = rrd_parsetime(argv2[argv_i], &last_up_tv))) {
+- Tcl_AppendResult(interp, "RRD Error: invalid time format: '",
+- argv2[argv_i], "'", (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- if (last_up_tv.type == RELATIVE_TO_END_TIME ||
+- last_up_tv.type == RELATIVE_TO_START_TIME) {
+- Tcl_AppendResult(interp,
+- "RRD Error: specifying time relative to the 'start' ",
+- "or 'end' makes no sense here",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- last_up = mktime(&last_up_tv.tm) +last_up_tv.offset;
+- if (last_up < 3600 * 24 * 365 * 10) {
+- Tcl_AppendResult(interp,
+- "RRD Error: the first entry to the RRD should be after 1980",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- getopt_free_element(argv2, argv_i - 1);
+- getopt_free_element(argv2, argv_i);
+- } else if (!strcmp(argv2[argv_i], "--step")
+- || !strcmp(argv2[argv_i], "-s")) {
+- if (argv_i++ >= argc) {
+- Tcl_AppendResult(interp, "RRD Error: option '",
+- argv2[argv_i - 1], "' needs an argument",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- long_tmp = atol(argv2[argv_i]);
+- if (long_tmp < 1) {
+- Tcl_AppendResult(interp,
+- "RRD Error: step size should be no less than one second",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- pdp_step = long_tmp;
+- getopt_free_element(argv2, argv_i - 1);
+- getopt_free_element(argv2, argv_i);
+- } else if (!strcmp(argv2[argv_i], "--")) {
+- getopt_free_element(argv2, argv_i);
+- break;
+- } else if (argv2[argv_i][0] == '-') {
+- Tcl_AppendResult(interp, "RRD Error: unknown option '",
+- argv2[argv_i], "'", (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- }
+-
+- getopt_squieeze(&argc, argv2);
+-
+- if (argc < 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+- (char *) NULL);
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+-
+- rrd_create_r(argv2[1], pdp_step, last_up, argc - 2,
+- (const char **)argv2 + 2);
+-
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-/* Thread-safe version */
+-static int Rrd_Dump(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- if (argc < 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+- (char *) NULL);
+- return TCL_ERROR;
+- }
+-
+- rrd_dump_r(argv[1], NULL);
+-
+- /* NOTE: rrd_dump() writes to stdout. No interaction with TCL. */
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-/* Thread-safe version */
+-static int Rrd_Flushcached(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- if (argc < 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+- (char *) NULL);
+- return TCL_ERROR;
+- }
+-
+- rrd_flushcached(argc, (char**)argv);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-/* Thread-safe version */
+-static int Rrd_Last(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- time_t t;
+-
+- if (argc < 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+- (char *) NULL);
+- return TCL_ERROR;
+- }
+-
+- t = rrd_last_r(argv[1]);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- Tcl_SetIntObj(Tcl_GetObjResult(interp), t);
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-/* Thread-safe version */
+-static int Rrd_Update(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- int argv_i;
+- char **argv2, *template = NULL;
+-
+- argv2 = getopt_init(argc, argv);
+-
+- for (argv_i = 1; argv_i < argc; argv_i++) {
+- if (!strcmp(argv2[argv_i], "--template")
+- || !strcmp(argv2[argv_i], "-t")) {
+- if (argv_i++ >= argc) {
+- Tcl_AppendResult(interp, "RRD Error: option '",
+- argv2[argv_i - 1], "' needs an argument",
+- (char *) NULL);
+- if (template != NULL) {
+- free(template);
+- }
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- if (template != NULL) {
+- free(template);
+- }
+- template = strdup(argv2[argv_i]);
+- getopt_free_element(argv2, argv_i - 1);
+- getopt_free_element(argv2, argv_i);
+- } else if (!strcmp(argv2[argv_i], "--")) {
+- getopt_free_element(argv2, argv_i);
+- break;
+- } else if (argv2[argv_i][0] == '-') {
+- Tcl_AppendResult(interp, "RRD Error: unknown option '",
+- argv2[argv_i], "'", (char *) NULL);
+- if (template != NULL) {
+- free(template);
+- }
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+- }
+-
+- getopt_squieeze(&argc, argv2);
+-
+- if (argc < 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+- (char *) NULL);
+- if (template != NULL) {
+- free(template);
+- }
+- getopt_cleanup(argc, argv2);
+- return TCL_ERROR;
+- }
+-
+- rrd_update_r(argv2[1], template, argc - 2, (const char **)argv2 + 2);
+-
+- if (template != NULL) {
+- free(template);
+- }
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-static int Rrd_Lastupdate(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- time_t last_update;
+- char **argv2;
+- char **ds_namv;
+- char **last_ds;
+- char s[30];
+- Tcl_Obj *listPtr;
+- unsigned long ds_cnt, i;
+-
+- /* TODO: support for rrdcached */
+- if (argc != 2) {
+- Tcl_AppendResult(interp, "RRD Error: needs a single rrd filename",
+- (char *) NULL);
+- return TCL_ERROR;
+- }
+-
+- argv2 = getopt_init(argc, argv);
+- if (rrd_lastupdate_r(argv2[1], &last_update,
+- &ds_cnt, &ds_namv, &last_ds) == 0) {
+- listPtr = Tcl_GetObjResult(interp);
+- for (i = 0; i < ds_cnt; i++) {
+- sprintf(s, " %28s", ds_namv[i]);
+- Tcl_ListObjAppendElement(interp, listPtr,
+- Tcl_NewStringObj(s, -1));
+- sprintf(s, "\n\n%10lu:", last_update);
+- Tcl_ListObjAppendElement(interp, listPtr,
+- Tcl_NewStringObj(s, -1));
+- for (i = 0; i < ds_cnt; i++) {
+- sprintf(s, " %s", last_ds[i]);
+- Tcl_ListObjAppendElement(interp, listPtr,
+- Tcl_NewStringObj(s, -1));
+- free(last_ds[i]);
+- free(ds_namv[i]);
+- }
+- sprintf(s, "\n");
+- Tcl_ListObjAppendElement(interp, listPtr,
+- Tcl_NewStringObj(s, -1));
+- free(last_ds);
+- free(ds_namv);
+- }
+- }
+- return TCL_OK;
+-}
+-
+-static int Rrd_Fetch(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- time_t start, end, j;
+- unsigned long step, ds_cnt, i, ii;
+- rrd_value_t *data, *datai;
+- char **ds_namv;
+- Tcl_Obj *listPtr;
+- char s[30];
+- char **argv2;
+-
+- argv2 = getopt_init(argc, argv);
+- if (rrd_fetch(argc, argv2, &start, &end, &step,
+- &ds_cnt, &ds_namv, &data) != -1) {
+- datai = data;
+- listPtr = Tcl_GetObjResult(interp);
+- for (j = start; j <= end; j += step) {
+- for (ii = 0; ii < ds_cnt; ii++) {
+- sprintf(s, "%.2f", *(datai++));
+- Tcl_ListObjAppendElement(interp, listPtr,
+- Tcl_NewStringObj(s, -1));
+- }
+- }
+- for (i = 0; i < ds_cnt; i++)
+- free(ds_namv[i]);
+- free(ds_namv);
+- free(data);
+- }
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-static int Rrd_Graph(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- Tcl_Channel channel;
+- int mode, fd2;
+- ClientData fd1;
+- FILE *stream = NULL;
+- char **calcpr = NULL;
+- int rc, xsize, ysize;
+- double ymin, ymax;
+- char dimensions[50];
+- char **argv2;
+- CONST84 char *save;
+-
+- /*
+- * If the "filename" is a Tcl fileID, then arrange for rrd_graph() to write to
+- * that file descriptor. Will this work with windoze? I have no idea.
+- */
+- if ((channel = Tcl_GetChannel(interp, argv[1], &mode)) != NULL) {
+- /*
+- * It >is< a Tcl fileID
+- */
+- if (!(mode & TCL_WRITABLE)) {
+- Tcl_AppendResult(interp, "channel \"", argv[1],
+- "\" wasn't opened for writing", (char *) NULL);
+- return TCL_ERROR;
+- }
+- /*
+- * Must flush channel to make sure any buffered data is written before
+- * rrd_graph() writes to the stream
+- */
+- if (Tcl_Flush(channel) != TCL_OK) {
+- Tcl_AppendResult(interp, "flush failed for \"", argv[1], "\": ",
+- strerror(Tcl_GetErrno()), (char *) NULL);
+- return TCL_ERROR;
+- }
+- if (Tcl_GetChannelHandle(channel, TCL_WRITABLE, &fd1) != TCL_OK) {
+- Tcl_AppendResult(interp,
+- "cannot get file descriptor associated with \"",
+- argv[1], "\"", (char *) NULL);
+- return TCL_ERROR;
+- }
+- /*
+- * Must dup() file descriptor so we can fclose(stream), otherwise the fclose()
+- * would close Tcl's file descriptor
+- */
+- if ((fd2 = dup((int)fd1)) == -1) {
+- Tcl_AppendResult(interp,
+- "dup() failed for file descriptor associated with \"",
+- argv[1], "\": ", strerror(errno), (char *) NULL);
+- return TCL_ERROR;
+- }
+- /*
+- * rrd_graph() wants a FILE*
+- */
+- if ((stream = fdopen(fd2, "wb")) == NULL) {
+- Tcl_AppendResult(interp,
+- "fdopen() failed for file descriptor associated with \"",
+- argv[1], "\": ", strerror(errno), (char *) NULL);
+- close(fd2); /* plug potential file descriptor leak */
+- return TCL_ERROR;
+- }
+-
+- save = argv[1];
+- argv[1] = "-";
+- argv2 = getopt_init(argc, argv);
+- argv[1] = save;
+- } else {
+- Tcl_ResetResult(interp); /* clear error from Tcl_GetChannel() */
+- argv2 = getopt_init(argc, argv);
+- }
+-
+- rc = rrd_graph(argc, argv2, &calcpr, &xsize, &ysize, stream, &ymin,
+- &ymax);
+- getopt_cleanup(argc, argv2);
+-
+- if (stream != NULL)
+- fclose(stream); /* plug potential malloc & file descriptor leak */
+-
+- if (rc != -1) {
+- sprintf(dimensions, "%d %d", xsize, ysize);
+- Tcl_AppendResult(interp, dimensions, (char *) NULL);
+- if (calcpr) {
+-#if 0
+- int i;
+-
+- for (i = 0; calcpr[i]; i++) {
+- printf("%s\n", calcpr[i]);
+- free(calcpr[i]);
+- }
+-#endif
+- free(calcpr);
+- }
+- }
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-static int Rrd_Tune(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- char **argv2;
+-
+- argv2 = getopt_init(argc, argv);
+- rrd_tune(argc, argv2);
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-static int Rrd_Resize(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- char **argv2;
+-
+- argv2 = getopt_init(argc, argv);
+- rrd_resize(argc, argv2);
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-static int Rrd_Restore(
+- ClientData __attribute__((unused)) clientData,
+- Tcl_Interp *interp,
+- int argc,
+- CONST84 char *argv[])
+-{
+- char **argv2;
+-
+- argv2 = getopt_init(argc, argv);
+- rrd_restore(argc, argv2);
+- getopt_cleanup(argc, argv2);
+-
+- if (rrd_test_error()) {
+- Tcl_AppendResult(interp, "RRD Error: ",
+- rrd_get_error(), (char *) NULL);
+- rrd_clear_error();
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-
+-
+-/*
+- * The following structure defines the commands in the Rrd extension.
+- */
+-
+-typedef struct {
+- char *name; /* Name of the command. */
+- Tcl_CmdProc *proc; /* Procedure for command. */
+- int hide; /* Hide if safe interpreter */
+-} CmdInfo;
+-
+-static CmdInfo rrdCmds[] = {
+- {"Rrd::create", Rrd_Create, 1}, /* Thread-safe version */
+- {"Rrd::dump", Rrd_Dump, 0}, /* Thread-safe version */
+- {"Rrd::flushcached", Rrd_Flushcached, 0},
+- {"Rrd::last", Rrd_Last, 0}, /* Thread-safe version */
+- {"Rrd::lastupdate", Rrd_Lastupdate, 0}, /* Thread-safe version */
+- {"Rrd::update", Rrd_Update, 1}, /* Thread-safe version */
+- {"Rrd::fetch", Rrd_Fetch, 0},
+- {"Rrd::graph", Rrd_Graph, 1}, /* Due to RRD's API, a safe
+- interpreter cannot create
+- a graph since it writes to
+- a filename supplied by the
+- caller */
+- {"Rrd::tune", Rrd_Tune, 1},
+- {"Rrd::resize", Rrd_Resize, 1},
+- {"Rrd::restore", Rrd_Restore, 1},
+- {(char *) NULL, (Tcl_CmdProc *) NULL, 0}
+-};
+-
+-
+-
+-static int init(
+- Tcl_Interp *interp,
+- int safe)
+-{
+- CmdInfo *cmdInfoPtr;
+- Tcl_CmdInfo info;
+-
+- if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL)
+- return TCL_ERROR;
+-
+- if (Tcl_PkgRequire(interp, "Tcl", TCL_VERSION, 1) == NULL) {
+- return TCL_ERROR;
+- }
+-
+- /*
+- * Why a global array? In keeping with the Rrd:: namespace, why
+- * not simply create a normal variable Rrd::version and set it?
+- */
+- Tcl_SetVar2(interp, "rrd", "version", VERSION, TCL_GLOBAL_ONLY);
+-
+- for (cmdInfoPtr = rrdCmds; cmdInfoPtr->name != NULL; cmdInfoPtr++) {
+- /*
+- * Check if the command already exists and return an error
+- * to ensure we detect name clashes while loading the Rrd
+- * extension.
+- */
+- if (Tcl_GetCommandInfo(interp, cmdInfoPtr->name, &info)) {
+- Tcl_AppendResult(interp, "command \"", cmdInfoPtr->name,
+- "\" already exists", (char *) NULL);
+- return TCL_ERROR;
+- }
+- if (safe && cmdInfoPtr->hide) {
+-#if 0
+- /*
+- * Turns out the one cannot hide a command in a namespace
+- * due to a limitation of Tcl, one can only hide global
+- * commands. Thus, if we created the commands without
+- * the Rrd:: namespace in a safe interpreter, then the
+- * "unsafe" commands could be hidden -- which would allow
+- * an owning interpreter either un-hiding them or doing
+- * an "interp invokehidden". If the Rrd:: namespace is
+- * used, then it's still possible for the owning interpreter
+- * to fake out the missing commands:
+- *
+- * # Make all Rrd::* commands available in master interperter
+- * package require Rrd
+- * set safe [interp create -safe]
+- * # Make safe Rrd::* commands available in safe interperter
+- * interp invokehidden $safe -global load ./tclrrd1.2.11.so
+- * # Provide the safe interpreter with the missing commands
+- * $safe alias Rrd::update do_update $safe
+- * proc do_update {which_interp $args} {
+- * # Do some checking maybe...
+- * :
+- * return [eval Rrd::update $args]
+- * }
+- *
+- * Our solution for now is to just not create the "unsafe"
+- * commands in a safe interpreter.
+- */
+- if (Tcl_HideCommand(interp, cmdInfoPtr->name, cmdInfoPtr->name) !=
+- TCL_OK)
+- return TCL_ERROR;
+-#endif
+- } else
+- Tcl_CreateCommand(interp, cmdInfoPtr->name, cmdInfoPtr->proc,
+- (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+- }
+-
+- if (Tcl_PkgProvide(interp, "Rrd", VERSION) != TCL_OK) {
+- return TCL_ERROR;
+- }
+-
+- return TCL_OK;
+-}
+-
+-int Tclrrd_Init(
+- Tcl_Interp *interp)
+-{
+- return init(interp, 0);
+-}
+-
+-/*
+- * See the comments above and note how few commands are considered "safe"...
+- * Using rrdtool in a safe interpreter has very limited functionality. It's
+- * tempting to just return TCL_ERROR and forget about it.
+- */
+-int Tclrrd_SafeInit(
+- Tcl_Interp *interp)
+-{
+- return init(interp, 1);
+-}
+diff --git a/configure.ac b/configure.ac
+index 73ef4ec..acd74e8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -830,57 +830,6 @@ AM_CONDITIONAL(LUA_SITE_LINSTALL, [test "$LUA_INSTALL_LMOD" != "$LUA_RRD_LIBDIR"
+ AM_CONDITIONAL(LUA50, [test "$lua_vndot" = "50"])
+ AM_CONDITIONAL(BUILD_LUA, [test "$enable_lua" = "yes"])
+
+-enable_tcl_site=no
+-
+-AC_ARG_ENABLE(tcl,AS_HELP_STRING([--disable-tcl],[do not build the tcl modules]),
+-[],[enable_tcl=yes])
+-
+-if test "$enable_tcl" = "yes"; then
+- dnl Check for Tcl.
+- withval=""
+- AC_ARG_WITH(tcllib,[ --with-tcllib=DIR location of the tclConfig.sh])
+- enable_tcl=no
+- for dir in $withval /usr/lib /usr/lib64 /usr/local/lib /usr/lib/tcl8.4 /usr/lib/tcl8.3 ; do
+- AC_MSG_CHECKING(for tclConfig.sh in $dir)
+- if test -f "$dir/tclConfig.sh" ; then
+- tcl_config=$dir/tclConfig.sh
+- enable_tcl=yes
+- AC_MSG_RESULT(yes)
+- break
+- else
+- AC_MSG_RESULT(no)
+- fi
+- done
+-
+- if test "$enable_tcl" = "no"; then
+- AC_MSG_WARN([tclConfig.sh not found - Tcl interface will not be built])
+- else
+- . $tcl_config
+- TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION"
+- if test -n "$TCL_INC_DIR"; then
+- TCL_INCLUDE_SPEC="$TCL_INCLUDE_SPEC -I$TCL_INC_DIR"
+- fi
+- fi
+- AC_ARG_ENABLE(tcl-site,AS_HELP_STRING([--enable-tcl-site],[install the tcl extension in the tcl tree]),
+- [],[enable_tcl_site=yes])
+-
+-fi
+-
+-AM_CONDITIONAL(BUILD_TCL, test "$enable_tcl" = "yes" )
+-AM_CONDITIONAL(BUILD_TCL_SITE, test "$enable_tcl_site" = "yes" )
+-
+-
+-AC_SUBST(TCL_PREFIX)
+-AC_SUBST(TCL_SHLIB_CFLAGS)
+-AC_SUBST(TCL_SHLIB_LD)
+-AC_SUBST(TCL_SHLIB_SUFFIX)
+-AC_SUBST(TCL_PACKAGE_PATH)
+-AC_SUBST(TCL_LD_SEARCH_FLAGS)
+-AC_SUBST(TCL_STUB_LIB_SPEC)
+-AC_SUBST(TCL_VERSION)
+-AC_SUBST(TCL_PACKAGE_DIR)
+-AC_SUBST(TCL_INCLUDE_SPEC)
+-
+ AC_ARG_ENABLE(python,AS_HELP_STRING([--disable-python],[do not build the python modules]),
+ [],[enable_python=yes])
+
+@@ -932,8 +881,6 @@ AC_CONFIG_FILES([src/Makefile])
+ AC_CONFIG_FILES([src/librrd.sym.in])
+ AC_CONFIG_FILES([src/librrd.pc])
+ AC_CONFIG_FILES([bindings/Makefile])
+-AC_CONFIG_FILES([bindings/tcl/Makefile])
+-AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
+ AC_CONFIG_FILES([Makefile])
+ AC_CONFIG_FILES([bindings/lua/Makefile])
+
+@@ -982,7 +929,6 @@ if test "$lua_need_compat51" = "1"; then
+ echo " Lua Lua-modules dir: $LUA_INSTALL_LMOD"
+ fi
+ fi
+-echo " Build Tcl Bindings: $enable_tcl"
+ echo " Build Python Bindings: $enable_python"
+ echo " Build rrdcgi: $enable_rrdcgi"
+ echo " Build librrd MT: $enable_pthread"
+--
+1.7.10
+
diff --git a/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb b/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb
new file mode 100644
index 0000000000..76a7133465
--- /dev/null
+++ b/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "High performance data logging and graphing system for time series data."
+HOMEPAGE = "http://oss.oetiker.ch/rrdtool/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=44fee82a1d2ed0676cf35478283e0aa0"
+
+DEPENDS = "libpng zlib cairo glib-2.0 libxml2"
+
+SRC_URI = "http://oss.oetiker.ch/rrdtool/pub/rrdtool-${PV}.tar.gz \
+ file://0001-rrdtool-eradicate-tcl-support.patch \
+ "
+SRC_URI[md5sum] = "ffe369d8921b4dfdeaaf43812100c38f"
+SRC_URI[sha256sum] = "956aaf431c955ba88dd7d98920ade3a8c4bad04adb1f9431377950a813a7af11"
+
+inherit autotools gettext
+
+EXTRA_AUTORECONF = "-I m4"
+
+EXTRA_OECONF = " \
+ --enable-shared \
+ --enable-local-libpng \
+ --enable-local-zlib \
+ --disable-libwrap \
+ --program-prefix='' \
+ rd_cv_ieee_works=yes \
+ --disable-perl \
+ --disable-python \
+ --disable-ruby \
+ --disable-lua \
+ --disable-rpath \
+"
+
+