Great, once you have a patch, I will review it and check it into the
repo... hopefully along with Marcus' patches which has been sitting
in bugzilla for a while...
Cheers,
Bernard
On 4/3/07, Michael Perzl <[EMAIL PROTECTED]> wrote:
> Hi Bernard,
>
> you are right with ppc and ppc64 for Linux on PowerPC. Therefore, I am
> currently experiencing with "%ifos aix" etc. and I will let you know if
> this works better.
>
> I will also add an entry to %changelog as well as provide you with the
> context diff as requested in your other email once the SPEC seems works
> reliably... I will keep you posted.
>
> Regards,
> Michael
>
> Bernard Li wrote:
> > Hi Michael:
> >
> > Quick comment -- you used "%ifarch ppc" to specify operations for AIX,
> > however, doesn't Linux also support ppc? I know that for the newer
> > PowerPC the arch is ppc64, not sure about the older ones though.
> >
> > P.S. Please also add an entry for %changelog.
> >
> > Thanks,
> >
> > Bernard
> >
> > On 4/2/07, Michael Perzl <[EMAIL PROTECTED]> wrote:
> >> Hi Bernard,
> >>
> >> ok, here you go.... the SPEC file as attachment.
> >>
> >> Some remarks still:
> >>
> >> a) Lines #39-#41 I couldn't get RPM v3.0.5 on AIX get to understand that
> >> "%if" directive, also when I googled I think that the "%if" statement is
> >> not supported with RPM v.3.05, so I commented those 3 lines for the
> >> moment.
> >> b) Line #387 ("%config(noreplace) %{web_prefixdir}/conf.php") gave me
> >> always "file listed twice" RPM errors so I commented it for the moment.
> >>
> >> Regards,
> >> Michael
> >>
> >> Bernard Li wrote:
> >> > Hi Michael:
> >> >
> >> > Filing a bug and attaching the patch would be nice. Or you could just
> >> > post it here.
> >> >
> >> > Thanks,
> >> >
> >> > Bernard
> >> >
> >> > On 4/2/07, Michael Perzl <[EMAIL PROTECTED]> wrote:
> >> >> Hi Bernard,
> >> >>
> >> >> I now have a consolidated SPEC file (I think it is ugly :-) ), so
> >> how do
> >> >> you want me to send it to you (I guess not posting to the mailing
> >> list
> >> >> :-) ) ?
> >> >>
> >> >> Regards,
> >> >> Michael
> >> >>
> >> >> Bernard Li wrote:
> >> >> > Hi Michael:
> >> >> >
> >> >> > Thanks for looking into this. Yes, I am aware the spec file may
> >> get
> >> >> > bloated but I think ultimately this will be better for one (or more
> >> >> > person) to manage (as opposed to managing multiple files).
> >> >> >
> >> >> > What do other devs/users think?
> >> >> >
> >> >> > BTW, I'm cc: Marcus to see if he has any specific insights on
> >> this :-)
> >> >> >
> >> >> > Cheers,
> >> >> >
> >> >> > Bernard
> >> >> >
> >> >> > On 4/2/07, Michael Perzl <[EMAIL PROTECTED]> wrote:
> >> >> >> Hi Bernard,
> >> >> >>
> >> >> >> I took a closer look and though I think it could be done it
> >> might be
> >> >> >> very ugly for the following reasons:
> >> >> >>
> >> >> >> - AIX is still using RPM version 3.0.5 and I am not aware of any
> >> >> >> intentions to upgrade anytime soon
> >> >> >> - Like I said I think it could be consolidated, however, that
> >> would
> >> >> >> probably require tons of "%ifarch ppc" and "%ifnarch ppc" defines
> >> >> which
> >> >> >> would make the SPEC file rather hard to read
> >> >> >> - AIX RPM is installing all the software under the /opt/freeware
> >> >> >> directory hierarchy (to better distinguish from the AIX base
> >> >> filesets),
> >> >> >> therefore lots of different file locations in the SPEC file would
> >> >> have
> >> >> >> to "ifdef'ed" as mentioned above.
> >> >> >> - All the Linux specific stuff like "chkconfig" would have to be
> >> >> >> "%ifdef'ed" appropriately.
> >> >> >>
> >> >> >> A quick solution would probably to just rename the committed
> >> >> >> ganglia.aix.spec to maybe ganglia.spec.aix so your rpmbuild
> >> command
> >> >> >> doesn't get mixed up.
> >> >> >>
> >> >> >> I'll give it a try and see how far I get along but the end result
> >> >> might
> >> >> >> be ugly :-)
> >> >> >>
> >> >> >> Regards,
> >> >> >> Michael
> >> >> >>
> >> >> >> Bernard Li wrote:
> >> >> >> > Hi Michael:
> >> >> >> >
> >> >> >> > Any chance you can also work on merging the ganglia.aix.spec
> >> >> file back
> >> >> >> > to the mainstream .spec file? I'm about to change
> >> configure.in to
> >> >> >> > only include the specific spec file depending on the OS, but I
> >> >> think
> >> >> >> > the better solution is just to merge the two. Right now I
> >> >> cannot just
> >> >> >> > generate the distribution tarball and run 'rpmbuild -ta' since
> >> >> there
> >> >> >> > are 2 spec files.
> >> >> >> >
> >> >> >> > Thanks in advance,
> >> >> >> >
> >> >> >> > Bernard
> >> >> >> >
> >> >> >> > On 4/2/07, Michael Perzl <[EMAIL PROTECTED]> wrote:
> >> >> >> >>
> >> >> >> >> Hi Martin,
> >> >> >> >>
> >> >> >> >> if possible I would like to somehow take my version (after
> >> some
> >> >> >> >> reviewing)
> >> >> >> >> :-) , as it contains all the new POWER5 stuff already.
> >> >> >> >>
> >> >> >> >> My understanding is - as it would require some changes to
> >> >> protocol.x
> >> >> >> >> - that
> >> >> >> >> my changes won't have a chance to get into the core Ganglia
> >> source
> >> >> >> code
> >> >> >> >> until version 3.1 comes along.
> >> >> >> >>
> >> >> >> >> This code and everything else (RPMs) can be found on my
> >> website
> >> >> >> >> http://www.perzl.org/ganglia/.
> >> >> >> >>
> >> >> >> >> This stuff is actually in use at quite many customer sites
> >> >> already
> >> >> >> >> (runs on
> >> >> >> >> AIX 4.3.3, 5.1, 5.2 and 5.3) so I would like to keep that
> >> >> >> >> POWER5-stuff in if
> >> >> >> >> possible. Actually, an AIX gmond implementation without the
> >> >> >> POWER5-stuff
> >> >> >> >> based on my implementation could be done very easy (just
> >> stripping
> >> >> >> >> off the
> >> >> >> >> POWER5-addons).
> >> >> >> >>
> >> >> >> >> Regards,
> >> >> >> >> Michael
> >> >> >> >>
> >> >> >> >> Martin Knoblauch wrote:
> >> >> >> >> Michael, Andreas,
> >> >> >> >>
> >> >> >> >> any chance that you could consolidate the two versions of
> >> the AIX
> >> >> >> >> metrics that seem to be around? Seem you are the ones who have
> >> >> worked
> >> >> >> >> most recently on the AIX implementation.
> >> >> >> >>
> >> >> >> >> Cheers
> >> >> >> >> Martin
> >> >> >> >>
> >> >> >> >> --- Michael Perzl <[EMAIL PROTECTED]> wrote:
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Andreas,
> >> >> >> >>
> >> >> >> >> thank you for taking the blame but you are off the hook
> >> here. ;-)
> >> >> >> >>
> >> >> >> >> If I understood David correctly, he is using my AIX Ganglia RPM
> >> >> >> >> packages
> >> >> >> >> with POWER5 extensions. Here most if not all implementation
> >> of how
> >> >> >> >> the
> >> >> >> >> metrics are collected under AIX have been changed.
> >> Everything is
> >> >> >> >> documented on my homepage (http://www.perzl.org/ganglia/)
> >> though.
> >> >> >> >> So everything what goes wrong here is entiremy my fault :-[
> >> >> >> >>
> >> >> >> >> After some investigating and some discussions with Nigel I have
> >> >> come
> >> >> >> >> to
> >> >> >> >> terms with the following facts regarding the bytes_in/bytes_out
> >> >> >> >> problem:
> >> >> >> >> - libperfstat (the library on AIX which obtains all the system
> >> >> >> >> performance data) uses u_longlong_t data types (these are
> >> >> definitely
> >> >> >> >> 64-bit large).
> >> >> >> >> - The AIX kernel internally, though, may probably not be using
> >> >> 64-bit
> >> >> >> >>
> >> >> >> >> data types - more realistic is probably unsigned 32-bit - in
> >> order
> >> >> >> >> not
> >> >> >> >> to break compatibility (my personal opinion)
> >> >> >> >> - The consequence now is that integer overrun may occur much
> >> >> easier
> >> >> >> >> with
> >> >> >> >> 32-bit data types than with 64-bit data types (we all probably
> >> >> don't
> >> >> >> >> live long enough to see that happen).
> >> >> >> >>
> >> >> >> >> Please take a look at my implementation of the bytes_in metric
> >> >> (the
> >> >> >> >> bytes_out implementation is accordingly):
> >> >> >> >>
> >> >> >> >> 01 g_val_t
> >> >> >> >> 02 bytes_in_func( void )
> >> >> >> >> 03 {
> >> >> >> >> 04 g_val_t val;
> >> >> >> >> 05 perfstat_netinterface_total_t n;
> >> >> >> >> 06 static u_longlong_t last_bytes_in = 0, bytes_in;
> >> >> >> >> 07 static double last_time = 0.0;
> >> >> >> >> 08 double now, delta_t;
> >> >> >> >> 09 struct timeval timeValue;
> >> >> >> >> 10 struct timezone timeZone;
> >> >> >> >> 11
> >> >> >> >> 12 gettimeofday( &timeValue, &timeZone );
> >> >> >> >> 13
> >> >> >> >> 14 now = (double) (timeValue.tv_sec - boottime) +
> >> >> >> >> (timeValue.tv_usec
> >> >> >> >> / 1000000.0);
> >> >> >> >> 15
> >> >> >> >> 16 if (perfstat_netinterface_total( NULL, &n, sizeof(
> >> >> >> >> perfstat_netinterface_total_t ), 1 ) == -1)
> >> >> >> >> 17 val.f = 0.0;
> >> >> >> >> 18 else
> >> >> >> >> 19 {
> >> >> >> >> 20 bytes_in = n.ibytes;
> >> >> >> >> 21
> >> >> >> >> 22 delta_t = now - last_time;
> >> >> >> >> 23
> >> >> >> >> 24 if ( delta_t )
> >> >> >> >> 25 val.f = (double) (bytes_in - last_bytes_in) / delta_t;
> >> >> >> >> 26 else
> >> >> >> >> 27 val.f = 0.0;
> >> >> >> >> 28
> >> >> >> >> 29 last_bytes_in = bytes_in;
> >> >> >> >> 30 }
> >> >> >> >> 31
> >> >> >> >> 32 last_time = now;
> >> >> >> >> 33
> >> >> >> >> 34 return( val );
> >> >> >> >> 35 }
> >> >> >> >>
> >> >> >> >> In my opinion the overrun occurs in line #25 when "bytes_in <
> >> >> >> >> last_bytes_in".
> >> >> >> >> In my naivity I had assumed as both are of type u_longlong_t
> >> >> that an
> >> >> >> >> integer overrun might never happen.
> >> >> >> >>
> >> >> >> >> So to solve the overrun a check for "bytes_in < last_bytes_in"
> >> >> must
> >> >> >> >> be
> >> >> >> >> introduced, something like:
> >> >> >> >>
> >> >> >> >> u_longlong_t d;
> >> >> >> >> d = bytes_in - last_bytes_in;
> >> >> >> >> if (d < 0) d += ULONG_MAX;
> >> >> >> >>
> >> >> >> >> and line #25 would essentially become
> >> >> >> >> 25 val.f = (double) d / delta_t;
> >> >> >> >>
> >> >> >> >> Comments ?
> >> >> >> >>
> >> >> >> >> Regards,
> >> >> >> >> Michael
> >> >> >> >>
> >> >> >> >> PS: David, the reason why you don't see it happen with
> >> pkts_in and
> >> >> >> >> pkts_out is that probably no overrun so far has occurred but at
> >> >> some
> >> >> >> >> point it will also happen.
> >> >> >> >>
> >> >> >> >> PPS: David, if this is a solution (I want some comments on that
> >> >> >> >> before,
> >> >> >> >> though) then I would be building new RPMs with the then
> >> hopefully
> >> >> >> >> correct code.
> >> >> >> >>
> >> >> >> >> Andreas Schoenfeld wrote:
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Hi David and Martin,
> >> >> >> >>
> >> >> >> >> I suppose the network code is still the code I wrote, so
> >> there are
> >> >> >> >>
> >> >> >> >> two
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> problems I know of:
> >> >> >> >> 1. yes there is a problem with owerflows
> >> >> >> >> 2. the shown network traffic is the sum of all network
> >> interfaces
> >> >> >> >> including local loopback devices (lo0...).
> >> >> >> >>
> >> >> >> >> Both Problems could lead to astonishing data transfer rate in
> >> >> >> >>
> >> >> >> >> ganglia.
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Sorry I had promised to fix the problems, but there was to
> >> much
> >> >> >> >>
> >> >> >> >> other
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> work ...
> >> >> >> >>
> >> >> >> >> Best regards
> >> >> >> >> Andreas
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Date: Thu, 29 Mar 2007 08:21:38 -0700 (PDT)
> >> >> >> >> From: Martin Knoblauch <[EMAIL PROTECTED]>
> >> >> >> >> Subject: Re: [Ganglia-general] Help! I have a petabyte/s
> >> network
> >> >> >> >> To: David Wong <[EMAIL PROTECTED]>,
> >> >> >> >>
> >> >> >> >> [EMAIL PROTECTED],
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> [EMAIL PROTECTED]
> >> >> >> >> Message-ID: <[EMAIL PROTECTED]>
> >> >> >> >> Content-Type: text/plain; charset=iso-8859-1
> >> >> >> >>
> >> >> >> >> David,
> >> >> >> >>
> >> >> >> >> good catch. I will have to look at it for a bit.
> >> >> >> >>
> >> >> >> >> Cheers
> >> >> >> >> Martin
> >> >> >> >> --- David Wong <[EMAIL PROTECTED]> wrote:
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> I don't write much code nowadays, so I'm going to need a
> >> lot of
> >> >> >> >>
> >> >> >> >> help
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> with this.
> >> >> >> >>
> >> >> >> >> I dug through the ganglia code and I found this interesting
> >> >> >> >>
> >> >> >> >> tidbit in
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> libmetrics/aix/metrics.c which may be indicative of the
> >> problem.
> >> >> >> >>
> >> >> >> >> There's an assignment from cur_ninfo.ibytes to
> >> >> >> >>
> >> >> >> >> cur_net_stat.ibytes,
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> but
> >> >> >> >> the types of the two variables are different.
> >> >> >> >>
> >> >> >> >> net_stat::ibytes is a double:
> >> >> >> >>
> >> >> >> >> struct net_stat{
> >> >> >> >> double ipackets;
> >> >> >> >> double opackets;
> >> >> >> >> double ibytes;
> >> >> >> >> double obytes;
> >> >> >> >> } cur_net_stat;
> >> >> >> >>
> >> >> >> >> and we have *ninfo declared here:
> >> >> >> >>
> >> >> >> >> perfstat_netinterface_total_t ninfo[2],*last_ninfo,
> >> *cur_ninfo ;
> >> >> >> >>
> >> >> >> >> libperfstat.h has perfstat_netinterface_total_t::ibytes as
> >> >> >> >> u_longlong_t.
> >> >> >> >>
> >> >> >> >> Does this code try to do what I think it is doing, i.e. assign
> >> >> >> >>
> >> >> >> >> an
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> unsigned 64 bit integer to a signed 64bit integer?
> >> >> >> >>
> >> >> >> >> I'm willing to test the code if someone who's more adept at
> >> >> >> >>
> >> >> >> >> coding
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> and
> >> >> >> >> building will take on the challenge.
> >> >> >> >>
> >> >> >> >> It looks to me that the type mismatch will have to fixed in a
> >> >> >> >>
> >> >> >> >> few
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> places, such as CALC_NETSTAT, and we'll have to add an
> >> unsigned
> >> >> >> >>
> >> >> >> >> long
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> long to g_val_t too. Those are the ones I can see so far.
> >> >> >> >>
> >> >> >> >> David Wong
> >> >> >> >> Senior Systems Engineer
> >> >> >> >> Management Dynamics, Inc.
> >> >> >> >> Phone: 201-804-6127
> >> >> >> >> [EMAIL PROTECTED]
> >> >> >> >>
> >> >> >> >> -----Original Message-----
> >> >> >> >> From: Martin Knoblauch [mailto:[EMAIL PROTECTED]
> >> >> >> >> Sent: Wednesday, March 28, 2007 12:00 PM
> >> >> >> >> To: David Wong; [EMAIL PROTECTED]
> >> >> >> >> Subject: Re: [Ganglia-general] Help! I have a petabyte/s
> >> network
> >> >> >> >>
> >> >> >> >> David,
> >> >> >> >>
> >> >> >> >> as far as I remember, the AIX metrics code had an
> >> >> >> >> overflow/wrap-around
> >> >> >> >> problem prior to 3.0.4. Maybe the fixes are not thorough
> >> enough.
> >> >> >> >>
> >> >> >> >> The packets/sec are of course less affected.
> >> >> >> >>
> >> >> >> >> Cheers
> >> >> >> >> Martin
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> ------------------------------------------------------
> >> >> >> >> Martin Knoblauch
> >> >> >> >> email: k n o b i AT knobisoft DOT de
> >> >> >> >> www: http://www.knobisoft.de
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >>
> >> -------------------------------------------------------------------------
> >>
> >> >>
> >> >> >>
> >> >> >> >>
> >> >> >> >> Take Surveys. Earn Cash. Influence the Future of IT
> >> >> >> >> Join SourceForge.net's Techsay panel and you'll get the
> >> chance to
> >> >> >> >> share your
> >> >> >> >> opinions on IT & business topics through brief surveys-and earn
> >> >> cash
> >> >> >> >>
> >> >> >>
> >> >>
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >>
> >> >>
> >> >> >>
> >> >> >> >>
> >> >> >> >> _______________________________________________
> >> >> >> >> Ganglia-developers mailing list
> >> >> >> >> [email protected]
> >> >> >> >> https://lists.sourceforge.net/lists/listinfo/ganglia-developers
> >> >> >> >>
> >> >> >> >>
> >> >> >> >
> >> >> >>
> >> >> >
> >> >>
> >> >
> >>
> >> #
> >> # $Id: ganglia.spec.in 689 2006-12-01 14:05:16Z efocht $
> >> #
> >> # ganglia.spec. Generated from ganglia.spec.in by configure.
> >> #
> >> # IMPORTANT NOTE:
> >> # This spec file has a noarch section. RPM is braindead in that it
> >> cannot
> >> # build mixed architecture packages. As a workaround, you must build
> >> # the RPMs using the following commandline
> >> #
> >> # % rpmbuild -ta --target noarch,i386 ganglia-3.0.4.tar.gz
> >> #
> >> Summary: Ganglia Distributed Monitoring System
> >> Name: ganglia
> >> Version: 3.0.4
> >> URL: http://ganglia.info/
> >> Release: 1
> >> License: BSD
> >> Vendor: Ganglia Development Team
> >> <[email protected]>
> >> Group: System Environment/Base
> >>
> >> Source: %{name}-%{version}.tar.gz
> >> %ifarch ppc
> >> Source1: gmond.aix.init
> >> Source2: gmetad.aix.init
> >> %endif
> >>
> >> Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root
> >>
> >> %ifarch ppc
> >> Prefix: /opt/freeware
> >> %else
> >> Prefix: /usr
> >> %endif
> >>
> >> %ifnarch noarch
> >> %ifnarch ppc
> >> BuildRequires: libpng-devel, libart_lgpl-devel, gcc-c++
> >> ##%if %{?suse_version:1}0
> >> ##BuildRequires: rrdtool, freetype2-devel
> >> ##%endif
> >> %endif
> >> %ifarch ppc
> >> BuildRequires: rrdtool-devel
> >> %else
> >> BuildRequires: rrdtool-devel, freetype-devel
> >> %endif
> >> %endif
> >>
> >> %description
> >> Ganglia is a scalable, real-time monitoring and execution environment
> >>
> >> ######################################################################
> >> ################## noarch section ####################################
> >> ######################################################################
> >> %ifarch noarch
> >> %package web
> >> Summary: Ganglia Web Frontend
> >> Group: System Environment/Base
> >> Obsoletes: ganglia-webfrontend
> >> Provides: ganglia-webfrontend
> >> # We should put rrdtool as a Requires too but rrdtool rpm support is
> >> very weak
> >> # so most people install from source
> >> #Requires: ganglia-gmetad >= 3.0.4
> >> %define web_prefixdir /var/www/html/ganglia
> >> Prefix: %{web_prefixdir}
> >>
> >> %description web
> >> This package provides a web frontend to display the XML tree
> >> published by
> >> ganglia, and to provide historical graphs of collected metrics. This
> >> website is
> >> written in the PHP4 language.
> >>
> >> #######################################################################
> >> #######################################################################
> >> %else
> >>
> >> %package gmetad
> >> Summary: Ganglia Meta daemon http://ganglia.sourceforge.net/
> >> Group: System Environment/Base
> >> Obsoletes: ganglia-monitor-core-gmetad ganglia-monitor-core
> >>
> >> %description gmetad
> >> Ganglia is a scalable, real-time monitoring and execution environment
> >> with all execution requests and statistics expressed in an open
> >> well-defined XML format.
> >>
> >> This gmetad daemon aggregates monitoring data from several clusters
> >> to form a monitoring grid. It also keeps metric history using rrdtool.
> >>
> >> %package gmond
> >> Summary: Ganglia Monitor daemon http://ganglia.sourceforge.net/
> >> Group: System Environment/Base
> >> Obsoletes: ganglia-monitor-core-gmond ganglia-monitor-core
> >>
> >> %description gmond
> >> Ganglia is a scalable, real-time monitoring and execution environment
> >> with all execution requests and statistics expressed in an open
> >> well-defined XML format.
> >>
> >> This gmond daemon provides the ganglia service within a single
> >> cluster or
> >> Multicast domain.
> >>
> >> %package devel
> >> Summary: Ganglia Library http://ganglia.sourceforge.net/
> >> Group: System Environment/Base
> >> Obsoletes: ganglia-monitor-core-lib
> >>
> >> %description devel
> >> The Ganglia Monitoring Core library provides a set of functions that
> >> programmers
> >> can use to build scalable cluster or grid applications
> >>
> >> %endif
> >>
> >> ##
> >> ## PREP
> >> ##
> >>
> >> %prep
> >> %setup
> >>
> >> ##
> >> ## BUILD
> >> ##
> >> %build
> >> %ifarch x86_64
> >> ./configure --prefix=/usr --with-gmetad --libdir=/usr/lib64
> >> %endif
> >> %ifarch ppc
> >> export CC=xlc_r
> >> export CFLAGS="-O"
> >> ./configure --prefix=/opt/freeware --disable-shared --enable-static
> >> CFLAGS="-I/opt/freeware/include" CPPFLAGS="-I/opt/freeware/include"
> >> LDFLAGS="-L/opt/freeware/lib" --with-gmetad
> >> make
> >> ## this is necessary to get around the stupid gmetad shared library
> >> link to expa
> >> t
> >> cd srclib/expat
> >> make clean
> >> ./configure --prefix=/opt/freeware --disable-shared --enable-static
> >> cd ../..
> >> cd gmetad
> >> make clean
> >> cd ..
> >> %else
> >> ./configure --prefix=/usr --with-gmetad
> >> %endif
> >> %ifnarch noarch
> >> make
> >> %endif
> >>
> >> ##
> >> ## PRE
> >> ##
> >> %pre
> >>
> >> %ifnarch noarch
> >> ##
> >> ## POST GMETA
> >> ##
> >> %post gmetad
> >> %ifnarch ppc
> >> /sbin/chkconfig --add gmetad
> >>
> >> if [ "$1" == "1" ]; then
> >> # Installing new package - start gmetad
> >> /etc/init.d/gmetad start
> >> elif [ "$1" -gt "1" ]; then
> >> # Upgrading ganglia package - restart gmetad
> >> /etc/init.d/gmetad restart
> >> fi
> >> %endif
> >>
> >>
> >> ##
> >> ## POST GMOND
> >> ##
> >> %post gmond
> >> %ifnarch ppc
> >> /sbin/chkconfig --add gmond
> >>
> >> if [ "$1" == "1" ]; then
> >> # Installing new package - start gmond
> >> /etc/init.d/gmond start
> >> elif [ "$1" -gt "1" ]; then
> >> # Upgrading ganglia package - restart gmond
> >> /etc/init.d/gmond restart
> >> fi
> >>
> >> `rpm -q ganglia-monitor-core-gmond| grep "is not installed" >
> >> /dev/null 2>&1`
> >> if [[ $? != 0 ]]; then
> >> # They have an old configuration file format
> >> echo "-----------------------------------------------------------"
> >> echo "IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT"
> >> echo "-----------------------------------------------------------"
> >> echo "It appears that you are upgrading from ganglia gmond version"
> >> echo "2.5.x. The configuration file has changed and you need to "
> >> echo "convert your old 2.5.x configuration file to the new format."
> >> echo ""
> >> echo "To convert your old configuration file to the new format"
> >> echo "simply run the command:"
> >> echo ""
> >> echo "% gmond --convert old.conf > new.conf"
> >> echo ""
> >> echo "This conversion was not made automatic to prevent unknowningly"
> >> echo "altering your configuration without your notice."
> >> fi
> >> %endif
> >>
> >>
> >> ##
> >> ## PREUN GMETA
> >> ##
> >> %preun gmetad
> >> if [ "$1" = 0 ]
> >> then
> >> %ifnarch ppc
> >> /etc/init.d/gmetad stop
> >> /sbin/chkconfig --del gmetad
> >> %else
> >> /etc/rc.d/init.d/gmetad stop
> >> %endif
> >> fi
> >>
> >> ##
> >> ## PREUN GMON
> >> ##
> >> %preun gmond
> >> if [ "$1" = 0 ]
> >> then
> >> %ifnarch ppc
> >> /etc/init.d/gmond stop
> >> /sbin/chkconfig --del gmond
> >> %else
> >> /etc/rc.d/init.d/gmond stop
> >> %endif
> >> fi
> >>
> >> #ifnarch noarch
> >> %endif
> >>
> >> ##
> >> ## INSTALL
> >> ##
> >> %install
> >> ## Flush any old RPM build root
> >> %__rm -rf $RPM_BUILD_ROOT
> >>
> >> %ifarch noarch
> >>
> >> %__mkdir -p $RPM_BUILD_ROOT/%{web_prefixdir}
> >> %__cp -rf %{_builddir}/%{name}-%{version}/web/*
> >> $RPM_BUILD_ROOT/%{web_prefixdir}
> >>
> >> %else
> >>
> >> %ifnarch ppc
> >>
> >> ## Create the directory structure
> >> %__mkdir -p $RPM_BUILD_ROOT/etc/init.d
> >> %__mkdir -p $RPM_BUILD_ROOT/var/lib/ganglia/rrds
> >> %__mkdir -p $RPM_BUILD_ROOT/usr/share/man/man5
> >>
> >> ## Move the files into the structure
> >> if [ -f /etc/SuSE-release ]; then
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmond/gmond.init.SuSE
> >> $RPM_BUILD_ROOT/etc/init.d/gmond
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmetad/gmetad.init.SuSE
> >> $RPM_BUILD_ROOT/etc/init.d/gmetad
> >> else
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmond/gmond.init
> >> $RPM_BUILD_ROOT/etc/init.d/gmond
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmetad/gmetad.init
> >> $RPM_BUILD_ROOT/etc/init.d/gmetad
> >> fi
> >>
> >> # We just output the default gmond.conf from gmond using the '-t' flag
> >> %{_builddir}/%{name}-%{version}/gmond/gmond -t >
> >> $RPM_BUILD_ROOT/etc/gmond.conf
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmetad/gmetad.conf
> >> $RPM_BUILD_ROOT/etc/gmetad.conf
> >>
> >> %__make DESTDIR=$RPM_BUILD_ROOT install
> >> %__make -C gmond gmond.conf.5
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmond/gmond.conf.5
> >> $RPM_BUILD_ROOT/usr/share/man/man5/gmond.conf.5
> >>
> >> %else
> >>
> >> make DESTDIR=$RPM_BUILD_ROOT install
> >>
> >> ## Create the directory structure
> >> %__mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
> >> %__mkdir -p $RPM_BUILD_ROOT/var/lib/ganglia/rrds
> >> %__mkdir -p $RPM_BUILD_ROOT/opt/freeware/man/man5
> >>
> >> ## Move the files into the structure
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmond/gmond.init
> >> $RPM_BUILD_ROOT/etc/rc
> >> .d/init.d/gmond
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmetad/gmetad.init
> >> $RPM_BUILD_ROOT/etc/
> >> rc.d/init.d/gmetad
> >> # We just output the default gmond.conf from gmond using the '-t' flag
> >> %{_builddir}/%{name}-%{version}/gmond/gmond -t >
> >> $RPM_BUILD_ROOT/etc/gmond.conf
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmetad/gmetad.conf
> >> $RPM_BUILD_ROOT/etc/
> >> gmetad.conf
> >>
> >> %__cp -f %{_builddir}/%{name}-%{version}/gmond/gmond.conf.5
> >> $RPM_BUILD_ROOT/opt/
> >> freeware/man/man5/gmond.conf.5
> >>
> >> mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d/
> >> install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/gmond
> >> install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/gmetad
> >>
> >> mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc2.d/
> >> mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc3.d/
> >> ln -sf '../init.d/gmond' $RPM_BUILD_ROOT/etc/rc.d/rc2.d/Sgmond
> >> ln -sf '../init.d/gmond' $RPM_BUILD_ROOT/etc/rc.d/rc2.d/Kgmond
> >> ln -sf '../init.d/gmond' $RPM_BUILD_ROOT/etc/rc.d/rc3.d/Sgmond
> >> ln -sf '../init.d/gmond' $RPM_BUILD_ROOT/etc/rc.d/rc3.d/Kgmond
> >> ln -sf '../init.d/gmetad' $RPM_BUILD_ROOT/etc/rc.d/rc2.d/Sgmetad
> >> ln -sf '../init.d/gmetad' $RPM_BUILD_ROOT/etc/rc.d/rc2.d/Kgmetad
> >> ln -sf '../init.d/gmetad' $RPM_BUILD_ROOT/etc/rc.d/rc3.d/Sgmetad
> >> ln -sf '../init.d/gmetad' $RPM_BUILD_ROOT/etc/rc.d/rc3.d/Kgmetad
> >>
> >> %endif
> >>
> >> %endif
> >>
> >> %ifnarch noarch
> >> ##
> >> ## FILES GMETA
> >> ##
> >>
> >> %files gmetad
> >> %defattr(-,root,root)
> >> %attr(0755,nobody,nobody)/var/lib/ganglia/rrds
> >> %ifnarch ppc
> >> /usr/sbin/gmetad
> >> /etc/init.d/gmetad
> >> %else
> >> /opt/freeware/sbin/gmetad
> >> /etc/rc.d/init.d/gmetad
> >> /etc/rc.d/rc2.d/Sgmetad
> >> /etc/rc.d/rc2.d/Kgmetad
> >> /etc/rc.d/rc3.d/Sgmetad
> >> /etc/rc.d/rc3.d/Kgmetad
> >> %endif
> >> %config(noreplace) /etc/gmetad.conf
> >>
> >>
> >> ##
> >> ## FILES GMOND
> >> ##
> >> %files gmond
> >> %defattr(-,root,root)
> >> %ifnarch ppc
> >> %attr(0500,root,root)/usr/bin/gmetric
> >> %attr(0555,root,root)/usr/bin/gstat
> >> /usr/sbin/gmond
> >> /etc/init.d/gmond
> >> %attr(0555,root,root)/usr/share/man/man5/gmond.conf.5*
> >> %else
> >> %attr(0500,root,root)/opt/freeware/bin/gmetric
> >> %attr(0555,root,root)/opt/freeware/bin/gstat
> >> /opt/freeware/sbin/gmond
> >> %attr(0555,root,root)/opt/freeware/man/man5/gmond.conf.5*
> >> %config(noreplace) /etc/gmond.conf
> >> /etc/rc.d/init.d/gmond
> >> /etc/rc.d/rc2.d/Sgmond
> >> /etc/rc.d/rc2.d/Kgmond
> >> /etc/rc.d/rc3.d/Sgmond
> >> /etc/rc.d/rc3.d/Kgmond
> >> %endif
> >> %config(noreplace) /etc/gmond.conf
> >>
> >> ##
> >> ## FILES DEVEL
> >> ##
> >> %files devel
> >> %ifnarch ppc
> >> /usr/include/ganglia.h
> >> /usr/%{_lib}/libganglia*
> >> /usr/bin/ganglia-config
> >> %else
> >> /opt/freeware/include/ganglia.h
> >> /opt/freeware/lib/libganglia*
> >> /opt/freeware/bin/ganglia-config
> >> %endif
> >>
> >> %else
> >>
> >> ##
> >> ## FILES WEB
> >> ##
> >> %files web
> >> %defattr(-,root,root)
> >> %{web_prefixdir}
> >> ####%config(noreplace) %{web_prefixdir}/conf.php
> >>
> >> %endif
> >>
> >> ##
> >> ## CLEAN
> >> ##
> >> %clean
> >> %__rm -rf $RPM_BUILD_ROOT
> >>
> >> ##
> >> ## CHANGELOG
> >> ##
> >> %changelog
> >> * Mon Aug 28 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Added gcc-c++ to BuildRequires
> >> * Sun Jul 23 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Changed make install prefix=$RPM_BUILD_ROOT/usr to
> >> make DESTDIR=$RPM_BUILD_ROOT install (suggested by Jarod Wilson
> >> <[EMAIL PROTECTED]>)
> >> * Mon Jun 05 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Changed /etc/rc.d/init.d -> /etc/init.d
> >> * Mon May 22 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Add rrdtool/rrdtool-devel, freetype2-devel/freetype-devel,
> >> libart_lgpl-devel to BuildRequires
> >> - Use /usr/lib64 for x86_64
> >> * Sun May 21 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Correct init scripts dir for SuSE
> >> - Add BuildRequires for libpng-devel
> >> * Fri Feb 25 2006 Bernard Li <[EMAIL PROTECTED]>
> >> - Use SuSE specific init scripts if /etc/SuSE-release file exists
> >> * Fri Dec 10 2004 Matt Massie <[EMAIL PROTECTED]>
> >> - Updated the spec file for 2.6.0 release
> >> * Tue Apr 13 2004 Brooks Davis <[EMAIL PROTECTED]>
> >> - Use the autoconf variable varstatedir instead of /var/lib for
> >> consistancy.
> >> * Thu Feb 19 2004 Matt Massie <[EMAIL PROTECTED]>
> >> - Removed the /usr/include/ganglia directory from the lib rpm and
> >> changed the deprecated Copyright to License
> >> * Mon Oct 14 2002 Federico Sacerdoti <[EMAIL PROTECTED]>
> >> - Split package into -gmetad and -gmond subpackages for clarity,
> >> and separation of purpose/functionality.
> >> * Thu Sep 19 2002 Federico Sacerdoti <[EMAIL PROTECTED]>
> >> - Added config files, made /var/lib/ganglia for RRD storage.
> >> * Mon Mar 11 2002 Matt Massie <[EMAIL PROTECTED]>
> >> - Added support for libganglia, added Prefix: for RPM relocation
> >> * Wed Feb 27 2002 Matt Massie <[EMAIL PROTECTED]>
> >> - Merge gmetric and gmond together into one RPM. Fix some small bugs.
> >> * Fri Nov 2 2001 Matt Massie <[EMAIL PROTECTED]>
> >> - initial release
> >>
> >>
> >
>