Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] [WIP] calibre
@ 2020-04-09 14:59 bra1nwave
  2020-04-09 15:50 ` [PR PATCH] [Updated] " bra1nwave
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-09 14:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 302 bytes --]

There is a new pull request by bra1nwave against master on the void-packages repository

https://github.com/bra1nwave/void-packages calibre
https://github.com/void-linux/void-packages/pull/20793

[WIP] calibre


A patch file from https://github.com/void-linux/void-packages/pull/20793.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-calibre-20793.patch --]
[-- Type: text/x-diff, Size: 3025 bytes --]

From 02190f0d06214fb808cf82bc09adc56418a71378 Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Thu, 9 Apr 2020 16:57:53 +0200
Subject: [PATCH] WIP

---
 srcpkgs/calibre/template | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index f9ae0a5923b..1214d7c56ba 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -2,24 +2,24 @@
 pkgname=calibre
 version=4.13.0
 revision=3
-build_style=python2-module
+build_style=python3-module
 pycompile_dirs="/usr/lib/calibre/"
-hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
- python-PyQt5-webengine python-apsw python-css-parser python-dateutil
- python-devel python-html5-parser python-msgpack python-regex qt5-qmake
+hostmakedepends="pkg-config python3-BeautifulSoup4 python3-Pillow python3-PyQt5-svg
+ python3-PyQt5-webengine python3-apsw python3-css-parser python3-dateutil
+ python3-devel python3-html5-parser python3-msgpack python3-regex qt5-qmake
  xdg-utils rapydscript-ng"
 makedepends="glib-devel libchmlib-devel libinput-devel libmagick-devel libmtp-devel
  libpodofo-devel libwmf-devel libxkbcommon-devel python-PyQt5-devel
  qt5-devel sqlite-devel tslib-devel hunspell-devel hyphen-devel"
-depends="desktop-file-utils optipng poppler-utils python-BeautifulSoup4
- python-Markdown python-Pillow python-PyQt5-svg
- python-PyQt5-webengine python-PyQt5-webchannel python-Pygments python-apsw
- python-css-parser python-cssselect python-dateutil python-dbus
- python-dnspython python-feedparser python-html5-parser python-mechanize
- python-msgpack python-netifaces python-psutil python-regex python-html2text
+depends="desktop-file-utils optipng poppler-utils python3-BeautifulSoup4
+ python3-Markdown python3-Pillow python3-PyQt5-svg
+ python3-PyQt5-webengine python3-PyQt5-webchannel python3-Pygments python3-apsw
+ python3-css-parser python3-cssselect python3-dateutil python3-dbus
+ python3-dnspython python3-feedparser python3-html5-parser python3-mechanize
+ python3-msgpack python3-netifaces python3-psutil python3-regex python3-html2text
  qt5-webengine"
 short_desc="Ebook management application"
-maintainer="bra1nwave <bra1nwave@protonmail.com>"
+maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-3.0-only"
 homepage="https://calibre-ebook.com"
 changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.yaml"
@@ -39,9 +39,9 @@ do_configure() {
 }
 
 do_build() {
-	python2 setup.py build
-	python2 setup.py gui
-	python2 setup.py rapydscript
+	CALIBRE_PY3_PORT=1 python setup.py build
+	CALIBRE_PY3_PORT=1 python setup.py gui
+	CALIBRE_PY3_PORT=1 python setup.py rapydscript
 }
 
 # requires an X11 environment...
@@ -52,7 +52,7 @@ do_check() {
 do_install() {
 	vmkdir usr/share/zsh/site-functions
 
-	python2 setup.py \
+	CALIBRE_PY3_PORT=1 python setup.py \
 		install --prefix=/usr --staging-root=${DESTDIR}/usr
 
 	for m in man-pages/man1/*.1; do

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
@ 2020-04-09 15:50 ` bra1nwave
  2020-04-09 23:10 ` q66
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-09 15:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 307 bytes --]

There is an updated pull request by bra1nwave against master on the void-packages repository

https://github.com/bra1nwave/void-packages calibre
https://github.com/void-linux/void-packages/pull/20793

[WIP] calibre


A patch file from https://github.com/void-linux/void-packages/pull/20793.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-calibre-20793.patch --]
[-- Type: text/x-diff, Size: 24599 bytes --]

From 8aba84c1f122f950e2568171fdf3b1d2575ba3b7 Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Thu, 9 Apr 2020 16:57:53 +0200
Subject: [PATCH] WIP

---
 ...ib-ported-to-python-3-for-feedparser.patch | 590 ++++++++++++++++++
 .../calibre/patches/disable-unrar-test.patch  |  27 -
 srcpkgs/calibre/template                      |  39 +-
 3 files changed, 610 insertions(+), 46 deletions(-)
 create mode 100644 srcpkgs/calibre/patches/add-sgmllib-ported-to-python-3-for-feedparser.patch
 delete mode 100644 srcpkgs/calibre/patches/disable-unrar-test.patch

diff --git a/srcpkgs/calibre/patches/add-sgmllib-ported-to-python-3-for-feedparser.patch b/srcpkgs/calibre/patches/add-sgmllib-ported-to-python-3-for-feedparser.patch
new file mode 100644
index 00000000000..a22a5816922
--- /dev/null
+++ b/srcpkgs/calibre/patches/add-sgmllib-ported-to-python-3-for-feedparser.patch
@@ -0,0 +1,590 @@
+From 2a09a839eb3c0b84d4f5f0e194bd3cb01cb50057 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid@kovidgoyal.net>
+Date: Mon, 18 Nov 2019 18:38:06 +0530
+Subject: [PATCH] Add sgmllib ported to python 3 for feedparser
+
+---
+ src/sgmllib.py | 574 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 574 insertions(+)
+ create mode 100644 src/sgmllib.py
+
+diff --git a/src/sgmllib.py b/src/sgmllib.py
+new file mode 100644
+index 0000000000..6422b7603c
+--- /dev/null
++++ src/sgmllib.py
+@@ -0,0 +1,574 @@
++"""A parser for SGML, using the derived class as a static DTD."""
++# Needed for feedparser under python 3 where this module has been removed
++
++# XXX This only supports those SGML features used by HTML.
++
++# XXX There should be a way to distinguish between PCDATA (parsed
++# character data -- the normal case), RCDATA (replaceable character
++# data -- only char and entity references and end tags are special)
++# and CDATA (character data -- only end tags are special).  RCDATA is
++# not supported at all.
++
++import _markupbase
++import re
++
++__all__ = ["SGMLParser", "SGMLParseError"]
++
++# Regular expressions used for parsing
++
++interesting = re.compile('[&<]')
++incomplete = re.compile(
++    '&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|'
++    '<([a-zA-Z][^<>]*|'
++    '/([a-zA-Z][^<>]*)?|'
++    '![^<>]*)?'
++)
++
++entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]')
++charref = re.compile('&#([0-9]+)[^0-9]')
++
++starttagopen = re.compile('<[>a-zA-Z]')
++shorttagopen = re.compile('<[a-zA-Z][-.a-zA-Z0-9]*/')
++shorttag = re.compile('<([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/')
++piclose = re.compile('>')
++endbracket = re.compile('[<>]')
++tagfind = re.compile('[a-zA-Z][-_.a-zA-Z0-9]*')
++attrfind = re.compile(
++    r'\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*'
++    r'(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?'
++)
++
++
++class SGMLParseError(RuntimeError):
++    """Exception raised for all parse errors."""
++    pass
++
++
++# SGML parser base class -- find tags and call handler functions.
++# Usage: p = SGMLParser(); p.feed(data); ...; p.close().
++# The dtd is defined by deriving a class which defines methods
++# with special names to handle tags: start_foo and end_foo to handle
++# <foo> and </foo>, respectively, or do_foo to handle <foo> by itself.
++# (Tags are converted to lower case for this purpose.)  The data
++# between tags is passed to the parser by calling self.handle_data()
++# with some data as argument (the data may be split up in arbitrary
++# chunks).  Entity references are passed by calling
++# self.handle_entityref() with the entity reference as argument.
++
++
++class SGMLParser(_markupbase.ParserBase):
++    # Definition of entities -- derived classes may override
++    entity_or_charref = re.compile(
++        '&(?:'
++        '([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+)'
++        ')(;?)'
++    )
++
++    def __init__(self, verbose=0):
++        """Initialize and reset this instance."""
++        self.verbose = verbose
++        self.reset()
++
++    def reset(self):
++        """Reset this instance. Loses all unprocessed data."""
++        self.__starttag_text = None
++        self.rawdata = ''
++        self.stack = []
++        self.lasttag = '???'
++        self.nomoretags = 0
++        self.literal = 0
++        _markupbase.ParserBase.reset(self)
++
++    def setnomoretags(self):
++        """Enter literal mode (CDATA) till EOF.
++
++        Intended for derived classes only.
++        """
++        self.nomoretags = self.literal = 1
++
++    def setliteral(self, *args):
++        """Enter literal mode (CDATA).
++
++        Intended for derived classes only.
++        """
++        self.literal = 1
++
++    def feed(self, data):
++        """Feed some data to the parser.
++
++        Call this as often as you want, with as little or as much text
++        as you want (may include '\n').  (This just saves the text,
++        all the processing is done by goahead().)
++        """
++
++        self.rawdata = self.rawdata + data
++        self.goahead(0)
++
++    def close(self):
++        """Handle the remaining data."""
++        self.goahead(1)
++
++    def error(self, message):
++        raise SGMLParseError(message)
++
++    # Internal -- handle data as far as reasonable.  May leave state
++    # and data to be processed by a subsequent call.  If 'end' is
++    # true, force handling all data as if followed by EOF marker.
++    def goahead(self, end):
++        rawdata = self.rawdata
++        i = 0
++        n = len(rawdata)
++        while i < n:
++            if self.nomoretags:
++                self.handle_data(rawdata[i:n])
++                i = n
++                break
++            match = interesting.search(rawdata, i)
++            if match:
++                j = match.start()
++            else:
++                j = n
++            if i < j:
++                self.handle_data(rawdata[i:j])
++            i = j
++            if i == n:
++                break
++            if rawdata[i] == '<':
++                if starttagopen.match(rawdata, i):
++                    if self.literal:
++                        self.handle_data(rawdata[i])
++                        i = i + 1
++                        continue
++                    k = self.parse_starttag(i)
++                    if k < 0:
++                        break
++                    i = k
++                    continue
++                if rawdata.startswith("</", i):
++                    k = self.parse_endtag(i)
++                    if k < 0:
++                        break
++                    i = k
++                    self.literal = 0
++                    continue
++                if self.literal:
++                    if n > (i + 1):
++                        self.handle_data("<")
++                        i = i + 1
++                    else:
++                        # incomplete
++                        break
++                    continue
++                if rawdata.startswith("<!--", i):
++                    # Strictly speaking, a comment is --.*--
++                    # within a declaration tag <!...>.
++                    # This should be removed,
++                    # and comments handled only in parse_declaration.
++                    k = self.parse_comment(i)
++                    if k < 0:
++                        break
++                    i = k
++                    continue
++                if rawdata.startswith("<?", i):
++                    k = self.parse_pi(i)
++                    if k < 0:
++                        break
++                    i = i + k
++                    continue
++                if rawdata.startswith("<!", i):
++                    # This is some sort of declaration; in "HTML as
++                    # deployed," this should only be the document type
++                    # declaration ("<!DOCTYPE html...>").
++                    k = self.parse_declaration(i)
++                    if k < 0:
++                        break
++                    i = k
++                    continue
++            elif rawdata[i] == '&':
++                if self.literal:
++                    self.handle_data(rawdata[i])
++                    i = i + 1
++                    continue
++                match = charref.match(rawdata, i)
++                if match:
++                    name = match.group(1)
++                    self.handle_charref(name)
++                    i = match.end(0)
++                    if rawdata[i - 1] != ';':
++                        i = i - 1
++                    continue
++                match = entityref.match(rawdata, i)
++                if match:
++                    name = match.group(1)
++                    self.handle_entityref(name)
++                    i = match.end(0)
++                    if rawdata[i - 1] != ';':
++                        i = i - 1
++                    continue
++            else:
++                self.error('neither < nor & ??')
++            # We get here only if incomplete matches but
++            # nothing else
++            match = incomplete.match(rawdata, i)
++            if not match:
++                self.handle_data(rawdata[i])
++                i = i + 1
++                continue
++            j = match.end(0)
++            if j == n:
++                break  # Really incomplete
++            self.handle_data(rawdata[i:j])
++            i = j
++        # end while
++        if end and i < n:
++            self.handle_data(rawdata[i:n])
++            i = n
++        self.rawdata = rawdata[i:]
++        # XXX if end: check for empty stack
++
++    # Extensions for the DOCTYPE scanner:
++    _decl_otherchars = '='
++
++    # Internal -- parse processing instr, return length or -1 if not terminated
++    def parse_pi(self, i):
++        rawdata = self.rawdata
++        if rawdata[i:i + 2] != '<?':
++            self.error('unexpected call to parse_pi()')
++        match = piclose.search(rawdata, i + 2)
++        if not match:
++            return -1
++        j = match.start(0)
++        self.handle_pi(rawdata[i + 2:j])
++        j = match.end(0)
++        return j - i
++
++    def get_starttag_text(self):
++        return self.__starttag_text
++
++    # Internal -- handle starttag, return length or -1 if not terminated
++    def parse_starttag(self, i):
++        self.__starttag_text = None
++        start_pos = i
++        rawdata = self.rawdata
++        if shorttagopen.match(rawdata, i):
++            # SGML shorthand: <tag/data/ == <tag>data</tag>
++            # XXX Can data contain &... (entity or char refs)?
++            # XXX Can data contain < or > (tag characters)?
++            # XXX Can there be whitespace before the first /?
++            match = shorttag.match(rawdata, i)
++            if not match:
++                return -1
++            tag, data = match.group(1, 2)
++            self.__starttag_text = '<%s/' % tag
++            tag = tag.lower()
++            k = match.end(0)
++            self.finish_shorttag(tag, data)
++            self.__starttag_text = rawdata[start_pos:match.end(1) + 1]
++            return k
++        # XXX The following should skip matching quotes (' or ")
++        # As a shortcut way to exit, this isn't so bad, but shouldn't
++        # be used to locate the actual end of the start tag since the
++        # < or > characters may be embedded in an attribute value.
++        match = endbracket.search(rawdata, i + 1)
++        if not match:
++            return -1
++        j = match.start(0)
++        # Now parse the data between i+1 and j into a tag and attrs
++        attrs = []
++        if rawdata[i:i + 2] == '<>':
++            # SGML shorthand: <> == <last open tag seen>
++            k = j
++            tag = self.lasttag
++        else:
++            match = tagfind.match(rawdata, i + 1)
++            if not match:
++                self.error('unexpected call to parse_starttag')
++            k = match.end(0)
++            tag = rawdata[i + 1:k].lower()
++            self.lasttag = tag
++        while k < j:
++            match = attrfind.match(rawdata, k)
++            if not match:
++                break
++            attrname, rest, attrvalue = match.group(1, 2, 3)
++            if not rest:
++                attrvalue = attrname
++            else:
++                if (
++                    attrvalue[:1] == "'" == attrvalue[-1:] or
++                    attrvalue[:1] == '"' == attrvalue[-1:]
++                ):
++                    # strip quotes
++                    attrvalue = attrvalue[1:-1]
++                attrvalue = self.entity_or_charref.sub(self._convert_ref, attrvalue)
++            attrs.append((attrname.lower(), attrvalue))
++            k = match.end(0)
++        if rawdata[j] == '>':
++            j = j + 1
++        self.__starttag_text = rawdata[start_pos:j]
++        self.finish_starttag(tag, attrs)
++        return j
++
++    # Internal -- convert entity or character reference
++    def _convert_ref(self, match):
++        if match.group(2):
++            return self.convert_charref(match.group(2)) or \
++                '&#%s%s' % match.groups()[1:]
++        elif match.group(3):
++            return self.convert_entityref(match.group(1)) or \
++                '&%s;' % match.group(1)
++        else:
++            return '&%s' % match.group(1)
++
++    # Internal -- parse endtag
++    def parse_endtag(self, i):
++        rawdata = self.rawdata
++        match = endbracket.search(rawdata, i + 1)
++        if not match:
++            return -1
++        j = match.start(0)
++        tag = rawdata[i + 2:j].strip().lower()
++        if rawdata[j] == '>':
++            j = j + 1
++        self.finish_endtag(tag)
++        return j
++
++    # Internal -- finish parsing of <tag/data/ (same as <tag>data</tag>)
++    def finish_shorttag(self, tag, data):
++        self.finish_starttag(tag, [])
++        self.handle_data(data)
++        self.finish_endtag(tag)
++
++    # Internal -- finish processing of start tag
++    # Return -1 for unknown tag, 0 for open-only tag, 1 for balanced tag
++    def finish_starttag(self, tag, attrs):
++        try:
++            method = getattr(self, 'start_' + tag)
++        except AttributeError:
++            try:
++                method = getattr(self, 'do_' + tag)
++            except AttributeError:
++                self.unknown_starttag(tag, attrs)
++                return -1
++            else:
++                self.handle_starttag(tag, method, attrs)
++                return 0
++        else:
++            self.stack.append(tag)
++            self.handle_starttag(tag, method, attrs)
++            return 1
++
++    # Internal -- finish processing of end tag
++    def finish_endtag(self, tag):
++        if not tag:
++            found = len(self.stack) - 1
++            if found < 0:
++                self.unknown_endtag(tag)
++                return
++        else:
++            if tag not in self.stack:
++                try:
++                    method = getattr(self, 'end_' + tag)
++                except AttributeError:
++                    self.unknown_endtag(tag)
++                else:
++                    self.report_unbalanced(tag)
++                return
++            found = len(self.stack)
++            for i in range(found):
++                if self.stack[i] == tag:
++                    found = i
++        while len(self.stack) > found:
++            tag = self.stack[-1]
++            try:
++                method = getattr(self, 'end_' + tag)
++            except AttributeError:
++                method = None
++            if method:
++                self.handle_endtag(tag, method)
++            else:
++                self.unknown_endtag(tag)
++            del self.stack[-1]
++
++    # Overridable -- handle start tag
++    def handle_starttag(self, tag, method, attrs):
++        method(attrs)
++
++    # Overridable -- handle end tag
++    def handle_endtag(self, tag, method):
++        method()
++
++    # Example -- report an unbalanced </...> tag.
++    def report_unbalanced(self, tag):
++        if self.verbose:
++            print('*** Unbalanced </' + tag + '>')
++            print('*** Stack:', self.stack)
++
++    def convert_charref(self, name):
++        """Convert character reference, may be overridden."""
++        try:
++            n = int(name)
++        except ValueError:
++            return
++        if not 0 <= n <= 127:
++            return
++        return self.convert_codepoint(n)
++
++    def convert_codepoint(self, codepoint):
++        return chr(codepoint)
++
++    def handle_charref(self, name):
++        """Handle character reference, no need to override."""
++        replacement = self.convert_charref(name)
++        if replacement is None:
++            self.unknown_charref(name)
++        else:
++            self.handle_data(replacement)
++
++    # Definition of entities -- derived classes may override
++    entitydefs = \
++            {'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"', 'apos': '\''}
++
++    def convert_entityref(self, name):
++        """Convert entity references.
++
++        As an alternative to overriding this method; one can tailor the
++        results by setting up the self.entitydefs mapping appropriately.
++        """
++        table = self.entitydefs
++        if name in table:
++            return table[name]
++        else:
++            return
++
++    def handle_entityref(self, name):
++        """Handle entity references, no need to override."""
++        replacement = self.convert_entityref(name)
++        if replacement is None:
++            self.unknown_entityref(name)
++        else:
++            self.handle_data(replacement)
++
++    # Example -- handle data, should be overridden
++    def handle_data(self, data):
++        pass
++
++    # Example -- handle comment, could be overridden
++    def handle_comment(self, data):
++        pass
++
++    # Example -- handle declaration, could be overridden
++    def handle_decl(self, decl):
++        pass
++
++    # Example -- handle processing instruction, could be overridden
++    def handle_pi(self, data):
++        pass
++
++    # To be overridden -- handlers for unknown objects
++    def unknown_starttag(self, tag, attrs):
++        pass
++
++    def unknown_endtag(self, tag):
++        pass
++
++    def unknown_charref(self, ref):
++        pass
++
++    def unknown_entityref(self, ref):
++        pass
++
++
++class TestSGMLParser(SGMLParser):
++
++    def __init__(self, verbose=0):
++        self.testdata = ""
++        SGMLParser.__init__(self, verbose)
++
++    def handle_data(self, data):
++        self.testdata = self.testdata + data
++        if len(repr(self.testdata)) >= 70:
++            self.flush()
++
++    def flush(self):
++        data = self.testdata
++        if data:
++            self.testdata = ""
++            print('data:', repr(data))
++
++    def handle_comment(self, data):
++        self.flush()
++        r = repr(data)
++        if len(r) > 68:
++            r = r[:32] + '...' + r[-32:]
++        print('comment:', r)
++
++    def unknown_starttag(self, tag, attrs):
++        self.flush()
++        if not attrs:
++            print('start tag: <' + tag + '>')
++        else:
++            print('start tag: <' + tag, end=' ')
++            for name, value in attrs:
++                print(name + '=' + '"' + value + '"', end=' ')
++            print('>')
++
++    def unknown_endtag(self, tag):
++        self.flush()
++        print('end tag: </' + tag + '>')
++
++    def unknown_entityref(self, ref):
++        self.flush()
++        print('*** unknown entity ref: &' + ref + ';')
++
++    def unknown_charref(self, ref):
++        self.flush()
++        print('*** unknown char ref: &#' + ref + ';')
++
++    def unknown_decl(self, data):
++        self.flush()
++        print('*** unknown decl: [' + data + ']')
++
++    def close(self):
++        SGMLParser.close(self)
++        self.flush()
++
++
++def test(args=None):
++    import sys
++
++    if args is None:
++        args = sys.argv[1:]
++
++    if args and args[0] == '-s':
++        args = args[1:]
++        klass = SGMLParser
++    else:
++        klass = TestSGMLParser
++
++    if args:
++        file = args[0]
++    else:
++        file = 'test.html'
++
++    if file == '-':
++        f = sys.stdin
++    else:
++        try:
++            f = open(file, 'r')
++        except IOError as msg:
++            print(file, ":", msg)
++            sys.exit(1)
++
++    data = f.read()
++    if f is not sys.stdin:
++        f.close()
++
++    x = klass()
++    for c in data:
++        x.feed(c)
++    x.close()
++
++
++if __name__ == '__main__':
++    test()
diff --git a/srcpkgs/calibre/patches/disable-unrar-test.patch b/srcpkgs/calibre/patches/disable-unrar-test.patch
deleted file mode 100644
index bcbe25335a3..00000000000
--- a/srcpkgs/calibre/patches/disable-unrar-test.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Source: Debian
-
----
- src/calibre/test_build.py |    5 +++++
- 1 file changed, 5 insertions(+)
-
---- src/calibre/test_build.py
-+++ src/calibre/test_build.py
-@@ -17,6 +17,10 @@ from polyglot.builtins import iteritems,
- 
- is_ci = os.environ.get('CI', '').lower() == 'true'
- 
-+try:
-+    import unrardll
-+except:
-+    unrardll = None
- 
- class BuildTest(unittest.TestCase):
- 
-@@ -265,6 +269,7 @@ class BuildTest(unittest.TestCase):
-         from calibre.gui2.win_file_dialogs import test
-         test()
- 
-+    @unittest.skipUnless(unrardll, 'Module unrardll is missing')
-     def test_unrar(self):
-         from calibre.utils.unrar import test_basic
-         test_basic()
diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index f9ae0a5923b..b02fac7df75 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -1,25 +1,26 @@
 # Template file for 'calibre'
 pkgname=calibre
 version=4.13.0
-revision=3
-build_style=python2-module
+revision=4
+build_style=python3-module
 pycompile_dirs="/usr/lib/calibre/"
-hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
- python-PyQt5-webengine python-apsw python-css-parser python-dateutil
- python-devel python-html5-parser python-msgpack python-regex qt5-qmake
+hostmakedepends="pkg-config python3-BeautifulSoup4 python3-Pillow python3-PyQt5-svg
+ python3-PyQt5-webengine python3-apsw python3-css-parser python3-dateutil
+ python3-devel python3-html5-parser python3-msgpack python3-regex qt5-qmake
  xdg-utils rapydscript-ng"
 makedepends="glib-devel libchmlib-devel libinput-devel libmagick-devel libmtp-devel
  libpodofo-devel libwmf-devel libxkbcommon-devel python-PyQt5-devel
  qt5-devel sqlite-devel tslib-devel hunspell-devel hyphen-devel"
-depends="desktop-file-utils optipng poppler-utils python-BeautifulSoup4
- python-Markdown python-Pillow python-PyQt5-svg
- python-PyQt5-webengine python-PyQt5-webchannel python-Pygments python-apsw
- python-css-parser python-cssselect python-dateutil python-dbus
- python-dnspython python-feedparser python-html5-parser python-mechanize
- python-msgpack python-netifaces python-psutil python-regex python-html2text
- qt5-webengine"
+depends="desktop-file-utils optipng poppler-utils python3-BeautifulSoup4
+ python3-Markdown python3-Pillow python3-PyQt5-svg
+ python3-PyQt5-webengine python3-PyQt5-webchannel python3-Pygments python3-apsw
+ python3-css-parser python3-cssselect python3-dateutil python3-dbus
+ python3-dnspython python3-feedparser python3-html5-parser python3-mechanize
+ python3-msgpack python3-netifaces python3-psutil python3-regex python3-html2text
+ qt5-webengine python3-zeroconf"
+checkdepends="$depends libjpeg-turbo-tools"
 short_desc="Ebook management application"
-maintainer="bra1nwave <bra1nwave@protonmail.com>"
+maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-3.0-only"
 homepage="https://calibre-ebook.com"
 changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.yaml"
@@ -39,20 +40,20 @@ do_configure() {
 }
 
 do_build() {
-	python2 setup.py build
-	python2 setup.py gui
-	python2 setup.py rapydscript
+	CALIBRE_PY3_PORT=1 python3 setup.py build
+	CALIBRE_PY3_PORT=1 python3 setup.py gui
+	CALIBRE_PY3_PORT=1 python3 setup.py rapydscript
 }
 
-# requires an X11 environment...
 do_check() {
-	:
+	CALIBRE_PY3_PORT=1 python3 setup.py test \
+		--exclude-test-name unrar
 }
 
 do_install() {
 	vmkdir usr/share/zsh/site-functions
 
-	python2 setup.py \
+	CALIBRE_PY3_PORT=1 python3 setup.py \
 		install --prefix=/usr --staging-root=${DESTDIR}/usr
 
 	for m in man-pages/man1/*.1; do

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
  2020-04-09 15:50 ` [PR PATCH] [Updated] " bra1nwave
