[kde-freebsd] ports/135860: [PATCH] x11/kdebase3: Unbreak on -CURRENT
Daniel M. Eischen
eischen at vigrid.com
Mon Jul 6 06:00:09 CEST 2009
The following reply was made to PR ports/135860; it has been noted by GNATS.
From: "Daniel M. Eischen" <eischen at vigrid.com>
To: bug-followup at FreeBSD.org
Cc: uqs at spoerlein.net, mezz7 at cox.net
Subject: Re: ports/135860: [PATCH] x11/kdebase3: Unbreak on -CURRENT
Date: Sun, 05 Jul 2009 22:28:45 -0400
This is a multi-part message in MIME format.
--------------000209070400030200080102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
This patch seems to work for me on -current. Note that some of the constants
have changed names under libusb20.
--
DE
--------------000209070400030200080102
Content-Type: text/plain;
name="kdebase3.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="kdebase3.patch"
Index: Makefile
===================================================================
RCS file: /opt/FreeBSD/cvs/ports/x11/kdebase3/Makefile,v
retrieving revision 1.213
diff -u -r1.213 Makefile
--- Makefile 9 Mar 2009 17:15:42 -0000 1.213
+++ Makefile 6 Jul 2009 05:19:34 -0000
@@ -60,6 +60,8 @@
.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 @@
.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 6 Jul 2009 15:52:27 -0000
@@ -0,0 +1,169 @@
+--- kcontrol/usbview/usbdevices.h.orig 2006-07-22 10:15:22.000000000 +0200
++++ kcontrol/usbview/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
+ };
+--- kcontrol/usbview/usbdevices.cpp.orig 2006-07-22 04:15:22.000000000 -0400
++++ kcontrol/usbview/usbdevices.cpp 2009-07-06 11:47:28.000000000 -0400
+@@ -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 LIBUSB20_SPEED_LOW: _speed = 1.5; break;
++ case LIBUSB20_SPEED_FULL: _speed = 12.0; break;
++ case LIBUSB20_SPEED_HIGH: _speed = 480.0; break;
++ case LIBUSB20_SPEED_VARIABLE: _speed = 480.0; break;
++ case LIBUSB20_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;
-
--------------000209070400030200080102--
More information about the kde-freebsd
mailing list