diff --git a/lang/python/borgbackup/Makefile b/lang/python/borgbackup/Makefile new file mode 100644 index 000000000..8c6a8a924 --- /dev/null +++ b/lang/python/borgbackup/Makefile @@ -0,0 +1,63 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=borgbackup +PKG_VERSION:=1.2.2 +PKG_RELEASE:=1 + +PYPI_NAME:=borgbackup +PKG_HASH:=d730687443f1beb602b1d72bae36318f6f9654818fcdc50458540ec579e57260 + +PKG_LICENSE:=BSD-3-Clause +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/borgbackup + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Deduplicated, encrypted, authenticated and compressed backups + URL:=https://github.com/borgbackup/borg + DEPENDS:= \ + +python3-light \ + +python3-msgpack \ + +python3-pyfuse3 \ + +libacl \ + +libopenssl \ + +liblz4 \ + +libzstd \ + +libxxhash +endef + +define Package/borgbackup/description + BorgBackup (short: Borg) is a deduplicating backup program. + Optionally, it supports compression and authenticated encryption. + + The main goal of Borg is to provide an efficient and secure way to backup data. + The data deduplication technique used makes Borg suitable for daily backups since only changes are stored. The authenticated encryption technique makes it suitable for backups to not fully trusted targets. +endef + +HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=Cython + +# borg setup.py shall find these via pkg-config, but depends on python pkgconfig PyPi module +# which quickly becomes a nightmare to build, since it build-depends on poetry which is not +# available in the python package feed, and has a myriad of deps +PYTHON3_PKG_SETUP_VARS:= \ + BORG_OPENSSL_PREFIX="/usr/lib" \ + BORG_LIBLZ4_PREFIX="/usr/lib" \ + BORG_LIBZSTD_PREFIX="/usr/lib" \ + BORG_LIBXXHASH_PREFIX="/usr/lib" + +$(eval $(call Py3Package,borgbackup)) +$(eval $(call BuildPackage,borgbackup)) +$(eval $(call BuildPackage,borgbackup-src)) diff --git a/lang/python/python-async-generator/Makefile b/lang/python/python-async-generator/Makefile new file mode 100644 index 000000000..b3e649032 --- /dev/null +++ b/lang/python/python-async-generator/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-async-generator +PKG_VERSION:=1.10 +PKG_RELEASE:=1 + +PYPI_NAME:=async_generator +PKG_HASH:=6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144 + +PKG_LICENSE:=Apache-2.0|MIT +PKG_LICENSE_FILES:=LICENSE.APACHE2|LICENSE.MIT +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-async-generator + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Async generators and context managers for Python 3.5+ + URL:=https://github.com/python-trio/async_generator + DEPENDS:=+python3-light +endef + +define Package/python3-async-generator/description + Python 3.6 added async generators. Python 3.7 adds some more tools to make them usable, like contextlib.asynccontextmanager. + + This library gives you all that back to Python 3.5. +endef + +$(eval $(call Py3Package,python3-async-generator)) +$(eval $(call BuildPackage,python3-async-generator)) +$(eval $(call BuildPackage,python3-async-generator-src)) diff --git a/lang/python/python-exceptiongroup/Makefile b/lang/python/python-exceptiongroup/Makefile new file mode 100644 index 000000000..dd64f9210 --- /dev/null +++ b/lang/python/python-exceptiongroup/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-exceptiongroup +PKG_VERSION:=1.0.4 +PKG_RELEASE:=1 + +PYPI_NAME:=exceptiongroup +PKG_HASH:=bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec + +PKG_LICENSE:=MIT,Python-2.0 +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-exceptiongroup + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Backport of PEP 654 (exception groups) + URL:=https://github.com/agronholm/exceptiongroup + DEPENDS:= \ + +python3-light \ + +python3-attrs +endef + +define Package/python3-exceptiongroup/description + This is a backport of the BaseExceptionGroup and ExceptionGroup classes from Python 3.11. +endef + +$(eval $(call Py3Package,python3-exceptiongroup)) +$(eval $(call BuildPackage,python3-exceptiongroup)) +$(eval $(call BuildPackage,python3-exceptiongroup-src)) diff --git a/lang/python/python-exceptiongroup/patches/0001-add-setup.py-to-avoid-depending-on-flit-for-building.patch b/lang/python/python-exceptiongroup/patches/0001-add-setup.py-to-avoid-depending-on-flit-for-building.patch new file mode 100644 index 000000000..ec2763825 --- /dev/null +++ b/lang/python/python-exceptiongroup/patches/0001-add-setup.py-to-avoid-depending-on-flit-for-building.patch @@ -0,0 +1,31 @@ +From 99e590f2177148420f3556bbb0dc2e493e94e45f Mon Sep 17 00:00:00 2001 +From: Julien Malik +Date: Sat, 26 Nov 2022 13:05:20 +0100 +Subject: [PATCH] add setup.py to avoid depending on flit for building + +--- + setup.py | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + create mode 100644 setup.py + +--- /dev/null ++++ b/setup.py +@@ -0,0 +1,18 @@ ++#!/usr/bin/env python ++ ++import setuptools ++ ++setuptools.setup( ++ name='exceptiongroup', ++ version='1.0.4', ++ description='Backport of PEP 654 (exception groups)', ++ author='Alex Grönholm', ++ author_email='Alex Grönholm ', ++ url='https://github.com/agronholm/exceptiongroup', ++ packages=['exceptiongroup'], ++ package_data={'': ['*']}, ++ package_dir={'': 'src'}, ++ extras_require={'test': ['pytest >= 6']}, ++ python_requires='>=3.7', ++) ++ diff --git a/lang/python/python-outcome/Makefile b/lang/python/python-outcome/Makefile new file mode 100644 index 000000000..05ec24128 --- /dev/null +++ b/lang/python/python-outcome/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-outcome +PKG_VERSION:=1.2.0 +PKG_RELEASE:=1 + +PYPI_NAME:=outcome +PKG_HASH:=6f82bd3de45da303cf1f771ecafa1633750a358436a8bb60e06a1ceb745d2672 + +PKG_LICENSE:=Apache-2.0|MIT +PKG_LICENSE_FILES:=LICENSE.APACHE2|LICENSE.MIT +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-outcome + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Capture the outcome of Python function calls. + URL:=https://outcome.readthedocs.io + DEPENDS:= \ + +python3-light \ + +python3-attrs +endef + +define Package/python3-outcome/description + Capture the outcome of Python function calls. Extracted from the Trio project. +endef + +$(eval $(call Py3Package,python3-outcome)) +$(eval $(call BuildPackage,python3-outcome)) +$(eval $(call BuildPackage,python3-outcome-src)) diff --git a/lang/python/python-pyfuse3/Makefile b/lang/python/python-pyfuse3/Makefile new file mode 100644 index 000000000..fd13ccfc0 --- /dev/null +++ b/lang/python/python-pyfuse3/Makefile @@ -0,0 +1,46 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-pyfuse3 +PKG_VERSION:=3.2.2 +PKG_RELEASE:=1 + +PYPI_NAME:=pyfuse3 +PKG_HASH:=aa4080913e6148bff1365d4aaacdc96767b87a1e178031fd9caeb5f0b9fc8cec + +PKG_LICENSE:=LGPL-2.0-or-later +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-pyfuse3 + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Python 3 bindings for libfuse 3 with async I/O support + URL:=https://github.com/libfuse/pyfuse3 + DEPENDS:= \ + +python3-light \ + +python3-trio \ + +libfuse3 +endef + +define Package/python3-pyfuse3/description + pyfuse3 is a set of Python 3 bindings for libfuse 3. + + It provides an asynchronous API compatible with Trio and asyncio, + and enables you to easily write a full-featured Linux filesystem in Python. +endef + +$(eval $(call Py3Package,python3-pyfuse3)) +$(eval $(call BuildPackage,python3-pyfuse3)) +$(eval $(call BuildPackage,python3-pyfuse3-src)) diff --git a/lang/python/python-sniffio/Makefile b/lang/python/python-sniffio/Makefile new file mode 100644 index 000000000..eef65ad6e --- /dev/null +++ b/lang/python/python-sniffio/Makefile @@ -0,0 +1,40 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-sniffio +PKG_VERSION:=1.3.0 +PKG_RELEASE:=1 + +PYPI_NAME:=sniffio +PKG_HASH:=e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 + +PKG_LICENSE:=Apache-2.0|MIT +PKG_LICENSE_FILES:=LICENSE.APACHE2|LICENSE.MIT +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-sniffio + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Sniff out which async library your code is running under + URL:=https://sniffio.readthedocs.io + DEPENDS:=+python3-light +endef + +define Package/python3-sniffio/description + This is a tiny package whose only purpose is to let you detect which async library your code is running under. +endef + +$(eval $(call Py3Package,python3-sniffio)) +$(eval $(call BuildPackage,python3-sniffio)) +$(eval $(call BuildPackage,python3-sniffio-src)) diff --git a/lang/python/python-sortedcontainers/Makefile b/lang/python/python-sortedcontainers/Makefile new file mode 100644 index 000000000..b049eb980 --- /dev/null +++ b/lang/python/python-sortedcontainers/Makefile @@ -0,0 +1,40 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-sortedcontainers +PKG_VERSION:=2.4.0 +PKG_RELEASE:=1 + +PYPI_NAME:=sortedcontainers +PKG_HASH:=25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 + +PKG_LICENSE:=Apache-2.0 +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-sortedcontainers + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Sorted Containers -- Sorted List, Sorted Dict, Sorted Set + URL:=https://grantjenks.com/docs/sortedcontainers + DEPENDS:=+python3-light +endef + +define Package/python3-sortedcontainers/description + Sorted Containers is an Apache2 licensed sorted collections library, written in pure-Python, and fast as C-extensions. +endef + +$(eval $(call Py3Package,python3-sortedcontainers)) +$(eval $(call BuildPackage,python3-sortedcontainers)) +$(eval $(call BuildPackage,python3-sortedcontainers-src)) diff --git a/lang/python/python-trio/Makefile b/lang/python/python-trio/Makefile new file mode 100644 index 000000000..8afd6b29a --- /dev/null +++ b/lang/python/python-trio/Makefile @@ -0,0 +1,49 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-trio +PKG_VERSION:=0.22.0 +PKG_RELEASE:=1 + +PYPI_NAME:=trio +PKG_HASH:=ce68f1c5400a47b137c5a4de72c7c901bd4e7a24fbdebfe9b41de8c6c04eaacf + +PKG_LICENSE:=Apache-2.0|MIT +PKG_LICENSE_FILES:=LICENSE.APACHE2|LICENSE.MIT +PKG_MAINTAINER:=Julien Malik + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-trio + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=A friendly Python library for async concurrency and I/O + URL:=https://trio.readthedocs.io + DEPENDS:= \ + +python3-light \ + +python3-attrs \ + +python3-async-generator \ + +python3-cffi \ + +python3-exceptiongroup \ + +python3-idna \ + +python3-outcome \ + +python3-sniffio \ + +python3-sortedcontainers +endef + +define Package/python3-trio/description + The Trio project’s goal is to produce a production-quality, permissively licensed, async/await-native I/O library for Python +endef + +$(eval $(call Py3Package,python3-trio)) +$(eval $(call BuildPackage,python3-trio)) +$(eval $(call BuildPackage,python3-trio-src)) diff --git a/utils/xxhash/Makefile b/utils/xxhash/Makefile new file mode 100644 index 000000000..04924b750 --- /dev/null +++ b/utils/xxhash/Makefile @@ -0,0 +1,93 @@ +# +# Copyright (C) 2022 Julien Malik +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +# initial implementation kindly stolen from (and then updated) : +# https://forum.openwrt.org/t/xxhash-makefile/118426 + +include $(TOPDIR)/rules.mk + +PKG_NAME:=xxhash +PKG_VERSION:=0.8.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/Cyan4973/xxHash/archive/v$(PKG_VERSION) +PKG_HASH:=3bb6b7d6f30c591dd65aaaff1c8b7a5b94d81687998ca9400082c739a690436c + +# The source for the library (xxhash.c and xxhash.h) is BSD +# The source for the command line tool (xxhsum.c) is GPLv2+ +PKG_LICENSE:=BSD-2-Clause,GPL-2.0-or-later +PKG_LICENSE_FILES:=LICENSE,cli/COPYING +PKG_MAINTAINER:=Julien Malik + +include $(INCLUDE_DIR)/package.mk + +define Package/xxhash/Default + TITLE:=Extremely fast hash algorithm + URL:=https://cyan4973.github.io/xxHash/ +endef + +define Package/xxhash/Default/description + xxHash is an Extremely fast Hash algorithm, running at RAM speed + limits. It successfully completes the SMHasher test suite which + evaluates collision, dispersion and randomness qualities of hash + functions. Code is highly portable, and hashes are identical on all + platforms (little / big endian). +endef + +define Package/libxxhash + $(call Package/xxhash/Default) + SECTION:=libs + CATEGORY:=Libraries +endef + +define Package/libxxhash/description + $(call Package/xxhash/Default/description) + + This package contains the shared library. +endef + +define Package/xxhash + $(call Package/xxhash/Default) + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:= +libxxhash +endef + +define Package/xxhash/description + $(call Package/xxhash/Default/description) + + This package contains the executables. +endef + +define Build/Prepare + rm -rf $(PKG_BUILD_DIR)/ + mkdir -p $(PKG_BUILD_DIR)/ + $(TAR) -xzf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) --strip 1 +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_BUILD_DIR)/*.h $(1)/usr/include + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/libxxhash.so* $(1)/usr/lib + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_BUILD_DIR)/libxxhash.pc.in $(1)/usr/lib/pkgconfig +endef + +define Package/libxxhash/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/libxxhash.so.* $(1)/usr/lib +endef + +define Package/xxhash/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/xxh*sum $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libxxhash)) +$(eval $(call BuildPackage,xxhash))