Update of /cvsroot/fink/dists/10.7/stable/main/finkinfo/libs In directory vz-cvs-3.sog:/tmp/cvs-serv16077/libs
Added Files: libgphoto2.info libgphoto2.patch libhal1-shlibs.info libhal1-shlibs.patch libusb.info libusb.patch Log Message: to 10.7 --- NEW FILE: libhal1-shlibs.info --- Package: libhal1-shlibs Version: 0.5.11 Revision: 4 Source: http://hal.freedesktop.org/releases/hal-%v.tar.gz Source-MD5: 750cf074e88b6fb7012f26d99cd39b9b BuildDepends: << dbus-glib1.2-dev, dbus1.3-dev, expat1, fink (>= 0.24.12-1), gettext-bin, gettext-tools, glib2-dev (>= 2.22.0-1), gperf, gtk-doc (>= 1.13-5), libusb, pkgconfig (>= 0.23) << Depends: << dbus, dbus-glib1.2-shlibs, dbus1.3-shlibs << PatchFile: %n.patch PatchFile-MD5: d624de7c6e55e382521152968f82c132 PatchScript: << %{default_script} perl -pi -e 's/-version-info/-no-undefined -version-info/' libhal/Makefile.in libhal-storage/Makefile.in << ConfigureParams: << --libexecdir=%p/sbin \ --with-hal-user=root --with-hal-group=root \ --disable-pci-ids --disable-usb-ids --disable-pnp-ids \ --disable-pmu \ --disable-policy-kit \ --disable-dependency-tracking --disable-static \ PKG_CONFIG_PATH="%p/lib/glib-2.0/pkgconfig-strict:$PKG_CONFIG_PATH" << CompileScript: << ./configure %c make << InstallScript: make install DESTDIR=%d DocFiles: AUTHORS COPYING ChangeLog HACKING NEWS README doc/TODO Shlibs: << %p/lib/libhal.1.dylib 2.0.0 %n (>= 0.5.10-1) %p/lib/libhal-storage.1.dylib 2.0.0 %n (>= 0.5.10-1) << SplitOff: << Package: libhal1-dev Depends: libhal1-shlibs (= %v-%r) BuildDependsOnly: true Files: << include lib/libhal.{la,dylib} lib/libhal-storage.{la,dylib} lib/pkgconfig share/gtk-doc << DocFiles: AUTHORS COPYING ChangeLog HACKING NEWS README doc/TODO << SplitOff2: << Package: hal Depends: << dbus, dbus1.3-shlibs, expat1-shlibs, glib2-shlibs (>= 2.22.0-1), libhal1-shlibs (= %v-%r) << Files: << bin sbin lib/hal share/man << DocFiles: AUTHORS COPYING ChangeLog HACKING NEWS README doc/TODO << DescPort: << Disable the *-ids because I don't see such a file in OS X. Don't have pmu, so disable it. Remove --as-needed because it's not available on OS X linker. Don't have libvolume_id in fink, so don't bother trying to detect it. Detection is omitted on Solaris, so maybe it's not mandatory for darwin either? darwin isn't known by tools and the default implementations of filesystem handling fail because darwin doesn't have getmnt and friends, so hack the tools to use the FreeBSD implementation. << DescPackaging: << Don't have user/group "haldaemon" in passwd or know what to use instead, so leaving hald as root for now. FIXME! << Description: Hardware Abstraction Layer DescUsage: << WARNING: PolicyKit is disabled. You need to manually edit the hal.conf file to lock down the service. Failure to do so allows any caller to make hald do work on their behalf which may be a huge SECURITY HOLE. I repeat: YOU NEED TO EDIT THE FILE hal.conf to match your distro/site to avoid NASTY SECURITY HOLES. NOTE: You have to install init scripts yourself and tweak your own policy << Homepage: http://www.freedesktop.org/wiki/Software/hal License: GPL Maintainer: Daniel Macks <dma...@netspace.org> --- NEW FILE: libgphoto2.info --- Package: libgphoto2 Version: 2.4.8 Revision: 1008 Source: mirror:sourceforge:gphoto/%n-%v.tar.bz2 Depends: %N-shlibs (= %v-%r) BuildDepends: fink (>= 0.24.12), gettext-tools, libexif12, libiconv-dev, libgettext8-dev, libjpeg8, libtool2, libusb, pkgconfig, dbus1.3-dev, libhal1-dev # manpages are for lib: not needed at runtime, filename is libversion-agnostic Replaces: %N-shlibs (<< 2.4.4-1003) GCC: 4.0 Maintainer: Jack Fink <jackf...@users.sourceforge.net> Homepage: http://www.gphoto.org License: LGPL Description: Library for digital cameras Source-MD5: 7753f17dff15702466337aab05209a71 BuildDependsOnly: True PatchFile: %n.patch PatchFile-MD5: 8e81dcbf8684c37b90050e447aa45c67 PatchScript: << %{default_script} perl -pi -e "s,graphviz,fragility_sucks,g;s,doxygen,fragility_sucks,g" configure perl -pi -e "s/-g -O/-O/g;s/-O2/-Os/g" configure libgphoto2_port/configure perl -pi -e 's,<stdlib.h>,<stdlib.h>\n#include <sys/types.h>,' camlibs/sonydscf1/sonydscf1.c << ConfigureParams: --mandir=%p/share/man --with-extra-libs=%p/lib --with-extra-includes=%p/include --disable-dependency-tracking InfoTest: << TestScript: make check || exit 2 << InstallScript: make install DESTDIR=%d DocFiles: ABOUT-NLS AUTHORS COPYING ChangeLog HACKING INSTALL MAINTAINERS NEWS README TESTERS Splitoff: << Package: %N-shlibs Description: Library for digital cameras, shared libs Depends: << dbus1.3-shlibs, libhal1-shlibs, libexif12-shlibs, libgettext8-shlibs, libiconv, libjpeg8-shlibs, libtool2-shlibs, libusb-shlibs << # .la for .so used at runtime by ltdl Replaces: %N (<< 2.4.4-1003) Files: << share/libgphoto2 share/locale lib/libgphoto2/2.4.8 lib/libgphoto2/print-camera-list lib/libgphoto2_port/0.8.0 lib/libgphoto2.2.dylib lib/libgphoto2_port.0.dylib lib/libgphoto2.2.4.0.dylib lib/libgphoto2_port.0.8.0.dylib lib/udev << Shlibs: << %p/lib/libgphoto2.2.dylib 7.0.0 %n (>= 2.4.4-1003) %p/lib/libgphoto2_port.0.dylib 9.0.0 %n (>= 2.3.1-1003) << DocFiles: COPYING << --- NEW FILE: libusb.patch --- diff --git a/darwin.c b/darwin.c --- a/darwin.c +++ b/darwin.c @@ -1,8 +1,10 @@ /* * Darwin/MacOS X Support * - * (c) 2002-2005 Nathan Hjelm <hje...@users.sourceforge.net> + * (c) 2002-2006 Nathan Hjelm <hje...@users.sourceforge.net> * + * (06/26/2006): + * - Bulk functions no longer use async transfer functions. * (04/17/2005): * - Lots of minor fixes. * - Endpoint table now made by claim_interface to fix a bug. @@ -51,6 +53,7 @@ #include "config.h" #endif +#include <inttypes.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> @@ -146,7 +149,6 @@ #define IO_OBJECT_NULL ((io_object_t)0) #endif -/* Darwin/OS X impl does not use fd field, instead it uses this */ struct darwin_dev_handle { usb_device_t **device; usb_interface_t **interface; @@ -157,7 +159,6 @@ unsigned char *endpoint_addrs; }; -static CFMutableDictionaryRef matchingDict; static IONotificationPortRef gNotifyPort; static mach_port_t masterPort = MACH_PORT_NULL; @@ -223,6 +224,7 @@ static int usb_setup_iterator (io_iterator_t *deviceIterator) { int result; + CFMutableDictionaryRef matchingDict; /* set up the matching dictionary for class IOUSBDevice and its subclasses. It will be consumed by the IOServiceGetMatchingServices call */ @@ -247,7 +249,8 @@ io_cf_plugin_ref_t *plugInInterface = NULL; usb_device_t **device; io_service_t usbDevice; - long result, score; + long result; + SInt32 score; if (!IOIteratorIsValid (deviceIterator) || !(usbDevice = IOIteratorNext(deviceIterator))) return NULL; @@ -447,7 +450,7 @@ IOUSBFindInterfaceRequest request; struct darwin_dev_handle *device; - long score; + SInt32 score; int current_interface; device = dev->impl_info; @@ -756,6 +759,70 @@ return -1; } +static int usb_bulk_transfer (usb_dev_handle *dev, int ep, char *bytes, u_int32_t size, int timeout, int usb_bt_read) +{ + struct darwin_dev_handle *device; + + io_return_t result = -1; + + int pipeRef; + + u_int8_t transferType, direction, number, interval; + u_int16_t maxPacketSize; + + if (!dev) + USB_ERROR_STR ( -ENXIO, "libusb/darwin.c usb_bulk_transfer: Called with NULL device" ); + + if ((device = dev->impl_info) == NULL) + USB_ERROR_STR ( -ENOENT, "libusb/darwin.c usb_bulk_transfer: Device not open" ); + + /* interface is not open */ + if (!device->interface) + USB_ERROR_STR(-EACCES, "libusb/darwin.c usb_bulk_transfer: Interface used before it was opened"); + + + /* Set up transfer */ + if ((pipeRef = ep_to_pipeRef(device, ep)) < 0) + USB_ERROR_STR ( -EINVAL, "libusb/darwin.c usb_bulk_transfer: Invalid pipe reference" ); + + (*(device->interface))->GetPipeProperties (device->interface, pipeRef, &direction, &number, + &transferType, &maxPacketSize, &interval); + /* Transfer set up complete */ + + if (usb_debug > 0) + fprintf (stderr, "libusb/darwin.c usb_bulk_transfer: Transfering %i bytes of data on endpoint 0x%02x\n", size, ep); + + /* Do bulk transfer */ + if (transferType == kUSBInterrupt && usb_debug > 3) + fprintf (stderr, "libusb/darwin.c usb_bulk_transfer: USB pipe is an interrupt pipe. Timeouts will not be used.\n"); + +#if !defined(LIBUSB_NO_TIMEOUT_INTERFACE) + if ( transferType != kUSBInterrupt) { + if (usb_bt_read != 0) + result = (*(device->interface))->ReadPipeTO (device->interface, pipeRef, bytes, (UInt32 *)&size, timeout, timeout); + else + result = (*(device->interface))->WritePipeTO (device->interface, pipeRef, bytes, size, timeout, timeout); + + /* pipe bits may need to be cleared after a timeout. should this be done here or in user code? */ + if (result == kIOUSBTransactionTimeout && (*(device->interface))->GetPipeStatus (device->interface, pipeRef) == kIOUSBPipeStalled) + usb_clear_halt (dev, ep); + } else +#endif + { + if (usb_bt_read != 0) + result = (*(device->interface))->ReadPipe (device->interface, pipeRef, bytes, (UInt32 *)&size); + else + result = (*(device->interface))->WritePipe (device->interface, pipeRef, bytes, size); + } + + if (result != kIOReturnSuccess) + USB_ERROR_STR (-darwin_to_errno (result), "libusb/darwin.c usb_bulk_transfer: %s", darwin_error_str (result)); + + return size; +} + +#if 0 +/* NOT USED */ /* argument to handle multiple parameters to rw_completed */ struct rw_complete_arg { UInt32 io_size; @@ -777,7 +844,7 @@ CFRunLoopStop(rw_arg->cf_loop); } -static int usb_bulk_transfer (usb_dev_handle *dev, int ep, char *bytes, int size, int timeout, +static int usb_bulk_transfer_async (usb_dev_handle *dev, int ep, char *bytes, int size, int timeout, rw_async_func_t rw_async, rw_async_to_func_t rw_async_to) { struct darwin_dev_handle *device; @@ -813,11 +880,12 @@ (*(device->interface))->GetPipeProperties (device->interface, pipeRef, &direction, &number, &transferType, &maxPacketSize, &interval); - (*(device->interface))->CreateInterfaceAsyncEventSource(device->interface, &cfSource); - CFRunLoopAddSource(CFRunLoopGetCurrent(), cfSource, kCFRunLoopDefaultMode); - bzero((void *)&rw_arg, sizeof(struct rw_complete_arg)); rw_arg.cf_loop = CFRunLoopGetCurrent(); + CFRetain (rw_arg.cf_loop); + + (*(device->interface))->CreateInterfaceAsyncEventSource(device->interface, &cfSource); + CFRunLoopAddSource(rw_arg.cf_loop, cfSource, kCFRunLoopDefaultMode); /* Transfer set up complete */ if (usb_debug > 0) @@ -842,11 +910,12 @@ (*(device->interface))->AbortPipe(device->interface, pipeRef); CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true); /* Pick up aborted callback */ if (usb_debug) - fprintf(stderr, "usb_bulk_read: input timed out\n"); + fprintf(stderr, "usb_bulk_transfer: timed out\n"); } } - CFRunLoopRemoveSource(CFRunLoopGetCurrent(), cfSource, kCFRunLoopDefaultMode); + CFRunLoopRemoveSource(rw_arg.cf_loop, cfSource, kCFRunLoopDefaultMode); + CFRelease (rw_arg.cf_loop); /* Check the return code of both the write and completion functions. */ if (result != kIOReturnSuccess || (rw_arg.result != kIOReturnSuccess && @@ -870,24 +939,16 @@ return rw_arg.io_size; } +#endif int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout) { int result; - rw_async_to_func_t to_func = NULL; - struct darwin_dev_handle *device; if (dev == NULL || dev->impl_info == NULL) return -EINVAL; - device = dev->impl_info; - -#if !defined (LIBUSB_NO_TIMEOUT_INTERFACE) - to_func = (*(device->interface))->WritePipeAsyncTO; -#endif - - if ((result = usb_bulk_transfer (dev, ep, bytes, size, timeout, - (*(device->interface))->WritePipeAsync, to_func)) < 0) + if ((result = usb_bulk_transfer (dev, ep, bytes, size, timeout, 0)) < 0) USB_ERROR_STR (result, "usb_bulk_write: An error occured during write (see messages above)"); return result; @@ -896,28 +957,19 @@ int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout) { int result; - rw_async_to_func_t to_func = NULL; - struct darwin_dev_handle *device; if (dev == NULL || dev->impl_info == NULL) return -EINVAL; ep |= 0x80; - - device = dev->impl_info; -#if !defined (LIBUSB_NO_TIMEOUT_INTERFACE) - to_func = (*(device->interface))->ReadPipeAsyncTO; -#endif - - if ((result = usb_bulk_transfer (dev, ep, bytes, size, timeout, - (*(device->interface))->ReadPipeAsync, to_func)) < 0) + if ((result = usb_bulk_transfer (dev, ep, bytes, size, timeout, 1)) < 0) USB_ERROR_STR (result, "usb_bulk_read: An error occured during read (see messages above)"); return result; } -/* interrupt endpoints seem to be treated just like any other endpoint under OSX/Darwin */ +/* interrupt endpoints appear to be treated the same as non-interrupt endpoints under OSX/Darwin */ int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout) { @@ -1064,7 +1116,8 @@ result = (*(device))->GetDeviceAddress(device, (USBDeviceAddress *)&address); if (usb_debug >= 2) - fprintf(stderr, "usb_os_find_devices: Found USB device at location 0x%08lx\n", location); + fprintf(stderr, "usb_os_find_devices: Found USB device at location 0x%08" PRIx32 "\n", + (uint32_t) location); /* first byte of location appears to be associated with the device's bus */ if (location >> 24 == bus_loc >> 24) { @@ -1091,8 +1144,8 @@ LIST_ADD(fdev, dev); if (usb_debug >= 2) - fprintf(stderr, "usb_os_find_devices: Found %s on %s at location 0x%08lx\n", - dev->filename, bus->dirname, location); + fprintf(stderr, "usb_os_find_devices: Found %s on %s at location 0x%08" PRIx32 "\n", + dev->filename, bus->dirname, (uint32_t) location); } /* release the device now */ @@ -1177,7 +1230,12 @@ if ((pipeRef = ep_to_pipeRef(device, ep)) == -1) USB_ERROR(-EINVAL); +#if (InterfaceVersion < 190) result = (*(device->interface))->ClearPipeStall(device->interface, pipeRef); +#else + /* newer versions of darwin support clearing additional bits on the device's endpoint */ + result = (*(device->interface))->ClearPipeStallBothEnds(device->interface, pipeRef); +#endif if (result != kIOReturnSuccess) USB_ERROR_STR(-darwin_to_errno(result), "usb_clear_halt(ClearPipeStall): %s", darwin_error_str(result)); --- NEW FILE: libusb.info --- Package: libusb Version: 0.1.12 Revision: 1015 Maintainer: Ben Hines <bhi...@alumni.ucsd.edu> Source: http://download.sourceforge.net/%n/%n-%v.tar.gz Source-MD5: caf182cbc7565dac0fd72155919672e6 BuildDepends: fink (>= 0.24.12-1) BuildDependsOnly: true Depends: %N-shlibs (= %v-%r) GCC: 4.0 SetLDFLAGS: -Wl,-framework,CoreFoundation -Wl,-framework,IOKit NoSetMAKEFLAGS: true SetMAKEFLAGS: -j1 CompileScript: << #!/bin/sh -ev # cp %p/share/libtool/ltmain.sh . # perl -pi.bak -e 's/shrext_cmds/shrext/' ltmain.sh # perl -pi.bak -e 's,-flat_namespace -undefined suppress,-undefined dynamic_lookup,g' configure perl -pi.bak -e 's|(\-framework) \-Wl(,\S+)|$1$2|g' configure ./configure --disable-build-docs %c # /usr/bin/perl -pi.bak -e 's/^library_names_spec=.*/library_names_spec=\"\\\${libname}\\\${release}\\\${versuffix}.dylib \\\${libname}\${release}\\\${major}\dylib \\\${libname}.dylib\"/g' libtool /usr/bin/head -n 7 usb.c >> LICENSE make << PatchFile: %n.patch PatchFile-MD5: 834282b7beb069f89c2ec300cf5469e4 InstallScript: << make install DESTDIR=%d # for some reason, libusb's build strips out the -Wl's? # perl -pi -e 's/-Xlinker -framework -Xlinker (\S*)/-Wl,-framework,$1/g; s/-framework (\S*)/-Wl,-framework,$1/g;' %i/bin/libusb-config << DocFiles: AUTHORS INSTALL.libusb NEWS README LICENSE SplitOff: << Package: %N-shlibs Files: lib/libusb-*.dylib lib/libusbpp-*.dylib Shlibs: << %p/lib/libusb-0.1.4.dylib 9.0.0 %n (>= 0.1.8-10) %p/lib/libusbpp-0.1.4.dylib 9.0.0 %n (>= 0.1.8-10) << DocFiles: LICENSE << # Description: Portable library for USB device access DescDetail: << libusb's aim is to create a library for use by user level applications to access USB devices regardless of OS. << License: LGPL Homepage: http://libusb.sourceforge.net/ --- NEW FILE: libhal1-shlibs.patch --- diff -Nurd -x'*~' hal-0.5.11.orig/configure hal-0.5.11/configure --- hal-0.5.11.orig/configure 2008-05-07 19:35:45.000000000 -0400 +++ hal-0.5.11/configure 2008-11-20 01:14:54.000000000 -0500 @@ -22433,11 +22433,6 @@ -#### gcc linker flags - -if test "x$GCC" = "xyes"; then - LDFLAGS="-Wl,--as-needed $LDFLAGS" -fi #### gcc warning flags @@ -24198,6 +24193,8 @@ case "$host" in *-*-solaris*) ;; +*-*-darwin*) + ;; *) pkg_failed=no diff -Nurd -x'*~' hal-0.5.11.orig/tools/hal-storage-mount.c hal-0.5.11/tools/hal-storage-mount.c --- hal-0.5.11.orig/tools/hal-storage-mount.c 2008-05-07 19:24:23.000000000 -0400 +++ hal-0.5.11/tools/hal-storage-mount.c 2008-11-20 01:14:54.000000000 -0500 @@ -31,7 +31,7 @@ #include <string.h> #include <glib.h> #include <glib/gstdio.h> -#ifdef __FreeBSD__ +#if defined (__FreeBSD__) || defined(__APPLE__) #include <fstab.h> #include <sys/param.h> #include <sys/ucred.h> @@ -53,6 +53,9 @@ #include <libhal-storage.h> #include "hal-storage-shared.h" +#ifdef __APPLE__ +#define __FreeBSD__ +#endif #ifdef __FreeBSD__ #define MOUNT "/sbin/mount" diff -Nurd -x'*~' hal-0.5.11.orig/tools/hal-storage-shared.c hal-0.5.11/tools/hal-storage-shared.c --- hal-0.5.11.orig/tools/hal-storage-shared.c 2008-05-07 19:24:24.000000000 -0400 +++ hal-0.5.11/tools/hal-storage-shared.c 2008-11-20 01:14:54.000000000 -0500 @@ -31,7 +31,7 @@ #include <string.h> #include <glib.h> #include <glib/gstdio.h> -#ifdef __FreeBSD__ +#if defined (__FreeBSD__) || defined(__APPLE__) #include <fstab.h> #include <sys/param.h> #include <sys/ucred.h> @@ -52,6 +52,9 @@ #include <syslog.h> #include "hal-storage-shared.h" +#ifdef __APPLE__ +#define __FreeBSD__ +#endif #ifdef __FreeBSD__ struct mtab_handle diff -Nurd -x'*~' hal-0.5.11.orig/tools/hal-storage-unmount.c hal-0.5.11/tools/hal-storage-unmount.c --- hal-0.5.11.orig/tools/hal-storage-unmount.c 2008-05-07 19:24:17.000000000 -0400 +++ hal-0.5.11/tools/hal-storage-unmount.c 2008-11-20 01:14:54.000000000 -0500 @@ -31,7 +31,7 @@ #include <string.h> #include <glib.h> #include <glib/gstdio.h> -#ifdef __FreeBSD__ +#if defined (__FreeBSD__) || defined(__APPLE__) #include <fstab.h> #include <sys/param.h> #include <sys/ucred.h> @@ -52,6 +52,9 @@ #include <libhal-storage.h> #include "hal-storage-shared.h" +#ifdef __APPLE__ +#define __FreeBSD__ +#endif static void --- NEW FILE: libgphoto2.patch --- --- libgphoto2-2.3.1/configure.orig 2006-12-24 20:12:44.000000000 +0100 +++ libgphoto2-2.3.1/configure 2007-06-25 06:25:56.000000000 +0200 @@ -2628,11 +2628,11 @@ AM_CPPFLAGS="$CPPFLAGS" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_builddir)" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/libgphoto2_port" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/libgphoto2" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_builddir)/libgphoto2" +AM_CPPFLAGS="-I\$(top_srcdir) $AM_CPPFLAGS" +AM_CPPFLAGS="-I\$(top_builddir) $AM_CPPFLAGS" +AM_CPPFLAGS="-I\$(top_srcdir)/libgphoto2_port $AM_CPPFLAGS" +AM_CPPFLAGS="-I\$(top_srcdir)/libgphoto2 $AM_CPPFLAGS" +AM_CPPFLAGS="-I\$(top_builddir)/libgphoto2 $AM_CPPFLAGS" --- libgphoto2-2.3.1/libgphoto2_port/configure.orig 2006-12-24 17:24:23.000000000 +0100 +++ libgphoto2-2.3.1/libgphoto2_port/configure 2007-06-25 06:28:10.000000000 +0200 @@ -24411,7 +24411,7 @@ AM_CPPFLAGS="$CPPFLAGS" -AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)" +AM_CPPFLAGS="-I\$(top_srcdir) $AM_CPPFLAGS" udevscriptdir="\${libdir}/udev" ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA The must-attend event for mobile developers. Connect with experts. Get tools for creating Super Apps. See the latest technologies. Sessions, hands-on labs, demos & much more. Register early & save! http://p.sf.net/sfu/rim-blackberry-1 _______________________________________________ Fink-commits mailing list Fink-commits@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.cvs