Github messages for voidlinux
 help / color / mirror / Atom feed
From: voidlinux-github@inbox.vuxu.org
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] Fix #13143 by patching MComix for PIL-6.0.0 compat.
Date: Wed, 17 Jul 2019 00:22:24 +0200	[thread overview]
Message-ID: <20190716222224.yoio6po11vUpjlo6dij7ti69MD79nlOQJc-xrQjFqSo@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-13148@inbox.vuxu.org>

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

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

https://github.com/seisatsu/void-packages mcomix-pil-patch
https://github.com/void-linux/void-packages/pull/13148

Fix #13143 by patching MComix for PIL-6.0.0 compat.
Fixes the incompatibility issue between MComix and Python-Pillow-6.0.0 described in issue #13143 using patches found at https://github.com/mat813/freebsd-ports/tree/d9a5e385afb3dab755ebe5138b09cf7351f992d9/graphics/py-mcomix/files


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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mcomix-pil-patch-13148.patch --]
[-- Type: application/text/x-diff, Size: 5969 bytes --]

From 48d2317882f54955629b2afc48a2bb315a6a6c91 Mon Sep 17 00:00:00 2001
From: "Michael D. Reiley" <seisatsu@seisat.su>
Date: Mon, 15 Jul 2019 21:37:05 -0700
Subject: [PATCH] mcomix: fix python-pillow-6.0.0 compatibility

---
 srcpkgs/mcomix/patches/image_tools.py.patch | 116 ++++++++++++++++++++
 srcpkgs/mcomix/patches/run.py.patch         |  16 +++
 srcpkgs/mcomix/template                     |   2 +-
 3 files changed, 133 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/mcomix/patches/image_tools.py.patch
 create mode 100644 srcpkgs/mcomix/patches/run.py.patch

