package/python-diskcache: new package

The package imports itself in setup.py to get the package-name and
version number. Dping this during the buildroot build would require
buisling host-python with sqlite support, which we are currently not set
up for. It also seems wasteful for just extracting the version number
and package name, so instead we replace the import by using a hardcoded
package-name and the version number stored in buildroot.

Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Marcus Hoffmann
2025-10-21 14:05:47 +02:00
committed by Thomas Petazzoni
parent 1a6e81fa13
commit 934d3e62e6
7 changed files with 64 additions and 0 deletions

View File

@@ -2263,6 +2263,7 @@ F: package/picotool/
F: package/python-annotated-doc/
F: package/python-apscheduler/
F: package/python-crc/
F: package/python-diskcache/
F: package/python-django/
F: package/python-gpiod/
F: package/python-immutabledict/
@@ -2280,6 +2281,7 @@ F: package/python-waitress/
F: package/python-whitenoise/
F: support/testing/tests/package/test_python_apscheduler.py
F: support/testing/tests/package/test_python_crc.py
F: support/testing/tests/package/test_python_diskcache.py
F: support/testing/tests/package/test_python_django.py
F: support/testing/tests/package/test_python_fastapi.py
F: support/testing/tests/package/test_python_pydantic.py
@@ -2293,6 +2295,7 @@ F: support/testing/tests/package/test_python_waitress.py
F: support/testing/tests/package/test_python_whitenoise.py
F: support/testing/tests/package/sample_python_apscheduler.py
F: support/testing/tests/package/sample_python_crc.py
F: support/testing/tests/package/sample_python_diskcache.py
F: support/testing/tests/package/sample_python_django.py
F: support/testing/tests/package/sample_python_fastapi.py
F: support/testing/tests/package/sample_python_pydantic.py

View File

@@ -1084,6 +1084,7 @@ menu "External python modules"
source "package/python-dictdiffer/Config.in"
source "package/python-dicttoxml/Config.in"
source "package/python-dicttoxml2/Config.in"
source "package/python-diskcache/Config.in"
source "package/python-distro/Config.in"
source "package/python-django/Config.in"
source "package/python-django-enumfields/Config.in"

View File

@@ -0,0 +1,8 @@
config BR2_PACKAGE_PYTHON_DISKCACHE
bool "python-diskcache"
select BR2_PACKAGE_PYTHON3_SQLITE # runtime
select BR2_PACKAGE_PYTHON3_ZLIB # runtime
help
Disk Cache -- Disk and file backed persistent cache.
http://www.grantjenks.com/docs/diskcache/

View File

@@ -0,0 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/diskcache/json
md5 d92b4afa944bb70ed38c84a622f7abb5 diskcache-5.6.3.tar.gz
sha256 2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc diskcache-5.6.3.tar.gz
# Locally computed sha256 checksums
sha256 583546baa3fd93607d845126570677a401f508e228b5044fefbc3949af179672 LICENSE

View File

@@ -0,0 +1,26 @@
################################################################################
#
# python-diskcache
#
################################################################################
PYTHON_DISKCACHE_VERSION = 5.6.3
PYTHON_DISKCACHE_SOURCE = diskcache-$(PYTHON_DISKCACHE_VERSION).tar.gz
PYTHON_DISKCACHE_SITE = https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6
PYTHON_DISKCACHE_SETUP_TYPE = setuptools
PYTHON_DISKCACHE_LICENSE = Apache-2.0
PYTHON_DISKCACHE_LICENSE_FILES = LICENSE
# diskcache imports itself during the build to get its own version,
# which doesn't work in the Buildroot context, so we inject the
# package name and version manually.
define PYTHON_DISKCACHE_REMOVE_SELF_IMPORT
sed -i -e '/import diskcache/d' \
-e 's/diskcache.__title__/"diskcache"/' \
-e 's/diskcache.__version__/"$(PYTHON_DISKCACHE_VERSION)"/' \
$(@D)/setup.py
endef
PYTHON_DISKCACHE_POST_PATCH_HOOKS += PYTHON_DISKCACHE_REMOVE_SELF_IMPORT
$(eval $(python-package))

View File

@@ -0,0 +1,9 @@
from diskcache import Cache
cache = Cache()
cache['test'] = 123
assert cache['test'] == 123
del cache['test']
assert 'test' not in cache
cache.close()

View File

@@ -0,0 +1,12 @@
from tests.package.test_python import TestPythonPackageBase
class TestPythonPy3DiskCache(TestPythonPackageBase):
__test__ = True
config = TestPythonPackageBase.config + \
"""
BR2_PACKAGE_PYTHON3=y
BR2_PACKAGE_PYTHON_DISKCACHE=y
"""
sample_scripts = ["tests/package/sample_python_diskcache.py"]
timeout = 10