@ 2020-04-09 23:10 ` q66
  2020-04-10 12:06 ` [PR PATCH] [Updated] " bra1nwave
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: q66 @ 2020-04-09 23:10 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 242 bytes --]

New comment by q66 on void-packages repository

https://github.com/void-linux/void-packages/pull/20793#issuecomment-611796378

Comment:
I'd say let's not for now, apparently it breaks a lot of plugins, and I already fixed the html2text issue

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
  2020-04-09 15:50 ` [PR PATCH] [Updated] " bra1nwave
  2020-04-09 23:10 ` q66
@ 2020-04-10 12:06 ` bra1nwave
  2020-04-10 12:06 ` bra1nwave
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-10 12:06 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 307 bytes --]

There is an updated pull request by bra1nwave against master on the void-packages repository

https://github.com/bra1nwave/void-packages calibre
https://github.com/void-linux/void-packages/pull/20793

[WIP] calibre


A patch file from https://github.com/void-linux/void-packages/pull/20793.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-calibre-20793.patch --]
[-- Type: text/x-diff, Size: 8435 bytes --]

From b30f91c648ab5a27035b93a05338a06760643c3c Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 08:16:22 +0200
Subject: [PATCH 1/2] WIP

---
 srcpkgs/calibre/template | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index f9ae0a5923b..f49f85176ed 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -1,7 +1,7 @@
 # Template file for 'calibre'
 pkgname=calibre
 version=4.13.0
