ports/164215: Update port deskutils/calibre to 0.8.33 and update mounting functionality

Rusty Nejdl rnejdl at ringofsaturn.com
Mon Jan 16 20:00:20 UTC 2012


>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 at 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 at sbcglobal.net, denverh at comcast.net, and jr at 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 <bsd.port.post.mk>
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:
-
-  <match action="org.freedesktop.hal.storage.mount-removable">
-    <match user="example">
-      <return result="yes" />
-    </match>
-  </match> 
-
-Additional users will each need their own <match user="user"> block with a
-"yes" return result.
-
-To permit all accounts to mount removable devices (allowing a denial of access
-attack) add the following:
-
-  <match action="org.freedesktop.hal.storage.mount-removable">
-    <return result="yes" />
-  </match>
-
----
-
-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
- at 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
- at 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
- at dirrm lib/calibre/calibre/ebooks/oeb/display/test
- at 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
+ at 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
- at dirrm lib/calibre/html5lib/filters
- at dirrm lib/calibre/html5lib/serializer
- at dirrm lib/calibre/html5lib/treewalkers
- at dirrm lib/calibre/html5lib/treebuilders
- at 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:



More information about the freebsd-ports-bugs mailing list