ports/135860: [PATCH] x11/kdebase3: Unbreak on -CURRENT

Ulrich Spoerlein uqs at spoerlein.net
Sat Jun 20 12:00:18 UTC 2009


>Number:         135860
>Category:       ports
>Synopsis:       [PATCH] x11/kdebase3: Unbreak on -CURRENT
>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:   Sat Jun 20 12:00:16 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Ulrich Spoerlein
>Release:        FreeBSD 7.2-STABLE i386
>Organization:
>Environment:
>Description:
- Port over libusb20 changes from kdebase4 to kdebase3 to make it compile on CURRENT

Added file(s):
- files/extrapatch-libusb20

Removed file(s):
- files/patch-kcontrol-usbview-usbdevices.h

Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:

--- .patch begins here ---
Index: Makefile
===================================================================
RCS file: /tank/ncvs/ports/x11/kdebase3/Makefile,v
retrieving revision 1.213
diff -u -p -u -r1.213 Makefile
--- Makefile	9 Mar 2009 17:15:42 -0000	1.213
+++ Makefile	20 Jun 2009 11:51:40 -0000
@@ -60,6 +60,8 @@ OPTIONS=	ARTSWRAPPER "Suid wrapper for a
 
 .if ${OSVERSION} < 800069
 LIB_DEPENDS+=	usb-0.1:${PORTSDIR}/devel/libusb
+.else
+EXTRA_PATCHES+=	${FILESDIR}/extrapatch-libusb20
 .endif
 
 .if !defined(WITHOUT_ARTSWRAPPER)
@@ -71,7 +73,7 @@ RUN_DEPENDS+=	htdig:${PORTSDIR}/textproc
 .endif
 
 .if !defined(WITHOUT_HAL)
