diff --git a/packages/addons/addon-depends/rpi-tools-depends/lg-gpio/package.mk b/packages/addons/addon-depends/rpi-tools-depends/lg-gpio/package.mk index 3d1ed533c2..9c533d66ba 100644 --- a/packages/addons/addon-depends/rpi-tools-depends/lg-gpio/package.mk +++ b/packages/addons/addon-depends/rpi-tools-depends/lg-gpio/package.mk @@ -7,7 +7,7 @@ PKG_SHA256="b08d8569d6dc8fa91a42ba1e37f620fdcb19d6bf2330e4b7d7301431ddbe124c" PKG_LICENSE="Unlicense" PKG_SITE="http://abyz.me.uk/lg/" 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_TOOLCHAIN="manual" @@ -21,6 +21,6 @@ make_target() { ( cd PY_LGPIO swig -python lgpio.i - python_target_env python setup.py build + python_target_env python3 -m build -n -w -x ) } diff --git a/packages/addons/addon-depends/system-tools-depends/i2c-tools/package.mk b/packages/addons/addon-depends/system-tools-depends/i2c-tools/package.mk index daf6199b59..be4a517f2b 100644 --- a/packages/addons/addon-depends/system-tools-depends/i2c-tools/package.mk +++ b/packages/addons/addon-depends/system-tools-depends/i2c-tools/package.mk @@ -7,7 +7,7 @@ PKG_SHA256="1f899e43603184fac32f34d72498fc737952dbc9c97a8dd9467fadfdf4600cf9" PKG_LICENSE="GPL" 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_DEPENDS_TARGET="toolchain Python3" +PKG_DEPENDS_TARGET="toolchain Python3 setuptools:host" PKG_LONGDESC="A heterogeneous set of I2C tools for Linux." PKG_BUILD_FLAGS="-sysroot" @@ -20,7 +20,7 @@ make_target() { ( 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 ( 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 ) } diff --git a/packages/python/devel/Jinja2/package.mk b/packages/python/devel/Jinja2/package.mk index 1ae9fff438..f2f1c953fc 100644 --- a/packages/python/devel/Jinja2/package.mk +++ b/packages/python/devel/Jinja2/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host MarkupSafe:host" PKG_LONGDESC="Jinja is a fast, expressive, extensible templating engine." -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/Jinja2/patches/0001-revert-setuptools-removal.patch b/packages/python/devel/Jinja2/patches/0001-revert-setuptools-removal.patch deleted file mode 100644 index 06be73f67a..0000000000 --- a/packages/python/devel/Jinja2/patches/0001-revert-setuptools-removal.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 24f91e001d3b7b7037b2fb572a633f3a7fa7ca1c Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -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 - diff --git a/packages/python/devel/Mako/package.mk b/packages/python/devel/Mako/package.mk index 80e7fb98d6..f99520bbce 100644 --- a/packages/python/devel/Mako/package.mk +++ b/packages/python/devel/Mako/package.mk @@ -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_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_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/MarkupSafe/package.mk b/packages/python/devel/MarkupSafe/package.mk index 66a06a9df2..e11cc64e6f 100644 --- a/packages/python/devel/MarkupSafe/package.mk +++ b/packages/python/devel/MarkupSafe/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host" PKG_LONGDESC="MarkupSafe implements a XML/HTML/XHTML Markup safe string for Python" -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/flit/package.mk b/packages/python/devel/flit/package.mk new file mode 100644 index 0000000000..726ecf3550 --- /dev/null +++ b/packages/python/devel/flit/package.mk @@ -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 +} diff --git a/packages/python/devel/meson/package.mk b/packages/python/devel/meson/package.mk index 1e1ec1f8fd..33ab09fe10 100644 --- a/packages/python/devel/meson/package.mk +++ b/packages/python/devel/meson/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host" PKG_LONGDESC="High productivity build system" -PKG_TOOLCHAIN="manual" - -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 +PKG_TOOLCHAIN="python" +post_makeinstall_target() { # Avoid using full path to python3 that may exceed 128 byte limit. # Instead use PATH as we know our toolchain is first. sed -e '1 s/^#!.*$/#!\/usr\/bin\/env python3/' -i ${TOOLCHAIN}/bin/meson diff --git a/packages/python/devel/pybuild/package.mk b/packages/python/devel/pybuild/package.mk new file mode 100644 index 0000000000..6783c4c679 --- /dev/null +++ b/packages/python/devel/pybuild/package.mk @@ -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" diff --git a/packages/python/devel/pycparser/package.mk b/packages/python/devel/pycparser/package.mk index 45e757101c..b3ea0be6b2 100644 --- a/packages/python/devel/pycparser/package.mk +++ b/packages/python/devel/pycparser/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host" PKG_LONGDESC="Complete C99 parser in pure Python" -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix="${TOOLCHAIN}" -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/pyelftools/package.mk b/packages/python/devel/pyelftools/package.mk index 0cbb817091..139abca524 100644 --- a/packages/python/devel/pyelftools/package.mk +++ b/packages/python/devel/pyelftools/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host" PKG_LONGDESC="Library for analyzing ELF files and DWARF debugging information" -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/pyinstaller/package.mk b/packages/python/devel/pyinstaller/package.mk new file mode 100644 index 0000000000..94f4334126 --- /dev/null +++ b/packages/python/devel/pyinstaller/package.mk @@ -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 +} diff --git a/packages/python/devel/pyinstaller/patches/0001-Add-overwrite-existing-option-that-overwrites-existi.patch b/packages/python/devel/pyinstaller/patches/0001-Add-overwrite-existing-option-that-overwrites-existi.patch new file mode 100644 index 0000000000..145d8687f2 --- /dev/null +++ b/packages/python/devel/pyinstaller/patches/0001-Add-overwrite-existing-option-that-overwrites-existi.patch @@ -0,0 +1,82 @@ +From 4628ef70e1159d3cbab58d395f647c3dff887650 Mon Sep 17 00:00:00 2001 +From: Carl Smedstad +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) + diff --git a/packages/python/devel/pypackaging/package.mk b/packages/python/devel/pypackaging/package.mk new file mode 100644 index 0000000000..ac48d7327d --- /dev/null +++ b/packages/python/devel/pypackaging/package.mk @@ -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" diff --git a/packages/python/devel/pyproject-hooks/package.mk b/packages/python/devel/pyproject-hooks/package.mk new file mode 100644 index 0000000000..02d8696834 --- /dev/null +++ b/packages/python/devel/pyproject-hooks/package.mk @@ -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" diff --git a/packages/python/devel/pyyaml/package.mk b/packages/python/devel/pyyaml/package.mk index 6141591ded..7bd3c2b4bd 100644 --- a/packages/python/devel/pyyaml/package.mk +++ b/packages/python/devel/pyyaml/package.mk @@ -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_DEPENDS_HOST="Python3:host setuptools:host" PKG_LONGDESC="YAML parser and emitter for Python" -PKG_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix="${TOOLCHAIN}" -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/devel/setuptools/package.mk b/packages/python/devel/setuptools/package.mk index f91679b31c..edb9bd04b4 100644 --- a/packages/python/devel/setuptools/package.mk +++ b/packages/python/devel/setuptools/package.mk @@ -3,19 +3,11 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="setuptools" -PKG_VERSION="52.0.0" -PKG_SHA256="ff0c74d1b905a224d647f99c6135eacbec2620219992186b81aa20012bc7f882" +PKG_VERSION="73.0.1" +PKG_SHA256="d59a3e788ab7e012ab2c4baed1b376da6366883ee20d7a5fc426816e3d7b1193" PKG_LICENSE="OSS" PKG_SITE="https://pypi.org/project/setuptools" -PKG_URL="https://github.com/pypa/setuptools/archive/v${PKG_VERSION}.tar.gz" -PKG_DEPENDS_HOST="Python3:host" +PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/${PKG_NAME}/${PKG_NAME,,}-${PKG_VERSION}.tar.gz" +PKG_DEPENDS_HOST="pybuild:host" PKG_LONGDESC="Replaces Setuptools as the standard method for working with Python module distributions." -PKG_TOOLCHAIN="manual" - -make_host() { - python3 bootstrap.py -} - -makeinstall_host() { - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/graphics/Pillow/package.mk b/packages/python/graphics/Pillow/package.mk index e40f324ddd..7f8f2ac8b3 100644 --- a/packages/python/graphics/Pillow/package.mk +++ b/packages/python/graphics/Pillow/package.mk @@ -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_DEPENDS_TARGET="toolchain Python3 zlib freetype libjpeg-turbo tiff" PKG_LONGDESC="The Python Imaging Library adds image processing capabilities to your Python interpreter." -PKG_TOOLCHAIN="manual" +PKG_TOOLCHAIN="python" -make_target() { - 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 -} +PKG_PYTHON_OPTS_TARGET="-C--build-option=build_ext -C--build-option=--disable-platform-guessing" post_makeinstall_target() { python_remove_source diff --git a/packages/python/graphics/Pillow/patches/Pillow-0002-Revert-Move-build-config-from-setup.cfg-to-pyproject.patch b/packages/python/graphics/Pillow/patches/Pillow-0002-Revert-Move-build-config-from-setup.cfg-to-pyproject.patch deleted file mode 100644 index 577d1c21d8..0000000000 --- a/packages/python/graphics/Pillow/patches/Pillow-0002-Revert-Move-build-config-from-setup.cfg-to-pyproject.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 346de8011ac8ece998d9bd857d661cf2bb7479a2 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -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 - diff --git a/packages/python/graphics/glad/package.mk b/packages/python/graphics/glad/package.mk index 9a1fe81574..36489ca842 100644 --- a/packages/python/graphics/glad/package.mk +++ b/packages/python/graphics/glad/package.mk @@ -7,11 +7,6 @@ PKG_SHA256="61a70234dc7da467cceb07fcdd6dec1213d6143a1b6b19ccc5d7b64cc247ea47" PKG_LICENSE="MIT" PKG_SITE="https://glad.dav1d.de" 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_TOOLCHAIN="manual" - -makeinstall_host() { - export DONT_BUILD_LEGACY_PYC=1 - exec_thread_safe python3 setup.py install --prefix=${TOOLCHAIN} -} +PKG_TOOLCHAIN="python" diff --git a/packages/python/security/pycryptodome/package.mk b/packages/python/security/pycryptodome/package.mk index ed656eeee7..0d24d214ad 100644 --- a/packages/python/security/pycryptodome/package.mk +++ b/packages/python/security/pycryptodome/package.mk @@ -7,30 +7,22 @@ PKG_SHA256="35019dff66c25db80d0c739b9c7b59bb0f61551897681c6dbdbdd0f7198f780f" PKG_LICENSE="BSD" PKG_SITE="https://pypi.org/project/pycryptodome" 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_TOOLCHAIN="manual" +PKG_TOOLCHAIN="python" pre_configure_target() { cd ${PKG_BUILD} rm -rf .${TARGET_NAME} } -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() { # Remove SelfTest bloat find ${INSTALL} -type d -name SelfTest -exec rm -fr "{}" \; 2>/dev/null || true find ${INSTALL} -name SOURCES.txt -exec sed -i "/\/SelfTest\//d;" "{}" \; # 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 -} -post_makeinstall_target() { python_remove_source } diff --git a/packages/python/system/dbussy/package.mk b/packages/python/system/dbussy/package.mk index f5e2b243f9..3b0466f7c6 100644 --- a/packages/python/system/dbussy/package.mk +++ b/packages/python/system/dbussy/package.mk @@ -7,17 +7,9 @@ PKG_SHA256="857104ef2fd1978323d7c87b32c753d2d178b79adbd13f52cea23511f5195ded" PKG_LICENSE="LGPLv2.1+" PKG_SITE="https://gitlab.com/ldo/dbussy" 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_TOOLCHAIN="manual" - -make_target() { - python3 setup.py build -} - -makeinstall_target() { - python3 setup.py install --root=${INSTALL} --prefix=/usr -} +PKG_TOOLCHAIN="python" post_makeinstall_target() { python_remove_source diff --git a/packages/python/system/simplejson/package.mk b/packages/python/system/simplejson/package.mk index dea383781a..413b56345a 100644 --- a/packages/python/system/simplejson/package.mk +++ b/packages/python/system/simplejson/package.mk @@ -8,17 +8,9 @@ PKG_SHA256="8e086896c36210ab6050f2f9f095a5f1e03c83fa0e7f296d6cba425411364680" PKG_LICENSE="OSS" 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_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_TOOLCHAIN="manual" - -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 -} +PKG_TOOLCHAIN="python" post_makeinstall_target() { python_remove_source diff --git a/scripts/build b/scripts/build index fc46b8c81d..6d8e990316 100755 --- a/scripts/build +++ b/scripts/build @@ -119,7 +119,7 @@ if [ -z "${PKG_TOOLCHAIN}" -o "${PKG_TOOLCHAIN}" = "auto" ]; then fi _auto_toolchain=" (auto-detect)" 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}" fi build_msg "CLR_TOOLCHAIN" "TOOLCHAIN" "${PKG_TOOLCHAIN}${_auto_toolchain}" @@ -416,6 +416,23 @@ else echo "Executing (bootstrap): make ${PKG_MAKE_OPTS_BOOTSTRAP}" | tr -s " " 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 fi @@ -475,6 +492,17 @@ else "configure:bootstrap" | "cmake-make:bootstrap" | "autotools:bootstrap" | "make: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 fi