ports/182042: [NEW PORT] sysutils/xfce4-diskperf-plugin

Danilo Egêa Gondolfo danilogondolfo at gmail.com
Thu Sep 12 15:20:00 UTC 2013


>Number:         182042
>Category:       ports
>Synopsis:       [NEW PORT] sysutils/xfce4-diskperf-plugin
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 12 15:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Danilo Egêa Gondolfo
>Release:        FreeBSD 9.2-RC4
>Organization:
>Environment:
FreeBSD mac 9.2-RC4 FreeBSD 9.2-RC4 #4 r255480M: Wed Sep 11 19:15:08 BRT 2013     root at mac:/usr/obj/usr/src/sys/MAC  amd64
>Description:
This plugin displays instant disk/partition performance (bytes transfered per second) for FreeBSD.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	xfce4-diskperf-plugin
#	xfce4-diskperf-plugin/Makefile
#	xfce4-diskperf-plugin/distinfo
#	xfce4-diskperf-plugin/files
#	xfce4-diskperf-plugin/files/patch-panel-plugin__devperf.c
#	xfce4-diskperf-plugin/files/patch-panel-plugin__main.c
#	xfce4-diskperf-plugin/pkg-descr
#	xfce4-diskperf-plugin/pkg-plist
#
echo c - xfce4-diskperf-plugin
mkdir -p xfce4-diskperf-plugin > /dev/null 2>&1
echo x - xfce4-diskperf-plugin/Makefile
sed 's/^X//' >xfce4-diskperf-plugin/Makefile << '48d142e7a42de6f38881782c4101cc96'
X# Created by: Danilo Egea Gondolfo <danilogondolfo at gmail.com>
X# $FreeBSD$
X
XPORTNAME=	xfce4-diskperf-plugin
XPORTVERSION=	2.5.4
XCATEGORIES=	sysutils xfce
XMASTER_SITES=	${MASTER_SITE_XFCE}
XMASTER_SITE_SUBDIR=	src/panel-plugins/${PORTNAME}/${PORTVERSION:R}
XDIST_SUBDIR=	xfce4
X
XMAINTAINER=	danilogondolfo at gmail.com
XCOMMENT=	Graphical representation of the disk IO
X
XGNU_CONFIGURE=	yes
XUSE_BZIP2=	yes
XUSE_GNOME=	gtk20 intltool intlhack
XUSE_XFCE=	configenv libmenu panel
XINSTALLS_ICONS=	yes
XUSES=	gmake pkgconfig
X
XLDFLAGS+=	-ldevstat
X
XOPTIONS_DEFINE=	NLS
XOPTIONS_SUB=	yes
XNLS_CONFIGURE_ENABLE=	nls
XNLS_USES=	gettext
X
X.include <bsd.port.options.mk>
X
Xpost-patch:
X.if empty(PORT_OPTIONS:MNLS)
X	@${REINPLACE_CMD} -e 's|[[:blank:]]po||' \
X		-e 's|po$$||'  ${WRKSRC}/Makefile.in
X.endif
X
X.include <bsd.port.mk>
48d142e7a42de6f38881782c4101cc96
echo x - xfce4-diskperf-plugin/distinfo
sed 's/^X//' >xfce4-diskperf-plugin/distinfo << '471e4143ec4530a0cc5e71785310e62c'
XSHA256 (xfce4/xfce4-diskperf-plugin-2.5.4.tar.bz2) = aab6b9c4e2f78620920efac6874c4edf426f05b63b94cfda0da8c99a91110a0b
XSIZE (xfce4/xfce4-diskperf-plugin-2.5.4.tar.bz2) = 321974
471e4143ec4530a0cc5e71785310e62c
echo c - xfce4-diskperf-plugin/files
mkdir -p xfce4-diskperf-plugin/files > /dev/null 2>&1
echo x - xfce4-diskperf-plugin/files/patch-panel-plugin__devperf.c
sed 's/^X//' >xfce4-diskperf-plugin/files/patch-panel-plugin__devperf.c << '098a9a5cef03e185263c3cd3cad08d06'
X--- ./panel-plugin/devperf.c.orig	2012-04-03 10:22:41.000000000 -0300
X+++ ./panel-plugin/devperf.c	2013-09-11 17:45:00.000000000 -0300
X@@ -225,6 +225,94 @@
X 
X 	/**************************	Linux End	***************/
X 
X+#elif defined(__FreeBSD__)
X+
X+#include <sys/disk.h>
X+#include <sys/param.h>
X+#include <sys/sysctl.h>
X+#include <sys/types.h>
X+#include <sys/errno.h>
X+#include <sys/resource.h>
X+#include <sys/time.h>
X+#include <devstat.h>
X+#include <fcntl.h>
X+#include <limits.h>
X+#include <string.h>
X+#include <syslog.h>
X+#include <stdarg.h>
X+
X+#define MAXNAMELEN 256
X+
X+int DevPerfInit ()
X+{
X+	return (0);
X+}   
X+
X+int DevCheckStatAvailability(char const **strptr)
X+{
X+	return (0);
X+}
X+
X+int DevGetPerfData (const void *p_pvDevice, struct devperf_t *perf)
X+{
X+	struct timeval tv;
X+	struct timespec ts;
X+	struct statinfo stats;
X+	struct devinfo dinfo;
X+	struct devstat dev;
X+	kvm_t *kd = NULL;
X+	int i, found = 0;
X+	char *check_dev = (char *) p_pvDevice;
X+
X+	memset(&stats, 0, sizeof(stats));
X+	memset(&dinfo, 0, sizeof(dinfo));
X+	stats.dinfo = &dinfo;
X+
X+	if(devstat_getdevs(kd, &stats) == -1) {
X+		syslog(0, "DISKPERF: getdevs fail");
X+	}
X+
X+	for(found = 0, i = 0; i < (stats.dinfo)->numdevs; i++) {
X+		char dev_name[MAXNAMELEN];
X+		dev = (stats.dinfo)->devices[i];
X+		snprintf(dev_name, MAXNAMELEN-1, "%s%d",
X+				dev.device_name, dev.unit_number);
X+		if ((check_dev != NULL) && (strcmp(check_dev, dev_name) != 0))
X+			continue;
X+		else {
X+			found = 1;
X+			break;
X+		}
X+
X+	}
X+
X+	if(check_dev != NULL && found) {
X+		perf->wbytes = dev.bytes[DEVSTAT_WRITE];
X+		perf->rbytes = dev.bytes[DEVSTAT_READ];
X+		gettimeofday (&tv, 0);
X+		perf->timestamp_ns = (uint64_t)1000ull * 1000ull * 1000ull *
X+			tv.tv_sec + 1000ull * tv.tv_usec;
X+		perf->qlen = dev.start_count - dev.end_count;
X+		// I'm not sure about rbusy and wbusy calculation
X+		bintime2timespec(&dev.busy_time, &ts);
X+		perf->rbusy_ns = (uint64_t) ts.tv_nsec;
X+		perf->wbusy_ns = perf->rbusy_ns;
X+	}
X+
X+	return (0);
X+}   
X+
X+#if 0				/* Standalone test purpose */
X+int main ()
X+{
X+    struct devperf_t oPerf;
X+    DevGetPerfData ((void*)"ada0", &oPerf);
X+    printf ("%lu\t%lu\n", oPerf.rbytes, oPerf.wbytes);
X+    return (0);
X+}
X+#endif
X+
X+
X 
X #elif defined(__NetBSD__)
X 	/**************************************************************/
098a9a5cef03e185263c3cd3cad08d06
echo x - xfce4-diskperf-plugin/files/patch-panel-plugin__main.c
sed 's/^X//' >xfce4-diskperf-plugin/files/patch-panel-plugin__main.c << '602017401b09ce508ee4e38d9755a376'
X--- ./panel-plugin/main.c.orig	2012-06-23 05:02:16.000000000 -0300
X+++ ./panel-plugin/main.c	2013-09-11 17:44:45.000000000 -0300
X@@ -86,7 +86,7 @@
X typedef struct param_t {
X     /* Configurable parameters */
X     char            acDevice[64];
X-#if  !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if  !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X     dev_t           st_rdev;
X #endif
X     int             fTitleDisplayed;
X@@ -172,7 +172,7 @@
X     struct param_t *poConf = &(p_poPlugin->oConf.oParam);
X     struct monitor_t *poMonitor = &(p_poPlugin->oMonitor);
X     struct perfbar_t *poPerf = poMonitor->aoPerfBar;
X-#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X     struct stat     oStat;
X #endif
X     uint64_t        iInterval_ns, rbytes, wbytes, iRBusy_ns, iWBusy_ns;
X@@ -185,7 +185,7 @@
X     rbytes = wbytes = iRBusy_ns = iWBusy_ns = -1;
X     memset (&oPerf, 0, sizeof (oPerf));
X     oPerf.qlen = -1;
X-#if defined (__NetBSD__) || defined(__OpenBSD__) || defined(__sun__)
X+#if defined(__FreeBSD__) || defined (__NetBSD__) || defined(__OpenBSD__) || defined(__sun__)
X     status = DevGetPerfData (poConf->acDevice, &oPerf);
X #else
X     if (poConf->st_rdev == 0)
X@@ -429,7 +429,7 @@
X     struct diskperf_t *poPlugin;
X     struct param_t *poConf;
X     struct monitor_t *poMonitor;
X-#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X     struct stat     oStat;
X     int             status;
X #endif
X@@ -444,6 +444,9 @@
X #if defined(__NetBSD__) || defined(__OpenBSD__)
X     strncpy (poConf->acDevice, "wd0", 64);
X     strncpy (poConf->acTitle, "wd0", 16);
X+#elif defined(__FreeBSD__)
X+    strncpy (poConf->acDevice, "ada0", 64);
X+    strncpy (poConf->acTitle, "ada0", 16);
X #elif defined(__sun__)
X     strncpy (poConf->acDevice, "sd0", 64);
X     strncpy (poConf->acTitle, "sd0", 16);
X@@ -517,7 +520,7 @@
X     struct param_t *poConf = &(poPlugin->oConf.oParam);
X     struct monitor_t *poMonitor = &(poPlugin->oMonitor);
X     Widget_t       *pw2ndBar = poPlugin->oMonitor.awProgressBar + 1;
X-#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X     struct stat     oStat;
X     int             status;
X #endif
X@@ -534,7 +537,7 @@
X     if ((value = xfce_rc_read_entry (rc, (CONF_DEVICE), NULL))) {
X         memset (poConf->acDevice, 0, sizeof (poConf->acDevice));
X         strncpy (poConf->acDevice, value, sizeof (poConf->acDevice) - 1);
X-#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X         status = stat (poConf->acDevice, &oStat);
X         poConf->st_rdev = (status == -1 ? 0 : oStat.st_rdev);
X #endif
X@@ -666,7 +669,7 @@
X     struct diskperf_t *poPlugin = (diskperf_t *) p_pvPlugin;
X     struct param_t *poConf = &(poPlugin->oConf.oParam);
X     const char     *pcDevice = gtk_entry_get_text (GTK_ENTRY (p_wTF));
X-#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__sun__)
X     struct stat     oStat;
X     int             status;
X 
602017401b09ce508ee4e38d9755a376
echo x - xfce4-diskperf-plugin/pkg-descr
sed 's/^X//' >xfce4-diskperf-plugin/pkg-descr << '6405b3792ff481c5e94eecfad10a34f5'
XPanel plugin to display a graphical representation of the disks IO.
X
XWWW: http://goodies.xfce.org/projects/panel-plugins/xfce4-diskperf-plugin
6405b3792ff481c5e94eecfad10a34f5
echo x - xfce4-diskperf-plugin/pkg-plist
sed 's/^X//' >xfce4-diskperf-plugin/pkg-plist << '152b1a8da5122cdd2176dc9637a8f008'
Xlib/xfce4/panel/plugins/libdiskperf.so
Xlib/xfce4/panel/plugins/libdiskperf.la
X%%NLS%%share/locale/ar/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ast/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ca/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/cs/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/da/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/de/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/el/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/en_GB/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/es/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/eu/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/fr/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/gl/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/hu/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/id/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/it/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ja/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ko/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/lt/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/lv/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/nb/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/nl/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/pa/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/pl/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/pt/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/pt_BR/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ru/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/sk/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/sq/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/sv/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/tr/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ug/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/uk/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ur/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/ur_PK/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/zh_CN/LC_MESSAGES/xfce4-diskperf-plugin.mo
X%%NLS%%share/locale/zh_TW/LC_MESSAGES/xfce4-diskperf-plugin.mo
Xshare/xfce4/panel/plugins/diskperf.desktop
X%%NLS%%@dirrmtry share/locale/ur_PK/LC_MESSAGES
X%%NLS%%@dirrmtry share/locale/ur_PK
X%%NLS%%@dirrmtry share/locale/ur/LC_MESSAGES
X%%NLS%%@dirrmtry share/locale/ur
X%%NLS%%@dirrmtry share/locale/ug/LC_MESSAGES
X%%NLS%%@dirrmtry share/locale/ug
X%%NLS%%@dirrmtry share/locale/ast/LC_MESSAGES
X%%NLS%%@dirrmtry share/locale/ast
X at dirrmtry share/xfce4/panel/plugins
X at dirrmtry share/xfce4/panel
X at dirrmtry share/xfce4
X at dirrmtry lib/xfce4/panel/plugins
X at dirrmtry lib/xfce4/panel
X at dirrmtry lib/xfce4
152b1a8da5122cdd2176dc9637a8f008
exit



>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ports-bugs mailing list