diff options
-rw-r--r-- | libre/calibre-libre/PKGBUILD | 17 | ||||
-rw-r--r-- | libre/calibre-libre/libre.patch | 230 |
2 files changed, 245 insertions, 2 deletions
diff --git a/libre/calibre-libre/PKGBUILD b/libre/calibre-libre/PKGBUILD index d28dc45d1..6118642c4 100644 --- a/libre/calibre-libre/PKGBUILD +++ b/libre/calibre-libre/PKGBUILD @@ -27,13 +27,26 @@ replaces=$_pkgname conflicts=$_pkgname provides=$_pkgname=$pkgver install=calibre.install -source=("http://download.calibre-ebook.com/${pkgver}/calibre-${pkgver}.tar.xz" +mksource=("http://download.calibre-ebook.com/${pkgver}/calibre-${pkgver}.tar.xz" + 'libre.patch') +source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz" 'desktop_integration.patch' 'calibre-mount-helper') -md5sums=('1621d563c0cd46d582f8fdf8c44dbb6f' +mkmd5sums=('1621d563c0cd46d582f8fdf8c44dbb6f' + '1540d92a314bf748b60b8fc436777ccb') +md5sums=('38469886ead2808b81555ab2f505da7c' 'ece36dfd737fa4a346f0a0e59395e949' '675cd87d41342119827ef706055491e7') +mksource(){ + cd "${srcdir}/${_pkgname}" + + # Remove unrar files from the source + rm -rv src/unrar + rm -v src/calibre/utils/unrar.{cpp,py} + patch -Np1 -i "${srcdir}/libre.patch" +} + prepare(){ cd "${srcdir}/${_pkgname}" #rm -rf src/{cherrypy,pyPdf} diff --git a/libre/calibre-libre/libre.patch b/libre/calibre-libre/libre.patch new file mode 100644 index 000000000..c3dd28eb1 --- /dev/null +++ b/libre/calibre-libre/libre.patch @@ -0,0 +1,230 @@ +diff --git a/session.vim b/session.vim +index 67502c2..b7f24d3 100644 +--- a/session.vim ++++ b/session.vim +@@ -11,7 +11,6 @@ let g:syntastic_cpp_include_dirs = [ + \'/usr/include/freetype2', + \'/usr/include/fontconfig', + \'src/qtcurve/common', 'src/qtcurve', +- \'src/unrar', + \'src/qt-harfbuzz/src', + \'/usr/include/ImageMagick', + \] +diff --git a/setup/extensions.py b/setup/extensions.py +index b9d92f6..2ac13a9 100644 +--- a/setup/extensions.py ++++ b/setup/extensions.py +@@ -224,24 +224,6 @@ extensions = [ + sip_files=['calibre/ebooks/pdf/render/qt_hack.sip'] + ), + +- Extension('unrar', +- ['unrar/%s.cpp'%(x.partition('.')[0]) for x in ''' +- rar.o strlist.o strfn.o pathfn.o savepos.o smallfn.o global.o file.o +- filefn.o filcreat.o archive.o arcread.o unicode.o system.o +- isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o +- timefn.o rdwrfn.o consio.o options.o ulinks.o errhnd.o rarvm.o +- secpassword.o rijndael.o getbits.o sha1.o extinfo.o extract.o +- volume.o list.o find.o unpack.o cmddata.o filestr.o scantree.o +- '''.split()] + ['calibre/utils/unrar.cpp'], +- inc_dirs=['unrar'], +- cflags=[('/' if iswindows else '-') + x for x in ( +- 'DSILENT', 'DRARDLL', 'DUNRAR')] + ( +- [] if iswindows else ['-D_FILE_OFFSET_BITS=64', +- '-D_LARGEFILE_SOURCE']), +- optimize_level=2, +- libraries=['User32', 'Advapi32', 'kernel32', 'Shell32'] if iswindows else [] +- ), +- + ] + + +diff --git a/setup/installer/windows/freeze.py b/setup/installer/windows/freeze.py +index 08aa91f..7ee523b 100644 +--- a/setup/installer/windows/freeze.py ++++ b/setup/installer/windows/freeze.py +@@ -635,7 +635,7 @@ class Win32Freeze(Command, WixMixIn): + # Because of https://github.com/fancycode/MemoryModule/issues/4 + # any extensions that use C++ exceptions must be loaded + # from files +- 'unrar.pyd', 'wpd.pyd', 'podofo.pyd', ++ 'wpd.pyd', 'podofo.pyd', + 'progress_indicator.pyd', 'hunspell.pyd', + # As per this https://bugs.launchpad.net/bugs/1087816 + # on some systems magick.pyd fails to load from memory +diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py +index fcb627c..3289865 100644 +--- a/src/calibre/__init__.py ++++ b/src/calibre/__init__.py +@@ -271,10 +271,7 @@ def extract(path, dir): + # First use the file header to identify its type + with open(path, 'rb') as f: + id_ = f.read(3) +- if id_ == b'Rar': +- from calibre.utils.unrar import extract as rarextract +- extractor = rarextract +- elif id_.startswith(b'PK'): ++ if id_.startswith(b'PK'): + from calibre.libunzip import extract as zipextract + extractor = zipextract + if extractor is None: +@@ -283,9 +280,6 @@ def extract(path, dir): + if ext in ['zip', 'cbz', 'epub', 'oebzip']: + from calibre.libunzip import extract as zipextract + extractor = zipextract +- elif ext in ['cbr', 'rar']: +- from calibre.utils.unrar import extract as rarextract +- extractor = rarextract + if extractor is None: + raise Exception('Unknown archive type') + extractor(path, dir) +diff --git a/src/calibre/constants.py b/src/calibre/constants.py +index 13c78db..8e699e2 100644 +--- a/src/calibre/constants.py ++++ b/src/calibre/constants.py +@@ -137,7 +137,6 @@ class Plugins(collections.Mapping): + 'speedup', + 'freetype', + 'woff', +- 'unrar', + 'qt_hack', + '_regex', + 'hunspell', +diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py +index a74951c..86aa14d 100644 +--- a/src/calibre/customize/builtins.py ++++ b/src/calibre/customize/builtins.py +@@ -142,10 +142,6 @@ class ComicMetadataReader(MetadataReaderPlugin): + ftype = 'cbr' + elif id_.startswith(b'PK'): + ftype = 'cbz' +- if ftype == 'cbr': +- from calibre.utils.unrar import extract_first_alphabetically as extract_first +- extract_first +- else: + from calibre.libunzip import extract_member + extract_first = functools.partial(extract_member, + sort_alphabetically=True) +diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py +index 7b8ecd2..2910280 100644 +--- a/src/calibre/ebooks/metadata/archive.py ++++ b/src/calibre/ebooks/metadata/archive.py +@@ -27,8 +27,6 @@ def archive_type(stream): + ans = None + if id_ == stringFileHeader: + ans = 'zip' +- elif id_.startswith('Rar'): +- ans = 'rar' + try: + stream.seek(pos) + except: +@@ -40,29 +38,20 @@ class ArchiveExtract(FileTypePlugin): + name = 'Archive Extract' + author = 'Kovid Goyal' + description = _('Extract common e-book formats from archives ' +- '(zip/rar) files. Also try to autodetect if they are actually ' +- 'cbz/cbr files.') ++ 'zip files. Also try to autodetect if they are actually ' ++ 'cbz files.') + file_types = set(['zip', 'rar']) + supported_platforms = ['windows', 'osx', 'linux'] + on_import = True + + def run(self, archive): + from calibre.utils.zipfile import ZipFile +- is_rar = archive.lower().endswith('.rar') +- if is_rar: +- from calibre.utils.unrar import extract_member, names +- else: +- zf = ZipFile(archive, 'r') +- +- if is_rar: +- with open(archive, 'rb') as rf: +- fnames = list(names(rf)) +- else: +- fnames = zf.namelist() ++ zf = ZipFile(archive, 'r') ++ fnames = zf.namelist() + + fnames = [x for x in fnames if '.' in x and x.lower().rpartition('/')[-1] != 'thumbs.db'] + if is_comic(fnames): +- ext = '.cbr' if is_rar else '.cbz' ++ ext = '.cbz' + of = self.temporary_file('_archive_extract'+ext) + with open(archive, 'rb') as f: + of.write(f.read()) +@@ -78,12 +67,7 @@ class ArchiveExtract(FileTypePlugin): + + of = self.temporary_file('_archive_extract.'+ext) + with closing(of): +- if is_rar: +- with open(archive, 'rb') as f: +- data = extract_member(f, match=None, name=fname)[1] +- of.write(data) +- else: +- of.write(zf.read(fname)) ++ of.write(zf.read(fname)) + return of.name + + def get_comic_book_info(d, mi, series_index='volume'): +@@ -141,10 +125,6 @@ def get_comic_metadata(stream, stream_type, series_index='volume'): + from calibre.utils.zipfile import ZipFile + zf = ZipFile(stream) + comment = zf.comment +- elif stream_type == 'cbr': +- from calibre.utils.unrar import RARFile +- f = RARFile(stream, get_comment=True) +- comment = f.comment + + if comment: + import json +diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py +index d849846..50aa6d9 100644 +--- a/src/calibre/gui2/add.py ++++ b/src/calibre/gui2/add.py +@@ -84,11 +84,8 @@ class RecursiveFind(QThread): # {{{ + prints('Corrupt ZIP file, trying to use local headers') + from calibre.utils.localunzip import extractall + extractall(self.path, self.tdir) +- elif self.path.lower().endswith('.rar'): +- from calibre.utils.unrar import extract +- extract(self.path, self.tdir) + else: +- raise ValueError('Can only process ZIP or RAR archives') ++ raise ValueError('Can only process ZIP archives') + + def run(self): + if self.tdir is not None: +@@ -292,7 +289,7 @@ class Adder(QObject): # {{{ + self.pd.canceled_signal.connect(self.canceled) + + def add_recursive(self, root, single=True): +- if os.path.exists(root) and os.path.isfile(root) and root.lower().rpartition('.')[-1] in {'zip', 'rar'}: ++ if os.path.exists(root) and os.path.isfile(root) and root.lower().rpartition('.')[-1] in {'zip'}: + self.path = tdir = PersistentTemporaryDirectory('_arcv_') + else: + self.path = root +diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py +index fd9a36d..130d08d 100644 +--- a/src/calibre/test_build.py ++++ b/src/calibre/test_build.py +@@ -102,11 +102,6 @@ def test_imaging(): + raise RuntimeError('PIL choked!') + print ('PIL OK!') + +-def test_unrar(): +- from calibre.utils.unrar import test_basic +- test_basic() +- print ('Unrar OK!') +- + def test_ssl(): + import ssl + ssl +@@ -146,7 +141,6 @@ def test(): + test_ssl() + test_sqlite() + test_imaging() +- test_unrar() + test_icu() + test_woff() + test_qt() |