-EXTRA_PATCHES=	${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \
+EXTRA_PATCHES+=	${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \
 		${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h
 LIB_DEPENDS+=	dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \
 		hal.1:${PORTSDIR}/sysutils/hal
Index: files/extrapatch-libusb20
===================================================================
RCS file: files/extrapatch-libusb20
diff -N files/extrapatch-libusb20
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/extrapatch-libusb20	20 Jun 2009 11:51:40 -0000
@@ -0,0 +1,166 @@
+--- usbdevices.h.orig	2006-07-22 10:15:22.000000000 +0200
++++ usbdevices.h	2009-06-20 13:19:42.000000000 +0200
+@@ -17,7 +17,9 @@
+ #include <qptrlist.h>
+ 
+ #ifdef Q_OS_FREEBSD
+-#include <dev/usb/usb.h>
++#include <libusb20.h>
++#include <dev/usb/usb_ioctl.h>
++#include <dev/usb/usb_revision.h>
+ #endif
+ 
+ class USBDB;
+@@ -66,7 +68,7 @@
+   unsigned int _vendorID, _prodID, _revMajor, _revMinor;
+ 
+ #ifdef Q_OS_FREEBSD
+-  void collectData( int fd, int level, usb_device_info &di, int parent );
++  void collectData(struct libusb20_backend *, struct libusb20_device *);
+   QStringList _devnodes;
+ #endif
+ };
+--- usbdevices.cpp.orig	2009-06-20 13:19:47.000000000 +0200
++++ usbdevices.cpp	2009-06-20 13:38:34.000000000 +0200
+@@ -318,17 +318,25 @@
+ 
+ /*
+  * FreeBSD support by Markus Brueffer <markus at brueffer.de>
++ * libusb20 support by Hans Petter Selasky <hselasky at freebsd.org>
+  *
+  * Basic idea and some code fragments were taken from FreeBSD's usbdevs(8), 
+  * originally developed for NetBSD, so this code should work with no or 
+  * only little modification on NetBSD.
+  */
+ 
+-void USBDevice::collectData( int fd, int level, usb_device_info &di, int parent)
++void USBDevice::collectData(struct libusb20_backend *pbe,
++    struct libusb20_device *pdev)
+ {
++	char tempbuf[32];
++	struct usb_device_info di;
++
++	if (libusb20_dev_get_info(pdev, &di))
++		memset(&di, 0, sizeof(di));
++
+ 	// determine data for this device
+-	_level        = level;
+-	_parent       = parent;
++	_level        = 0;
++	_parent       = 0;
+ 	
+ 	_bus          = di.udi_bus;
+ 	_device       = di.udi_addr;
+@@ -345,87 +353,49 @@
+ 	_channels     = di.udi_nports;
+ 	
+ 	// determine the speed
+-#if __FreeBSD_version > 490102
+ 	switch (di.udi_speed) {
+ 		case USB_SPEED_LOW:  _speed = 1.5;   break;
+ 		case USB_SPEED_FULL: _speed = 12.0;  break;
+ 		case USB_SPEED_HIGH: _speed = 480.0; break;
++		case USB_SPEED_VARIABLE: _speed = 480.0; break;
++		case USB_SPEED_SUPER: _speed = 4800.0; break;
++		default: _speed = 480.0; break;
+ 	}
+-#else
+-	_speed = di.udi_lowspeed ? 1.5 : 12.0;
+-#endif
+ 
+ 	// Get all attached devicenodes
+-	for ( int i = 0; i < USB_MAX_DEVNAMES; ++i )
+-		if ( di.udi_devnames[i][0] )
+-			_devnodes << di.udi_devnames[i];
++	for (int i = 0; i < 32; ++i) {
++	    if (libusb20_dev_get_iface_desc(pdev, i, tempbuf, sizeof(tempbuf)) == 0) {
++		_devnodes << tempbuf;
++	    } else {
++		break;
++	    }
++	}
+ 
+ 	// For compatibility, split the revision number
+ 	sscanf( di.udi_release, "%x.%x", &_revMajor, &_revMinor );
+ 
+-	// Cycle through the attached devices if there are any
+-	for ( int p = 0; p < di.udi_nports; ++p ) {
+-		// Get data for device
+-		struct usb_device_info di2;
+-
+-		di2.udi_addr = di.udi_ports[p];
+-		
+-		if ( di2.udi_addr >= USB_MAX_DEVICES )
+-			continue;
+-			
+-		if ( ioctl(fd, USB_DEVICEINFO, &di2) == -1 )
+-			continue;
+-
+-		// Only add the device if we didn't detect it, yet
+-		if (!find( di2.udi_bus, di2.udi_addr ) )
+-		{
+-			USBDevice *device = new USBDevice();
+-			device->collectData( fd, level + 1, di2, di.udi_addr );
+-		}
+-	}
+ }
+ 
+-
+-
+ bool USBDevice::parse(QString fname)
+ {
+-	static bool showErrorMessage = true;
+-	bool error = false;
++	struct libusb20_backend *pbe;
++	struct libusb20_device *pdev;
++
+ 	_devices.clear();
+ 	
+-	QFile controller("/dev/usb0");
+-	int i = 1;
+-	while ( controller.exists() )
+-	{
+-		// If the devicenode exists, continue with further inspection
+-		if ( controller.open(IO_ReadOnly) )
+-		{
+-			for ( int addr = 1; addr < USB_MAX_DEVICES; ++addr ) 
+-			{
+-				struct usb_device_info di;
+-				
+-				di.udi_addr = addr;
+-				if ( ioctl(controller.handle(), USB_DEVICEINFO, &di) != -1 )
+-				{
+-					if (!find( di.udi_bus, di.udi_addr ) )
+-					{
+-						USBDevice *device = new USBDevice();
+-						device->collectData( controller.handle(), 0, di, 0);
+-					}
+-				}
+-			}
+-			controller.close();
+-		} else {
+-			error = true;
+-		}
+-		controller.setName( QString::fromLocal8Bit("/dev/usb%1").arg(i++) );
+-	}
+-	
+-	if ( showErrorMessage && error ) {
+-		showErrorMessage = false;
+-		KMessageBox::error( 0, i18n("Could not open one or more USB controller. Make sure, you have read access to all USB controllers that should be listed here."));
++	pbe = libusb20_be_alloc_default();
++	if (pbe == NULL)
++	    return (false);
++
++	pdev = NULL;
++
++	while ((pdev = libusb20_be_device_foreach(pbe, pdev))) {
++	    USBDevice *device = new USBDevice();
++	    device->collectData(pbe, pdev);
+ 	}
+-	
++
++	libusb20_be_free(pbe);
++
+ 	return true;
+ }
+ #endif
Index: files/patch-kcontrol-usbview-usbdevices.h
===================================================================
RCS file: files/patch-kcontrol-usbview-usbdevices.h
diff -N files/patch-kcontrol-usbview-usbdevices.h
--- files/patch-kcontrol-usbview-usbdevices.h	16 Mar 2009 19:02:52 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-Patch included below. FreeBSD_version is approximate.
-
---- kcontrol/usbview/usbdevices.h.orig	2006-07-22 10:15:22.000000000 +0200
-+++ kcontrol/usbview/usbdevices.h	2009-03-15 23:24:38.000000000 +0100
-@@ -17,8 +17,13 @@
- #include <qptrlist.h>
- 
- #ifdef Q_OS_FREEBSD
-+#include <osreldate.h>
-+#if __FreeBSD_version >= 800069
-+#include <legacy/dev/usb/usb.h>
-+#else
- #include <dev/usb/usb.h>
- #endif
-+#endif
- 
- class USBDB;
- 
--- .patch ends here ---

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



More information about the freebsd-ports-bugs mailing list