[rrd-users] Re: rrdtool on Fedora Core 5 final release: info+question

D. Walsh info at daleenterprise.com
Wed Mar 22 22:39:31 MET 2006


On Mar 22, 2006, at 14:08 , Nick Sharp wrote:

> This concerns compiling rrdtool on one Linux machine for  
> distribution to other very similar
> machines.  I have spent most of my time on Windows, and only picked  
> up Linux about a year ago, so my
> biggest culture shock has been installing third party items.   
> No .exe wizard inside a .zip any more;
> you have to download the source and compile it mate!
>
> I wrote and manage a LAMP+R application which monitors an  
> international IP VPN network.  The
> L=Fedora Core 4 Linux, the P=Perl, and of course the +R=rrdtool.   
> (New to the LAMP acronym?
> A=Apache web server and M=MySQL database).
>
> Yesterday, on two test i386 laptops, I loaded the very recent  
> Fedora Core 5 final release (fc5fr).
> On one machine, with development tools and libraries, I used all  
> the relevant bash lines from:
>
> http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/doc/ 
> rrdbuild.en.html
>
> to download and compile rrdtool, which ran OK, and then did a  
> cursory test by successfully running
> one of the examples.
>
> I then used archive manager to make a .tar.gz tarball of the file  
> system from
> /usr/local/rrdtool-1.12.2 downwards (just 2.5Mbyte).
>
> I then extracted that at /usr/local/ on the second machine, which  
> deliberately lacked the
> development tools and libraries.  The example worked OK on that  
> machine.
>
> I thus feel confident that when I get fc5fr put on the  
> application's test machine, I can just add
> the tarball, make sure that my Perl program knows where to find  
> RRDs.pm:
>
> use lib qw(/usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux- 
> thread-multi);
>
> and then expect the program to run without further effort (once I  
> have done all the Apache and MySQL
> initialisations of course).
>
> Do you think it will happen?

If you are going from the same OS to the same OS then yes it will  
work and I use this method to generate builds for a particular OS  
major version which works within the Major version regardless of the  
minor version provided that there are no significant core changes.

As a rule of thumb, I do my install the following way.

mkdir /RRDTool_Linux5 /Distro_Archives
make DESTDIR= install/RRDTool_Linux5

Then I can see what files are installed, where they are installed and  
then tar the packagewith the following:

( cd /RRDTool_Linux5/usr/local/ && tar czf /Distro_Archives/ 
rrdtool_linux5.tar.gz . | ( cd /usr/local && tar xzf /Distro_Archives/ 
rrdtool_linux5.tar.gz ) )

Another thing that helps is I make some GNU Makefile's with the  
commands I used to build the package which includes a curl command to  
download the source packages, apply and the source dependancies  
packages, apply any patches so I can simplify the build process and  
make it easier to duplicate in other OS's.

> Regards and thanks
> -- 
> Nick Sharp

Here's an example of such a Makefile ( it should work for you as is  
and give you some ideas how to generate similar, the rrdtool data is  
also at the bottom ).


##
# Makefile for the automated build of the ClamAV/gmp/mpfr software
#
# Written by Dale Walsh
##

PKG_NAME=ClamAV

BASE_DIR=$(shell pwd)
TAR_DIR=$(BASE_DIR)/tardir
PATCH_DIR=$(BASE_DIR)/patches
DIST_DIR=$(BASE_DIR)/DIST
INST_DIR=/usr/local
RRDTOOL_INST_DIR=$(INST_DIR)/rrdtool

ifndef SRCROOT
SRCROOT=$(BASE_DIR)/srcroot
endif

ifndef DSTROOT
DSTROOT=$(BASE_DIR)/$(PKG_NAME).root
endif

GLOBAL_INCFLAGS=-I$(INST_DIR)/include

# ------------------------------
# DONOT CHANGE BELOW THIS LINE
# ------------------------------

