From patchwork Mon Apr 25 21:44:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Compagnucci X-Patchwork-Id: 614712 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id 3qv0Bd5Yvwz9s4x for ; Tue, 26 Apr 2016 07:45:13 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=u+EpXxDP; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id EAE6A8B0F9; Mon, 25 Apr 2016 21:45:12 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LcaH5so9F025; Mon, 25 Apr 2016 21:45:06 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 7B7208AC2F; Mon, 25 Apr 2016 21:45:04 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 0426B1C11AF for ; Mon, 25 Apr 2016 21:45:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id E5DCF8AF84 for ; Mon, 25 Apr 2016 21:45:02 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Yve4cfV4r8f8 for ; Mon, 25 Apr 2016 21:44:53 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) by whitealder.osuosl.org (Postfix) with ESMTPS id EB09B8A0BD for ; Mon, 25 Apr 2016 21:44:51 +0000 (UTC) Received: by mail-wm0-f51.google.com with SMTP id u206so149314970wme.1 for ; Mon, 25 Apr 2016 14:44:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=s/jrjFn/c3IFLQl8S53zOb+hJ7go7KK1vkYmaDrzFYQ=; b=u+EpXxDPootppR67ZLztbUAfhYDKpTV2Ro5i9xLyqSqWtZrPJ7F8fopNBMAYTp6e4O VVtXR8I/7cpHCDr5BRQnUwnhrih1JWqELWKXg7IU0fn3BiTtkftewjbnkMtI2MSrWbFv C18r1lfeCA+Brz78J+kk4HSW/pAFC3RLUu156IgpGyRVSkjPW2/78U7p4XLUmnMmWdXf tFGSeksjyiG5y8FKPLFWixcDq5ugTPrtKCVjNiaotnGznn79SozYB2/SZZ2ektsUY2dI z9wHSBdp9SQpZU6mAcd7XMUwOvnKYtFfeWCTUE0dn9iS6DtPW7cq07+eFHu8zUz837Su YxWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=s/jrjFn/c3IFLQl8S53zOb+hJ7go7KK1vkYmaDrzFYQ=; b=mbkONsdeKzcrh2Np+p+T31h8sV/mg3Ss0rg5/h+DhrYHe4kFNxxvX1UezOcnQNkgBe ebTsLQVdXCkBKArhRvW0oPpiyqCLrYfUxH08nYkTj2Ef8rhITdcMq3v/6rvu7sjVXm41 4A7Mo/hP/nDGYMeuy4EZhjFQ3TKoM0bz/UcIjHZ2T5H94OGhZ15V+B4g/91C8h1FwBvv 76ielBgOx3aUEzcLbLmb7L13vetl1muMp9IABHPBkXmfhhN+bm86jtEw3RHfvQ+DISNd vwgCfsx5GdN7jcHI5KPSeK6Tjo5QSof+XKtpjRvkzRFpOcbTsR0cQXc04WYrqMScUxp1 9Txg== X-Gm-Message-State: AOPr4FXtH3gHBc9oH/N2P3OgoZj7OooHNPrzQjewiMNY1APNejkm5rso58co+F1OEnVOHQ== X-Received: by 10.194.90.76 with SMTP id bu12mr36473897wjb.79.1461620690620; Mon, 25 Apr 2016 14:44:50 -0700 (PDT) Received: from localhost.localdomain ([89.202.204.147]) by smtp.gmail.com with ESMTPSA id da5sm25575261wjb.25.2016.04.25.14.44.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 25 Apr 2016 14:44:49 -0700 (PDT) From: Angelo Compagnucci To: buildroot@buildroot.org Date: Mon, 25 Apr 2016 23:44:33 +0200 Message-Id: <1461620673-31313-4-git-send-email-angelo.compagnucci@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1461620673-31313-1-git-send-email-angelo.compagnucci@gmail.com> References: <1461620673-31313-1-git-send-email-angelo.compagnucci@gmail.com> Subject: [Buildroot] [PATCH v2 3/3] package/python-pillow: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch adds python pillow, the friendly python fork. The accompaining patch to disable platform guessing was submitted upstream for inclusion. Signed-off-by: Angelo Compagnucci --- package/Config.in | 1 + ...y-add-option-to-disable-platform-guessing.patch | 169 +++++++++++++++++++++ package/python-pillow/Config.in | 12 ++ package/python-pillow/python-pillow.hash | 2 + package/python-pillow/python-pillow.mk | 39 +++++ 5 files changed, 223 insertions(+) create mode 100644 package/python-pillow/0001-setup.py-add-option-to-disable-platform-guessing.patch create mode 100644 package/python-pillow/Config.in create mode 100644 package/python-pillow/python-pillow.hash create mode 100644 package/python-pillow/python-pillow.mk diff --git a/package/Config.in b/package/Config.in index 5103621..8dc13f4 100644 --- a/package/Config.in +++ b/package/Config.in @@ -690,6 +690,7 @@ menu "External python modules" source "package/python-pam/Config.in" source "package/python-paramiko/Config.in" source "package/python-pexpect/Config.in" + source "package/python-pillow/Config.in" source "package/python-posix-ipc/Config.in" source "package/python-protobuf/Config.in" source "package/python-psutil/Config.in" diff --git a/package/python-pillow/0001-setup.py-add-option-to-disable-platform-guessing.patch b/package/python-pillow/0001-setup.py-add-option-to-disable-platform-guessing.patch new file mode 100644 index 0000000..e8e6d7c --- /dev/null +++ b/package/python-pillow/0001-setup.py-add-option-to-disable-platform-guessing.patch @@ -0,0 +1,169 @@ +From fa2a0e73502426c5add9e4a0e13971fe195a82a0 Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Mon, 25 Apr 2016 16:50:20 +0200 +Subject: [PATCH] setup.py: add option to disable platform guessing + +When cross-compiling (ex on Buildroot) platform guessing is not needed +cause the environment is correctly built externally. +This patch adds an option to disable platform guessing on Linux. +--- + setup.py | 123 +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 65 insertions(+), 58 deletions(-) + +diff --git a/setup.py b/setup.py +index 0f74a40..d25390f 100644 +--- a/setup.py ++++ b/setup.py +@@ -121,9 +121,12 @@ class pil_build_ext(build_ext): + ('disable-%s' % x, None, 'Disable support for %s' % x) for x in feature + ] + [ + ('enable-%s' % x, None, 'Enable support for %s' % x) for x in feature ++ ] + [ ++ ('disable-platform-guessing', None, 'Disable platform guessing on Linux'), + ] + + def initialize_options(self): ++ self.disable_platform_guessing = None + build_ext.initialize_options(self) + for x in self.feature: + setattr(self, 'disable_%s' % x, None) +@@ -236,62 +239,65 @@ class pil_build_ext(build_ext): + _add_directory(include_dirs, "/usr/X11/include") + + elif sys.platform.startswith("linux"): +- arch_tp = (plat.processor(), plat.architecture()[0]) +- if arch_tp == ("x86_64", "32bit"): +- # 32-bit build on 64-bit machine. +- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu") ++ if self.disable_platform_guessing: ++ pass + else: +- for platform_ in arch_tp: +- +- if not platform_: +- continue +- +- if platform_ in ["x86_64", "64bit"]: +- _add_directory(library_dirs, "/lib64") +- _add_directory(library_dirs, "/usr/lib64") +- _add_directory(library_dirs, +- "/usr/lib/x86_64-linux-gnu") +- break +- elif platform_ in ["i386", "i686", "32bit"]: +- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu") +- break +- elif platform_ in ["aarch64"]: +- _add_directory(library_dirs, "/usr/lib64") +- _add_directory(library_dirs, +- "/usr/lib/aarch64-linux-gnu") +- break +- elif platform_ in ["arm", "armv7l"]: +- _add_directory(library_dirs, +- "/usr/lib/arm-linux-gnueabi") +- break +- elif platform_ in ["ppc64"]: +- _add_directory(library_dirs, "/usr/lib64") +- _add_directory(library_dirs, +- "/usr/lib/ppc64-linux-gnu") +- _add_directory(library_dirs, +- "/usr/lib/powerpc64-linux-gnu") +- break +- elif platform_ in ["ppc"]: +- _add_directory(library_dirs, "/usr/lib/ppc-linux-gnu") +- _add_directory(library_dirs, +- "/usr/lib/powerpc-linux-gnu") +- break +- elif platform_ in ["s390x"]: +- _add_directory(library_dirs, "/usr/lib64") +- _add_directory(library_dirs, +- "/usr/lib/s390x-linux-gnu") +- break +- elif platform_ in ["s390"]: +- _add_directory(library_dirs, "/usr/lib/s390-linux-gnu") +- break ++ arch_tp = (plat.processor(), plat.architecture()[0]) ++ if arch_tp == ("x86_64", "32bit"): ++ # 32-bit build on 64-bit machine. ++ _add_directory(library_dirs, "/usr/lib/i386-linux-gnu") + else: +- raise ValueError( +- "Unable to identify Linux platform: `%s`" % platform_) +- +- # XXX Kludge. Above /\ we brute force support multiarch. Here we +- # try Barry's more general approach. Afterward, something should +- # work ;-) +- self.add_multiarch_paths() ++ for platform_ in arch_tp: ++ ++ if not platform_: ++ continue ++ ++ if platform_ in ["x86_64", "64bit"]: ++ _add_directory(library_dirs, "/lib64") ++ _add_directory(library_dirs, "/usr/lib64") ++ _add_directory(library_dirs, ++ "/usr/lib/x86_64-linux-gnu") ++ break ++ elif platform_ in ["i386", "i686", "32bit"]: ++ _add_directory(library_dirs, "/usr/lib/i386-linux-gnu") ++ break ++ elif platform_ in ["aarch64"]: ++ _add_directory(library_dirs, "/usr/lib64") ++ _add_directory(library_dirs, ++ "/usr/lib/aarch64-linux-gnu") ++ break ++ elif platform_ in ["arm", "armv7l"]: ++ _add_directory(library_dirs, ++ "/usr/lib/arm-linux-gnueabi") ++ break ++ elif platform_ in ["ppc64"]: ++ _add_directory(library_dirs, "/usr/lib64") ++ _add_directory(library_dirs, ++ "/usr/lib/ppc64-linux-gnu") ++ _add_directory(library_dirs, ++ "/usr/lib/powerpc64-linux-gnu") ++ break ++ elif platform_ in ["ppc"]: ++ _add_directory(library_dirs, "/usr/lib/ppc-linux-gnu") ++ _add_directory(library_dirs, ++ "/usr/lib/powerpc-linux-gnu") ++ break ++ elif platform_ in ["s390x"]: ++ _add_directory(library_dirs, "/usr/lib64") ++ _add_directory(library_dirs, ++ "/usr/lib/s390x-linux-gnu") ++ break ++ elif platform_ in ["s390"]: ++ _add_directory(library_dirs, "/usr/lib/s390-linux-gnu") ++ break ++ else: ++ raise ValueError( ++ "Unable to identify Linux platform: `%s`" % platform_) ++ ++ # XXX Kludge. Above /\ we brute force support multiarch. Here we ++ # try Barry's more general approach. Afterward, something should ++ # work ;-) ++ self.add_multiarch_paths() + + elif sys.platform.startswith("gnu"): + self.add_multiarch_paths() +@@ -352,11 +358,12 @@ class pil_build_ext(build_ext): + _add_directory(include_dirs, tcl_dir) + + # standard locations +- _add_directory(library_dirs, "/usr/local/lib") +- _add_directory(include_dirs, "/usr/local/include") ++ if not self.disable_platform_guessing: ++ _add_directory(library_dirs, "/usr/local/lib") ++ _add_directory(include_dirs, "/usr/local/include") + +- _add_directory(library_dirs, "/usr/lib") +- _add_directory(include_dirs, "/usr/include") ++ _add_directory(library_dirs, "/usr/lib") ++ _add_directory(include_dirs, "/usr/include") + + # on Windows, look for the OpenJPEG libraries in the location that + # the official installer puts them +-- +1.9.1 + diff --git a/package/python-pillow/Config.in b/package/python-pillow/Config.in new file mode 100644 index 0000000..d5c3809 --- /dev/null +++ b/package/python-pillow/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PILLOW + bool "python-pillow" + help + Pillow is the "friendly" PIL fork by Alex Clark and Contributors. PIL is + the Python Imaging Library by Fredrik Lundh and Contributors. + + Pillow relies on external libraries to provide support various + image formats. Select the corresponding package(s) to get this + support. Pillow can use jpeg, zlib (for PNG), tiff, freetype, webp, + and openjpeg (JPEG-2000). + + https://pypi.python.org/pypi/Pillow/ diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash new file mode 100644 index 0000000..0fc349c --- /dev/null +++ b/package/python-pillow/python-pillow.hash @@ -0,0 +1,2 @@ +https://pypi.python.org/pypi?:action=show_md5&digest=7cfd093c11205d9e2ebe3c51dfcad510 +md5 7cfd093c11205d9e2ebe3c51dfcad510 Pillow-3.2.0.tar.gz diff --git a/package/python-pillow/python-pillow.mk b/package/python-pillow/python-pillow.mk new file mode 100644 index 0000000..f186ab6 --- /dev/null +++ b/package/python-pillow/python-pillow.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# python-pillow +# +################################################################################ + +PYTHON_PILLOW_VERSION = 3.2.0 +PYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz +PYTHON_PILLOW_SITE = https://pypi.python.org/packages/source/P/Pillow +PYTHON_PILLOW_SETUP_TYPE = setuptools +PYTHON_PILLOW_DEPENDENCIES = $(if $(BR2_PACKAGE_JPEG),jpeg) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + $(if $(BR2_PACKAGE_TIFF),tiff) \ + $(if $(BR2_PACKAGE_FREETYPE),freetype) \ + $(if $(BR2_PACKAGE_WEBP),webp) \ + $(if $(BR2_PACKAGE_OPENJPEG),openjpeg) + +PYTHON_PILLOW_BUILD_OPTS += --disable-platform-guessing +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_JPEG),--enable-jpeg,--disable-jpeg) +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_ZLIB),--enable-zlib,--disable-zlib) +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_TIFF),--enable-tiff,--disable-tiff) +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_FREETYPE),--enable-freetype,--disable-freetype) +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_WEBP),--enable-webp,--disable-webp) +PYTHON_PILLOW_BUILD_OPTS += $(if $(BR2_PACKAGE_OPENJPEG),--enable-jpeg2000,--disable-jpeg2000) + +PYTHON_PILLOW_INSTALL_TARGET_OPTS += $(PYTHON_PILLOW_BUILD_OPTS) + +PYTHON_PILLOW_BUILD_CMDS = (cd $(PYTHON_PILLOW_BUILDDIR); \ + $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ + $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ + $(PYTHON_PILLOW_BASE_BUILD_OPTS) $(PYTHON_PILLOW_BUILD_OPTS)) + +PYTHON_PILLOW_INSTALL_TARGET_CMDS = (cd $(PYTHON_PILLOW_BUILDDIR); \ + $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ + $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ + $(PYTHON_PILLOW_INSTALL_TARGET_OPTS) install \ + $(PYTHON_PILLOW_BASE_INSTALL_TARGET_OPTS)) + +$(eval $(python-package))