diff --git a/srcpkgs/mcomix/patches/image_tools.py.patch b/srcpkgs/mcomix/patches/image_tools.py.patch
new file mode 100644
index 00000000000..9928ed8228d
--- /dev/null
+++ b/srcpkgs/mcomix/patches/image_tools.py.patch
@@ -0,0 +1,116 @@
+Grabbed from https://github.com/mat813/freebsd-ports/tree/d9a5e385afb3dab755ebe5138b09cf7351f992d9/graphics/py-mcomix/files
+--- mcomix/image_tools.py.orig	2016-02-12 18:51:58 UTC
++++ mcomix/image_tools.py
+@@ -9,7 +9,6 @@ import gtk
+ from PIL import Image
+ from PIL import ImageEnhance
+ from PIL import ImageOps
+-from PIL.JpegImagePlugin import _getexif
+ try:
+     from PIL import PILLOW_VERSION
+     PIL_VERSION = ('Pillow', PILLOW_VERSION)
+@@ -51,7 +50,38 @@ assert MISSING_IMAGE_ICON
+ GTK_GDK_COLOR_BLACK = gtk.gdk.color_parse('black')
+ GTK_GDK_COLOR_WHITE = gtk.gdk.color_parse('white')
+ 
++def _getexif(im):
++    exif={}
++    try:
++        exif.update(im.getexif())
++    except AttributeError:
++        pass
++    if exif:
++        return exif
+ 
++    # Exif of PNG is still buggy in Pillow 6.0.0
++    try:
++        l1,l2,size,lines=im.info.get('Raw profile type exif').splitlines()
++        if l2!='exif':
++            # Not valid Exif data.
++            return {}
++        size=int(size)
++        data=binascii.unhexlify(''.join(lines))
++        if len(data)!=size:
++            # Size not match.
++            return {}
++        im.info['exif']=data
++    except:
++        # Not valid Exif data.
++        return {}
++
++    # load Exif again
++    try:
++        exif.update(im.getexif())
++    except AttributeError:
++        pass
++    return exif
++
+ def rotate_pixbuf(src, rotation):
+     rotation %= 360
+     if 0 == rotation:
+@@ -300,14 +330,7 @@ def pil_to_pixbuf(im, keep_orientation=False):
+     )
+     if keep_orientation:
+         # Keep orientation metadata.
+-        orientation = None
+-        exif = im.info.get('exif')
+-        if exif is not None:
+-            exif = _getexif(im)
+-            orientation = exif.get(274, None)
+-        if orientation is None:
+-            # Maybe it's a PNG? Try alternative method.
+-            orientation = _get_png_implied_rotation(im)
++        orientation = _getexit(im).get(274, None)
+         if orientation is not None:
+             setattr(pixbuf, 'orientation', str(orientation))
+     return pixbuf
+@@ -385,39 +408,6 @@ def enhance(pixbuf, brightness=1.0, contrast=1.0, satu
+         im = ImageEnhance.Sharpness(im).enhance(sharpness)
+     return pil_to_pixbuf(im)
+ 
+-def _get_png_implied_rotation(pixbuf_or_image):
+-    """Same as <get_implied_rotation> for PNG files.
+-
+-    Lookup for Exif data in the tEXt chunk.
+-    """
+-    if isinstance(pixbuf_or_image, gtk.gdk.Pixbuf):
+-        exif = pixbuf_or_image.get_option('tEXt::Raw profile type exif')
+-    elif isinstance(pixbuf_or_image, Image.Image):
+-        exif = pixbuf_or_image.info.get('Raw profile type exif')
+-    else:
+-        raise ValueError()
+-    if exif is None:
+-        return None
+-    exif = exif.split('\n')
+-    if len(exif) < 4 or 'exif' != exif[1]:
+-        # Not valid Exif data.
+-        return None
+-    size = int(exif[2])
+-    try:
+-        data = binascii.unhexlify(''.join(exif[3:]))
+-    except TypeError:
+-        # Not valid hexadecimal content.
+-        return None
+-    if size != len(data):
+-        # Sizes should match.
+-        return None
+-    im = namedtuple('FakeImage', 'info')({ 'exif': data })
+-    exif = _getexif(im)
+-    orientation = exif.get(274, None)
+-    if orientation is not None:
+-        orientation = str(orientation)
+-    return orientation
+-
+ def get_implied_rotation(pixbuf):
+     """Return the implied rotation in degrees: 0, 90, 180, or 270.
+ 
+@@ -429,9 +419,6 @@ def get_implied_rotation(pixbuf):
+     orientation = getattr(pixbuf, 'orientation', None)
+     if orientation is None:
+         orientation = pixbuf.get_option('orientation')
+-    if orientation is None:
+-        # Maybe it's a PNG? Try alternative method.
+-        orientation = _get_png_implied_rotation(pixbuf)
+     if orientation == '3':
+         return 180
+     elif orientation == '6':
diff --git a/srcpkgs/mcomix/patches/run.py.patch b/srcpkgs/mcomix/patches/run.py.patch
new file mode 100644
index 00000000000..09f952775ca
--- /dev/null
+++ b/srcpkgs/mcomix/patches/run.py.patch
@@ -0,0 +1,16 @@
+Grabbed from https://github.com/mat813/freebsd-ports/tree/d9a5e385afb3dab755ebe5138b09cf7351f992d9/graphics/py-mcomix/files
+--- mcomix/run.py.orig	2016-02-12 18:52:12 UTC
++++ mcomix/run.py
+@@ -203,7 +203,11 @@ def run():
+ 
+     try:
+         import PIL.Image
+-        assert PIL.Image.VERSION >= '1.1.5'
++        try:
++            assert PIL.Image.VERSION >= '1.1.5'
++        except AttributeError:
++            # Field VERSION deprecated in Pillow 5.2.0 and dropped in 6.0.0
++            assert PIL.__version__ >= '5.2.0'
+ 
+     except AssertionError:
+         log.error( _("You don't have the required version of the Python Imaging"), end=' ')
diff --git a/srcpkgs/mcomix/template b/srcpkgs/mcomix/template
index fb03976f8c9..3179b451be1 100644
--- a/srcpkgs/mcomix/template
+++ b/srcpkgs/mcomix/template
@@ -1,7 +1,7 @@
 # Template file for 'mcomix'
 pkgname=mcomix
 version=1.2.1
-revision=1
+revision=2
 archs=noarch
 build_style=python2-module
 pycompile_module="${pkgname}"

  parent reply	other threads:[~2019-07-16 22:22 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-16  4:41 [PR PATCH] " voidlinux-github
2019-07-16  4:43 ` voidlinux-github
2019-07-16  4:48 ` voidlinux-github
2019-07-16  5:08 ` voidlinux-github
2019-07-16  5:08 ` voidlinux-github
2019-07-16  9:35 ` voidlinux-github
2019-07-16 22:22 ` voidlinux-github [this message]
2019-07-16 22:22 ` [PR PATCH] [Updated] " voidlinux-github
2019-07-16 22:23 ` mcomix: fix python-pillow-6.0.0 compatibility voidlinux-github
2019-07-18  5:22 ` [PR PATCH] [Merged]: " voidlinux-github

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190716222224.yoio6po11vUpjlo6dij7ti69MD79nlOQJc-xrQjFqSo@z \
    --to=voidlinux-github@inbox.vuxu.org \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).