btxt=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }'  
</dev/null 2>/dev/null`
ntxt=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' </dev/ 
null 2>/dev/null`
white_blk=`echo -e "\e[37;40m" </dev/null 2>/dev/null`
white_red=`echo -e "\e[37;41m" </dev/null 2>/dev/null`


COMMON_CONFIG_FLAGS="--prefix=$(INST_DIR)"
GLOBAL_LINKFLAGS="-L$(INST_DIR)/lib"

ifndef LD_ENV
LD_ENV=MACOSX_DEPLOYMENT_TARGET=10.2
endif

all : header_msg install

install : unpack clamav-install

settings : header_msg

	@echo -e " current setting:"
	@echo

	@echo -e " $(btxt)COMMON_CONFIG_FLAGS$(ntxt)  = \"$ 
(COMMON_CONFIG_FLAGS)\""
	@echo -e " $(btxt)GLOBAL_LINKFLAGS$(ntxt)     = \"$(GLOBAL_LINKFLAGS) 
\""
	@echo -e " $(btxt)GLOBAL_INCFLAGS$(ntxt)      = \"$(INST_DIR)/include 
\""
	@echo -e " $(btxt)LD_ENV$(ntxt)               = $(LD_ENV)"

	@echo
	@echo -e " $(btxt)BASE_DIR$(ntxt)             = $(BASE_DIR)"
	@echo -e " $(btxt)TAR_DIR$(ntxt)              = $(TAR_DIR)"

	@echo
	@echo -e " $(btxt)INST_DIR$(ntxt)             = $(INST_DIR)"
	@echo -e " $(btxt)SRCROOT$(ntxt)              = $(SRCROOT)"
	@echo -e " $(btxt)OBJROOT$(ntxt)              = $(OBJROOT)"
	@echo -e " $(btxt)SYMROOT$(ntxt)              = $(SYMROOT)"
	@echo -e " $(btxt)DSTROOT$(ntxt)              = $(DSTROOT)"
	@echo -e " $(btxt)RC_ARCHS$(ntxt)             = $(RC_ARCHS)"
	@echo -e " $(btxt)CFLAGS$(ntxt)               = $(CFLAGS)"
	@echo -e " $(btxt)CPAN_BUILD_DIR$(ntxt)       = $(CPAN_BUILD_DIR)"

	@echo

header_msg : $(DSTROOT)
	@clear
	@echo "$ 
{white_blk}                                                              
          "
	@echo "   
+----------------------------------------------------------------+  "
	@echo "   
|                                                                |  "
	@echo "  |               ${white_red} Building amavsd-new/ClamAV/ 
gmp/ ${white_blk}                |  "
	@echo "   
|                                                                |  "
	@echo "  |                Your automated Clam/AV  
generator                |  "
	@echo "  |                         Version  
1.0.2                          |  "
	@echo "  |     (c) 2006 Dale R. Walsh  
<buildsmart at daleenterprise.com>     |  "
	@echo "   
|                                                                |  "
	@echo "   
+----------------------------------------------------------------+  "
	@echo  
"                                                                      $ 
{ntxt}"
	@echo -en "\nOne moment...."
	@sleep 1
	@echo -en "\b\b\b\b\b\b\b\b\b\b\b\b\b\b               \b\b\b\b\b\b\b 
\b\b\b\b\b\b\b\b"



CLAMAV_CONFIG = \
	 $(COMMON_CONFIG_FLAGS) \
	--sysconfdir=/private/etc/spam/clamav \
	--with-user=clamav \
	--with-group=clamav \
	--with-dbdir=/var/clamav \
	--with-datadir=/var/clamav \
	--with-zlib=$(INST_DIR) \
	--enable-bigstack \
	--enable-readdir_r \
	--enable-shared \
	--enable-static \
	CPPFLAGS="$(GLOBAL_INCFLAGS)" \
	LDFLAGS="$(GLOBAL_LINKFLAGS)"

# clamav --------------------------------

clamav-install : NAME=clamav
clamav-install : clamav
	@cd $(SRCROOT)/$(NAME)*/ && $(MAKE) DESTDIR=$(DSTROOT) install
	@cd $(SRCROOT)/$(NAME)*/ && $(MAKE) install

