From owner-freebsd-ports-bugs@FreeBSD.ORG Mon Jan 16 20:00:20 2012 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55271106566B for ; Mon, 16 Jan 2012 20:00:20 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 2ADE78FC13 for ; Mon, 16 Jan 2012 20:00:20 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q0GK0KLm048642 for ; Mon, 16 Jan 2012 20:00:20 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q0GK0K0u048641; Mon, 16 Jan 2012 20:00:20 GMT (envelope-from gnats) Resent-Date: Mon, 16 Jan 2012 20:00:20 GMT Resent-Message-Id: <201201162000.q0GK0K0u048641@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Rusty Nejdl Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0658B1065672 for ; Mon, 16 Jan 2012 19:53:39 +0000 (UTC) (envelope-from rnejdl@tethys.ringofsaturn.com) Received: from tethys.ringofsaturn.com (tethys.ringofsaturn.com [71.252.219.43]) by mx1.freebsd.org (Postfix) with ESMTP id A5EF58FC13 for ; Mon, 16 Jan 2012 19:53:38 +0000 (UTC) Received: from ASSP.nospam (localhost [127.0.0.1]) by tethys.ringofsaturn.com (8.14.5/8.14.5) with ESMTP id q0GJFrcS029871 for ; Mon, 16 Jan 2012 13:15:53 -0600 (CST) (envelope-from rnejdl@tethys.ringofsaturn.com) Received: from tethys.ringofsaturn.com ([127.0.0.1] helo=tethys.ringofsaturn.com) by ASSP.nospam with ESMTP (ASSP 1.9); 16 Jan 2012 13:15:52 -0600 Received: (from rnejdl@localhost) by tethys.ringofsaturn.com (8.14.5/8.14.5/Submit) id q0GJFqwt029870; Mon, 16 Jan 2012 13:15:52 -0600 (CST) (envelope-from rnejdl) Message-Id: Date: Mon, 16 Jan 2012 13:15:52 -0600 (CST) From: Rusty Nejdl To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/164215: Update port deskutils/calibre to 0.8.33 and update mounting functionality X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Rusty Nejdl List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jan 2012 20:00:20 -0000 >Number: 164215 >Category: ports >Synopsis: Update port deskutils/calibre to 0.8.33 and update mounting functionality >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Mon Jan 16 20:00:19 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Rusty Nejdl >Release: FreeBSD 8.2-STABLE amd64 >Organization: >Environment: System: FreeBSD tethys.ringofsaturn.com 8.2-STABLE FreeBSD 8.2-STABLE #1: Tue Jan 3 10:32:56 CST 2012 root@tethys.ringofsaturn.com:/usr/obj/usr/src/sys/GENERIC amd64 >Description: This update includes an update of calibre to 0.8.33 as well as contributions from stephenhurd@sbcglobal.net, denverh@comcast.net, and jr@opal.com to help with the mounting of ereaders for use with calibre. >How-To-Repeat: See attached diff. >Fix: --- calibre-0.8.33.diff begins here --- diff -ruN calibre.new/Makefile calibre/Makefile --- calibre.new/Makefile 2012-01-16 12:39:05.000000000 -0600 +++ calibre/Makefile 2011-11-21 08:52:50.000000000 -0600 @@ -6,7 +6,7 @@ # PORTNAME= calibre -PORTVERSION= 0.8.33 +PORTVERSION= 0.8.26 CATEGORIES= deskutils python MASTER_SITES= SF/${PORTNAME}/${PORTVERSION}/ @@ -39,13 +39,11 @@ py*-qt4-network>=0:${PORTSDIR}/net/py-qt4-network \ py*-qt4-svg>=0:${PORTSDIR}/graphics/py-qt4-svg \ py*-qt4-webkit>=0:${PORTSDIR}/www/py-qt4-webkit \ - py*-qt4-xml>=0:${PORTSDIR}/textproc/py-qt4-xml \ - py*-dbus>=0:${PORTSDIR}/devel/py-dbus \ - pdftohtml:${PORTSDIR}/graphics/poppler-utils \ - lshal:${PORTSDIR}/sysutils/hal + py*-qt4-xml>=0:${PORTSDIR}/textproc/py-qt4-xml + OPTIONS= PODOFO "PDF support via PoDoFo library" on \ + MOUNTHELPER_SUID "Install mount helper as suid binary" off -USE_XZ= yes USE_GETTEXT= yes USE_PYTHON= 2.7+ USE_QT_VER= 4 @@ -106,6 +104,9 @@ ${PYSETUP} install --prefix ${PREFIX}) post-install: - @${CAT} ${PKGMESSAGE} +.if defined(WITH_MOUNTHELPER_SUID) + ${CHOWN} ${BINOWN}:operator ${PREFIX}/bin/calibre-mount-helper + ${CHMOD} ug+s ${PREFIX}/bin/calibre-mount-helper +.endif .include diff -ruN calibre.new/distinfo calibre/distinfo --- calibre.new/distinfo 2011-12-31 20:44:25.000000000 -0600 +++ calibre/distinfo 2011-11-21 08:52:50.000000000 -0600 @@ -1,2 +1,2 @@ -SHA256 (calibre-0.8.33.tar.xz) = 885baed4810a92ceea78c49e4780a00aed19166b2475b430c9491396d3c0b74d -SIZE (calibre-0.8.33.tar.xz) = 21848976 +SHA256 (calibre-0.8.26.tar.gz) = 59e713e126ddb5739bfe33acf52581ccad944a9f05c3e1d3d0b3958b4762f91a +SIZE (calibre-0.8.26.tar.gz) = 37784724 diff -ruN calibre.new/files/patch-src_calibre_devices_scanner.py calibre/files/patch-src_calibre_devices_scanner.py --- calibre.new/files/patch-src_calibre_devices_scanner.py 2012-01-02 08:18:39.000000000 -0600 +++ calibre/files/patch-src_calibre_devices_scanner.py 2011-06-19 13:08:09.000000000 -0500 @@ -1,7 +1,11 @@ ---- src/calibre/devices/scanner.py.orig 2011-11-11 20:22:34.000000000 -0800 -+++ src/calibre/devices/scanner.py 2011-12-30 16:32:32.000000000 -0800 -@@ -8,7 +8,7 @@ - import sys, os, re +--- src/calibre/devices/scanner.py.orig 2011-06-14 14:10:28.000000000 -0500 ++++ src/calibre/devices/scanner.py 2011-06-14 14:12:39.000000000 -0500 +@@ -5,10 +5,10 @@ + manner. + ''' + +-import sys, os, re ++import sys, os, re, subprocess from threading import RLock -from calibre.constants import iswindows, isosx, plugins, islinux @@ -9,7 +13,7 @@ osx_scanner = win_scanner = linux_scanner = None -@@ -155,17 +155,80 @@ +@@ -155,17 +155,68 @@ ans.add(tuple(dev)) return ans @@ -17,55 +21,43 @@ + + def __call__(self): + ans = set([]) -+ import dbus -+ devs = [] + + try: -+ bus = dbus.SystemBus() -+ manager = dbus.Interface(bus.get_object('org.freedesktop.Hal', -+ '/org/freedesktop/Hal/Manager'), 'org.freedesktop.Hal.Manager') -+ paths = manager.FindDeviceStringMatch('freebsd.driver','da') -+ for path in paths: -+ obj = bus.get_object('org.freedesktop.Hal', path) -+ objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device') -+ devif = objif -+ parentdriver = None -+ while parentdriver != 'umass': -+ try: -+ obj = bus.get_object('org.freedesktop.Hal', -+ objif.GetProperty('info.parent')) -+ objif = dbus.Interface(obj, 'org.freedesktop.Hal.Device') -+ try: -+ parentdriver = objif.GetProperty('freebsd.driver') -+ except dbus.exceptions.DBusException, e: -+ continue -+ except dbus.exceptions.DBusException, e: -+ break -+ if parentdriver != 'umass': -+ continue -+ dev = [] -+ try: -+ dev.append(objif.GetProperty('usb.vendor_id')) -+ dev.append(objif.GetProperty('usb.product_id')) -+ dev.append(objif.GetProperty('usb.device_revision_bcd')) -+ except dbus.exceptions.DBusException, e: -+ continue -+ try: -+ dev.append(objif.GetProperty('info.vendor')) -+ except: -+ dev.append('') -+ try: -+ dev.append(objif.GetProperty('info.product')) -+ except: -+ dev.append('') -+ try: -+ dev.append(objif.GetProperty('usb.serial')) -+ except: -+ dev.append('') -+ dev.append(path) -+ ans.add(tuple(dev)) -+ except dbus.exceptions.DBusException, e: ++ out = subprocess.Popen("/usr/sbin/usbconfig dump_device_desc | /usr/bin/awk 'function get_str(s) { split(s, a, /<|>/); if (a[2] != \"no string\") { return a[2]; } else { return \"\";} } BEGIN {state=0;} /^[[:space:]]+idVendor/ {state = 1; vendor = $3; next;} /idProduct/ {productid = $3; next;} /bcdDevice/ {bcd = $3; next;} /iManufacturer/ { manufacturer = get_str($0); next; } /iProduct/ { product = get_str($0); next;} /iSerialNumber/ { sn = get_str($0); next;} /^$/ {if (state == 1) { state = 0; printf(\"%s%%%%%s%%%%%s%%%%%s%%%%%s%%%%%s\\n\",vendor, productid, bcd, manufacturer, product, sn);} }'", shell=True, stdout=subprocess.PIPE).communicate()[0] ++ except OSError, e: + print >>sys.stderr, "Execution failed:", e ++ ++ if out.strip() == "": ++ return ans ++ for line in out.strip().split("\n"): ++ ven, prod, bcd, man, prod_string, serial = line.strip().split("%%", 6) ++ dev = [] ++ try: ++ dev.append(int(ven, 16)) ++ except: ++ continue ++ try: ++ dev.append(int(prod, 16)) ++ except: ++ continue ++ try: ++ dev.append(int(bcd, 16)) ++ except: ++ continue ++ try: ++ dev.append(man) ++ except: ++ dev.append('') ++ try: ++ dev.append(prod_string) ++ except: ++ dev.append('') ++ try: ++ dev.append(serial) ++ except: ++ dev.append('') ++ ++ ans.add(tuple(dev)) + return ans + + diff -ruN calibre.new/files/patch-src_calibre_devices_usbms_device.py calibre/files/patch-src_calibre_devices_usbms_device.py --- calibre.new/files/patch-src_calibre_devices_usbms_device.py 2012-01-02 08:18:43.000000000 -0600 +++ calibre/files/patch-src_calibre_devices_usbms_device.py 1969-12-31 18:00:00.000000000 -0600 @@ -1,299 +0,0 @@ ---- src/calibre/devices/usbms/device.py.orig 2011-12-29 20:00:38.000000000 -0800 -+++ src/calibre/devices/usbms/device.py 2012-01-01 14:09:00.000000000 -0800 -@@ -697,19 +697,21 @@ - self._card_a_prefix = self._card_b_prefix - self._card_b_prefix = None - -+ - # ------------------------------------------------------ - # - # open for FreeBSD --# find the device node or nodes that match the S/N we already have from the scanner --# and attempt to mount each one --# 1. get list of disk devices from sysctl --# 2. compare that list with the one from camcontrol --# 3. and see if it has a matching s/n --# 6. find any partitions/slices associated with each node --# 7. attempt to mount, using calibre-mount-helper, each one --# 8. when finished, we have a list of mount points and associated device nodes -+# find the device node or nodes that match the S/N we already have from the scanner -+# and attempt to mount each one -+# 1. get list of devices in /dev with matching s/n etc. -+# 2. get list of volumes associated with each -+# 3. attempt to mount each one using Hal -+# 4. when finished, we have a list of mount points and associated dbus nodes - # - def open_freebsd(self): -+ import dbus -+ # There should be some way to access the -v arg... -+ verbose = False - - # this gives us access to the S/N, etc. of the reader that the scanner has found - # and the match routines for some of that data, like s/n, vendor ID, etc. -@@ -718,129 +720,149 @@ - if not d.serial: - raise DeviceError("Device has no S/N. Can't continue") - return False -- -- devs={} -- di=0 -- ndevs=4 # number of possible devices per reader (main, carda, cardb, launcher) -- -- #get list of disk devices -- p=subprocess.Popen(["sysctl", "kern.disks"], stdout=subprocess.PIPE) -- kdsks=subprocess.Popen(["sed", "s/kern.disks: //"], stdin=p.stdout, stdout=subprocess.PIPE).communicate()[0] -- p.stdout.close() -- #print kdsks -- for dvc in kdsks.split(): -- # for each one that's also in the list of cam devices ... -- p=subprocess.Popen(["camcontrol", "devlist"], stdout=subprocess.PIPE) -- devmatch=subprocess.Popen(["grep", dvc], stdin=p.stdout, stdout=subprocess.PIPE).communicate()[0] -- p.stdout.close() -- if devmatch: -- #print "Checking ", devmatch -- # ... see if we can get a S/N from the actual device node -- sn=subprocess.Popen(["camcontrol", "inquiry", dvc, "-S"], stdout=subprocess.PIPE).communicate()[0] -- sn=sn[0:-1] # drop the trailing newline -- #print "S/N = ", sn -- if sn and d.match_serial(sn): -- # we have a matching s/n, record this device node -- #print "match found: ", dvc -- devs[di]=dvc -- di += 1 -- -- # sort the list of devices -- for i in range(1,ndevs+1): -- for j in reversed(range(1,i)): -- if devs[j-1] > devs[j]: -- x=devs[j-1] -- devs[j-1]=devs[j] -- devs[j]=x -- #print devs -- -- # now we need to see if any of these have slices/partitions -+ -+ vols=[] -+ -+ bus = dbus.SystemBus() -+ manager = dbus.Interface(bus.get_object('org.freedesktop.Hal', -+ '/org/freedesktop/Hal/Manager'), 'org.freedesktop.Hal.Manager') -+ paths = manager.FindDeviceStringMatch('usb.serial',d.serial) -+ for path in paths: -+ objif = dbus.Interface(bus.get_object('org.freedesktop.Hal', path), 'org.freedesktop.Hal.Device') -+ # Extra paranoia... -+ try: -+ if d.idVendor == objif.GetProperty('usb.vendor_id') and \ -+ d.idProduct == objif.GetProperty('usb.product_id') and \ -+ d.manufacturer == objif.GetProperty('usb.vendor') and \ -+ d.product == objif.GetProperty('usb.product') and \ -+ d.serial == objif.GetProperty('usb.serial'): -+ dpaths = manager.FindDeviceStringMatch('storage.originating_device', path) -+ for dpath in dpaths: -+ devif = dbus.Interface(bus.get_object('org.freedesktop.Hal', dpath), 'org.freedesktop.Hal.Device') -+ try: -+ vpaths = manager.FindDeviceStringMatch('block.storage_device', dpath) -+ for vpath in vpaths: -+ try: -+ vdevif = dbus.Interface(bus.get_object('org.freedesktop.Hal', vpath), 'org.freedesktop.Hal.Device') -+ if not vdevif.GetProperty('block.is_volume'): -+ continue -+ if vdevif.GetProperty('volume.fsusage') != 'filesystem': -+ continue -+ volif = dbus.Interface(bus.get_object('org.freedesktop.Hal', vpath), 'org.freedesktop.Hal.Device.Volume') -+ pdevif = dbus.Interface(bus.get_object('org.freedesktop.Hal', vdevif.GetProperty('info.parent')), 'org.freedesktop.Hal.Device') -+ vol = {'node': pdevif.GetProperty('block.device'), -+ 'dev': vdevif, -+ 'vol': volif, -+ 'label': vdevif.GetProperty('volume.label')} -+ vols.append(vol) -+ except dbus.exceptions.DBusException, e: -+ print e -+ continue -+ except dbus.exceptions.DBusException, e: -+ print e -+ continue -+ except dbus.exceptions.DBusException, e: -+ continue -+ -+ def ocmp(x,y): -+ if x['node'] < y['node']: -+ return -1 -+ if x['node'] > y['node']: -+ return 1 -+ return 0 -+ -+ vols.sort(cmp=ocmp) -+ -+ if verbose: -+ print "FBSD: ", vols -+ - mtd=0 -- label="READER" # could use something more unique, like S/N or productID... -- cmd = '/usr/local/bin/calibre-mount-helper' -- cmd = [cmd, 'mount'] -- for i in range(0,ndevs): -- cmd2="ls /dev/"+devs[i]+"*" -- p=subprocess.Popen(cmd2, shell=True, stdout=subprocess.PIPE) -- devs[i]=subprocess.Popen(["cut", "-d", "/", "-f" "3"], stdin=p.stdout, stdout=subprocess.PIPE).communicate()[0] -- p.stdout.close() -- -- # try all the nodes to see what we can mount -- for dev in devs[i].split(): -- mp='/media/'+label+'-'+dev -- mmp = mp -- if mmp.endswith('/'): -- mmp = mmp[:-1] -- #print "trying ", dev, "on", mp -- try: -- p = subprocess.Popen(cmd + ["/dev/"+dev, mmp]) -- except OSError: -- raise DeviceError(_('Could not find mount helper: %s.')%cmd[0]) -- while p.poll() is None: -- time.sleep(0.1) -- -- if p.returncode == 0: -- #print " mounted", dev -- if i == 0: -- self._main_prefix = mp -- self._main_dev = "/dev/"+dev -- #print "main = ", self._main_dev, self._main_prefix -- if i == 1: -- self._card_a_prefix = mp -- self._card_a_dev = "/dev/"+dev -- #print "card a = ", self._card_a_dev, self._card_a_prefix -- if i == 2: -- self._card_b_prefix = mp -- self._card_b_dev = "/dev/"+dev -- #print "card b = ", self._card_b_dev, self._card_b_prefix - -- mtd += 1 -- break -+ for vol in vols: -+ mp = '' -+ if vol['dev'].GetProperty('volume.is_mounted'): -+ mp = vol['dev'].GetProperty('volume.mount_point') -+ else: -+ if verbose: -+ print "FBSD: trying ", vol['label'], "on", 'Calibre-'+labels[i] -+ try: -+ vol['vol'].Mount('Calibre-'+vol['label'], -+ vol['dev'].GetProperty('volume.fstype'), []) -+ loops = 0 -+ while not vol['dev'].GetProperty('volume.is_mounted'): -+ time.sleep(1) -+ loops += 1 -+ if loops > 100: -+ print "ERROR: Timeout waiting for mount to complete" -+ continue -+ mp = vol['dev'].GetProperty('volume.mount_point') -+ except dbus.exceptions.DBusException, e: -+ print "Failed to mount ", e -+ continue -+ -+ # Mount Point becomes Mount Path -+ mp += '/' -+ -+ if verbose: -+ print "FBSD: mounted", vol['label'], "on", mp -+ if mtd == 0: -+ self._main_prefix = mp -+ self._main_vol = vol['vol'] -+ if verbose: -+ print "FBSD: main = ", self._main_prefix -+ if mtd == 1: -+ self._card_a_prefix = mp -+ self._card_a_vol = vol['vol'] -+ if verbose: -+ print "FBSD: card a = ", self._card_a_prefix -+ if mtd == 2: -+ self._card_b_prefix = mp -+ self._card_b_vol = vol['vol'] -+ if verbose: -+ print "FBSD: card b = ", self._card_b_prefix -+ # Note that mtd is used as a bool... not incrementing is fine. -+ break -+ mtd += 1 - - if mtd > 0: - return True -- else : -- return False -+ raise DeviceError(_('Unable to mount the device')) -+ - # - # ------------------------------------------------------ - # --# this one is pretty simple: --# just umount each of the previously --# mounted filesystems, using the mount helper -+# this one is pretty simple: -+# just umount each of the previously -+# mounted filesystems, using the stored volume object - # - def eject_freebsd(self): -- cmd = '/usr/local/bin/calibre-mount-helper' -- cmd = [cmd, 'eject'] -+ import dbus -+ # There should be some way to access the -v arg... -+ verbose = False - - if self._main_prefix: -- #print "umount main:", cmd, self._main_dev, self._main_prefix -+ if verbose: -+ print "FBSD: umount main:", self._main_prefix - try: -- p = subprocess.Popen(cmd + [self._main_dev, self._main_prefix]) -- except OSError: -- raise DeviceError( -- _('Could not find mount helper: %s.')%cmd[0]) -- while p.poll() is None: -- time.sleep(0.1) -+ self._main_vol.Unmount([]) -+ except dbus.exceptions.DBusException, e: -+ print 'Unable to eject ', e - - if self._card_a_prefix: -- #print "umount card a:", cmd, self._card_a_dev, self._card_a_prefix -+ if verbose: -+ print "FBSD: umount card a:", self._card_a_prefix - try: -- p = subprocess.Popen(cmd + [self._card_a_dev, self._card_a_prefix]) -- except OSError: -- raise DeviceError( -- _('Could not find mount helper: %s.')%cmd[0]) -- while p.poll() is None: -- time.sleep(0.1) -+ self._card_a_vol.Unmount([]) -+ except dbus.exceptions.DBusException, e: -+ print 'Unable to eject ', e - - if self._card_b_prefix: -- #print "umount card b:", cmd, self._card_b_dev, self._card_b_prefix -+ if verbose: -+ print "FBSD: umount card b:", self._card_b_prefix - try: -- p = subprocess.Popen(cmd + [self._card_b_dev, self._card_b_prefix]) -- except OSError: -- raise DeviceError( -- _('Could not find mount helper: %s.')%cmd[0]) -- while p.poll() is None: -- time.sleep(0.1) -+ self._card_b_vol.Unmount([]) -+ except dbus.exceptions.DBusException, e: -+ print 'Unable to eject ', e - - self._main_prefix = None - self._card_a_prefix = None -@@ -859,11 +881,10 @@ - time.sleep(7) - self.open_linux() - if isfreebsd: -- self._main_dev = self._card_a_dev = self._card_b_dev = None -+ self._main_vol = self._card_a_vol = self._card_b_vol = None - try: - self.open_freebsd() - except DeviceError: -- subprocess.Popen(["camcontrol", "rescan", "all"]) - time.sleep(2) - self.open_freebsd() - if iswindows: diff -ruN calibre.new/pkg-message calibre/pkg-message --- calibre.new/pkg-message 2012-01-02 17:05:28.000000000 -0600 +++ calibre/pkg-message 1969-12-31 18:00:00.000000000 -0600 @@ -1,34 +0,0 @@ ---- - -NOTE: Calibre requires Hal to be running for access to devices. The user who -is running Calibre also needs to be able to mount devices. For non-root users, -this means modifying /usr/local/etc/PolicyKit/PolicyKit.conf and adding the -policy there. - -To allow a single user named "example" to mount removable devices, add the -following: - - - - - - - -Additional users will each need their own block with a -"yes" return result. - -To permit all accounts to mount removable devices (allowing a denial of access -attack) add the following: - - - - - ---- - -If you are using an Android device as your e-book reader, please note -that the stock Google Books app uses a storage format that is not -supported by calibre. The calibre FAQ recommends that either of the -free apps Aldiko or WordPlayer are used instead. - ---- diff -ruN calibre.new/pkg-plist calibre/pkg-plist --- calibre.new/pkg-plist 2011-12-31 22:40:40.000000000 -0600 +++ calibre/pkg-plist 2011-11-21 08:52:50.000000000 -0600 @@ -131,7 +131,41 @@ lib/calibre/calibre/ebooks/azw4/__init__.py lib/calibre/calibre/ebooks/azw4/reader.py lib/calibre/calibre/ebooks/azw4/input.py -lib/calibre/calibre/ebooks/chardet.py +lib/calibre/calibre/ebooks/chardet/__init__.py +lib/calibre/calibre/ebooks/chardet/big5freq.py +lib/calibre/calibre/ebooks/chardet/big5prober.py +lib/calibre/calibre/ebooks/chardet/chardistribution.py +lib/calibre/calibre/ebooks/chardet/charsetgroupprober.py +lib/calibre/calibre/ebooks/chardet/charsetprober.py +lib/calibre/calibre/ebooks/chardet/codingstatemachine.py +lib/calibre/calibre/ebooks/chardet/constants.py +lib/calibre/calibre/ebooks/chardet/escprober.py +lib/calibre/calibre/ebooks/chardet/escsm.py +lib/calibre/calibre/ebooks/chardet/eucjpprober.py +lib/calibre/calibre/ebooks/chardet/euckrfreq.py +lib/calibre/calibre/ebooks/chardet/euckrprober.py +lib/calibre/calibre/ebooks/chardet/euctwfreq.py +lib/calibre/calibre/ebooks/chardet/euctwprober.py +lib/calibre/calibre/ebooks/chardet/gb2312freq.py +lib/calibre/calibre/ebooks/chardet/gb2312prober.py +lib/calibre/calibre/ebooks/chardet/hebrewprober.py +lib/calibre/calibre/ebooks/chardet/jisfreq.py +lib/calibre/calibre/ebooks/chardet/jpcntx.py +lib/calibre/calibre/ebooks/chardet/langbulgarianmodel.py +lib/calibre/calibre/ebooks/chardet/langcyrillicmodel.py +lib/calibre/calibre/ebooks/chardet/langgreekmodel.py +lib/calibre/calibre/ebooks/chardet/langhebrewmodel.py +lib/calibre/calibre/ebooks/chardet/langhungarianmodel.py +lib/calibre/calibre/ebooks/chardet/langthaimodel.py +lib/calibre/calibre/ebooks/chardet/latin1prober.py +lib/calibre/calibre/ebooks/chardet/mbcharsetprober.py +lib/calibre/calibre/ebooks/chardet/mbcsgroupprober.py +lib/calibre/calibre/ebooks/chardet/mbcssm.py +lib/calibre/calibre/ebooks/chardet/sbcharsetprober.py +lib/calibre/calibre/ebooks/chardet/sbcsgroupprober.py +lib/calibre/calibre/ebooks/chardet/sjisprober.py +lib/calibre/calibre/ebooks/chardet/universaldetector.py +lib/calibre/calibre/ebooks/chardet/utf8prober.py lib/calibre/calibre/ebooks/chm/__init__.py lib/calibre/calibre/ebooks/chm/input.py lib/calibre/calibre/ebooks/chm/metadata.py @@ -299,12 +333,11 @@ lib/calibre/calibre/ebooks/odt/input.py lib/calibre/calibre/ebooks/oeb/__init__.py lib/calibre/calibre/ebooks/oeb/base.py +lib/calibre/calibre/ebooks/oeb/entitydefs.py lib/calibre/calibre/ebooks/oeb/iterator.py lib/calibre/calibre/ebooks/oeb/output.py -lib/calibre/calibre/ebooks/oeb/parse_utils.py lib/calibre/calibre/ebooks/oeb/reader.py lib/calibre/calibre/ebooks/oeb/stylizer.py -lib/calibre/calibre/ebooks/oeb/display/test/test.py lib/calibre/calibre/ebooks/oeb/transforms/__init__.py lib/calibre/calibre/ebooks/oeb/transforms/cover.py lib/calibre/calibre/ebooks/oeb/transforms/filenames.py @@ -653,7 +686,6 @@ lib/calibre/calibre/gui2/dialogs/user_profiles.py lib/calibre/calibre/gui2/dialogs/user_profiles_ui.py lib/calibre/calibre/gui2/dnd.py -lib/calibre/calibre/gui2/duplicates.py lib/calibre/calibre/gui2/ebook_download.py lib/calibre/calibre/gui2/email.py lib/calibre/calibre/gui2/filename_pattern_ui.py @@ -743,14 +775,11 @@ lib/calibre/calibre/gui2/store/opensearch_store.py lib/calibre/calibre/gui2/store/web_store_dialog.py lib/calibre/calibre/gui2/store/basic_config_widget_ui.py -lib/calibre/calibre/gui2/store/stores/amazon_es_plugin.py lib/calibre/calibre/gui2/store/stores/amazon_fr_plugin.py -lib/calibre/calibre/gui2/store/stores/amazon_it_plugin.py lib/calibre/calibre/gui2/store/stores/beam_ebooks_de_plugin.py lib/calibre/calibre/gui2/store/stores/ebookpoint_plugin.py lib/calibre/calibre/gui2/store/stores/escapemagazine_plugin.py lib/calibre/calibre/gui2/store/stores/gandalf_plugin.py -lib/calibre/calibre/gui2/store/stores/litres_plugin.py lib/calibre/calibre/gui2/store/stores/pragmatic_bookshelf_plugin.py lib/calibre/calibre/gui2/store/stores/nexto_plugin.py lib/calibre/calibre/gui2/store/stores/rw2010_plugin.py @@ -980,9 +1009,6 @@ lib/calibre/calibre/utils/smartypants.py lib/calibre/calibre/utils/smtp.py lib/calibre/calibre/utils/smtplib.py -lib/calibre/calibre/utils/soupparser.py -lib/calibre/calibre/utils/coffeescript.py -lib/calibre/calibre/utils/linux_trash.py lib/calibre/calibre/utils/terminfo.py lib/calibre/calibre/utils/text2int.py lib/calibre/calibre/utils/threadpool.py @@ -1009,52 +1035,14 @@ lib/calibre/calibre/web/jsbrowser/login.py lib/calibre/calibre/web/jsbrowser/test.py lib/calibre/calibre/web/jsbrowser/forms.py -lib/calibre/chardet/euctwprober.py -lib/calibre/chardet/hebrewprober.py -lib/calibre/chardet/euckrfreq.py -lib/calibre/chardet/charsetgroupprober.py -lib/calibre/chardet/latin1prober.py -lib/calibre/chardet/mbcssm.py -lib/calibre/chardet/langthaimodel.py -lib/calibre/chardet/euckrprober.py -lib/calibre/chardet/escprober.py -lib/calibre/chardet/mbcharsetprober.py -lib/calibre/chardet/langcyrillicmodel.py -lib/calibre/chardet/__init__.py -lib/calibre/chardet/chardistribution.py -lib/calibre/chardet/sbcharsetprober.py -lib/calibre/chardet/sjisprober.py -lib/calibre/chardet/langbulgarianmodel.py -lib/calibre/chardet/langhebrewmodel.py -lib/calibre/chardet/gb2312prober.py -lib/calibre/chardet/escsm.py -lib/calibre/chardet/utf8prober.py -lib/calibre/chardet/codingstatemachine.py -lib/calibre/chardet/test.py -lib/calibre/chardet/big5freq.py -lib/calibre/chardet/gb2312freq.py -lib/calibre/chardet/langgreekmodel.py -lib/calibre/chardet/euctwfreq.py -lib/calibre/chardet/eucjpprober.py -lib/calibre/chardet/jpcntx.py -lib/calibre/chardet/jisfreq.py -lib/calibre/chardet/charsetprober.py -lib/calibre/chardet/sbcsgroupprober.py -lib/calibre/chardet/constants.py -lib/calibre/chardet/mbcsgroupprober.py -lib/calibre/chardet/langhungarianmodel.py -lib/calibre/chardet/universaldetector.py -lib/calibre/chardet/big5prober.py lib/calibre/cherrypy/__init__.py +lib/calibre/cherrypy/_cpcgifs.py lib/calibre/cherrypy/_cpchecker.py -lib/calibre/cherrypy/_cpcompat.py lib/calibre/cherrypy/_cpconfig.py lib/calibre/cherrypy/_cpdispatch.py lib/calibre/cherrypy/_cperror.py lib/calibre/cherrypy/_cplogging.py lib/calibre/cherrypy/_cpmodpy.py -lib/calibre/cherrypy/_cpnative_server.py -lib/calibre/cherrypy/_cpreqbody.py lib/calibre/cherrypy/_cprequest.py lib/calibre/cherrypy/_cpserver.py lib/calibre/cherrypy/_cpthreadinglocal.py @@ -1064,23 +1052,19 @@ lib/calibre/cherrypy/_cpwsgi_server.py lib/calibre/cherrypy/lib/__init__.py lib/calibre/cherrypy/lib/auth.py -lib/calibre/cherrypy/lib/auth_basic.py -lib/calibre/cherrypy/lib/auth_digest.py lib/calibre/cherrypy/lib/caching.py lib/calibre/cherrypy/lib/covercp.py -lib/calibre/cherrypy/lib/cpstats.py lib/calibre/cherrypy/lib/cptools.py lib/calibre/cherrypy/lib/encoding.py -lib/calibre/cherrypy/lib/gctools.py lib/calibre/cherrypy/lib/http.py lib/calibre/cherrypy/lib/httpauth.py -lib/calibre/cherrypy/lib/httputil.py -lib/calibre/cherrypy/lib/jsontools.py lib/calibre/cherrypy/lib/profiler.py -lib/calibre/cherrypy/lib/reprconf.py +lib/calibre/cherrypy/lib/safemime.py lib/calibre/cherrypy/lib/sessions.py lib/calibre/cherrypy/lib/static.py -lib/calibre/cherrypy/lib/xmlrpcutil.py +lib/calibre/cherrypy/lib/tidy.py +lib/calibre/cherrypy/lib/wsgiapp.py +lib/calibre/cherrypy/lib/xmlrpc.py lib/calibre/cherrypy/process/__init__.py lib/calibre/cherrypy/process/plugins.py lib/calibre/cherrypy/process/servers.py @@ -1088,46 +1072,6 @@ lib/calibre/cherrypy/process/wspbus.py lib/calibre/cherrypy/scaffold/__init__.py lib/calibre/cherrypy/wsgiserver/__init__.py -lib/calibre/cherrypy/wsgiserver/ssl_builtin.py -lib/calibre/cherrypy/wsgiserver/ssl_pyopenssl.py -lib/calibre/cherrypy/wsgiserver/wsgiserver2.py -lib/calibre/cherrypy/wsgiserver/wsgiserver3.py -lib/calibre/html5lib/sanitizer.py -lib/calibre/html5lib/tokenizer.py -lib/calibre/html5lib/html5parser.py -lib/calibre/html5lib/ihatexml.py -lib/calibre/html5lib/__init__.py -lib/calibre/html5lib/tokenizer_old.py -lib/calibre/html5lib/inputstream.py -lib/calibre/html5lib/utils.py -lib/calibre/html5lib/constants.py -lib/calibre/html5lib/filters/lint.py -lib/calibre/html5lib/filters/sanitizer.py -lib/calibre/html5lib/filters/whitespace.py -lib/calibre/html5lib/filters/__init__.py -lib/calibre/html5lib/filters/inject_meta_charset.py -lib/calibre/html5lib/filters/_base.py -lib/calibre/html5lib/filters/formfiller.py -lib/calibre/html5lib/filters/optionaltags.py -lib/calibre/html5lib/serializer/xhtmlserializer.py -lib/calibre/html5lib/serializer/__init__.py -lib/calibre/html5lib/serializer/htmlserializer.py -lib/calibre/html5lib/treewalkers/dom.py -lib/calibre/html5lib/treewalkers/genshistream.py -lib/calibre/html5lib/treewalkers/etree.py -lib/calibre/html5lib/treewalkers/__init__.py -lib/calibre/html5lib/treewalkers/pulldom.py -lib/calibre/html5lib/treewalkers/soup.py -lib/calibre/html5lib/treewalkers/lxmletree.py -lib/calibre/html5lib/treewalkers/_base.py -lib/calibre/html5lib/treewalkers/simpletree.py -lib/calibre/html5lib/treebuilders/dom.py -lib/calibre/html5lib/treebuilders/etree.py -lib/calibre/html5lib/treebuilders/__init__.py -lib/calibre/html5lib/treebuilders/etree_lxml.py -lib/calibre/html5lib/treebuilders/soup.py -lib/calibre/html5lib/treebuilders/_base.py -lib/calibre/html5lib/treebuilders/simpletree.py lib/calibre/odf/__init__.py lib/calibre/odf/anim.py lib/calibre/odf/attrconverters.py @@ -1247,7 +1191,6 @@ share/calibre/content_server/star-off.png share/calibre/content_server/star-on.png share/calibre/default_tweaks.py -share/calibre/display/cfi.js share/calibre/ebook-convert-complete.pickle share/calibre/fonts/liberation/LiberationMono-Bold.ttf share/calibre/fonts/liberation/LiberationMono-BoldItalic.ttf @@ -1511,7 +1454,6 @@ @dirrm share/calibre/fonts/prs500 @dirrm share/calibre/fonts/liberation @dirrm share/calibre/fonts -@dirrm share/calibre/display @dirrm share/calibre/content_server/read @dirrm share/calibre/content_server/jquery_ui/js @dirrm share/calibre/content_server/jquery_ui/css/humanity-custom/images @@ -1526,7 +1468,6 @@ @dirrm lib/calibre/routes @dirrm lib/calibre/pyPdf @dirrm lib/calibre/odf -@dirrm lib/calibre/chardet @dirrm lib/calibre/cherrypy/wsgiserver @dirrm lib/calibre/cherrypy/scaffold @dirrm lib/calibre/cherrypy/process @@ -1596,8 +1537,6 @@ @dirrm lib/calibre/calibre/ebooks/pdb/palmdoc @dirrm lib/calibre/calibre/ebooks/pdb/ereader @dirrm lib/calibre/calibre/ebooks/pdb -@dirrm lib/calibre/calibre/ebooks/oeb/display/test -@dirrm lib/calibre/calibre/ebooks/oeb/display @dirrm lib/calibre/calibre/ebooks/oeb/transforms @dirrm lib/calibre/calibre/ebooks/oeb @dirrm lib/calibre/calibre/ebooks/odt @@ -1626,6 +1565,7 @@ @dirrm lib/calibre/calibre/ebooks/compression @dirrm lib/calibre/calibre/ebooks/comic @dirrm lib/calibre/calibre/ebooks/chm +@dirrm lib/calibre/calibre/ebooks/chardet @dirrm lib/calibre/calibre/ebooks/azw4 @dirrm lib/calibre/calibre/ebooks @dirrm lib/calibre/calibre/db/tests @@ -1664,11 +1604,6 @@ @dirrm lib/calibre/calibre/devices @dirrm lib/calibre/calibre/customize @dirrm lib/calibre/calibre -@dirrm lib/calibre/html5lib/filters -@dirrm lib/calibre/html5lib/serializer -@dirrm lib/calibre/html5lib/treewalkers -@dirrm lib/calibre/html5lib/treebuilders -@dirrm lib/calibre/html5lib @dirrm lib/calibre @dirrmtry %%PYTHON_SITELIBDIR%% @dirrmtry %%PYTHON_LIBDIR%% --- calibre-0.8.33.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: