Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Oct 2003 21:45:05 +0800 (CST)
From:      Cheng-Lung Sung <clsung@dragon2.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        clsung@tiger2.net
Subject:   ports/58596: Fix broken on sysutils/xosview
Message-ID:  <20031027134505.18BDE154D9@mail.dragon2.net>
Resent-Message-ID: <200310271350.h9RDoO02001175@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         58596
>Category:       ports
>Synopsis:       Fix broken on sysutils/xosview
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 27 05:50:24 PST 2003
>Closed-Date:
>Last-Modified:
>Originator:     Cheng-Lung Sung
>Release:        FreeBSD 5.1-RELEASE i386
>Organization:
FreeBSD @ Taiwan
>Environment:
FreeBSD 5.1-RELEASE #2: Thu Jun 12 21:26:05 CST 2003     root@going04.iis.sinica.edu.tw:/usr/obj/usr/src/sys/GOING04

>Description:
- Grab maintainership.
- Fix broken on 5.1.
- replace <xxx> with <xxx.h> due to Standard C++.
- In my observation, when include "devstats.h", 
In 4.x or earlier version, we use checkversion(), getnumdevs() ...
But In 5.x, it should be repalce with devstat_checkversion(kvm_t *), devstat_getnumdevs(kvm_t *) respectively.
In summary, function in 4.x's devstats.h can add prefix word "devstat_".

>How-To-Repeat:
>Fix:

diff -ruN /usr/ports/sysutils/xosview/Makefile ./xosview/Makefile
--- /usr/ports/sysutils/xosview/Makefile	Tue Jun 10 12:32:42 2003
+++ ./xosview/Makefile	Mon Oct 27 21:36:11 2003
@@ -12,17 +12,33 @@
 MASTER_SITES=	${MASTER_SITE_SOURCEFORGE}
 MASTER_SITE_SUBDIR=	${PORTNAME}
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	clsung@FreeBSD.org
 COMMENT=	A graphical performance meter
 
 USE_X_PREFIX=	yes
 GNU_CONFIGURE=	yes
+USE_REINPLACE=	yes
 MAN1=		xosview.1
 
-.include <bsd.port.pre.mk>
+post-patch:
+	@${REINPLACE_CMD} -e 's,iostream.h,iostream,' \
+		${WRKSRC}/xwin.h \
+		${WRKSRC}/Host.h \
+		${WRKSRC}/Xrm.cc \
+		${WRKSRC}/llist.cc \
+		${WRKSRC}/timeval.h \
+		${WRKSRC}/xosview.cc
+	@${REINPLACE_CMD} -e 's,string.h,string,' \
+		${WRKSRC}/xwin.h \
+		${WRKSRC}/Host.cc \
+		${WRKSRC}/Xrm.cc \
+		${WRKSRC}/llist.cc \
+		${WRKSRC}/timeval.h \
+		${WRKSRC}/xosview.cc
+	@${REINPLACE_CMD} -e 's,fstream.h,fstream,' \
+		${WRKSRC}/bitfieldmeter.cc \
+		${WRKSRC}/fieldmeter.cc \
+		${WRKSRC}/fieldmeterdecay.cc \
+		${WRKSRC}/fieldmetergraph.cc
 