clamav :  NAME=clamav
clamav : header_msg
	@echo -e "\nProcessing $(btxt)$(NAME)$(ntxt).\n"
	@if [ ! -f $(SRCROOT)/$(NAME)*/Makefile ]; then cd $(SRCROOT)/$(NAME) 
*/ && $(LD_ENV) \
	./configure  $(CLAMAV_CONFIG); fi
	@cd $(SRCROOT)/$(NAME)*/ && $(LD_ENV) $(MAKE)


# clean-up --------------------------------

clean-up : NAME="Cleaning up"
clean-up :
	@echo -en "\n$(btxt)$(NAME)$(ntxt) ...\n"
	@cd / && if test -d man; then tar cf - man | (cd /usr && tar xf -);  
rm -rf /man; fi
	@cd / && if test -d share; then tar cf - share | (cd /usr/share &&  
tar xf -); rm -rf /share; fi
	@cd $(DSTROOT) && if test -d etc; then tar cf - etc | (cd $(DSTROOT)/ 
private && tar xf -); rm -rf $(DSTROOT)/etc; fi
	@cd $(DSTROOT) && if test -d man; then tar cf - man | (cd $(DSTROOT)/ 
usr && tar xf -); rm -rf $(DSTROOT)/man; fi
	@cd $(DSTROOT) && if test -d share; then tar cf - share | (cd $ 
(DSTROOT)/usr && tar xf -); rm -rf $(DSTROOT)/share; fi
	@echo -e "done\n"


# cleaning --------------------------------

