Merge pull request #9226 from jernejsk/py-build

[LE13] Revamp python build process to be PEP 517 compatible
This commit is contained in:
Matthias Reichl 2024-08-24 12:09:32 +02:00 committed by GitHub
commit 1c4e76d97e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 219 additions and 312 deletions

View File

@ -7,7 +7,7 @@ PKG_SHA256="b08d8569d6dc8fa91a42ba1e37f620fdcb19d6bf2330e4b7d7301431ddbe124c"
PKG_LICENSE="Unlicense" PKG_LICENSE="Unlicense"
PKG_SITE="http://abyz.me.uk/lg/" PKG_SITE="http://abyz.me.uk/lg/"
PKG_URL="https://github.com/joan2937/lg/archive/v${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/joan2937/lg/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain Python3 swig:host" PKG_DEPENDS_TARGET="toolchain Python3 swig:host setuptools:host"
PKG_LONGDESC="A library for Linux Single Board Computers (SBC) which allows control of the General Purpose Input Outputs (GPIO)" PKG_LONGDESC="A library for Linux Single Board Computers (SBC) which allows control of the General Purpose Input Outputs (GPIO)"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="manual"
@ -21,6 +21,6 @@ make_target() {
( (
cd PY_LGPIO cd PY_LGPIO
swig -python lgpio.i swig -python lgpio.i
python_target_env python setup.py build python_target_env python3 -m build -n -w -x
) )
} }

View File

