From 7b172d7ef41f70ee87d0bd82d615db011e4ce7cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Sun, 9 Jun 2019 19:36:36 +0200 Subject: [PATCH] - up to 3.44 --- calibre-locales.patch | 34 +++++++++++++++++++++++--------- calibre-prefix.patch | 24 +++++++++++++++++++++++ calibre.spec | 41 +++++++++++++++------------------------ desktop-integration.patch | 26 ++++++++++++------------- shebang-python-fix.patch | 2 +- 5 files changed, 78 insertions(+), 49 deletions(-) diff --git a/calibre-locales.patch b/calibre-locales.patch index a35a01e..761389c 100644 --- a/calibre-locales.patch +++ b/calibre-locales.patch @@ -40,7 +40,7 @@ __copyright__ = '2008, Marshall T. Vandegrift ' +import os - import cStringIO + import io from gettext import GNUTranslations from calibre.utils.localization import get_lc_messages_path -from zipfile import ZipFile @@ -54,7 +54,7 @@ - with ZipFile(P('localization/locales.zip', - allow_user_override=False), 'r') as zf: - try: -- buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) +- buf = io.BytesIO(zf.read(mpath + '/messages.mo')) - except: - pass - else: @@ -112,7 +112,7 @@ - for lang in available_translations(): - mpath = get_lc_messages_path(lang) - if mpath is not None: -- buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) +- buf = io.BytesIO(zf.read(mpath + '/messages.mo')) - yield lang, GNUTranslations(buf) + for lang in available_translations(): + mpath = get_lc_messages_path(lang) @@ -125,15 +125,30 @@ lcdata = { u'abday': (u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat'), -@@ -145,21 +145,20 @@ - buf = cStringIO.StringIO(buf.getvalue()) +@@ -134,10 +134,11 @@ + + + def get_single_translator(mpath, which='messages'): +- from zipfile import ZipFile +- with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: +- buf = io.BytesIO(zf.read(mpath + '/%s.mo' % which)) ++ try: ++ buf = open(os.path.join(mpath, '/%s.mo' % which), 'rb') + return GNUTranslations(buf) ++ except: ++ pass # No translations for this lang + + + def get_iso639_translator(lang): +@@ -145,22 +145,21 @@ + buf = io.BytesIO(buf.getvalue()) if mpath is not None: - from zipfile import ZipFile - with ZipFile(P('localization/locales.zip', - allow_user_override=False), 'r') as zf: - if buf is None: -- buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) +- buf = io.BytesIO(zf.read(mpath + '/messages.mo')) + if buf is None: + try: + buf = open(os.path.join(mpath, 'calibre.mo'), 'rb') @@ -143,14 +158,15 @@ mpath = 'de' - isof = mpath + '/iso639.mo' try: -- iso639 = cStringIO.StringIO(zf.read(isof)) +- iso639 = io.BytesIO(zf.read(isof)) + iso639 = open(os.path.join(mpath, 'calibre_iso639.mo'), 'rb') except: pass # No iso639 translations for this lang if buf is not None: + from calibre.utils.serialize import msgpack_loads try: -- lcdata = cPickle.loads(zf.read(mpath + '/lcdata.pickle')) -+ lcdata = cPickle.loads(open(os.path.join(mpath, 'calibre_lcdata.pickle'))) +- lcdata = msgpack_loads(zf.read(mpath + '/lcdata.calibre_msgpack')) ++ lcdata = msgpack_loads(open(os.path.join(mpath, '/lcdata.calibre_msgpack'))) except: pass # No lcdata diff --git a/calibre-prefix.patch b/calibre-prefix.patch index 31a94fc..cb4fa73 100644 --- a/calibre-prefix.patch +++ b/calibre-prefix.patch @@ -20,3 +20,27 @@ self.staging_libdir = opts.staging_libdir = self.j(self.staging_libdir, 'calibre') self.staging_sharedir = opts.staging_sharedir = self.j(self.staging_sharedir, 'calibre') +--- calibre-3.44.0/src/calibre/linux.py~ 2019-06-09 19:23:04.000000000 +0200 ++++ calibre-3.44.0/src/calibre/linux.py 2019-06-09 19:27:46.476130247 +0200 +@@ -685,10 +685,10 @@ + self.warn = self.warning + + if not self.opts.staging_bindir: +- self.opts.staging_bindir = os.path.join(self.opts.staging_root, ++ self.opts.staging_bindir = os.path.join(self.opts.staging_root, 'usr', + 'bin') + if not self.opts.staging_sharedir: +- self.opts.staging_sharedir = os.path.join(self.opts.staging_root, ++ self.opts.staging_sharedir = os.path.join(self.opts.staging_root, 'usr', + 'share', 'calibre') + self.opts.staging_etc = '/etc' if self.opts.staging_root == '/usr' else \ + os.path.join(self.opts.staging_root, 'etc') +@@ -696,7 +696,7 @@ + prefix = getattr(self.opts, 'prefix', None) + if prefix and prefix != self.opts.staging_root: + self.opts.staged_install = True +- os.environ['XDG_DATA_DIRS'] = os.path.join(self.opts.staging_root, 'share') ++ os.environ['XDG_DATA_DIRS'] = os.path.join(self.opts.staging_root, 'usr', 'share') + os.environ['XDG_UTILS_INSTALL_MODE'] = 'system' + + from calibre.utils.serialize import msgpack_loads diff --git a/calibre.spec b/calibre.spec index 09907fd..06f12b5 100644 --- a/calibre.spec +++ b/calibre.spec @@ -11,12 +11,12 @@ Summary: E-book converter and library management Summary(pl.UTF-8): Konwerter oraz biblioteka dla e-booków Name: calibre -Version: 3.31.0 -Release: 2 +Version: 3.44.0 +Release: 1 License: GPL v3+ Group: Applications/Multimedia Source0: %{name}-%{version}-nofonts.tar.xz -# Source0-md5: 8e412cf8615b06cd5a432e1212f33517 +# Source0-md5: 306d559dc5c4bc4c8191ce3004a6137e Source1: generate-tarball.sh Source2: %{name}-mount-helper Patch0: %{name}-prefix.patch @@ -62,7 +62,9 @@ BuildRequires: python-PyQt5 >= %{pyqt5_ver} BuildRequires: python-PyQt5-devel-tools >= %{pyqt5_ver} BuildRequires: python-PyQt5-uic >= %{pyqt5_ver} BuildRequires: python-apsw >= %{apsw_ver} +BuildRequires: python-bs4 BuildRequires: python-cssselect >= %{cssselect_ver} +BuildRequires: python-css_parser BuildRequires: python-cssutils >= %{cssutils_ver} BuildRequires: python-dateutil >= %{dateutil_ver} BuildRequires: python-devel >= 1:2.7.1 @@ -94,7 +96,9 @@ Requires: python-BeautifulSoup >= %{baeutifulsoup_ver} Requires: python-PIL >= %{pil_ver} Requires: python-PyQt5 >= %{pyqt5_ver} Requires: python-apsw >= %{apsw_ver} +Requires: python-bs4 Requires: python-cssselect >= %{cssselect_ver} +Requires: python-css_parser Requires: python-cssutils >= %{cssutils_ver} Requires: python-dateutil >= %{dateutil_ver} Requires: python-dns >= %{dns_ver} @@ -201,14 +205,16 @@ rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_datadir}/{icons/hicolor,packages,mime/packages,desktop-directories} \ $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir},/usr/share/zsh/site-functions} -XDG_DATA_DIRS="$RPM_BUILD_ROOT%{_datadir}" \ -XDG_UTILS_INSTALL_MODE="system" \ -LIBPATH="%{_libdir}" \ +export XDG_DATA_DIRS="$RPM_BUILD_ROOT%{_datadir}" +export XDG_UTILS_INSTALL_MODE="system" +export LIBPATH="%{_libdir}" %{__python} setup.py install \ --no-compile \ - --prefix=%{_prefix} \ --root=$RPM_BUILD_ROOT \ - --libdir=%{_libdir} + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --libdir=%{_libdir} \ + --sharedir=%{_datadir} %{__sed} -i -e '1s,/usr/bin/env python,%{__python},' $RPM_BUILD_ROOT%{_bindir}/* @@ -238,13 +244,6 @@ for file in $RPM_BUILD_ROOT%{_localedir}/*/LC_MESSAGES/iso639.mo; do %{__mv} $RPM_BUILD_ROOT%{_localedir}/$lang/LC_MESSAGES/iso639.mo \ $RPM_BUILD_ROOT%{_localedir}/$lang/LC_MESSAGES/%{name}_iso639.mo done; -for file in $RPM_BUILD_ROOT%{_localedir}/*/lcdata.pickle; do - lang=$(echo $file|%{__sed} 's:.*locale/\(.*\)/lcdata.pickle:\1:') - %{__mv} $RPM_BUILD_ROOT%{_localedir}/$lang/lcdata.pickle \ - $RPM_BUILD_ROOT%{_localedir}/$lang/LC_MESSAGES/%{name}_lcdata.pickle -done; - -%{__rm} $RPM_BUILD_ROOT%{_bindir}/%{name}-uninstall # duplicates of bn,sl %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/{bn_BD,sl_SI} @@ -254,8 +253,8 @@ done; install %{SOURCE2} $RPM_BUILD_ROOT%{_bindir} %find_lang %{name} --all-name -for file in $RPM_BUILD_ROOT%{_localedir}/*/LC_MESSAGES/%{name}_lcdata.pickle; do - lang=$(echo $file|%{__sed} 's:.*locale/\(.*\)/LC_MESSAGES.*:\1:') +for file in $RPM_BUILD_ROOT%{_localedir}/*/lcdata.calibre_msgpack; do + lang=$(echo $file|%{__sed} 's:.*locale/\(.*\)/.*:\1:') echo $file | %{__sed} "s:$RPM_BUILD_ROOT\(.*\):%lang($lang) \1:" >>%{name}.lang done; @@ -320,15 +319,7 @@ fi %{_iconsdir}/hicolor/*x*/mimetypes/gnome-mime-application-x-topaz-ebook.png %{_iconsdir}/hicolor/*x*/mimetypes/gnome-mime-text-lrs.png %{_iconsdir}/hicolor/*x*/mimetypes/text-lrs.png -%{_datadir}/mime/application/epub+zip.xml -%{_datadir}/mime/application/x-kindle-application.xml -%{_datadir}/mime/application/x-mobi8-ebook.xml -%{_datadir}/mime/application/x-mobipocket-ebook.xml -%{_datadir}/mime/application/x-mobipocket-subscription.xml -%{_datadir}/mime/application/x-sony-bbeb.xml -%{_datadir}/mime/application/x-topaz-ebook.xml %{_datadir}/mime/packages/calibre-mimetypes.xml -%{_datadir}/mime/text/lrs.xml %{_pixmapsdir}/calibre-gui.png %{_pixmapsdir}/calibre-viewer.png diff --git a/desktop-integration.patch b/desktop-integration.patch index c22d12b..5daf2f5 100644 --- a/desktop-integration.patch +++ b/desktop-integration.patch @@ -4,8 +4,8 @@ def install_single_icon(iconsrc, basename, size, context, is_last_icon=False): filename = '%s-%s.png' % (basename, size) render_img(iconsrc, filename, width=int(size), height=int(size)) -- cmd = ['xdg-icon-resource', 'install', '--noupdate', '--context', context, '--size', str(size), filename, basename] -+ cmd = ['xdg-icon-resource', 'install', '--noupdate', '--novendor', '--context', context, '--size', str(size), filename, basename] +- cmd = ['xdg-icon-resource', 'install', '--noupdate', '--context', context, '--size', unicode_type(size), filename, basename] ++ cmd = ['xdg-icon-resource', 'install', '--noupdate', '--novendor', '--context', context, '--size', unicode_type(size), filename, basename] if is_last_icon: del cmd[2] cc(cmd) @@ -18,15 +18,13 @@ cc(' '.join(cmd), shell=True) self.menu_resources.append(x) ak = x.partition('.')[0] -@@ -856,10 +856,9 @@ - ak = x.partition('.')[0] - if ak in APPDATA and os.access(appdata, os.W_OK): - self.appdata_resources.append(write_appdata(ak, APPDATA[ak], appdata, translators)) -- cc(['xdg-desktop-menu', 'forceupdate']) - MIME = P('calibre-mimetypes.xml') - self.mime_resources.append(MIME) -- cc(['xdg-mime', 'install', MIME]) -+ cc(['xdg-mime', 'install', '--novendor', MIME]) - except Exception: - if self.opts.fatal_errors: - raise +@@ -856,8 +856,7 @@ + MIME = P(MIME_BASE) + self.mime_resources.append(MIME_BASE) + if not getattr(self.opts, 'staged_install', False): +- cc(['xdg-mime', 'install', MIME]) +- cc(['xdg-desktop-menu', 'forceupdate']) ++ cc(['xdg-mime', 'install', '--novendor', MIME]) + else: + from shutil import copyfile + copyfile(MIME, os.path.join(env['XDG_DATA_DIRS'], 'mime', 'packages', MIME_BASE)) diff --git a/shebang-python-fix.patch b/shebang-python-fix.patch index a03d246..163ff90 100644 --- a/shebang-python-fix.patch +++ b/shebang-python-fix.patch @@ -12,7 +12,7 @@ __appname__, __version__ HEADER = '''\ --#!/usr/bin/env python2 +-#!/usr/bin/env python{py_major_version} +#!/usr/bin/env python """ -- 2.44.0