tar-clean : NAME=tar-clean
tar-clean : header_msg
	@echo -e "\nProcessing $(btxt)$(NAME)$(ntxt).\n"
	@if [ -d $(TAR_DIR) ]; then rm -r -f $(TAR_DIR)/*; fi

src-clean :
	@rm -rf $(SRCROOT)/*
	@rm -rf $(SRCROOT)/.patched
	@if [ -d $(DSTROOT) ];then rm -r -f $(DSTROOT)/*; fi
	@if [ -f $(DIST_DIR)/Info.plist ];then rm -r -f $(DIST_DIR)/ 
Info.plist; fi
	@if [ -f $(DIST_DIR)/Description.plist ];then rm -r -f $(DIST_DIR)/ 
Description.plist; fi



# Archives --------------------------------

dl-files: header_msg
	@mkdir -p $(TAR_DIR)
	@mkdir -p $(SRCROOT)
	@# get the latest version of ClamAV
	@echo -en "\n\a$(btxt)Downlaoding src files:$(ntxt) ClamAV   "
	@if [ ! -f $(TAR_DIR)/clamav-`curl -s http://www.clamav.net| egrep  
is: | cut -d: -f2 | cut -d">" -f2 | cut -d"<" -f1 | \
	xargs -n 1 echo`.tar.gz ]; then cd $(TAR_DIR) && rm -rf clam*gz && \
	curl -fsOL http://easynews.dl.sourceforge.net/sourceforge/clamav/ 
clamav-`curl -s http://www.clamav.net| egrep is: | cut -d: -f2 | cut - 
d">" -f2 | cut -d"<" -f1 | xargs -n 1 echo`.tar.gz; fi
	@echo -e "\b\b\b\b\b\b\b\b\b$(btxt)Download Complete$(ntxt)\n"


unpack : header_msg src-clean dl-files $(AMAVISD_DIR)
	@mkdir -p $(SRCROOT)
	@echo -en "\n\a$(btxt)Unpacking source files$(ntxt) [.]\b\b"
	@if [ ! -d $(SRCROOT)/clamav-* ]; then cd $(SRCROOT) && tar -xzf $ 
(TAR_DIR)/clamav-`curl -s http://www.clamav.net| egrep is: | cut -d: - 
f2 | cut -d">" -f2 | cut -d"<" -f1 | xargs -n 1 echo`.tar.gz; fi
	@echo -e ".] $(btxt)Done$(ntxt)\a.\n"
	@echo -e "\n$(btxt)Patching source files$(ntxt)\n"

	@# ONLY NEEDED FOR MAC OS
ifdef MACOSX
	@if [ ! -f $(SRCROOT)/.patched ]; then \
	echo -e "$(btxt)ClamAV-`curl -s http://www.clamav.net| egrep is: |  
cut -d: -f2 | cut -d">" -f2 | cut -d"<" -f1 | xargs -n 1 echo`$ 
(ntxt):"; \
	cd $(SRCROOT)/clamav* && rm -r -f etc/*.conf && patch -p1 < $ 
(PATCH_DIR)/clamav.patch; echo "Fixing ClamAV";  
LIBTOOLIZE=glibtoolize autoreconf --warnings=none -i -f </dev/null >/ 
dev/null; \
	fi
endif

	@if [ ! -f $(SRCROOT)/.patched ]; then \
	echo -e "$(btxt)Source Tree$(ntxt):\nRemoving .cvsignore files"; \
	find $(SRCROOT)/ -name .cvsignore  -print0 | xargs -0 -n 1 rm -rf &&  
echo -e "Removing CVS files" && find $(SRCROOT)/ -name .CVS  -print0  
| xargs -0 -n 1 rm -rf; \
	touch $(SRCROOT)/.patched; fi
	@echo -e "$(btxt)Done$(ntxt)\a.\n\n"

.PHONY: dl-files unpack clamav-install install

$(DSTROOT) :
	@mkdir -p $@

# end of file ----------------------------


to build this for Mac OSX I issue:

make MACOSX=1

sit back and wait for it to finish.






For RRDTool -1.0.49 I use the following: (I build for both PowerPC  
and Intel architecture)


RRDTOOL_CONFIG = \
	$(COMMON_CONFIG_FLAGS)/rrdtool-1.0.49 \
	--mandir=/usr/share/man \
	--disable-shared \
	--enable-static \
	--enable-perl-site-install \
	--enable-local-zlib \
	--enable-local-libpng \
	--with-perl-options="CC=\"gcc-3.3 -arch ppc -arch i386\" \
	INSTALLDIRS=site \
	INSTALLSITEARCH=/System/Library/Perl/5.8.7/darwin-thread-multi-2level \
	INSTALLSITELIB=/System/Library/Perl/5.8.7 \
	PREFIX=/ \
	INSTALLSITEBIN=/usr/local/bin \
	INSTALLSCRIPT=/usr/local/bin \
	INSTALLSITEMAN1DIR=/usr/share/man/man1 \
	INSTALLSITEMAN3DIR=/usr/share/man/man3" ; \
	# remember to edit the .packlist file


rrdtool : NAME="rrdtool"
rrdtool : header_msg
	@echo -e "\nProcessing $(btxt)$(NAME)$(ntxt).\n"
	@if [ ! -f $(SRCROOT)/$(NAME)*/Makefile ]; then cd $(SRCROOT)/$(NAME) 
*/ && $(LD_ENV) \
	./configure  $(RRDTOOL_CONFIG); fi
	@cd $(SRCROOT)/$(NAME)*/ && make

rrdtool-install : NAME="rrdtool"
rrdtool-install : rrdtool
	@cd $(SRCROOT)/$(NAME)*/ && make DESTDIR=$(DSTROOT) install
	@echo -e "\n$(btxt)Remember to edit the \".packlist\" file$(ntxt).\n"
	@cd $(SRCROOT)/$(NAME)*/ && make DESTDIR=$(DSTROOT) site-perl-install


-- Dale

--
Unsubscribe mailto:rrd-users-request at list.ee.ethz.ch?subject=unsubscribe
Help        mailto:rrd-users-request at list.ee.ethz.ch?subject=help
Archive     http://lists.ee.ethz.ch/rrd-users
WebAdmin    http://lists.ee.ethz.ch/lsg2.cgi



More information about the rrd-users mailing list