@ -7,7 +7,7 @@ PKG_SHA256="1f899e43603184fac32f34d72498fc737952dbc9c97a8dd9467fadfdf4600cf9"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="https://i2c.wiki.kernel.org/index.php/I2C_Tools" PKG_SITE="https://i2c.wiki.kernel.org/index.php/I2C_Tools"
PKG_URL="https://www.kernel.org/pub/software/utils/i2c-tools/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_URL="https://www.kernel.org/pub/software/utils/i2c-tools/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain Python3" PKG_DEPENDS_TARGET="toolchain Python3 setuptools:host"
PKG_LONGDESC="A heterogeneous set of I2C tools for Linux." PKG_LONGDESC="A heterogeneous set of I2C tools for Linux."
PKG_BUILD_FLAGS="-sysroot" PKG_BUILD_FLAGS="-sysroot"
@ -20,7 +20,7 @@ make_target() {
( (
cd py-smbus cd py-smbus
python_target_env python3 setup.py build python_target_env python3 -m build -n -w -x
) )
} }
@ -31,6 +31,6 @@ makeinstall_target() {
install install
( (
cd py-smbus cd py-smbus
exec_thread_safe python_target_env python3 setup.py install --root=${INSTALL} --prefix=/usr python3 -m installer --overwrite-existing dist/*.whl -d ${INSTALL} -p /usr
) )
} }

View File

@ -9,9 +9,4 @@ PKG_SITE="https://pypi.org/project/Jinja2/"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME,,}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME,,}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host MarkupSafe:host" PKG_DEPENDS_HOST="Python3:host setuptools:host MarkupSafe:host"
PKG_LONGDESC="Jinja is a fast, expressive, extensible templating engine." PKG_LONGDESC="Jinja is a fast, expressive, extensible templating engine."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -1,116 +0,0 @@
From 24f91e001d3b7b7037b2fb572a633f3a7fa7ca1c Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Wed, 17 Jul 2024 11:19:20 +0000
Subject: [PATCH] revert setuptools removal
---
setup.cfg | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
setup.py | 8 ++++++
2 files changed, 89 insertions(+)
create mode 100644 setup.cfg
create mode 100644 setup.py
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..b4531db
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,81 @@
+[metadata]
+name = Jinja2
+version = attr: jinja2.__version__
+url = https://palletsprojects.com/p/jinja/
+project_urls =
+ Donate = https://palletsprojects.com/donate
+ Documentation = https://jinja.palletsprojects.com/
+ Changes = https://jinja.palletsprojects.com/changes/
+ Source Code = https://github.com/pallets/jinja/
+ Issue Tracker = https://github.com/pallets/jinja/issues/
+ Chat = https://discord.gg/pallets
+license = BSD-3-Clause
+license_files = LICENSE.rst
+maintainer = Pallets
+maintainer_email = contact@palletsprojects.com
+description = A very fast and expressive template engine.
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Environment :: Web Environment
+ Intended Audience :: Developers
+ License :: OSI Approved :: BSD License
+ Operating System :: OS Independent
+ Programming Language :: Python
+ Topic :: Internet :: WWW/HTTP :: Dynamic Content
+ Topic :: Text Processing :: Markup :: HTML
+
+[options]
+packages = find:
+package_dir = = src
+include_package_data = True
+python_requires = >= 3.7
+# Dependencies are in setup.py for GitHub's dependency graph.
+
+[options.packages.find]
+where = src
+
+[options.entry_points]
+babel.extractors =
+ jinja2 = jinja2.ext:babel_extract[i18n]
+
+[tool:pytest]
+testpaths = tests
+filterwarnings =
+ error
+
+[coverage:run]
+branch = True
+source =
+ jinja2
+ tests
+
+[coverage:paths]
+source =
+ src
+ */site-packages
+
+[mypy]
+files = src/jinja2
+python_version = 3.7
+show_error_codes = True
+disallow_subclassing_any = True
+disallow_untyped_calls = True
+disallow_untyped_defs = True
+disallow_incomplete_defs = True
+no_implicit_optional = True
+local_partial_types = True
+no_implicit_reexport = True
+strict_equality = True
+warn_redundant_casts = True
+warn_unused_configs = True
+warn_unused_ignores = True
+warn_return_any = True
+warn_unreachable = True
+
+[mypy-jinja2.defaults]
+no_implicit_reexport = False
+
+[mypy-markupsafe]
+no_implicit_reexport = False
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..79d0708
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,8 @@
+from setuptools import setup
+
+# Metadata goes in setup.cfg. These are here for GitHub's dependency graph.
+setup(
+ name="Jinja2",
+ install_requires=["MarkupSafe>=2.0"],
+ extras_require={"i18n": ["Babel>=2.7"]},
+)
--
2.43.0

View File

@ -10,9 +10,4 @@ PKG_SITE="https://pypi.org/project/Mako"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host MarkupSafe:host" PKG_DEPENDS_HOST="Python3:host setuptools:host MarkupSafe:host"
PKG_LONGDESC="Mako is a super-fast templating language that borrows the best ideas from the existing templating languages." PKG_LONGDESC="Mako is a super-fast templating language that borrows the best ideas from the existing templating languages."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -10,9 +10,4 @@ PKG_SITE="https://pypi.org/project/MarkupSafe/"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host" PKG_DEPENDS_HOST="Python3:host setuptools:host"
PKG_LONGDESC="MarkupSafe implements a XML/HTML/XHTML Markup safe string for Python" PKG_LONGDESC="MarkupSafe implements a XML/HTML/XHTML Markup safe string for Python"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -0,0 +1,22 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="flit"
PKG_VERSION="3.9.0"
PKG_SHA256="72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba"
PKG_LICENSE="BSD"
PKG_SITE="https://pypi.org/project/flit-core/"
PKG_URL="https://files.pythonhosted.org/packages/source/f/flit_core/flit_core-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="flit_core-${PKG_VERSION}"
PKG_DEPENDS_HOST="Python3:host"
PKG_LONGDESC="flit provides a PEP 517 build backend for packages using Flit."
PKG_TOOLCHAIN="manual"
make_host() {
export DONT_BUILD_LEGACY_PYC=1
python3 -m flit_core.wheel
}
makeinstall_host() {
exec_thread_safe python3 -m bootstrap_install dist/*.whl --installdir=${TOOLCHAIN}/lib/${PKG_PYTHON_VERSION}/site-packages
}

View File

@ -9,16 +9,9 @@ PKG_SITE="https://mesonbuild.com"
PKG_URL="https://github.com/mesonbuild/meson/releases/download/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/mesonbuild/meson/releases/download/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host" PKG_DEPENDS_HOST="Python3:host setuptools:host"
PKG_LONGDESC="High productivity build system" PKG_LONGDESC="High productivity build system"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
python3 setup.py build
}
makeinstall_host() {
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} --skip-build
post_makeinstall_target() {
# Avoid using full path to python3 that may exceed 128 byte limit. # Avoid using full path to python3 that may exceed 128 byte limit.
# Instead use PATH as we know our toolchain is first. # Instead use PATH as we know our toolchain is first.
sed -e '1 s/^#!.*$/#!\/usr\/bin\/env python3/' -i ${TOOLCHAIN}/bin/meson sed -e '1 s/^#!.*$/#!\/usr\/bin\/env python3/' -i ${TOOLCHAIN}/bin/meson

View File

@ -0,0 +1,13 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pybuild"
PKG_VERSION="1.2.1"
PKG_SHA256="526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d"
PKG_LICENSE="BSD"
PKG_SITE="https://pypi.org/project/build/"
PKG_URL="https://files.pythonhosted.org/packages/source/b/build/build-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="build-${PKG_VERSION}"
PKG_DEPENDS_HOST="flit:host pyproject-hooks:host pyinstaller:host pypackaging:host"
PKG_LONGDESC="A simple, correct Python build frontend."
PKG_TOOLCHAIN="python-flit"

View File

@ -9,9 +9,4 @@ PKG_SITE="https://pypi.org/project/pycparser/"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host" PKG_DEPENDS_HOST="Python3:host setuptools:host"
PKG_LONGDESC="Complete C99 parser in pure Python" PKG_LONGDESC="Complete C99 parser in pure Python"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix="${TOOLCHAIN}"
}

View File

@ -9,8 +9,4 @@ PKG_SITE="https://github.com/eliben/pyelftools"
PKG_URL="https://github.com/eliben/pyelftools/archive/refs/tags/v${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/eliben/pyelftools/archive/refs/tags/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host" PKG_DEPENDS_HOST="Python3:host setuptools:host"
PKG_LONGDESC="Library for analyzing ELF files and DWARF debugging information" PKG_LONGDESC="Library for analyzing ELF files and DWARF debugging information"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -0,0 +1,18 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pyinstaller"
PKG_VERSION="0.7.0"
PKG_SHA256="a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631"
PKG_LICENSE="MIT"
PKG_SITE="https://pypi.org/project/installer/"
PKG_URL="https://files.pythonhosted.org/packages/source/i/installer/installer-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="installer-${PKG_VERSION}"
PKG_DEPENDS_HOST="flit:host"
PKG_LONGDESC="installer provides basic functionality and abstractions for handling wheels and installing packages from wheels."
PKG_TOOLCHAIN="python-flit"
makeinstall_host() {
# simple bootstrap install, but should be able to call itself if needed
unzip -o -d ${TOOLCHAIN}/lib/${PKG_PYTHON_VERSION}/site-packages dist/*.whl
}

View File

@ -0,0 +1,82 @@
From 4628ef70e1159d3cbab58d395f647c3dff887650 Mon Sep 17 00:00:00 2001
From: Carl Smedstad <carl.smedstad@protonmail.com>
Date: Tue, 13 Feb 2024 21:10:22 +0100
Subject: [PATCH] Add --overwrite-existing option that overwrites existing
files
Implement the --overwrite-existing option that, if supplied, will make
installer overwrite any already existing package files instead of
failing. With this flag, installer can be used in an idempotent manner,
i.e. the same command can be executed multiple times with the same
result:
python -m installer --overwrite-existing --destdir=tmp dist/*.whl
python -m installer --overwrite-existing --destdir=tmp dist/*.whl
python -m installer --overwrite-existing --destdir=tmp dist/*.whl
---
src/installer/__main__.py | 6 ++++++
src/installer/destinations.py | 5 ++++-
tests/test_destinations.py | 22 ++++++++++++++++++++++
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/src/installer/__main__.py b/src/installer/__main__.py
index 7ece8d213fe4..b587232912f9 100644
--- a/src/installer/__main__.py
+++ b/src/installer/__main__.py
@@ -51,6 +51,11 @@ def _get_main_parser() -> argparse.ArgumentParser:
choices=["all", "entries", "none"],
help="validate the wheel against certain part of its record (default=none)",
)
+ parser.add_argument(
+ "--overwrite-existing",
+ action="store_true",
+ help="silently overwrite existing files",
+ )
return parser
@@ -95,6 +100,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None:
script_kind=get_launcher_kind(),
bytecode_optimization_levels=bytecode_levels,
destdir=args.destdir,
+ overwrite_existing=args.overwrite_existing,
)
installer.install(source, destination, {})
diff --git a/src/installer/destinations.py b/src/installer/destinations.py
index 31a254c387be..982e6adfc218 100644
--- a/src/installer/destinations.py
+++ b/src/installer/destinations.py
@@ -111,6 +111,7 @@ class SchemeDictionaryDestination(WheelDestination):
hash_algorithm: str = "sha256",
bytecode_optimization_levels: Collection[int] = (),
destdir: Optional[str] = None,
+ overwrite_existing: bool = False,
) -> None:
"""Construct a ``SchemeDictionaryDestination`` object.
@@ -127,6 +128,7 @@ class SchemeDictionaryDestination(WheelDestination):
:param destdir: A staging directory in which to write all files. This
is expected to be the filesystem root at runtime, so embedded paths
will be written as though this was the root.
+ :param overwrite_existing: silently overwrite existing files.
"""
self.scheme_dict = scheme_dict
self.interpreter = interpreter
@@ -134,6 +136,7 @@ class SchemeDictionaryDestination(WheelDestination):
self.hash_algorithm = hash_algorithm
self.bytecode_optimization_levels = bytecode_optimization_levels
self.destdir = destdir
+ self.overwrite_existing = overwrite_existing
def _path_with_destdir(self, scheme: Scheme, path: str) -> str:
file = os.path.join(self.scheme_dict[scheme], path)
@@ -161,7 +164,7 @@ class SchemeDictionaryDestination(WheelDestination):
- Hashes the written content, to determine the entry in the ``RECORD`` file.
"""
target_path = self._path_with_destdir(scheme, path)
- if os.path.exists(target_path):
+ if not self.overwrite_existing and os.path.exists(target_path):
message = f"File already exists: {target_path}"
raise FileExistsError(message)

View File

@ -0,0 +1,13 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pypackaging"
PKG_VERSION="24.1"
PKG_SHA256="026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"
PKG_LICENSE="BSD"
PKG_SITE="https://pypi.org/project/build/"
PKG_URL="https://files.pythonhosted.org/packages/source/p/packaging/packaging-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="packaging-${PKG_VERSION}"
PKG_DEPENDS_HOST="flit:host pyinstaller:host"
PKG_LONGDESC="Reusable core utilities for various Python Packaging interoperability specifications."
PKG_TOOLCHAIN="python-flit"

View File

@ -0,0 +1,13 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pyproject-hooks"
PKG_VERSION="1.0.0"
PKG_SHA256="f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"
PKG_LICENSE="BSD"
PKG_SITE="https://pypi.org/project/pyproject-hooks/"
PKG_URL="https://files.pythonhosted.org/packages/source/p/pyproject_hooks/pyproject_hooks-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="pyproject_hooks-${PKG_VERSION}"
PKG_DEPENDS_HOST="flit:host pyinstaller:host"
PKG_LONGDESC="pyproject-hooks provides the basic functionality to help write tooling that generates distribution files from Python projects."
PKG_TOOLCHAIN="python-flit"

View File

@ -9,9 +9,4 @@ PKG_SITE="https://pypi.org/project/PyYAML/"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host setuptools:host" PKG_DEPENDS_HOST="Python3:host setuptools:host"
PKG_LONGDESC="YAML parser and emitter for Python" PKG_LONGDESC="YAML parser and emitter for Python"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix="${TOOLCHAIN}"
}

View File

@ -3,19 +3,11 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="setuptools" PKG_NAME="setuptools"
PKG_VERSION="52.0.0" PKG_VERSION="73.0.1"
PKG_SHA256="ff0c74d1b905a224d647f99c6135eacbec2620219992186b81aa20012bc7f882" PKG_SHA256="d59a3e788ab7e012ab2c4baed1b376da6366883ee20d7a5fc426816e3d7b1193"
PKG_LICENSE="OSS" PKG_LICENSE="OSS"
PKG_SITE="https://pypi.org/project/setuptools" PKG_SITE="https://pypi.org/project/setuptools"
PKG_URL="https://github.com/pypa/setuptools/archive/v${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME,,}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="Python3:host" PKG_DEPENDS_HOST="pybuild:host"
PKG_LONGDESC="Replaces Setuptools as the standard method for working with Python module distributions." PKG_LONGDESC="Replaces Setuptools as the standard method for working with Python module distributions."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
make_host() {
python3 bootstrap.py
}
makeinstall_host() {
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -10,15 +10,9 @@ PKG_SITE="https://python-pillow.org/"
PKG_URL="https://github.com/python-pillow/${PKG_NAME}/archive/${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/python-pillow/${PKG_NAME}/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain Python3 zlib freetype libjpeg-turbo tiff" PKG_DEPENDS_TARGET="toolchain Python3 zlib freetype libjpeg-turbo tiff"
PKG_LONGDESC="The Python Imaging Library adds image processing capabilities to your Python interpreter." PKG_LONGDESC="The Python Imaging Library adds image processing capabilities to your Python interpreter."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
make_target() { PKG_PYTHON_OPTS_TARGET="-C--build-option=build_ext -C--build-option=--disable-platform-guessing"
python_target_env python3 setup.py build_ext --disable-platform-guessing build
}
makeinstall_target() {
exec_thread_safe python_target_env python3 setup.py build_ext --disable-platform-guessing install --root=${INSTALL} --prefix=/usr
}
post_makeinstall_target() { post_makeinstall_target() {
python_remove_source python_remove_source

View File

@ -1,87 +0,0 @@
From 346de8011ac8ece998d9bd857d661cf2bb7479a2 Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Sat, 20 Jan 2024 02:20:01 +0000
Subject: [PATCH] Revert "Move build config from setup.cfg to pyproject.toml"
This partially reverts commit 430920e2a8420bdfcd08eafe6446d6173692e24e.
---
setup.cfg | 67 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 67 insertions(+)
create mode 100644 setup.cfg
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 000000000..627788cd8
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,67 @@
+[metadata]
+name = Pillow
+description = Python Imaging Library (Fork)
+long_description = file: README.md
+long_description_content_type = text/markdown
+url = https://python-pillow.org
+author = Jeffrey A. Clark (Alex)
+author_email = aclark@aclark.net
+license = HPND
+classifiers =
+ Development Status :: 6 - Mature
+ License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND)
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
+ Programming Language :: Python :: 3.12
+ Programming Language :: Python :: Implementation :: CPython
+ Programming Language :: Python :: Implementation :: PyPy
+ Topic :: Multimedia :: Graphics
+ Topic :: Multimedia :: Graphics :: Capture :: Digital Camera
+ Topic :: Multimedia :: Graphics :: Capture :: Screen Capture
+ Topic :: Multimedia :: Graphics :: Graphics Conversion
+ Topic :: Multimedia :: Graphics :: Viewers
+keywords = Imaging
+project_urls =
+ Documentation=https://pillow.readthedocs.io
+ Source=https://github.com/python-pillow/Pillow
+ Funding=https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi
+ Release notes=https://pillow.readthedocs.io/en/stable/releasenotes/index.html
+ Changelog=https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst
+ Twitter=https://twitter.com/PythonPillow
+ Mastodon=https://fosstodon.org/@pillow
+
+[options]
+packages = PIL
+python_requires = >=3.8
+include_package_data = True
+package_dir =
+ = src
+
+[options.extras_require]
+docs =
+ furo
+ olefile
+ sphinx>=2.4
+ sphinx-copybutton
+ sphinx-inline-tabs
+ sphinx-removed-in
+ sphinxext-opengraph
+tests =
+ check-manifest
+ coverage
+ defusedxml
+ markdown2
+ olefile
+ packaging
+ pyroma
+ pytest
+ pytest-cov
+ pytest-timeout
+
+[flake8]
+extend-ignore = E203
+max-line-length = 88
--
2.43.0

View File

@ -7,11 +7,6 @@ PKG_SHA256="61a70234dc7da467cceb07fcdd6dec1213d6143a1b6b19ccc5d7b64cc247ea47"
PKG_LICENSE="MIT" PKG_LICENSE="MIT"
PKG_SITE="https://glad.dav1d.de" PKG_SITE="https://glad.dav1d.de"
PKG_URL="https://github.com/Dav1dde/glad/archive/refs/tags/v${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/Dav1dde/glad/archive/refs/tags/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain" PKG_DEPENDS_TARGET="setuptools:host"
PKG_LONGDESC="Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs" PKG_LONGDESC="Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
makeinstall_host() {
export DONT_BUILD_LEGACY_PYC=1
exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN}
}

View File

@ -7,30 +7,22 @@ PKG_SHA256="35019dff66c25db80d0c739b9c7b59bb0f61551897681c6dbdbdd0f7198f780f"
PKG_LICENSE="BSD" PKG_LICENSE="BSD"
PKG_SITE="https://pypi.org/project/pycryptodome" PKG_SITE="https://pypi.org/project/pycryptodome"
PKG_URL="https://github.com/Legrandin/${PKG_NAME}/archive/v${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/Legrandin/${PKG_NAME}/archive/v${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain Python3" PKG_DEPENDS_TARGET="toolchain Python3 setuptools:host"
PKG_LONGDESC="PyCryptodome is a self-contained Python package of low-level cryptographic primitives." PKG_LONGDESC="PyCryptodome is a self-contained Python package of low-level cryptographic primitives."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
pre_configure_target() { pre_configure_target() {
cd ${PKG_BUILD} cd ${PKG_BUILD}
rm -rf .${TARGET_NAME} rm -rf .${TARGET_NAME}
} }
make_target() { post_makeinstall_target() {
python_target_env python3 setup.py build
}
makeinstall_target() {
exec_thread_safe python_target_env python3 setup.py install --root=${INSTALL} --prefix=/usr
# Remove SelfTest bloat # Remove SelfTest bloat
find ${INSTALL} -type d -name SelfTest -exec rm -fr "{}" \; 2>/dev/null || true find ${INSTALL} -type d -name SelfTest -exec rm -fr "{}" \; 2>/dev/null || true
find ${INSTALL} -name SOURCES.txt -exec sed -i "/\/SelfTest\//d;" "{}" \; find ${INSTALL} -name SOURCES.txt -exec sed -i "/\/SelfTest\//d;" "{}" \;
# Create Cryptodome as an alternative namespace to Crypto (Kodi addons may use either) # Create Cryptodome as an alternative namespace to Crypto (Kodi addons may use either)
ln -sf /usr/lib/${PKG_PYTHON_VERSION}/site-packages/Crypto ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/Cryptodome ln -sf /usr/lib/${PKG_PYTHON_VERSION}/site-packages/Crypto ${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}/site-packages/Cryptodome
}
post_makeinstall_target() {
python_remove_source python_remove_source
} }

View File

@ -7,17 +7,9 @@ PKG_SHA256="857104ef2fd1978323d7c87b32c753d2d178b79adbd13f52cea23511f5195ded"
PKG_LICENSE="LGPLv2.1+" PKG_LICENSE="LGPLv2.1+"
PKG_SITE="https://gitlab.com/ldo/dbussy" PKG_SITE="https://gitlab.com/ldo/dbussy"
PKG_URL="https://github.com/ldo/${PKG_NAME}/archive/${PKG_VERSION}.tar.gz" PKG_URL="https://github.com/ldo/${PKG_NAME}/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain Python3 dbus" PKG_DEPENDS_TARGET="toolchain Python3 dbus setuptools:host"
PKG_LONGDESC="DBussy is a wrapper around libdbus, written in pure Python" PKG_LONGDESC="DBussy is a wrapper around libdbus, written in pure Python"
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
make_target() {
python3 setup.py build
}
makeinstall_target() {
python3 setup.py install --root=${INSTALL} --prefix=/usr
}
post_makeinstall_target() { post_makeinstall_target() {
python_remove_source python_remove_source

View File

@ -8,17 +8,9 @@ PKG_SHA256="8e086896c36210ab6050f2f9f095a5f1e03c83fa0e7f296d6cba425411364680"
PKG_LICENSE="OSS" PKG_LICENSE="OSS"
PKG_SITE="http://pypi.org/project/simplejson" PKG_SITE="http://pypi.org/project/simplejson"
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz" PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain Python3" PKG_DEPENDS_TARGET="toolchain Python3 setuptools:host"
PKG_LONGDESC="A simple, fast, complete, correct and extensible JSON encoder and decoder for Python 2.5+." PKG_LONGDESC="A simple, fast, complete, correct and extensible JSON encoder and decoder for Python 2.5+."
PKG_TOOLCHAIN="manual" PKG_TOOLCHAIN="python"
make_target() {
python_target_env python3 setup.py build
}
makeinstall_target() {
exec_thread_safe python_target_env python3 setup.py install --root=${INSTALL} --prefix=/usr
}
post_makeinstall_target() { post_makeinstall_target() {
python_remove_source python_remove_source

View File

@ -119,7 +119,7 @@ if [ -z "${PKG_TOOLCHAIN}" -o "${PKG_TOOLCHAIN}" = "auto" ]; then
fi fi
_auto_toolchain=" (auto-detect)" _auto_toolchain=" (auto-detect)"
fi fi
if ! listcontains "meson cmake cmake-make configure ninja make autotools manual" "${PKG_TOOLCHAIN}"; then if ! listcontains "meson cmake cmake-make configure ninja make autotools manual python-flit python" "${PKG_TOOLCHAIN}"; then
die "$(print_color "CLR_ERROR" "ERROR:") unknown toolchain ${PKG_TOOLCHAIN}" die "$(print_color "CLR_ERROR" "ERROR:") unknown toolchain ${PKG_TOOLCHAIN}"
fi fi
build_msg "CLR_TOOLCHAIN" "TOOLCHAIN" "${PKG_TOOLCHAIN}${_auto_toolchain}" build_msg "CLR_TOOLCHAIN" "TOOLCHAIN" "${PKG_TOOLCHAIN}${_auto_toolchain}"
@ -416,6 +416,23 @@ else
echo "Executing (bootstrap): make ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " " echo "Executing (bootstrap): make ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " "
make ${PKG_MAKE_OPTS_BOOTSTRAP} make ${PKG_MAKE_OPTS_BOOTSTRAP}
;; ;;
# python builds
"python-flit:target")
die "$(print_color "CLR_ERROR" "ERROR:") toolchain python-flit should not be used for target!"
;;
"python-flit:host")
echo "Executing (host): python3 -m flit_core.wheel"
DONT_BUILD_LEGACY_PYC=1 python3 -m flit_core.wheel
;;
"python:target")
echo "Executing (target): python3 -m build -n -w -x ${PKG_PYTHON_OPTS_TARGET}" | tr -s " "
python_target_env python3 -m build -n -w -x ${PKG_PYTHON_OPTS_TARGET}
;;
"python:host")
echo "Executing (host): python3 -m build -n -w -x ${PKG_PYTHON_OPTS_HOST}" | tr -s " "
DONT_BUILD_LEGACY_PYC=1 python3 -m build -n -w -x ${PKG_PYTHON_OPTS_HOST}
;;
esac esac
fi fi
@ -475,6 +492,17 @@ else
"configure:bootstrap" | "cmake-make:bootstrap" | "autotools:bootstrap" | "make:bootstrap") "configure:bootstrap" | "cmake-make:bootstrap" | "autotools:bootstrap" | "make:bootstrap")
make install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP} make install ${PKG_MAKEINSTALL_OPTS_BOOTSTRAP}
;; ;;
# python builds
"python-flit:target")
die "$(print_color "CLR_ERROR" "ERROR:") toolchain python-flit should not be used for target!"
;;
"python:target")
python3 -m installer --overwrite-existing dist/*.whl -d ${INSTALL} -p /usr
;;
"python-flit:host" | "python:host")
python3 -m installer --overwrite-existing dist/*.whl
;;
esac esac
fi fi