1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-21 04:06:46 +00:00

Update to 0.8.9

PR:		ports/158818
Submitted by:	Rusty Nejdl <rnejdl@ringofsaturn.com> (maintainer, followup)
Approved by:	bapt (mentor)
This commit is contained in:
Julien Laffaye 2011-07-16 14:08:19 +00:00
parent c2d2bf4851
commit adb14984d7
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=277801
5 changed files with 258 additions and 290 deletions

View File

@ -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 @@ LIB_DEPENDS= MagickWand.4:${PORTSDIR}/graphics/ImageMagick \
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 \

View File

@ -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

View File

@ -1,192 +1,187 @@
--- 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-08 12:29:30.000000000 -0500
+++ src/calibre/devices/usbms/device.py 2011-07-12 20:02:45.000000000 -0500
@@ -704,14 +704,12 @@
# ------------------------------------------------------
#
# 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 da devices in /dev
+# 2. find the ones with matching s/n
+# 3. attempt to mount each one using calibre-mount-helper
+# 4. when finished, we have a list of mount points and associated device nodes
#
def open_freebsd(self):
@@ -722,81 +720,68 @@
if not d.serial:
raise DeviceError("Device has no S/N. Can't continue")
return False
-
+# ------------------------------------------------------
+#
+# 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
+# ------------------------------------------------------
+
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
+
+ # delay for user to set device if necessary
+ time.sleep(5)
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
+ # get list of disk devices and
+ # see if we can get a S/N from the actual device node
+ #dsks=['/dev/da1', '/dev/da3s1']
+ dsks=glob.glob('/dev/da*')
+ dsks.sort()
+ for ndvc in dsks:
+ dvc = ndvc.replace('/dev/', '')
+ print "FBSD: Checking ", dvc
+ #sn="08004610011F550C"
+ 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()
+ sn=subprocess.Popen("/sbin/camcontrol inquiry "+dvc+" -S", shell=True, stdout=subprocess.PIPE).communicate()[0]
+ except:
+ pass
if iswindows:
+ print "FBSD: inquiry failed:"
+ sn=sn[0:-1] # drop the trailing newline
+ print "FBSD: S/N = ", sn
+ if sn and d.match_serial(sn):
+ # we have a matching s/n, record this device node
+ print "FBSD: match found: ", dvc
+ devs[di]=dvc
+ di += 1
+
+ print "FBSD: ", 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...
+ 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()
-
+ for i in range(0,di):
# 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
+ mp='/mnt/'+label+'-'+dev+'/'
+ print "FBSD: trying ", dev, "on", mp
try:
- p = subprocess.Popen(cmd + ["/dev/"+dev, mp])
- except OSError:
- raise DeviceError(_('Could not find mount helper: %s.')%cmd[0])
+ p = subprocess.Popen([cmd, "mount", "/dev/"+dev, mp])
+ except:
+ print "FBSD: mount failed:"
while p.poll() is None:
time.sleep(0.1)
-
+
if p.returncode == 0:
- #print " mounted", dev
- if i == 0:
+ print "FBSD: mounted", dev, "on", mp
+ if mtd == 0:
self._main_prefix = mp
self._main_dev = "/dev/"+dev
- #print "main = ", self._main_dev, self._main_prefix
- if i == 1:
+ print "FBSD: main = ", self._main_dev, self._main_prefix
+ if mtd == 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:
+ print "FBSD: card a = ", self._card_a_dev, self._card_a_prefix
+ if mtd == 2:
self._card_b_prefix = mp
self._card_b_dev = "/dev/"+dev
- #print "card b = ", self._card_b_dev, self._card_b_prefix
-
+ print "FBSD: card b = ", self._card_b_dev, self._card_b_prefix
+ break
mtd += 1
- break
if mtd > 0:
return True
@@ -805,16 +790,16 @@
#
# ------------------------------------------------------
#
-# 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 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
+ print "FBSD: umount main:", cmd, self._main_dev, self._main_prefix
try:
self.eject_windows()
p = subprocess.Popen(cmd + [self._main_dev, self._main_prefix])
except OSError:
@@ -824,7 +809,7 @@
time.sleep(0.1)
if self._card_a_prefix:
- #print "umount card a:", cmd, self._card_a_dev, self._card_a_prefix
+ print "FBSD: 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:
@@ -834,7 +819,7 @@
time.sleep(0.1)
if self._card_b_prefix:
- #print "umount card b:", cmd, self._card_b_dev, self._card_b_prefix
+ print "FBSD: 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:

View File

@ -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));

View File

@ -111,6 +111,13 @@ lib/calibre/calibre/devices/usbms/device.py
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/__init__.py
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/preferences.py
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/password_ui.py
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_box.py
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/models.py
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/adv_search_builder.py
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/__init__.py
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/mem.py
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 @@ share/calibre/viewer/referencing.js
@dirrm lib/calibre/calibre/utils/wmf
@dirrm lib/calibre/calibre/utils/pyconsole
@dirrm lib/calibre/calibre/utils/podofo
@dirrm lib/calibre/calibre/utils/magick
@dirrm lib/calibre/calibre/utils/opensearch
@dirrm lib/calibre/calibre/utils/ipc
@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 @@ share/calibre/viewer/referencing.js
@dirrm lib/calibre/calibre/library
@dirrm lib/calibre/calibre/gui2/wizard
@dirrm lib/calibre/calibre/gui2/viewer
@dirrm lib/calibre/calibre/gui2/store/mobileread
@dirrm lib/calibre/calibre/gui2/tag_browser
@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
@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 @@ share/calibre/viewer/referencing.js
@dirrm lib/calibre/calibre/ebooks/chm
@dirrm lib/calibre/calibre/ebooks/chardet
@dirrm lib/calibre/calibre/ebooks
@dirrm lib/calibre/calibre/db
@dirrm lib/calibre/calibre/devices/usbobserver
@dirrm lib/calibre/calibre/devices/usbms
@dirrm lib/calibre/calibre/devices/user_defined