py-pillow: add v11.0.0 (#47010)
This commit is contained in:
parent
fb53d31d09
commit
49489a4815
@ -9,17 +9,18 @@
|
||||
class PyPillowBase(PythonPackage):
|
||||
"""Base class for Pillow and its fork Pillow-SIMD."""
|
||||
|
||||
maintainers("adamjstewart")
|
||||
license("HPND")
|
||||
maintainers("adamjstewart")
|
||||
provides("pil")
|
||||
|
||||
# These defaults correspond to Pillow defaults
|
||||
# https://pillow.readthedocs.io/en/stable/installation/building-from-source.html
|
||||
VARIANTS_IN_SETUP_CFG = (
|
||||
VARIANTS = (
|
||||
"zlib",
|
||||
"jpeg",
|
||||
"tiff",
|
||||
"freetype",
|
||||
"raqm",
|
||||
"lcms",
|
||||
"webp",
|
||||
"webpmux",
|
||||
@ -31,18 +32,19 @@ class PyPillowBase(PythonPackage):
|
||||
variant("jpeg", default=True, description="JPEG functionality")
|
||||
variant("tiff", default=False, description="Compressed TIFF functionality")
|
||||
variant("freetype", default=False, description="Type related services")
|
||||
variant("raqm", when="@8.2:+freetype", default=False, description="RAQM support")
|
||||
variant("lcms", default=False, description="Color management")
|
||||
variant("webp", default=False, description="WebP format")
|
||||
variant("webpmux", when="+webp", default=False, description="WebP metadata")
|
||||
variant("webpmux", when="@:10+webp", default=False, description="WebP metadata")
|
||||
variant("jpeg2000", default=False, description="JPEG 2000 functionality")
|
||||
variant("imagequant", when="@3.3:", default=False, description="Improved color quantization")
|
||||
variant("xcb", when="@7.1:", default=False, description="X11 screengrab support")
|
||||
variant("raqm", when="@8.2:", default=False, description="RAQM support")
|
||||
|
||||
# Required dependencies
|
||||
# https://pillow.readthedocs.io/en/stable/installation/python-support.html
|
||||
with default_args(type=("build", "link", "run")):
|
||||
depends_on("python@3.8:3.13", when="@10.4:")
|
||||
depends_on("python@3.9:3.13", when="@11:")
|
||||
depends_on("python@3.8:3.13", when="@10.4")
|
||||
depends_on("python@3.8:3.12", when="@10.1:10.3")
|
||||
depends_on("python@3.8:3.11", when="@10.0")
|
||||
depends_on("python@3.7:3.11", when="@9.3:9.5")
|
||||
@ -54,6 +56,7 @@ class PyPillowBase(PythonPackage):
|
||||
|
||||
# pyproject.toml
|
||||
with default_args(type="build"):
|
||||
depends_on("py-pip@22.1:", when="@10:")
|
||||
depends_on("py-setuptools@67.8:", when="@10:")
|
||||
depends_on("py-setuptools")
|
||||
|
||||
@ -63,21 +66,28 @@ class PyPillowBase(PythonPackage):
|
||||
depends_on("jpeg", when="+jpeg")
|
||||
depends_on("libtiff", when="+tiff")
|
||||
depends_on("freetype", when="+freetype")
|
||||
depends_on("libraqm", when="+raqm")
|
||||
depends_on("lcms@2:", when="+lcms")
|
||||
depends_on("libwebp", when="+webp")
|
||||
depends_on("libwebp+libwebpmux+libwebpdemux", when="+webpmux")
|
||||
depends_on("openjpeg", when="+jpeg2000")
|
||||
depends_on("libimagequant", when="+imagequant")
|
||||
depends_on("libxcb", when="+xcb")
|
||||
depends_on("libraqm", when="+raqm")
|
||||
|
||||
# Conflicting options
|
||||
conflicts("+raqm", when="~freetype")
|
||||
@when("@10:")
|
||||
def config_settings(self, spec, prefix):
|
||||
settings = {"parallel": make_jobs}
|
||||
|
||||
for variant in self.VARIANTS:
|
||||
if spec.satisfies(f"+{variant}"):
|
||||
settings[variant] = "enable"
|
||||
elif spec.satisfies(f"~{variant}"):
|
||||
settings[variant] = "disable"
|
||||
|
||||
return settings
|
||||
|
||||
def patch(self):
|
||||
"""Patch setup.py to provide library and include directories
|
||||
for dependencies."""
|
||||
|
||||
"""Patch setup.py to provide library and include directories for dependencies."""
|
||||
library_dirs = []
|
||||
include_dirs = []
|
||||
for dep in self.spec.dependencies(deptype="link"):
|
||||
@ -86,21 +96,40 @@ def patch(self):
|
||||
include_dirs.extend(query.headers.directories)
|
||||
|
||||
setup = FileFilter("setup.py")
|
||||
setup.filter("library_dirs = []", "library_dirs = {0}".format(library_dirs), string=True)
|
||||
setup.filter("include_dirs = []", "include_dirs = {0}".format(include_dirs), string=True)
|
||||
if self.version >= Version("11"):
|
||||
setup.filter(
|
||||
"library_dirs: list[str] = []",
|
||||
"library_dirs = {0}".format(library_dirs),
|
||||
string=True,
|
||||
)
|
||||
setup.filter(
|
||||
"include_dirs: list[str] = []",
|
||||
"include_dirs = {0}".format(include_dirs),
|
||||
string=True,
|
||||
)
|
||||
else:
|
||||
setup.filter(
|
||||
"library_dirs = []", "library_dirs = {0}".format(library_dirs), string=True
|
||||
)
|
||||
setup.filter(
|
||||
"include_dirs = []", "include_dirs = {0}".format(include_dirs), string=True
|
||||
)
|
||||
|
||||
def variant_to_cfg(variant):
|
||||
able = "enable" if "+" + variant in self.spec else "disable"
|
||||
return "{0}_{1}=1\n".format(able, variant)
|
||||
if self.spec.satisfies("@:9"):
|
||||
|
||||
with open("setup.cfg", "a") as setup:
|
||||
setup.write("[build_ext]\n")
|
||||
for variant in self.VARIANTS_IN_SETUP_CFG:
|
||||
setup.write(variant_to_cfg(variant))
|
||||
def variant_to_cfg(variant):
|
||||
able = "enable" if "+" + variant in self.spec else "disable"
|
||||
return "{0}_{1}=1\n".format(able, variant)
|
||||
|
||||
setup.write("rpath={0}\n".format(":".join(self.rpath)))
|
||||
setup.write("[install]\n")
|
||||
with open("setup.cfg", "a") as setup:
|
||||
setup.write("[build_ext]\n")
|
||||
for variant in self.VARIANTS:
|
||||
setup.write(variant_to_cfg(variant))
|
||||
|
||||
setup.write("rpath={0}\n".format(":".join(self.rpath)))
|
||||
setup.write("[install]\n")
|
||||
|
||||
@when("@:9")
|
||||
def setup_build_environment(self, env):
|
||||
env.set("MAX_CONCURRENCY", make_jobs)
|
||||
|
||||
@ -114,6 +143,7 @@ class PyPillow(PyPillowBase):
|
||||
homepage = "https://python-pillow.org/"
|
||||
pypi = "pillow/pillow-10.2.0.tar.gz"
|
||||
|
||||
version("11.0.0", sha256="72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739")
|
||||
version("10.4.0", sha256="166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06")
|
||||
version("10.3.0", sha256="9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d")
|
||||
version("10.2.0", sha256="e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e")
|
||||
@ -135,9 +165,10 @@ class PyPillow(PyPillowBase):
|
||||
version("6.2.2", sha256="db9ff0c251ed066d367f53b64827cc9e18ccea001b986d08c265e53625dab950")
|
||||
version("6.2.1", sha256="bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1")
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
depends_on("c", type="build")
|
||||
|
||||
for ver in [
|
||||
"11.0.0",
|
||||
"10.4.0",
|
||||
"10.3.0",
|
||||
"10.2.0",
|
||||
|
Loading…
Reference in New Issue
Block a user