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_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
)
}

View File

@ -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
)
}

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_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"

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_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"

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_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"

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_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

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_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"

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_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"

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_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"

View File

@ -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"

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_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

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_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"

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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