-revision=3
+revision=4
 build_style=python2-module
 pycompile_dirs="/usr/lib/calibre/"
 hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
@@ -18,6 +18,7 @@ depends="desktop-file-utils optipng poppler-utils python-BeautifulSoup4
  python-dnspython python-feedparser python-html5-parser python-mechanize
  python-msgpack python-netifaces python-psutil python-regex python-html2text
  qt5-webengine"
+checkdepends="$depends libjpeg-turbo-tools jxrlib"
 short_desc="Ebook management application"
 maintainer="bra1nwave <bra1nwave@protonmail.com>"
 license="GPL-3.0-only"
@@ -44,9 +45,11 @@ do_build() {
 	python2 setup.py rapydscript
 }
 
-# requires an X11 environment...
 do_check() {
-	:
+	# The qt test crashes without any error messages
+	# disabled for now
+	python2 setup.py test \
+		--exclude-test-name qt
 }
 
 do_install() {

From 39cd6eef674554a329a53901c79f487058fe6be8 Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 13:43:37 +0200
Subject: [PATCH 2/2] New package: jxrlib-0.2.2

---
 common/shlibs                         |   2 +
 srcpkgs/jxrlib-devel                  |   1 +
 srcpkgs/jxrlib/patches/usecmake.patch | 143 ++++++++++++++++++++++++++
 srcpkgs/jxrlib/template               |  20 ++++
 4 files changed, 166 insertions(+)
 create mode 120000 srcpkgs/jxrlib-devel
 create mode 100644 srcpkgs/jxrlib/patches/usecmake.patch
 create mode 100644 srcpkgs/jxrlib/template

diff --git a/common/shlibs b/common/shlibs
index 552a4d04e78..4d74be546a7 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3857,3 +3857,5 @@ libbudgietheme.so.0 budgie-desktop-10.5.1_1
 libbudgie-plugin.so.0 budgie-desktop-10.5.1_1
 libslirp.so.0 libslirp-4.2.0_1
 libqpdf.so.28 libqpdf-10.0.0_1
+libjpegxr.so.0 jxrlib-0.2.2_1
+libjxrglue.so.0 jxrlib-0.2.2_1
diff --git a/srcpkgs/jxrlib-devel b/srcpkgs/jxrlib-devel
new file mode 120000
index 00000000000..1f1ea142a5f
--- /dev/null
+++ b/srcpkgs/jxrlib-devel
@@ -0,0 +1 @@
+jxrlib/
\ No newline at end of file
diff --git a/srcpkgs/jxrlib/patches/usecmake.patch b/srcpkgs/jxrlib/patches/usecmake.patch
new file mode 100644
index 00000000000..ef2e7de79b5
--- /dev/null
+++ b/srcpkgs/jxrlib/patches/usecmake.patch
@@ -0,0 +1,143 @@
+Description: Prefer a cmake based build system
+Author: Mathieu Malaterre <malat@debian.org>
+Forwarded: https://jxrlib.codeplex.com/discussions/440294
+
+Index: jxrlib-1.1/CMakeLists.txt
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ CMakeLists.txt	2014-03-26 17:05:04.429637801 +0100
+@@ -0,0 +1,134 @@
++# Copyright Mathieu Malaterre <malat@debian.org>
++# BSD (Same as jxrlib)
++cmake_minimum_required(VERSION 2.8)
++project(jxrlib C)
++
++# Need shared libs for ABI
++set(BUILD_SHARED_LIBS ON)
++
++# helper macro to preserve original Makefile convention
++macro(JXR_MAKE_OBJ SET_NAME)
++  foreach(src ${SRC_${SET_NAME}})
++    list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src})
++  endforeach()
++endmacro()
++
++include(TestBigEndian)
++test_big_endian(ISBIGENDIAN)
++if(ISBIGENDIAN)
++  set(DEF_ENDIAN _BIG__ENDIAN_)
++endif()
++
++set(DIR_SYS image/sys)
++set(DIR_DEC image/decode)
++set(DIR_ENC image/encode)
++
++set(DIR_GLUE jxrgluelib)
++set(DIR_TEST jxrtestlib)
++set(DIR_EXEC jxrencoderdecoder)
++
++if(NOT JXRLIB_INSTALL_BIN_DIR)
++  set(JXRLIB_INSTALL_BIN_DIR "bin")
++endif()
++
++if(NOT JXRLIB_INSTALL_LIB_DIR)
++  set(JXRLIB_INSTALL_LIB_DIR "lib")
++endif()
++
++if(NOT JXRLIB_INSTALL_INCLUDE_DIR)
++  set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib")
++endif()
++
++include_directories(
++  common/include
++  ${DIR_SYS}
++  ${DIR_GLUE}
++  ${DIR_TEST}
++)
++
++# where is strlcpy ?
++include(CheckSymbolExists)
++check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
++#set(CMAKE_REQUIRED_LIBRARIES bsd)
++#CHECK_SYMBOL_EXISTS(strlcpy "string.h" HAVE_STRLCPY4)
++# on linux, strlcpy is in -lbsd:
++#if(NOT HAVE_STRLCPY)
++#  include(CheckLibraryExists)
++#  find_library(BSD_LIBRARY bsd)
++#  check_library_exists(bsd "strlcpy" ${BSD_LIBRARY} HAVE_STRLCPY_BSD)
++#endif()
++
++# JPEG-XR
++set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c)
++JXR_MAKE_OBJ(SYS)
++set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c)
++JXR_MAKE_OBJ(DEC)
++set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c)
++JXR_MAKE_OBJ(ENC)
++
++add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS})
++set_property(TARGET jpegxr
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jpegxr PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jpegxr PROPERTY VERSION 1.1)
++set_property(TARGET jpegxr PROPERTY SOVERSION 0)
++install(TARGETS jpegxr
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++
++# JXR-GLUE
++set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c)
++JXR_MAKE_OBJ(GLUE)
++set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c)
++JXR_MAKE_OBJ(TEST)
++
++add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST})
++set_property(TARGET jxrglue
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jxrglue PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jxrglue PROPERTY VERSION 1.1)
++set_property(TARGET jxrglue PROPERTY SOVERSION 0)
++install(TARGETS jxrglue
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++#if(HAVE_STRLCPY_BSD)
++#	target_link_libraries(jxrglue ${BSD_LIBRARY})
++#endif()
++target_link_libraries(jxrglue jpegxr m)
++# Enc app files
++set(ENCAPP JxrEncApp)
++add_executable(${ENCAPP} ${DIR_EXEC}/${ENCAPP}.c)
++set_property(TARGET ${ENCAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${ENCAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${ENCAPP} jxrglue) # jpegxr)
++install(TARGETS ${ENCAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++# Dec app files
++set(DECAPP JxrDecApp)
++add_executable(${DECAPP} ${DIR_EXEC}/${DECAPP}.c)
++set_property(TARGET ${DECAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${DECAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${DECAPP} jxrglue) # jpegxr)
++install(TARGETS ${DECAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++
++# install rules
++install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h
++  image/sys/windowsmediaphoto.h
++  DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers
++)
++install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR}
++  FILES_MATCHING PATTERN "*.h"
++)
diff --git a/srcpkgs/jxrlib/template b/srcpkgs/jxrlib/template
new file mode 100644
index 00000000000..48f02dceab6
--- /dev/null
+++ b/srcpkgs/jxrlib/template
@@ -0,0 +1,20 @@
+# Template file for 'jxrlib'
+pkgname=jxrlib
+version=0.2.2
+revision=1
+build_style=cmake
+short_desc="Open source implementation of jpegxr"
+maintainer="bra1nwave <bra1nwave@protonmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://github.com/glencoesoftware/jxrlib"
+distfiles="${homepage}/archive/v${version}.tar.gz"
+checksum=d1fbc5759a665949e7cb82de03c3258788bd07323f195a9e8ea9322504627cc3
+
+jxrlib-devel_package() {
+	short_desc+=" - development files"
+	depends="${sourcepkg}>=${version}_${revision}"
+	pkg_install() {
+		vmove usr/include
+		vmove "usr/lib/*.so"
+	}
+}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (2 preceding siblings ...)
  2020-04-10 12:06 ` [PR PATCH] [Updated] " bra1nwave
@ 2020-04-10 12:06 ` bra1nwave
  2020-04-12  8:35 ` bra1nwave
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-10 12:06 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 333 bytes --]

New comment by bra1nwave on void-packages repository

https://github.com/void-linux/void-packages/pull/20793#issuecomment-612001483

Comment:
Agreed. We can do it later when it's needed or we can make a `python3-calibre` (but that also has its own pitfalls). 
According to plan, the 4.14.0 update should come out today or tomorrow.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (3 preceding siblings ...)
  2020-04-10 12:06 ` bra1nwave
@ 2020-04-12  8:35 ` bra1nwave
  2020-04-24 19:24 ` [PR PATCH] [Updated] " bra1nwave
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-12  8:35 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 342 bytes --]

New comment by bra1nwave on void-packages repository

https://github.com/void-linux/void-packages/pull/20793#issuecomment-612001483

Comment:
Agreed. We can do it later when it's needed or we can make a `python3-calibre` (but that also has its own pitfalls). 
~~According to plan, the 4.14.0 update should come out today or tomorrow.~~ Nope

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] [WIP] calibre
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (4 preceding siblings ...)
  2020-04-12  8:35 ` bra1nwave
@ 2020-04-24 19:24 ` bra1nwave
  2020-04-24 19:27 ` calibre: update to 4.14.0 bra1nwave
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-24 19:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 307 bytes --]

There is an updated pull request by bra1nwave against master on the void-packages repository

https://github.com/bra1nwave/void-packages calibre
https://github.com/void-linux/void-packages/pull/20793

[WIP] calibre


A patch file from https://github.com/void-linux/void-packages/pull/20793.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-calibre-20793.patch --]
[-- Type: text/x-diff, Size: 10073 bytes --]

From 2e70b905741e0039fed52d1f49578cad616d25fd Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 08:16:22 +0200
Subject: [PATCH 1/2] calibre: update to 4.14.0.

- orphan package
---
 .../calibre/patches/disable-unrar-test.patch  | 27 -------------------
 srcpkgs/calibre/template                      | 16 ++++++-----
 2 files changed, 10 insertions(+), 33 deletions(-)
 delete mode 100644 srcpkgs/calibre/patches/disable-unrar-test.patch

diff --git a/srcpkgs/calibre/patches/disable-unrar-test.patch b/srcpkgs/calibre/patches/disable-unrar-test.patch
deleted file mode 100644
index bcbe25335a3..00000000000
--- a/srcpkgs/calibre/patches/disable-unrar-test.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Source: Debian
-
----
- src/calibre/test_build.py |    5 +++++
- 1 file changed, 5 insertions(+)
-
---- src/calibre/test_build.py
-+++ src/calibre/test_build.py
-@@ -17,6 +17,10 @@ from polyglot.builtins import iteritems,
- 
- is_ci = os.environ.get('CI', '').lower() == 'true'
- 
-+try:
-+    import unrardll
-+except:
-+    unrardll = None
- 
- class BuildTest(unittest.TestCase):
- 
-@@ -265,6 +269,7 @@ class BuildTest(unittest.TestCase):
-         from calibre.gui2.win_file_dialogs import test
-         test()
- 
-+    @unittest.skipUnless(unrardll, 'Module unrardll is missing')
-     def test_unrar(self):
-         from calibre.utils.unrar import test_basic
-         test_basic()
diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index f9ae0a5923b..f9814bc3b22 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -1,7 +1,7 @@
 # Template file for 'calibre'
 pkgname=calibre
-version=4.13.0
-revision=3
+version=4.14.0
+revision=1
 build_style=python2-module
 pycompile_dirs="/usr/lib/calibre/"
 hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
@@ -18,13 +18,14 @@ depends="desktop-file-utils optipng poppler-utils python-BeautifulSoup4
  python-dnspython python-feedparser python-html5-parser python-mechanize
  python-msgpack python-netifaces python-psutil python-regex python-html2text
  qt5-webengine"
+checkdepends="$depends libjpeg-turbo-tools jxrlib"
 short_desc="Ebook management application"
-maintainer="bra1nwave <bra1nwave@protonmail.com>"
+maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-3.0-only"
 homepage="https://calibre-ebook.com"
 changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.yaml"
 distfiles="https://download.calibre-ebook.com/${version}/calibre-${version}.tar.xz"
-checksum=f9587dea4f9ea76c6a5ec11b04ee66d0199d4ab3a4aad8c87966fed8ee76e1f6
+checksum=1c0dd818f602d76724aa8512a23f51101bf385233e2e5cc1cd31cae4a90f0e21
 nocross=yes
 
 do_configure() {
@@ -44,9 +45,12 @@ do_build() {
 	python2 setup.py rapydscript
 }
 
-# requires an X11 environment...
 do_check() {
-	:
+	# qt test crashes without any error messages
+	# disabled for now
+	python2 setup.py test \
+		--exclude-test-name unrar \
+		--exclude-test-name qt
 }
 
 do_install() {

From d77a6993256916309c6c97a98da0c620dc3f2d9c Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 13:43:37 +0200
Subject: [PATCH 2/2] New package: jxrlib-0.2.2

---
 common/shlibs                         |   2 +
 srcpkgs/jxrlib-devel                  |   1 +
 srcpkgs/jxrlib/patches/usecmake.patch | 143 ++++++++++++++++++++++++++
 srcpkgs/jxrlib/template               |  20 ++++
 4 files changed, 166 insertions(+)
 create mode 120000 srcpkgs/jxrlib-devel
 create mode 100644 srcpkgs/jxrlib/patches/usecmake.patch
 create mode 100644 srcpkgs/jxrlib/template

diff --git a/common/shlibs b/common/shlibs
index 5f1a09de8dc..1f9463758ff 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3862,3 +3862,5 @@ libstk-4.6.1.so libstk-4.6.1_1
 libc++utilities.so.5 cpp-utilities-5.2.0_1
 libtagparser.so.9 tagparser-9.1.2_1
 libqtutilities.so.6 qtutilities-6.0.4_1
+libjpegxr.so.0 jxrlib-0.2.2_1
+libjxrglue.so.0 jxrlib-0.2.2_1
diff --git a/srcpkgs/jxrlib-devel b/srcpkgs/jxrlib-devel
new file mode 120000
index 00000000000..1f1ea142a5f
--- /dev/null
+++ b/srcpkgs/jxrlib-devel
@@ -0,0 +1 @@
+jxrlib/
\ No newline at end of file
diff --git a/srcpkgs/jxrlib/patches/usecmake.patch b/srcpkgs/jxrlib/patches/usecmake.patch
new file mode 100644
index 00000000000..ef2e7de79b5
--- /dev/null
+++ b/srcpkgs/jxrlib/patches/usecmake.patch
@@ -0,0 +1,143 @@
+Description: Prefer a cmake based build system
+Author: Mathieu Malaterre <malat@debian.org>
+Forwarded: https://jxrlib.codeplex.com/discussions/440294
+
+Index: jxrlib-1.1/CMakeLists.txt
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ CMakeLists.txt	2014-03-26 17:05:04.429637801 +0100
+@@ -0,0 +1,134 @@
++# Copyright Mathieu Malaterre <malat@debian.org>
++# BSD (Same as jxrlib)
++cmake_minimum_required(VERSION 2.8)
++project(jxrlib C)
++
++# Need shared libs for ABI
++set(BUILD_SHARED_LIBS ON)
++
++# helper macro to preserve original Makefile convention
++macro(JXR_MAKE_OBJ SET_NAME)
++  foreach(src ${SRC_${SET_NAME}})
++    list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src})
++  endforeach()
++endmacro()
++
++include(TestBigEndian)
++test_big_endian(ISBIGENDIAN)
++if(ISBIGENDIAN)
++  set(DEF_ENDIAN _BIG__ENDIAN_)
++endif()
++
++set(DIR_SYS image/sys)
++set(DIR_DEC image/decode)
++set(DIR_ENC image/encode)
++
++set(DIR_GLUE jxrgluelib)
++set(DIR_TEST jxrtestlib)
++set(DIR_EXEC jxrencoderdecoder)
++
++if(NOT JXRLIB_INSTALL_BIN_DIR)
++  set(JXRLIB_INSTALL_BIN_DIR "bin")
++endif()
++
++if(NOT JXRLIB_INSTALL_LIB_DIR)
++  set(JXRLIB_INSTALL_LIB_DIR "lib")
++endif()
++
++if(NOT JXRLIB_INSTALL_INCLUDE_DIR)
++  set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib")
++endif()
++
++include_directories(
++  common/include
++  ${DIR_SYS}
++  ${DIR_GLUE}
++  ${DIR_TEST}
++)
++
++# where is strlcpy ?
++include(CheckSymbolExists)
++check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
++#set(CMAKE_REQUIRED_LIBRARIES bsd)
++#CHECK_SYMBOL_EXISTS(strlcpy "string.h" HAVE_STRLCPY4)
++# on linux, strlcpy is in -lbsd:
++#if(NOT HAVE_STRLCPY)
++#  include(CheckLibraryExists)
++#  find_library(BSD_LIBRARY bsd)
++#  check_library_exists(bsd "strlcpy" ${BSD_LIBRARY} HAVE_STRLCPY_BSD)
++#endif()
++
++# JPEG-XR
++set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c)
++JXR_MAKE_OBJ(SYS)
++set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c)
++JXR_MAKE_OBJ(DEC)
++set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c)
++JXR_MAKE_OBJ(ENC)
++
++add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS})
++set_property(TARGET jpegxr
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jpegxr PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jpegxr PROPERTY VERSION 1.1)
++set_property(TARGET jpegxr PROPERTY SOVERSION 0)
++install(TARGETS jpegxr
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++
++# JXR-GLUE
++set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c)
++JXR_MAKE_OBJ(GLUE)
++set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c)
++JXR_MAKE_OBJ(TEST)
++
++add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST})
++set_property(TARGET jxrglue
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jxrglue PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jxrglue PROPERTY VERSION 1.1)
++set_property(TARGET jxrglue PROPERTY SOVERSION 0)
++install(TARGETS jxrglue
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++#if(HAVE_STRLCPY_BSD)
++#	target_link_libraries(jxrglue ${BSD_LIBRARY})
++#endif()
++target_link_libraries(jxrglue jpegxr m)
++# Enc app files
++set(ENCAPP JxrEncApp)
++add_executable(${ENCAPP} ${DIR_EXEC}/${ENCAPP}.c)
++set_property(TARGET ${ENCAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${ENCAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${ENCAPP} jxrglue) # jpegxr)
++install(TARGETS ${ENCAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++# Dec app files
++set(DECAPP JxrDecApp)
++add_executable(${DECAPP} ${DIR_EXEC}/${DECAPP}.c)
++set_property(TARGET ${DECAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${DECAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${DECAPP} jxrglue) # jpegxr)
++install(TARGETS ${DECAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++
++# install rules
++install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h
++  image/sys/windowsmediaphoto.h
++  DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers
++)
++install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR}
++  FILES_MATCHING PATTERN "*.h"
++)
diff --git a/srcpkgs/jxrlib/template b/srcpkgs/jxrlib/template
new file mode 100644
index 00000000000..48f02dceab6
--- /dev/null
+++ b/srcpkgs/jxrlib/template
@@ -0,0 +1,20 @@
+# Template file for 'jxrlib'
+pkgname=jxrlib
+version=0.2.2
+revision=1
+build_style=cmake
+short_desc="Open source implementation of jpegxr"
+maintainer="bra1nwave <bra1nwave@protonmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://github.com/glencoesoftware/jxrlib"
+distfiles="${homepage}/archive/v${version}.tar.gz"
+checksum=d1fbc5759a665949e7cb82de03c3258788bd07323f195a9e8ea9322504627cc3
+
+jxrlib-devel_package() {
+	short_desc+=" - development files"
+	depends="${sourcepkg}>=${version}_${revision}"
+	pkg_install() {
+		vmove usr/include
+		vmove "usr/lib/*.so"
+	}
+}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: calibre: update to 4.14.0.
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (5 preceding siblings ...)
  2020-04-24 19:24 ` [PR PATCH] [Updated] " bra1nwave
@ 2020-04-24 19:27 ` bra1nwave
  2020-04-29 15:33 ` [PR PATCH] [Updated] " bra1nwave
  2020-05-01 23:46 ` [PR PATCH] [Closed]: " Piraty
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-24 19:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 160 bytes --]

New comment by bra1nwave on void-packages repository

https://github.com/void-linux/void-packages/pull/20793#issuecomment-619199630

Comment:
Updated to 4.14.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Updated] calibre: update to 4.14.0.
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (6 preceding siblings ...)
  2020-04-24 19:27 ` calibre: update to 4.14.0 bra1nwave
@ 2020-04-29 15:33 ` bra1nwave
  2020-05-01 23:46 ` [PR PATCH] [Closed]: " Piraty
  8 siblings, 0 replies; 10+ messages in thread
From: bra1nwave @ 2020-04-29 15:33 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 320 bytes --]

There is an updated pull request by bra1nwave against master on the void-packages repository

https://github.com/bra1nwave/void-packages calibre
https://github.com/void-linux/void-packages/pull/20793

calibre: update to 4.14.0.


A patch file from https://github.com/void-linux/void-packages/pull/20793.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-calibre-20793.patch --]
[-- Type: text/x-diff, Size: 10288 bytes --]

From acefd2c037da0c280c46b696b1de37458cebece3 Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 08:16:22 +0200
Subject: [PATCH 1/2] calibre: update to 4.14.0.

- orphan package
---
 .../calibre/patches/disable-unrar-test.patch  | 27 -------------------
 srcpkgs/calibre/template                      | 19 ++++++++-----
 2 files changed, 12 insertions(+), 34 deletions(-)
 delete mode 100644 srcpkgs/calibre/patches/disable-unrar-test.patch

diff --git a/srcpkgs/calibre/patches/disable-unrar-test.patch b/srcpkgs/calibre/patches/disable-unrar-test.patch
deleted file mode 100644
index bcbe25335a3..00000000000
--- a/srcpkgs/calibre/patches/disable-unrar-test.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Source: Debian
-
----
- src/calibre/test_build.py |    5 +++++
- 1 file changed, 5 insertions(+)
-
---- src/calibre/test_build.py
-+++ src/calibre/test_build.py
-@@ -17,6 +17,10 @@ from polyglot.builtins import iteritems,
- 
- is_ci = os.environ.get('CI', '').lower() == 'true'
- 
-+try:
-+    import unrardll
-+except:
-+    unrardll = None
- 
- class BuildTest(unittest.TestCase):
- 
-@@ -265,6 +269,7 @@ class BuildTest(unittest.TestCase):
-         from calibre.gui2.win_file_dialogs import test
-         test()
- 
-+    @unittest.skipUnless(unrardll, 'Module unrardll is missing')
-     def test_unrar(self):
-         from calibre.utils.unrar import test_basic
-         test_basic()
diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index f9ae0a5923b..cd3f2d2ffd7 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -1,7 +1,7 @@
 # Template file for 'calibre'
 pkgname=calibre
-version=4.13.0
-revision=3
+version=4.14.0
+revision=1
 build_style=python2-module
 pycompile_dirs="/usr/lib/calibre/"
 hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
@@ -18,18 +18,20 @@ depends="desktop-file-utils optipng poppler-utils python-BeautifulSoup4
  python-dnspython python-feedparser python-html5-parser python-mechanize
  python-msgpack python-netifaces python-psutil python-regex python-html2text
  qt5-webengine"
+checkdepends="${depends} libjpeg-turbo-tools jxrlib"
 short_desc="Ebook management application"
-maintainer="bra1nwave <bra1nwave@protonmail.com>"
+maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-3.0-only"
 homepage="https://calibre-ebook.com"
 changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.yaml"
 distfiles="https://download.calibre-ebook.com/${version}/calibre-${version}.tar.xz"
-checksum=f9587dea4f9ea76c6a5ec11b04ee66d0199d4ab3a4aad8c87966fed8ee76e1f6
+checksum=1c0dd818f602d76724aa8512a23f51101bf385233e2e5cc1cd31cae4a90f0e21
 nocross=yes
 
 do_configure() {
 	# Remove unneeded files and libs
-	rm -rf resources/${pkgname}-portable.*
+	rm -rf resources/${pkgname}-portable.* \
+		src/biplist
 
 	# Desktop integration (e.g. enforce arch defaults)
 	vsed -i src/calibre/linux.py \
@@ -44,9 +46,12 @@ do_build() {
 	python2 setup.py rapydscript
 }
 
-# requires an X11 environment...
 do_check() {
-	:
+	# qt test crashes without any error messages
+	# disabled for now
+	python2 setup.py test \
+		--exclude-test-name unrar \
+		--exclude-test-name qt
 }
 
 do_install() {

From 2879e01bb962496fff3e97dd8126bd325a665059 Mon Sep 17 00:00:00 2001
From: bra1nwave <bra1nwave@protonmail.com>
Date: Fri, 10 Apr 2020 13:43:37 +0200
Subject: [PATCH 2/2] New package: jxrlib-0.2.2

---
 common/shlibs                         |   2 +
 srcpkgs/jxrlib-devel                  |   1 +
 srcpkgs/jxrlib/patches/usecmake.patch | 143 ++++++++++++++++++++++++++
 srcpkgs/jxrlib/template               |  20 ++++
 4 files changed, 166 insertions(+)
 create mode 120000 srcpkgs/jxrlib-devel
 create mode 100644 srcpkgs/jxrlib/patches/usecmake.patch
 create mode 100644 srcpkgs/jxrlib/template

diff --git a/common/shlibs b/common/shlibs
index a208407b359..cfa32aad9a3 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3862,3 +3862,5 @@ libtagparser.so.9 tagparser-9.1.2_1
 libqtutilities.so.6 qtutilities-6.0.4_1
 libkdsoap.so.1.9.0 KDSoap-1.9.0_1
 libstoken.so.1 stoken-0.92_1
+libjpegxr.so.0 jxrlib-0.2.2_1
+libjxrglue.so.0 jxrlib-0.2.2_1
diff --git a/srcpkgs/jxrlib-devel b/srcpkgs/jxrlib-devel
new file mode 120000
index 00000000000..1f1ea142a5f
--- /dev/null
+++ b/srcpkgs/jxrlib-devel
@@ -0,0 +1 @@
+jxrlib/
\ No newline at end of file
diff --git a/srcpkgs/jxrlib/patches/usecmake.patch b/srcpkgs/jxrlib/patches/usecmake.patch
new file mode 100644
index 00000000000..ef2e7de79b5
--- /dev/null
+++ b/srcpkgs/jxrlib/patches/usecmake.patch
@@ -0,0 +1,143 @@
+Description: Prefer a cmake based build system
+Author: Mathieu Malaterre <malat@debian.org>
+Forwarded: https://jxrlib.codeplex.com/discussions/440294
+
+Index: jxrlib-1.1/CMakeLists.txt
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ CMakeLists.txt	2014-03-26 17:05:04.429637801 +0100
+@@ -0,0 +1,134 @@
++# Copyright Mathieu Malaterre <malat@debian.org>
++# BSD (Same as jxrlib)
++cmake_minimum_required(VERSION 2.8)
++project(jxrlib C)
++
++# Need shared libs for ABI
++set(BUILD_SHARED_LIBS ON)
++
++# helper macro to preserve original Makefile convention
++macro(JXR_MAKE_OBJ SET_NAME)
++  foreach(src ${SRC_${SET_NAME}})
++    list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src})
++  endforeach()
++endmacro()
++
++include(TestBigEndian)
++test_big_endian(ISBIGENDIAN)
++if(ISBIGENDIAN)
++  set(DEF_ENDIAN _BIG__ENDIAN_)
++endif()
++
++set(DIR_SYS image/sys)
++set(DIR_DEC image/decode)
++set(DIR_ENC image/encode)
++
++set(DIR_GLUE jxrgluelib)
++set(DIR_TEST jxrtestlib)
++set(DIR_EXEC jxrencoderdecoder)
++
++if(NOT JXRLIB_INSTALL_BIN_DIR)
++  set(JXRLIB_INSTALL_BIN_DIR "bin")
++endif()
++
++if(NOT JXRLIB_INSTALL_LIB_DIR)
++  set(JXRLIB_INSTALL_LIB_DIR "lib")
++endif()
++
++if(NOT JXRLIB_INSTALL_INCLUDE_DIR)
++  set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib")
++endif()
++
++include_directories(
++  common/include
++  ${DIR_SYS}
++  ${DIR_GLUE}
++  ${DIR_TEST}
++)
++
++# where is strlcpy ?
++include(CheckSymbolExists)
++check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
++#set(CMAKE_REQUIRED_LIBRARIES bsd)
++#CHECK_SYMBOL_EXISTS(strlcpy "string.h" HAVE_STRLCPY4)
++# on linux, strlcpy is in -lbsd:
++#if(NOT HAVE_STRLCPY)
++#  include(CheckLibraryExists)
++#  find_library(BSD_LIBRARY bsd)
++#  check_library_exists(bsd "strlcpy" ${BSD_LIBRARY} HAVE_STRLCPY_BSD)
++#endif()
++
++# JPEG-XR
++set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c)
++JXR_MAKE_OBJ(SYS)
++set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c)
++JXR_MAKE_OBJ(DEC)
++set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c)
++JXR_MAKE_OBJ(ENC)
++
++add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS})
++set_property(TARGET jpegxr
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jpegxr PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jpegxr PROPERTY VERSION 1.1)
++set_property(TARGET jpegxr PROPERTY SOVERSION 0)
++install(TARGETS jpegxr
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++
++# JXR-GLUE
++set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c)
++JXR_MAKE_OBJ(GLUE)
++set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c)
++JXR_MAKE_OBJ(TEST)
++
++add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST})
++set_property(TARGET jxrglue
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "")
++set_property(TARGET jxrglue PROPERTY COMPILE_FLAGS -w)
++# VERSION/SOVERSION
++set_property(TARGET jxrglue PROPERTY VERSION 1.1)
++set_property(TARGET jxrglue PROPERTY SOVERSION 0)
++install(TARGETS jxrglue
++  EXPORT JXRLibTargets
++  RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} COMPONENT Applications
++  LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} COMPONENT Libraries
++)
++#if(HAVE_STRLCPY_BSD)
++#	target_link_libraries(jxrglue ${BSD_LIBRARY})
++#endif()
++target_link_libraries(jxrglue jpegxr m)
++# Enc app files
++set(ENCAPP JxrEncApp)
++add_executable(${ENCAPP} ${DIR_EXEC}/${ENCAPP}.c)
++set_property(TARGET ${ENCAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${ENCAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${ENCAPP} jxrglue) # jpegxr)
++install(TARGETS ${ENCAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++# Dec app files
++set(DECAPP JxrDecApp)
++add_executable(${DECAPP} ${DIR_EXEC}/${DECAPP}.c)
++set_property(TARGET ${DECAPP}
++  PROPERTY COMPILE_DEFINITIONS __ANSI__ DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
++)
++set_property(TARGET ${DECAPP} PROPERTY COMPILE_FLAGS -w)
++target_link_libraries(${DECAPP} jxrglue) # jpegxr)
++install(TARGETS ${DECAPP} RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR})
++
++# install rules
++install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h
++  image/sys/windowsmediaphoto.h
++  DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers
++)
++install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR}
++  FILES_MATCHING PATTERN "*.h"
++)
diff --git a/srcpkgs/jxrlib/template b/srcpkgs/jxrlib/template
new file mode 100644
index 00000000000..48f02dceab6
--- /dev/null
+++ b/srcpkgs/jxrlib/template
@@ -0,0 +1,20 @@
+# Template file for 'jxrlib'
+pkgname=jxrlib
+version=0.2.2
+revision=1
+build_style=cmake
+short_desc="Open source implementation of jpegxr"
+maintainer="bra1nwave <bra1nwave@protonmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://github.com/glencoesoftware/jxrlib"
+distfiles="${homepage}/archive/v${version}.tar.gz"
+checksum=d1fbc5759a665949e7cb82de03c3258788bd07323f195a9e8ea9322504627cc3
+
+jxrlib-devel_package() {
+	short_desc+=" - development files"
+	depends="${sourcepkg}>=${version}_${revision}"
+	pkg_install() {
+		vmove usr/include
+		vmove "usr/lib/*.so"
+	}
+}

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PR PATCH] [Closed]: calibre: update to 4.14.0.
  2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
                   ` (7 preceding siblings ...)
  2020-04-29 15:33 ` [PR PATCH] [Updated] " bra1nwave
@ 2020-05-01 23:46 ` Piraty
  8 siblings, 0 replies; 10+ messages in thread
From: Piraty @ 2020-05-01 23:46 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 160 bytes --]

There's a closed pull request on the void-packages repository

calibre: update to 4.14.0.
https://github.com/void-linux/void-packages/pull/20793

Description:


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-05-01 23:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-09 14:59 [PR PATCH] [WIP] calibre bra1nwave
2020-04-09 15:50 ` [PR PATCH] [Updated] " bra1nwave
2020-04-09 23:10 ` q66
2020-04-10 12:06 ` [PR PATCH] [Updated] " bra1nwave
2020-04-10 12:06 ` bra1nwave
2020-04-12  8:35 ` bra1nwave
2020-04-24 19:24 ` [PR PATCH] [Updated] " bra1nwave
2020-04-24 19:27 ` calibre: update to 4.14.0 bra1nwave
2020-04-29 15:33 ` [PR PATCH] [Updated] " bra1nwave
2020-05-01 23:46 ` [PR PATCH] [Closed]: " Piraty

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).