diff options
author | brooks <brooks@FreeBSD.org> | 2005-03-05 05:14:06 +0800 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2005-03-05 05:14:06 +0800 |
commit | eaa8c5e29e04ecda2e4f759d00aa931bb9e85bd4 (patch) | |
tree | f61ffcefd21d328aa657282ad4d03b977ccdae3b /sysutils | |
parent | 6396a397fc57517c35a5ed48d85da21dfcf8eeb2 (diff) | |
download | freebsd-ports-gnome-eaa8c5e29e04ecda2e4f759d00aa931bb9e85bd4.tar.gz freebsd-ports-gnome-eaa8c5e29e04ecda2e4f759d00aa931bb9e85bd4.tar.zst freebsd-ports-gnome-eaa8c5e29e04ecda2e4f759d00aa931bb9e85bd4.zip |
Correct a number of issues with the previous commit:
- Patch a number of bugs in the metric code that caused gmond to be
unstable, particularly on 4.x. These will be in the next ganglia
release.
- Use CFLAGS instead of CPPFLAGS to pass the include arguments. This
appears to fix the bug where an installed, obsolete ganglia.h would
break the build.
- Do a better job of respecting CFLAGS and LDFLAGS.
- Drop USE_LIBTOOL_VER. It appears to break sparc64.
- Fix a warning caused by an @unexec in the plist when gmetad.conf
has been modified.
The port revision has been bumped. All users of 3.0.0 should upgrade.
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/ganglia-monitor-core/Makefile | 15 | ||||
-rw-r--r-- | sysutils/ganglia-monitor-core/files/patch-srclib_libmetrics_freebsd_metrics.c | 184 | ||||
-rw-r--r-- | sysutils/ganglia-monitor-core/pkg-plist | 3 |
3 files changed, 194 insertions, 8 deletions
diff --git a/sysutils/ganglia-monitor-core/Makefile b/sysutils/ganglia-monitor-core/Makefile index bd5c5c924894..294b7103417a 100644 --- a/sysutils/ganglia-monitor-core/Makefile +++ b/sysutils/ganglia-monitor-core/Makefile @@ -5,32 +5,33 @@ # $FreeBSD$ # -PORTNAME= ganglia-monitor-core +PORTNAME= monitor-core PORTVERSION= 3.0.0 +PORTREVISION= 1 CATEGORIES= sysutils net parallel MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= ganglia +PKGNAMEPREFIX= ganglia- DISTNAME= ganglia-${PORTVERSION} MAINTAINER= brooks@FreeBSD.org COMMENT= Ganglia cluster monitor, monitoring daemon -PKGINSTALL= ${WRKSRC}/pkg-install - .if defined (WITH_GMETAD) LIB_DEPENDS= rrd.0:${PORTSDIR}/net/rrdtool .endif +PKGINSTALL= ${WRKSRC}/pkg-install + OPTIONS+= GMETAD "include gmetad" on GNU_CONFIGURE= yes -CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" -CPPFLAGS= -I${LOCALBASE}/include ${PTHREAD_CFLAGS} -LDFLAGS= -L${LOCALBASE}/lib +CONFIGURE_ENV= CFLAGS="${_CFLAGS}" LDFLAGS="${_LDFLAGS}" +_CFLAGS= ${CFLAGS} -I${LOCALBASE}/include ${PTHREAD_CFLAGS} +_LDFLAGS= ${LDFLAGS} -L${LOCALBASE}/lib USE_REINPLACE= yes USE_BZIP2= yes -USE_LIBTOOL_VER= 15 USE_RC_SUBR= ganglia.sh SUB_FILES= pkg-install diff --git a/sysutils/ganglia-monitor-core/files/patch-srclib_libmetrics_freebsd_metrics.c b/sysutils/ganglia-monitor-core/files/patch-srclib_libmetrics_freebsd_metrics.c new file mode 100644 index 000000000000..3950960809f0 --- /dev/null +++ b/sysutils/ganglia-monitor-core/files/patch-srclib_libmetrics_freebsd_metrics.c @@ -0,0 +1,184 @@ + +$FreeBSD$ + +--- srclib/libmetrics/freebsd/metrics.c.orig ++++ srclib/libmetrics/freebsd/metrics.c +@@ -51,6 +51,8 @@ + #define UINT64_MAX ULLONG_MAX + #endif + ++#define VFCF_NONLOCAL (VFCF_NETWORK|VFCF_SYNTHETIC|VFCF_LOOPBACK) ++ + #define timertod(tvp) \ + ((double)(tvp)->tv_sec + (double)(tvp)->tv_usec/(1000*1000)) + +@@ -243,49 +245,40 @@ + g_val_t + machine_type_func ( void ) + { +- g_val_t val; +- char machine_type[MAX_G_STRING_SIZE]; +- size_t len = MAX_G_STRING_SIZE; +- if (sysctlbyname("hw.machine", &machine_type, &len, NULL, 0) == -1 || !len) +- strncpy( val.str, "x86", MAX_G_STRING_SIZE ); ++ g_val_t val; ++ size_t len = sizeof(val.str); + +- strncpy( val.str, machine_type, MAX_G_STRING_SIZE ); +- return val; ++ if (sysctlbyname("hw.machine", val.str, &len, NULL, 0) == -1 || ++ (len == 0)) ++ strlcpy(val.str, "unknown", sizeof(val.str)); ++ ++ return val; + } + + g_val_t + os_name_func ( void ) + { +- g_val_t val; +- char osname[MAX_G_STRING_SIZE]; +- size_t len = MAX_G_STRING_SIZE; +- if (sysctlbyname("kern.ostype", &osname, &len, NULL, 0) == -1 || !len) +- strncpy( val.str, "FreeBSD", MAX_G_STRING_SIZE ); ++ g_val_t val; ++ size_t len = sizeof(val.str); + +- strncpy( val.str, osname, MAX_G_STRING_SIZE ); +- +- return val; ++ if (sysctlbyname("kern.ostype", val.str, &len, NULL, 0) == -1 || ++ (len == 0)) ++ strlcpy(val.str, "FreeBSD (unknown)", sizeof(val.str)); ++ ++ return val; + } + + g_val_t + os_release_func ( void ) + { +- g_val_t val; +- int mib[2]; +- size_t len; +- char *prefix, buf[1024]; +- +- prefix = ""; +- +- mib[0] = CTL_KERN; +- mib[1] = KERN_OSRELEASE; +- len = sizeof(buf); +- if (sysctl(mib, 2, &buf, &len, NULL, 0) == -1) +- strncpy( val.str, "Unknown", MAX_G_STRING_SIZE ); ++ g_val_t val; ++ size_t len = sizeof(val.str); + +- strncpy( val.str, buf, MAX_G_STRING_SIZE ); ++ if (sysctlbyname("kern.osrelease", val.str, &len, NULL, 0) == -1 || ++ (len == 0)) ++ strlcpy(val.str, "unknown", sizeof(val.str)); + +- return val; ++ return val; + } + + /* Get the CPU state given by index, from kern.cp_time +@@ -910,8 +903,9 @@ + static char * + makenetvfslist(void) + { +- char *str = NULL, *strptr, **listptr = NULL; +- int cnt, i; ++ char *str = NULL, *strptr, **listptr = NULL; ++ size_t slen; ++ int cnt, i; + + #if __FreeBSD_version > 500000 + struct xvfsconf *xvfsp, *keep_xvfsp = NULL; +@@ -938,20 +932,22 @@ + goto done; + } + +- for (cnt = 0, i = 0; i < maxvfsconf; i++) { +- if (xvfsp->vfc_flags & (VFCF_NETWORK|VFCF_SYNTHETIC|VFCF_LOOPBACK)) { +- listptr[cnt++] = strdup(xvfsp->vfc_name); +- if (listptr[cnt-1] == NULL) { +- warnx("malloc failed"); +- goto done; +- } ++ for (cnt = 0; cnt < maxvfsconf; xvfsp++) { ++ if (xvfsp->vfc_flags & VFCF_NONLOCAL) ++ continue; ++ ++ listptr[cnt] = strdup(xvfsp->vfc_name); ++ if (listptr[cnt] == NULL) { ++ warnx("malloc failed"); ++ goto done; + } +- xvfsp++; ++ cnt++; + } + #else + int mib[3], maxvfsconf; + size_t miblen; + struct ovfsconf *ptr; ++ int fd; + + mib[0] = CTL_VFS; mib[1] = VFS_GENERIC; mib[2] = VFS_MAXTYPENUM; + miblen=sizeof(maxvfsconf); +@@ -966,31 +962,45 @@ + goto done; + } + +- for (ptr = getvfsent(); ptr; ptr = getvfsent()) +- if (ptr->vfc_flags & (VFCF_NETWORK|VFCF_SYNTHETIC|VFCF_LOOPBACK)) { +- listptr[cnt++] = strdup(ptr->vfc_name); +- if (listptr[cnt-1] == NULL) { +- warnx("malloc failed"); +- goto done; +- } ++ cnt = 0; ++ while ((ptr = getvfsent()) != NULL && cnt < maxvfsconf) { ++ if (ptr->vfc_flags & VFCF_NONLOCAL) ++ continue; ++ ++ listptr[cnt] = strdup(ptr->vfc_name); ++ if (listptr[cnt] == NULL) { ++ warnx("malloc failed"); ++ goto done; + } ++ cnt++; ++ } + #endif + + if (cnt == 0) + goto done; + +- if ((str = malloc(sizeof(char) * (32 * cnt + cnt + 2))) == NULL) { ++ /* ++ * Count up the string lengths, we need a extra byte to hold ++ * the between entries ',' or the NUL at the end. ++ */ ++ for (i = 0; i < cnt; i++) ++ slen = strlen(listptr[i]) + 1; ++ /* Add 2 for initial "no". */ ++ slen += 2; ++ ++ if ((str = malloc(slen)) == NULL) { + warnx("malloc failed"); + goto done; + } + +- *str = 'n'; *(str + 1) = 'o'; ++ str[0] = 'n'; ++ str[1] = 'o'; + for (i = 0, strptr = str + 2; i < cnt; i++, strptr++) { +- strncpy(strptr, listptr[i], 32); ++ strcpy(strptr, listptr[i]); + strptr += strlen(listptr[i]); + *strptr = ','; + } +- *(--strptr) = '\0'; ++ *strptr = '\0'; + + done: + #if __FreeBSD_version > 500000 diff --git a/sysutils/ganglia-monitor-core/pkg-plist b/sysutils/ganglia-monitor-core/pkg-plist index 9f0667cc0e2b..98ad3d376c9e 100644 --- a/sysutils/ganglia-monitor-core/pkg-plist +++ b/sysutils/ganglia-monitor-core/pkg-plist @@ -4,12 +4,13 @@ bin/gstat bin/gmetric @unexec if cmp -s %D/etc/gmond.conf %D/etc/gmond.conf.sample; then rm -f %D/etc/gmond.conf; fi etc/gmond.conf.sample -%%GMETAD%%@unexec cmp -s %D/etc/gmetad.conf %D/etc/gmetad.conf.sample && rm -f %D/etc/gmetad.conf +%%GMETAD%%@unexec if cmp -s %D/etc/gmetad.conf %D/etc/gmetad.conf.sample; then rm -f %D/etc/gmetad.conf; fi %%GMETAD%%etc/gmetad.conf.sample include/ganglia.h lib/libganglia-3.0.0.so.0 lib/libganglia-3.0.0.so lib/libganglia.so +lib/libganglia.la lib/libganglia.a %%GMETAD%%sbin/gmetad sbin/gmond |