Merge pull request #19973 from julienmalik/borg

borgbackup: initial commit
This commit is contained in:
Hannu Nyman 2022-11-29 16:57:10 +02:00 committed by GitHub
commit d115eec84f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 488 additions and 0 deletions

View file

@ -0,0 +1,63 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,42 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,42 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,31 @@
From 99e590f2177148420f3556bbb0dc2e493e94e45f Mon Sep 17 00:00:00 2001
From: Julien Malik <julien.malik@paraiso.me>
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 <alex.gronholm@nextday.fi>',
+ url='https://github.com/agronholm/exceptiongroup',
+ packages=['exceptiongroup'],
+ package_data={'': ['*']},
+ package_dir={'': 'src'},
+ extras_require={'test': ['pytest >= 6']},
+ python_requires='>=3.7',
+)
+

View file

@ -0,0 +1,42 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,46 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,40 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,40 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))

View file

@ -0,0 +1,49 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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 projects 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))

93
utils/xxhash/Makefile Normal file
View file

@ -0,0 +1,93 @@
#
# Copyright (C) 2022 Julien Malik <julien.malik@paraiso.me>
#
# 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 <julien.malik@paraiso.me>
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))