ports/158818: Update ports deskutils/calibre to 0.8.9, fix ICU in Makefile, and update patch for mounting ebooks
Rusty Nejdl
rnejdl at tethys.ringofsaturn.com
Mon Jul 11 22:00:24 UTC 2011
>Number: 158818
>Category: ports
>Synopsis: Update ports deskutils/calibre to 0.8.9, fix ICU in Makefile, and update patch for mounting ebooks
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Mon Jul 11 22:00:22 UTC 2011
>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 Jun 14 22:35:36 CDT 2011 root at tethys.ringofsaturn.com:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
This patch updates calibre from 0.8.6 to 0.8.9. It also includes a fix for the recent ICU update. Finally, it includes an updated patch from Denver Hull (denverh at comcast.net) that updates the code for mounting ebooks and integrating them within calibre.
>How-To-Repeat:
The current port doesn't compile with the new ICU.
>Fix:
--- calibre.diff begins here ---
diff -ruN calibre/Makefile calibre.new/Makefile
--- calibre/Makefile 2011-07-10 16:06:36.000000000 -0500
+++ calibre.new/Makefile 2011-07-11 16:23:17.000000000 -0500
@@ -6,8 +6,7 @@
#
PORTNAME= calibre
-PORTVERSION= 0.8.6
-PORTREVISION= 1
+PORTVERSION= 0.8.9
CATEGORIES= deskutils python
MASTER_SITES= SF/${PORTNAME}/${PORTVERSION}/
@@ -19,7 +18,7 @@
poppler-qt4.3:${PORTSDIR}/graphics/poppler-qt4 \
wmflite:${PORTSDIR}/graphics/libwmf \
chm.0:${PORTSDIR}/misc/chmlib \
- icudata.46:${PORTSDIR}/devel/icu
+ icudata.48:${PORTSDIR}/devel/icu
BUILD_DEPENDS= py*-setuptools>=0:${PORTSDIR}/devel/py-setuptools \
py*-sip>=0:${PORTSDIR}/devel/py-sip \
py*-qt4-core>=0:${PORTSDIR}/devel/py-qt4-core \
diff -ruN calibre/distinfo calibre.new/distinfo
--- calibre/distinfo 2011-06-20 21:26:46.000000000 -0500
+++ calibre.new/distinfo 2011-07-11 12:43:22.000000000 -0500
@@ -1,2 +1,2 @@
-SHA256 (calibre-0.8.6.tar.gz) = 811a967fa44b59a34d313eda984c19f575cf2c5fe774170e08b4c536e9e22b72
-SIZE (calibre-0.8.6.tar.gz) = 28494397
+SHA256 (calibre-0.8.9.tar.gz) = d46709e2a81679dd0678b36696f8ce96aff112aebff494478c1674ec76612f14
+SIZE (calibre-0.8.9.tar.gz) = 29084120
diff -ruN calibre/files/patch-device.py calibre.new/files/patch-device.py
--- calibre/files/patch-device.py 2011-06-19 15:45:21.000000000 -0500
+++ calibre.new/files/patch-device.py 2011-07-11 15:45:03.000000000 -0500
@@ -1,192 +1,203 @@
---- src/calibre/devices/usbms/device.py.orig 2011-06-19 09:41:50.000000000 -0500
-+++ src/calibre/devices/usbms/device.py 2011-06-19 08:20:32.000000000 -0500
-@@ -17,7 +17,7 @@
- from calibre.devices.interface import DevicePlugin
- from calibre.devices.errors import DeviceError, FreeSpaceError
- from calibre.devices.usbms.deviceconfig import DeviceConfig
--from calibre.constants import iswindows, islinux, isosx, plugins
-+from calibre.constants import iswindows, islinux, isosx, isfreebsd, plugins
- from calibre.utils.filenames import ascii_filename as sanitize, shorten_components_to
-
- if isosx:
-@@ -698,7 +698,152 @@
- self._card_a_prefix = self._card_b_prefix
- self._card_b_prefix = None
+--- src/calibre/devices/usbms/device.py.orig 2011-07-11 15:41:16.000000000 -0500
++++ src/calibre/devices/usbms/device.py 2011-07-11 15:44:07.000000000 -0500
+@@ -704,105 +704,104 @@
+ # ------------------------------------------------------
+ #
+ # 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 disk devices from sysctl
++# 2. find the ones with matching s/n
++# 3. find any partitions/slices associated with each node
++# 4. attempt to mount each one using calibre-mount-helper
++# 5. when finished, we have a list of mount points and associated device nodes
+ #
+ def open_freebsd(self):
+- # 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.
+- d=self.detected_device
-
-+# ------------------------------------------------------
-+#
-+# 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
-+#
-+ def open_freebsd(self):
-+
-+ # 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.
-+ d=self.detected_device
-+
-+ 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
-+ 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
-+ #print "trying ", dev, "on", mp
-+ try:
-+ p = subprocess.Popen(cmd + ["/dev/"+dev, mp])
-+ 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
-+
-+ if mtd > 0:
-+ return True
-+ else :
-+ return False
-+#
-+# ------------------------------------------------------
-+#
-+# this one is pretty simple:
-+# just umount each of the previously
-+# mounted filesystems, using the mount helper
-+#
-+ def eject_freebsd(self):
-+ cmd = '/usr/local/bin/calibre-mount-helper'
-+ cmd = [cmd, 'eject']
-+
-+ if self._main_prefix:
-+ #print "umount main:", cmd, self._main_dev, 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)
-+
-+ if self._card_a_prefix:
-+ #print "umount card a:", cmd, self._card_a_dev, 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)
-+
-+ if self._card_b_prefix:
-+ #print "umount card b:", cmd, self._card_b_dev, 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._main_prefix = None
-+ self._card_a_prefix = None
-+ self._card_b_prefix = None
-+# ------------------------------------------------------
-
- def open(self, library_uuid):
- time.sleep(5)
-@@ -709,6 +854,14 @@
- except DeviceError:
- time.sleep(7)
- self.open_linux()
-+ if isfreebsd:
-+ self._main_dev = self._card_a_dev = self._card_b_dev = None
-+ try:
-+ self.open_freebsd()
-+ except DeviceError:
-+ subprocess.Popen(["camcontrol", "rescan", "all"])
-+ time.sleep(2)
-+ self.open_freebsd()
- if iswindows:
- try:
- self.open_windows()
-@@ -797,6 +950,11 @@
- self.eject_linux()
- except:
- pass
-+ if isfreebsd:
-+ try:
-+ self.eject_freebsd()
-+ except:
-+ pass
- if iswindows:
- try:
- self.eject_windows()
+- 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
+- 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
+- #print "trying ", dev, "on", mp
+- try:
+- p = subprocess.Popen(cmd + ["/dev/"+dev, mp])
+- 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
+-
+- if mtd > 0:
+- return True
+- else :
+- return 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.
++ d=self.detected_device
++
++ 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
++ #kdsks="da4 da3 da2 da1"
++ try:
++ kdsks=subprocess.Popen("/sbin/sysctl kern.disks | /usr/bin/sed 's/kern.disks: //'", shell=True, stdout=subprocess.PIPE).communicate()[0]
++ except:
++ print "sysctl failed"
++ print kdsks
++ for dvc in kdsks.split():
++ # just check the /dev/da* devices
++ if dvc.startswith("da"):
++ # see if we can get a S/N from the actual device node
++ print "Checking ", dvc
++ #sn="08004610011F550C"
++ try:
++ sn=subprocess.Popen("/sbin/camcontrol inquiry "+dvc+" -S", shell=True, stdout=subprocess.PIPE).communicate()[0]
++ except:
++ print "inquiry failed:"
++ 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
++ mtd=0
++ label="READER" # could use something more unique, like S/N or productID...
++ cmd = '/usr/local/bin/calibre-mount-helper'
++ for i in range(0,ndevs):
++ try:
++ devs[i]=subprocess.Popen("/bin/ls /dev/"+devs[i]+"* | /usr/bin/cut -d'/' -f3", shell=True, stdout=subprocess.PIPE).communicate()[0]
++ except:
++ print "ls failed"
++
++ # try all the nodes to see what we can mount
++ for dev in devs[i].split():
++ mp='/mnt/'+label+'-'+dev+'/'
++ print "trying ", dev, "on", mp
++ try:
++ p = subprocess.Popen([cmd, "mount", "/dev/"+dev, mp])
++ except:
++ print "mount failed:"
++ while p.poll() is None:
++ time.sleep(0.1)
++
++ if p.returncode == 0:
++ print " mounted", dev, "on", mp
++ 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
++ if mtd > 0:
++ return True
++ else :
++ return False
+ # ------------------------------------------------------
+ #
+ # this one is pretty simple:
diff -ruN calibre/files/patch-linux_mount_helper.c calibre.new/files/patch-linux_mount_helper.c
--- calibre/files/patch-linux_mount_helper.c 2011-06-19 15:45:25.000000000 -0500
+++ calibre.new/files/patch-linux_mount_helper.c 1969-12-31 18:00:00.000000000 -0600
@@ -1,52 +0,0 @@
---- src/calibre/devices/linux_mount_helper.c.orig 2011-06-19 09:35:30.000000000 -0500
-+++ src/calibre/devices/linux_mount_helper.c 2011-06-14 16:48:50.000000000 -0500
-@@ -65,14 +65,24 @@
- snprintf(uids, 100, "%d", getuid());
- snprintf(gids, 100, "%d", getgid());
- #else
-+#ifdef __FreeBSD__
-+ snprintf(options, 1000, "rw,noexec,nosuid,sync,-u=%d,-g=%d",getuid(),getgid());
-+#else
- snprintf(options, 1000, "rw,noexec,nosuid,sync,nodev,quiet,shortname=mixed,uid=%d,gid=%d,umask=077,fmask=0177,dmask=0077,utf8,iocharset=iso8859-1", getuid(), getgid());
- #endif
-+#endif
-+
- ensure_root();
-+
- #ifdef __NetBSD__
- execlp("mount_msdos", "mount_msdos", "-u", uids, "-g", gids, "-o", options, dev, mp, NULL);
- #else
-+#ifdef __FreeBSD__
-+ execlp("mount", "mount", "-t", "msdosfs", "-o", options, dev, mp, NULL);
-+#else
- execlp("mount", "mount", "-t", "auto", "-o", options, dev, mp, NULL);
- #endif
-+#endif
- errsv = errno;
- fprintf(stderr, "Failed to mount with error: %s\n", strerror(errsv));
- return EXIT_FAILURE;
-@@ -92,8 +102,12 @@
- #ifdef __NetBSD__
- execlp("eject", "eject", dev, NULL);
- #else
-+#ifdef __FreeBSD__
-+ execlp("umount", "umount", dev, NULL);
-+#else
- execlp("eject", "eject", "-s", dev, NULL);
- #endif
-+#endif
- /* execlp failed */
- errsv = errno;
- fprintf(stderr, "Failed to eject with error: %s\n", strerror(errsv));
-@@ -121,7 +135,11 @@
-
- if (pid == 0) { /* Child process */
- ensure_root();
-+#ifdef __FreeBSD__
-+ execlp("umount", "umount", mp, NULL);
-+#else
- execlp("umount", "umount", "-l", mp, NULL);
-+#endif
- /* execlp failed */
- errsv = errno;
- fprintf(stderr, "Failed to umount with error: %s\n", strerror(errsv));
diff -ruN calibre/pkg-plist calibre.new/pkg-plist
--- calibre/pkg-plist 2011-06-20 21:26:46.000000000 -0500
+++ calibre.new/pkg-plist 2011-07-11 16:50:52.000000000 -0500
@@ -111,6 +111,13 @@
lib/calibre/calibre/devices/usbms/deviceconfig.py
lib/calibre/calibre/devices/usbms/driver.py
lib/calibre/calibre/devices/usbobserver/test.py
+lib/calibre/calibre/db/__init__.py
+lib/calibre/calibre/db/backend.py
+lib/calibre/calibre/db/locking.py
+lib/calibre/calibre/db/schema_upgrades.py
+lib/calibre/calibre/db/errors.py
+lib/calibre/calibre/db/tables.py
+lib/calibre/calibre/db/cache.py
lib/calibre/calibre/ebooks/BeautifulSoup.py
lib/calibre/calibre/ebooks/__init__.py
lib/calibre/calibre/ebooks/chardet/__init__.py
@@ -181,6 +188,7 @@
lib/calibre/calibre/ebooks/html/input.py
lib/calibre/calibre/ebooks/html/meta.py
lib/calibre/calibre/ebooks/html/output.py
+lib/calibre/calibre/ebooks/html/to_zip.py
lib/calibre/calibre/ebooks/htmlz/__init__.py
lib/calibre/calibre/ebooks/htmlz/oeb2html.py
lib/calibre/calibre/ebooks/htmlz/output.py
@@ -469,6 +477,7 @@
lib/calibre/calibre/gui2/actions/restart.py
lib/calibre/calibre/gui2/actions/save_to_disk.py
lib/calibre/calibre/gui2/actions/show_book_details.py
+lib/calibre/calibre/gui2/actions/show_quickview.py
lib/calibre/calibre/gui2/actions/similar_books.py
lib/calibre/calibre/gui2/actions/store.py
lib/calibre/calibre/gui2/actions/tweak_epub.py
@@ -598,6 +607,8 @@
lib/calibre/calibre/gui2/dialogs/plugin_updater.py
lib/calibre/calibre/gui2/dialogs/progress.py
lib/calibre/calibre/gui2/dialogs/progress_ui.py
+lib/calibre/calibre/gui2/dialogs/quickview_ui.py
+lib/calibre/calibre/gui2/dialogs/quickview.py
lib/calibre/calibre/gui2/dialogs/restore_library.py
lib/calibre/calibre/gui2/dialogs/saved_search_editor.py
lib/calibre/calibre/gui2/dialogs/saved_search_editor_ui.py
@@ -698,48 +709,52 @@
lib/calibre/calibre/gui2/search_restriction_mixin.py
lib/calibre/calibre/gui2/shortcuts.py
lib/calibre/calibre/gui2/shortcuts_ui.py
-lib/calibre/calibre/gui2/store/beam_ebooks_de_plugin.py
-lib/calibre/calibre/gui2/store/gandalf_plugin.py
-lib/calibre/calibre/gui2/store/pragmatic_bookshelf_plugin.py
-lib/calibre/calibre/gui2/store/nexto_plugin.py
-lib/calibre/calibre/gui2/store/whsmith_uk_plugin.py
-lib/calibre/calibre/gui2/store/zixo_plugin.py
-lib/calibre/calibre/gui2/store/epubbud_plugin.py
-lib/calibre/calibre/gui2/store/oreilly_plugin.py
-lib/calibre/calibre/gui2/store/woblink_plugin.py
-lib/calibre/calibre/gui2/store/archive_org_plugin.py
-lib/calibre/calibre/gui2/store/weightless_books_plugin.py
-lib/calibre/calibre/gui2/store/epubbuy_de_plugin.py
-lib/calibre/calibre/gui2/store/wizards_tower_books_plugin.py
-lib/calibre/calibre/gui2/store/bewrite_plugin.py
-lib/calibre/calibre/gui2/store/baen_webscription_plugin.py
lib/calibre/calibre/gui2/store/search_ui.py
lib/calibre/calibre/gui2/store/__init__.py
-lib/calibre/calibre/gui2/store/eharlequin_plugin.py
-lib/calibre/calibre/gui2/store/waterstones_uk_plugin.py
-lib/calibre/calibre/gui2/store/ebooks_com_plugin.py
-lib/calibre/calibre/gui2/store/gutenberg_plugin.py
-lib/calibre/calibre/gui2/store/amazon_de_plugin.py
lib/calibre/calibre/gui2/store/mobileread_store_dialog_ui.py
-lib/calibre/calibre/gui2/store/bn_plugin.py
lib/calibre/calibre/gui2/store/web_control.py
lib/calibre/calibre/gui2/store/web_store_dialog_ui.py
-lib/calibre/calibre/gui2/store/feedbooks_plugin.py
lib/calibre/calibre/gui2/store/search_result.py
lib/calibre/calibre/gui2/store/basic_config.py
-lib/calibre/calibre/gui2/store/kobo_plugin.py
-lib/calibre/calibre/gui2/store/smashwords_plugin.py
-lib/calibre/calibre/gui2/store/open_library_plugin.py
+lib/calibre/calibre/gui2/store/opensearch_store.py
lib/calibre/calibre/gui2/store/web_store_dialog.py
-lib/calibre/calibre/gui2/store/foyles_uk_plugin.py
-lib/calibre/calibre/gui2/store/diesel_ebooks_plugin.py
-lib/calibre/calibre/gui2/store/manybooks_plugin.py
-lib/calibre/calibre/gui2/store/amazon_plugin.py
-lib/calibre/calibre/gui2/store/amazon_uk_plugin.py
lib/calibre/calibre/gui2/store/basic_config_widget_ui.py
-lib/calibre/calibre/gui2/store/legimi_plugin.py
-lib/calibre/calibre/gui2/store/ebookshoppe_uk_plugin.py
-lib/calibre/calibre/gui2/store/virtualo_plugin.py
+lib/calibre/calibre/gui2/store/stores/beam_ebooks_de_plugin.py
+lib/calibre/calibre/gui2/store/stores/gandalf_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/whsmith_uk_plugin.py
+lib/calibre/calibre/gui2/store/stores/zixo_plugin.py
+lib/calibre/calibre/gui2/store/stores/epubbud_plugin.py
+lib/calibre/calibre/gui2/store/stores/oreilly_plugin.py
+lib/calibre/calibre/gui2/store/stores/woblink_plugin.py
+lib/calibre/calibre/gui2/store/stores/archive_org_plugin.py
+lib/calibre/calibre/gui2/store/stores/weightless_books_plugin.py
+lib/calibre/calibre/gui2/store/stores/epubbuy_de_plugin.py
+lib/calibre/calibre/gui2/store/stores/wizards_tower_books_plugin.py
+lib/calibre/calibre/gui2/store/stores/bewrite_plugin.py
+lib/calibre/calibre/gui2/store/stores/baen_webscription_plugin.py
+lib/calibre/calibre/gui2/store/stores/__init__.py
+lib/calibre/calibre/gui2/store/stores/eharlequin_plugin.py
+lib/calibre/calibre/gui2/store/stores/waterstones_uk_plugin.py
+lib/calibre/calibre/gui2/store/stores/ebooks_com_plugin.py
+lib/calibre/calibre/gui2/store/stores/gutenberg_plugin.py
+lib/calibre/calibre/gui2/store/stores/amazon_de_plugin.py
+lib/calibre/calibre/gui2/store/stores/bn_plugin.py
+lib/calibre/calibre/gui2/store/stores/feedbooks_plugin.py
+lib/calibre/calibre/gui2/store/stores/kobo_plugin.py
+lib/calibre/calibre/gui2/store/stores/smashwords_plugin.py
+lib/calibre/calibre/gui2/store/stores/foyles_uk_plugin.py
+lib/calibre/calibre/gui2/store/stores/diesel_ebooks_plugin.py
+lib/calibre/calibre/gui2/store/stores/manybooks_plugin.py
+lib/calibre/calibre/gui2/store/stores/amazon_plugin.py
+lib/calibre/calibre/gui2/store/stores/amazon_uk_plugin.py
+lib/calibre/calibre/gui2/store/stores/legimi_plugin.py
+lib/calibre/calibre/gui2/store/stores/ebookshoppe_uk_plugin.py
+lib/calibre/calibre/gui2/store/stores/virtualo_plugin.py
+lib/calibre/calibre/gui2/store/stores/open_books_plugin.py
+lib/calibre/calibre/gui2/store/stores/libri_de_plugin.py
+lib/calibre/calibre/gui2/store/stores/google_books_plugin.py
lib/calibre/calibre/gui2/store/config/__init__.py
lib/calibre/calibre/gui2/store/config/search_widget_ui.py
lib/calibre/calibre/gui2/store/config/store.py
@@ -754,17 +769,16 @@
lib/calibre/calibre/gui2/store/config/chooser/adv_search_builder_ui.py
lib/calibre/calibre/gui2/store/config/chooser/chooser_widget.py
lib/calibre/calibre/gui2/store/config/chooser/chooser_widget_ui.py
-lib/calibre/calibre/gui2/store/google_books_plugin.py
-lib/calibre/calibre/gui2/store/mobileread/__init__.py
-lib/calibre/calibre/gui2/store/mobileread/adv_search_builder.py
-lib/calibre/calibre/gui2/store/mobileread/adv_search_builder_ui.py
-lib/calibre/calibre/gui2/store/mobileread/models.py
-lib/calibre/calibre/gui2/store/mobileread/store_dialog.py
-lib/calibre/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py
-lib/calibre/calibre/gui2/store/mobileread/cache_update_thread.py
-lib/calibre/calibre/gui2/store/mobileread/cache_progress_dialog.py
-lib/calibre/calibre/gui2/store/mobileread/store_dialog_ui.py
-lib/calibre/calibre/gui2/store/mobileread/mobileread_plugin.py
+lib/calibre/calibre/gui2/store/stores/mobileread/__init__.py
+lib/calibre/calibre/gui2/store/stores/mobileread/adv_search_builder.py
+lib/calibre/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py
+lib/calibre/calibre/gui2/store/stores/mobileread/models.py
+lib/calibre/calibre/gui2/store/stores/mobileread/store_dialog.py
+lib/calibre/calibre/gui2/store/stores/mobileread/cache_progress_dialog_ui.py
+lib/calibre/calibre/gui2/store/stores/mobileread/cache_update_thread.py
+lib/calibre/calibre/gui2/store/stores/mobileread/cache_progress_dialog.py
+lib/calibre/calibre/gui2/store/stores/mobileread/store_dialog_ui.py
+lib/calibre/calibre/gui2/store/stores/mobileread/mobileread_plugin.py
lib/calibre/calibre/gui2/store/search/results_view.py
lib/calibre/calibre/gui2/store/search/search_ui.py
lib/calibre/calibre/gui2/store/search/__init__.py
@@ -773,7 +787,10 @@
lib/calibre/calibre/gui2/store/search/models.py
lib/calibre/calibre/gui2/store/search/search.py
lib/calibre/calibre/gui2/store/search/adv_search_builder_ui.py
-lib/calibre/calibre/gui2/tag_view.py
+lib/calibre/calibre/gui2/tag_browser/__init__.py
+lib/calibre/calibre/gui2/tag_browser/ui.py
+lib/calibre/calibre/gui2/tag_browser/view.py
+lib/calibre/calibre/gui2/tag_browser/model.py
lib/calibre/calibre/gui2/threaded_jobs.py
lib/calibre/calibre/gui2/throbber.py
lib/calibre/calibre/gui2/tools.py
@@ -890,6 +907,7 @@
lib/calibre/calibre/utils/ipc/job.py
lib/calibre/calibre/utils/ipc/launch.py
lib/calibre/calibre/utils/ipc/server.py
+lib/calibre/calibre/utils/ipc/proxy.py
lib/calibre/calibre/utils/ipc/worker.py
lib/calibre/calibre/utils/localization.py
lib/calibre/calibre/utils/lock.py
@@ -902,6 +920,10 @@
lib/calibre/calibre/utils/mreplace.py
lib/calibre/calibre/utils/network.py
lib/calibre/calibre/utils/ordered_dict.py
+lib/calibre/calibre/utils/opensearch/__init__.py
+lib/calibre/calibre/utils/opensearch/description.py
+lib/calibre/calibre/utils/opensearch/url.py
+lib/calibre/calibre/utils/opensearch/query.py
lib/calibre/calibre/utils/osx_symlinks.py
lib/calibre/calibre/utils/pdftk.py
lib/calibre/calibre/utils/podofo/__init__.py
@@ -1381,8 +1403,9 @@
@dirrm lib/calibre/calibre/utils/wmf
@dirrm lib/calibre/calibre/utils/pyconsole
@dirrm lib/calibre/calibre/utils/podofo
- at dirrm lib/calibre/calibre/utils/magick
+ at dirrm lib/calibre/calibre/utils/opensearch
@dirrm lib/calibre/calibre/utils/ipc
+ at dirrm lib/calibre/calibre/utils/magick
@dirrm lib/calibre/calibre/utils/fonts
@dirrm lib/calibre/calibre/utils/chm
@dirrm lib/calibre/calibre/utils
@@ -1397,11 +1420,13 @@
@dirrm lib/calibre/calibre/library
@dirrm lib/calibre/calibre/gui2/wizard
@dirrm lib/calibre/calibre/gui2/viewer
- at dirrm lib/calibre/calibre/gui2/store/mobileread
+ at dirrm lib/calibre/calibre/gui2/tag_browser
+ at dirrm lib/calibre/calibre/gui2/store/stores/mobileread
@dirrm lib/calibre/calibre/gui2/store/config/search
@dirrm lib/calibre/calibre/gui2/store/config/chooser
@dirrm lib/calibre/calibre/gui2/store/config
@dirrm lib/calibre/calibre/gui2/store/search
+ at dirrm lib/calibre/calibre/gui2/store/stores
@dirrm lib/calibre/calibre/gui2/store
@dirrm lib/calibre/calibre/gui2/progress_indicator
@dirrm lib/calibre/calibre/gui2/preferences
@@ -1460,6 +1485,7 @@
@dirrm lib/calibre/calibre/ebooks/chm
@dirrm lib/calibre/calibre/ebooks/chardet
@dirrm lib/calibre/calibre/ebooks
+ at dirrm lib/calibre/calibre/db
@dirrm lib/calibre/calibre/devices/usbobserver
@dirrm lib/calibre/calibre/devices/usbms
@dirrm lib/calibre/calibre/devices/user_defined
--- calibre.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list