-.if ${OSVERSION} >= 500113
-BROKEN=         "Does not compile (bad C++ code)"
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff -ruN /usr/ports/sysutils/xosview/files/patch-Host.h ./xosview/files/patch-Host.h
--- /usr/ports/sysutils/xosview/files/patch-Host.h	Thu Jan  1 08:00:00 1970
+++ ./xosview/files/patch-Host.h	Mon Oct 27 21:31:47 2003
@@ -0,0 +1,10 @@
+--- Host.h.orig	Sun Jan 24 06:20:39 1999
++++ Host.h	Mon Oct 27 21:31:31 2003
+@@ -19,6 +19,7 @@
+ #include <arpa/inet.h>
+ #include <iostream.h>
+ #include "bool.h"
++using namespace std;
+ 
+ class Host {
+ public:
diff -ruN /usr/ports/sysutils/xosview/files/patch-Xrm.h ./xosview/files/patch-Xrm.h
--- /usr/ports/sysutils/xosview/files/patch-Xrm.h	Thu Jan  1 08:00:00 1970
+++ ./xosview/files/patch-Xrm.h	Mon Oct 27 21:26:57 2003
@@ -0,0 +1,11 @@
+--- Xrm.h.orig	Sun Jan 24 06:20:39 1999
++++ Xrm.h	Mon Oct 27 21:26:37 2003
+@@ -16,7 +16,7 @@
+ #include <X11/Xlib.h>
+ #include <X11/Xresource.h>
+ 
+-class ostream;
++using namespace std;
+ 
+ class Xrm {
+ public:
diff -ruN /usr/ports/sysutils/xosview/files/patch-kernel.cc ./xosview/files/patch-kernel.cc
--- /usr/ports/sysutils/xosview/files/patch-kernel.cc	Thu Aug 23 06:22:06 2001
+++ ./xosview/files/patch-kernel.cc	Mon Oct 27 20:44:21 2003
@@ -1,5 +1,5 @@
---- bsd/kernel.cc.orig	Mon Jul 17 11:52:31 2000
-+++ bsd/kernel.cc	Tue Aug 21 12:23:41 2001
+--- bsd/kernel.cc.orig	Tue Oct  9 10:40:51 2001
++++ bsd/kernel.cc	Mon Oct 27 20:03:03 2003
 @@ -46,6 +46,7 @@
  #endif
  
@@ -30,7 +30,136 @@
    int	totalinuse, totalsize;
    int rnswap, nswap = swapctl(SWAP_NSWAP, 0, 0);
    struct swapent *swapiter;
-@@ -828,25 +834,25 @@
+@@ -557,13 +563,21 @@
+ 	 * Make sure that the userland devstat version matches the kernel
+ 	 * devstat version.
+ 	 */
++#if __FreeBSD_version >= 500000
++	if (devstat_checkversion(kd) < 0) {
++#else
+ 	if (checkversion() < 0) {
++#endif
+ 		nodisk++;
+ 		return;
+ 	}
+ 
+ 	/* find out how many devices we have */
++#if __FreeBSD_version >= 500000
++	if ((num_devices = devstat_getnumdevs(kd)) < 0) {
++#else
+ 	if ((num_devices = getnumdevs()) < 0) {
++#endif
+ 		nodisk++;
+ 		return;
+ 	}
+@@ -578,7 +592,11 @@
+ 	 * changed here, since it almost certainly has.  We only look for
+ 	 * errors.
+ 	 */
++#if __FreeBSD_version >= 500000
++	if (devstat_getdevs(kd,&cur) == -1) {
++#else
+ 	if (getdevs(&cur) == -1) {
++#endif
+ 		nodisk++;
+ 		return;
+ 	}
+@@ -590,7 +608,11 @@
+ 
+ 	/* only interested in disks */
+ 	matches = NULL;
++#if __FreeBSD_version >= 500000
++	if (devstat_buildmatch("da", &matches, &num_matches) != 0) {
++#else
+ 	if (buildmatch("da", &matches, &num_matches) != 0) {
++#endif
+ 		nodisk++;
+ 		return;
+ 	}
+@@ -605,7 +627,11 @@
+ 	 * device list has changed, so we don't look for return values of 0
+ 	 * or 1.  If we get back -1, though, there is an error.
+ 	 */
++#if __FreeBSD_version >= 500000
++	if (devstat_selectdevs(&dev_select, &num_selected,
++#else
+ 	if (selectdevs(&dev_select, &num_selected,
++#endif
+ 		       &num_selections, &select_generation,
+ 		       generation, cur.dinfo->devices, num_devices,
+ 		       matches, num_matches,
+@@ -632,7 +658,11 @@
+ 		 * the selection process again, in case a device that we
+ 		 * were previously displaying has gone away.
+ 		 */
++#if __FreeBSD_version >= 500000
++		switch (devstat_getdevs(kd,&cur)) {
++#else
+ 		switch (getdevs(&cur)) {
++#endif
+ 		case -1:
+ 			return (0);
+ 		case 1: {
+@@ -640,7 +670,11 @@
+ 
+ 			num_devices = cur.dinfo->numdevs;
+ 			generation = cur.dinfo->generation;
++#if __FreeBSD_version >= 500000
++			retval = devstat_selectdevs(&dev_select, &num_selected,
++#else
+ 			retval = selectdevs(&dev_select, &num_selected,
++#endif
+ 					    &num_selections, &select_generation,
+ 					    generation, cur.dinfo->devices,
+ 					    num_devices, matches, num_matches,
+@@ -664,14 +698,22 @@
+ 		 * Calculate elapsed time up front, since it's the same for all
+ 		 * devices.
+ 		 */
++#if __FreeBSD_version >= 500000
++		busy_seconds = cur.snap_time - last.snap_time;
++#else
+ 		busy_seconds = compute_etime(cur.busy_time, last.busy_time);
++#endif
+ 
+ 		/* this is the first time thru so just copy cur to last */
+ 		if (last.dinfo->numdevs == 0) {
+ 			tmp_dinfo = last.dinfo;
+ 			last.dinfo = cur.dinfo;
+ 			cur.dinfo = tmp_dinfo;
++#if __FreeBSD_version >= 500000
++			last.snap_time = cur.snap_time;
++#else
+ 			last.busy_time = cur.busy_time;
++#endif
+ 			return (0);
+ 		}
+ 
+@@ -685,7 +727,11 @@
+ 
+ 			di = dev_select[dn].position;
+ 
++#if __FreeBSD_version >= 500000
++			if (devstat_compute_statistics(&cur.dinfo->devices[di],
++#else
+ 			if (compute_stats(&cur.dinfo->devices[di],
++#endif
+ 				  &last.dinfo->devices[di], busy_seconds,
+ 				  &total_bytes, &total_transfers,
+ 				  NULL, NULL,
+@@ -700,7 +746,11 @@
+ 		last.dinfo = cur.dinfo;
+ 		cur.dinfo = tmp_dinfo;
+ 
++#if __FreeBSD_version >= 500000
++		last.snap_time = cur.snap_time;
++#else
+ 		last.busy_time = cur.busy_time;
++#endif
+ 
+ 	} else {
+ 		/* no disks found ? */
+@@ -828,25 +878,25 @@
    OpenKDIfNeeded(); 
    nintr = (nlst[EINTRCNT_SYM_INDEX].n_value -
  	   nlst[INTRCNT_SYM_INDEX].n_value)   / sizeof(int);
@@ -63,7 +192,7 @@
      /* FreeBSD has an array of interrupt counts, indexed by device number.
         These are also indirected by IRQ num with intr_countp: */
      safe_kvm_read (nlst[INTRCOUNTP_SYM_INDEX].n_value,
-@@ -875,8 +881,8 @@
+@@ -875,8 +925,8 @@
        intrCount[i] = kvm_intrptrs[i];
  #endif /* _BSDI_VERSION */
  
diff -ruN /usr/ports/sysutils/xosview/files/patch-xwin.h ./xosview/files/patch-xwin.h
--- /usr/ports/sysutils/xosview/files/patch-xwin.h	Thu Jan  1 08:00:00 1970
+++ ./xosview/files/patch-xwin.h	Mon Oct 27 21:13:52 2003
@@ -0,0 +1,10 @@
+--- xwin.h.orig	Mon Feb 25 03:52:00 2002
++++ xwin.h	Mon Oct 27 21:13:29 2003
+@@ -11,6 +11,7 @@
+ #endif
+ #include <iostream.h>
+ #include <string.h>
++using namespace std;
+ 
+ #define XWIN_H_CVSID "$Id$"
+ 

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031027134505.18BDE154D9>