diff --git a/DEVELOPERS b/DEVELOPERS index 2a81272d20..8290ccc281 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -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 diff --git a/package/Config.in b/package/Config.in index 94ea56b297..41fc5af330 100644 --- a/package/Config.in +++ b/package/Config.in @@ -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" diff --git a/package/python-diskcache/Config.in b/package/python-diskcache/Config.in new file mode 100644 index 0000000000..4bf6c57406 --- /dev/null +++ b/package/python-diskcache/Config.in @@ -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/ diff --git a/package/python-diskcache/python-diskcache.hash b/package/python-diskcache/python-diskcache.hash new file mode 100644 index 0000000000..4befb40a4e --- /dev/null +++ b/package/python-diskcache/python-diskcache.hash @@ -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 diff --git a/package/python-diskcache/python-diskcache.mk b/package/python-diskcache/python-diskcache.mk new file mode 100644 index 0000000000..70b53469d8 --- /dev/null +++ b/package/python-diskcache/python-diskcache.mk @@ -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)) diff --git a/support/testing/tests/package/sample_python_diskcache.py b/support/testing/tests/package/sample_python_diskcache.py new file mode 100644 index 0000000000..8ba34daf6e --- /dev/null +++ b/support/testing/tests/package/sample_python_diskcache.py @@ -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() diff --git a/support/testing/tests/package/test_python_diskcache.py b/support/testing/tests/package/test_python_diskcache.py new file mode 100644 index 0000000000..d8618c1681 --- /dev/null +++ b/support/testing/tests/package/test_python_diskcache.py @@ -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