diff --git a/ahriman/.SRCINFO b/ahriman/.SRCINFO index fdc53ad..7242aa4 100644 --- a/ahriman/.SRCINFO +++ b/ahriman/.SRCINFO @@ -1,11 +1,10 @@ pkgbase = ahriman pkgdesc = ArcH linux ReposItory MANager - pkgver = 2.15.3 - pkgrel = 1 - url = https://github.com/arcan1s/ahriman - install = ahriman.install + pkgver = 2.16.0 + pkgrel = 2 + url = https://ahriman.readthedocs.io/ arch = any - license = GPL3 + license = GPL-3.0-or-later makedepends = python-build makedepends = python-flit makedepends = python-installer @@ -13,20 +12,29 @@ pkgbase = ahriman depends = devtools>=1:1.0.0 depends = git depends = pyalpm + depends = python-bcrypt depends = python-inflection - depends = python-passlib depends = python-pyelftools depends = python-requests - optdepends = python-aioauth-client: web server with OAuth2 authorization - optdepends = python-aiohttp: web server - optdepends = python-aiohttp-apispec>=3.0.0: web server - optdepends = python-aiohttp-cors: web server - optdepends = python-aiohttp-jinja2: web server - optdepends = python-aiohttp-security: web server with authorization - optdepends = python-aiohttp-session: web server with authorization + source = https://github.com/arcan1s/ahriman/releases/download/2.16.0/ahriman-2.16.0.tar.gz + source = ahriman.sysusers + source = ahriman.tmpfiles + sha256sums = 2f2eaef7a1fad1fff0d2d441fadf6384dd6d78f5274111bb05c8bc950d3f1bb7 + sha256sums = 0c1cb37a57c47b5159c626f69c08d094c58241319e2a5a3b29c76170b92f09c8 + sha256sums = 720a02af47ac718b31acd9feb73b1b81a5eed4f0bc4ca7a18dfc299dc0da5013 + +pkgname = ahriman + pkgdesc = ArcH linux ReposItory MANager (meta package) + depends = ahriman-core=2.16.0 + depends = ahriman-triggers=2.16.0 + depends = ahriman-web=2.16.0 + +pkgname = ahriman-core + install = ahriman.install + optdepends = ahriman-triggers: additional extensions for the application + optdepends = ahriman-web: web server optdepends = python-boto3: sync to s3 optdepends = python-cerberus: configuration validator - optdepends = python-cryptography: web server with authorization optdepends = python-matplotlib: usage statistics chart optdepends = python-requests-unixsocket2: client report to web server by unix socket optdepends = python-jinja: html report generation @@ -34,11 +42,20 @@ pkgbase = ahriman optdepends = rsync: sync by using rsync backup = etc/ahriman.ini backup = etc/ahriman.ini.d/logging.ini - source = https://github.com/arcan1s/ahriman/releases/download/2.15.3/ahriman-2.15.3.tar.gz - source = ahriman.sysusers - source = ahriman.tmpfiles - sha512sums = 234280aa26eacf3f40098eef84d39c4a5f5a4ec46f894ad1e30c860b7ec71453a3d2697405786ef0348b62f0e1d622b833307f7f73d926a5a0e2b4692a840b2a - sha512sums = b1dd772f8802be99ccba3add5f1e6f78e5e79d0967342668dd12e472651a6b91c342f11fba330caaca421cc3d6c7e2011e09a6bd131f8ba14bbc4a6206cce539 - sha512sums = 331e286cc82a7aca07b0332fab886e7404884a83f942afcee590b4a7a06abc1e3daa2dcf50d45041007ad7f3b93f760bfea5c7d38aa57937b0e103fd65b36564 -pkgname = ahriman +pkgname = ahriman-triggers + pkgdesc = ArcH linux ReposItory MANager, additional extensions + depends = ahriman-core=2.16.0 + backup = etc/ahriman.ini.d/00-triggers.ini + +pkgname = ahriman-web + pkgdesc = ArcH linux ReposItory MANager, web server + depends = ahriman-core=2.16.0 + depends = python-aiohttp-apispec-git + depends = python-aiohttp-cors + depends = python-aiohttp-jinja2 + optdepends = python-aioauth-client: OAuth2 authorization support + optdepends = python-aiohttp-security: authorization support + optdepends = python-aiohttp-session: authorization support + optdepends = python-cryptography: authorization support + backup = etc/ahriman.ini.d/00-web.ini diff --git a/ahriman/LICENSE b/ahriman/LICENSE new file mode 100644 index 0000000..733e885 --- /dev/null +++ b/ahriman/LICENSE @@ -0,0 +1,9 @@ +Binary files, as well as any files describing changes ("patches") to the software that is being built are excluded from this license. They are provided under the license terms of the software they describe changes for. + +Any files containing a license notice are excluded from this license. They are provided under the license terms defined in their respective notices. + +Copyright 2024 Arch Linux Contributors + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/ahriman/PKGBUILD b/ahriman/PKGBUILD index ef7c655..5bed1be 100644 --- a/ahriman/PKGBUILD +++ b/ahriman/PKGBUILD @@ -1,58 +1,90 @@ # Maintainer: Evgeniy Alekseev -pkgname='ahriman' -pkgver=2.15.3 -pkgrel=1 +pkgbase='ahriman' +pkgname=('ahriman' 'ahriman-core' 'ahriman-triggers' 'ahriman-web') +pkgver=2.16.0 +pkgrel=2 pkgdesc="ArcH linux ReposItory MANager" arch=('any') -url="https://github.com/arcan1s/ahriman" -license=('GPL3') -depends=('devtools>=1:1.0.0' 'git' 'pyalpm' 'python-inflection' 'python-passlib' 'python-pyelftools' 'python-requests') +url="https://ahriman.readthedocs.io/" +license=('GPL-3.0-or-later') +depends=('devtools>=1:1.0.0' 'git' 'pyalpm' 'python-bcrypt' 'python-inflection' 'python-pyelftools' 'python-requests') makedepends=('python-build' 'python-flit' 'python-installer' 'python-wheel') -optdepends=('python-aioauth-client: web server with OAuth2 authorization' - 'python-aiohttp: web server' - 'python-aiohttp-apispec>=3.0.0: web server' - 'python-aiohttp-cors: web server' - 'python-aiohttp-jinja2: web server' - 'python-aiohttp-security: web server with authorization' - 'python-aiohttp-session: web server with authorization' - 'python-boto3: sync to s3' - 'python-cerberus: configuration validator' - 'python-cryptography: web server with authorization' - 'python-matplotlib: usage statistics chart' - 'python-requests-unixsocket2: client report to web server by unix socket' - 'python-jinja: html report generation' - 'python-systemd: journal support' - 'rsync: sync by using rsync') -source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgname-$pkgver.tar.gz" - 'ahriman.sysusers' - 'ahriman.tmpfiles') -install="$pkgname.install" -backup=('etc/ahriman.ini' - 'etc/ahriman.ini.d/logging.ini') +source=("https://github.com/arcan1s/ahriman/releases/download/$pkgver/$pkgbase-$pkgver.tar.gz" + "$pkgbase.sysusers" + "$pkgbase.tmpfiles") build() { - cd "$pkgname-$pkgver" + cd "$pkgbase-$pkgver" - python -m build --wheel --no-isolation + python -m build --wheel --no-isolation } -package() { - cd "$pkgname-$pkgver" - - python -m installer --destdir="$pkgdir" "dist/$pkgname-$pkgver-py3-none-any.whl" - - # thanks too PEP517, which we all wanted, you need to install data files manually nowadays - pushd package && find . \( -type f -or -type l \) -exec install -Dm644 "{}" "$pkgdir/usr/{}" \; && popd - - # keep usr/share configs as reference and copy them to /etc - install -Dm644 "$pkgdir/usr/share/$pkgname/settings/ahriman.ini" "$pkgdir/etc/ahriman.ini" - install -Dm644 "$pkgdir/usr/share/$pkgname/settings/ahriman.ini.d/logging.ini" "$pkgdir/etc/ahriman.ini.d/logging.ini" - - install -Dm644 "$srcdir/$pkgname.sysusers" "$pkgdir/usr/lib/sysusers.d/$pkgname.conf" - install -Dm644 "$srcdir/$pkgname.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf" +package_ahriman() { + pkgname='ahriman' + pkgdesc="ArcH linux ReposItory MANager (meta package)" + depends=("$pkgbase-core=$pkgver" "$pkgbase-triggers=$pkgver" "$pkgbase-web=$pkgver") } -sha512sums=('234280aa26eacf3f40098eef84d39c4a5f5a4ec46f894ad1e30c860b7ec71453a3d2697405786ef0348b62f0e1d622b833307f7f73d926a5a0e2b4692a840b2a' - 'b1dd772f8802be99ccba3add5f1e6f78e5e79d0967342668dd12e472651a6b91c342f11fba330caaca421cc3d6c7e2011e09a6bd131f8ba14bbc4a6206cce539' - '331e286cc82a7aca07b0332fab886e7404884a83f942afcee590b4a7a06abc1e3daa2dcf50d45041007ad7f3b93f760bfea5c7d38aa57937b0e103fd65b36564') +package_ahriman-core() { + pkgname='ahriman-core' + optdepends=('ahriman-triggers: additional extensions for the application' + 'ahriman-web: web server' + 'python-boto3: sync to s3' + 'python-cerberus: configuration validator' + 'python-matplotlib: usage statistics chart' + 'python-requests-unixsocket2: client report to web server by unix socket' + 'python-jinja: html report generation' + 'python-systemd: journal support' + 'rsync: sync by using rsync') + install="$pkgbase.install" + backup=('etc/ahriman.ini' + 'etc/ahriman.ini.d/logging.ini') + + cd "$pkgbase-$pkgver" + + python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl" + python subpackages.py "$pkgdir" "$pkgname" + + # keep usr/share configs as reference and copy them to /etc + install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini" "$pkgdir/etc/ahriman.ini" + install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/logging.ini" "$pkgdir/etc/ahriman.ini.d/logging.ini" + + install -Dm644 "$srcdir/$pkgbase.sysusers" "$pkgdir/usr/lib/sysusers.d/$pkgbase.conf" + install -Dm644 "$srcdir/$pkgbase.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/$pkgbase.conf" +} + +package_ahriman-triggers() { + pkgname='ahriman-triggers' + pkgdesc="ArcH linux ReposItory MANager, additional extensions" + depends=("$pkgbase-core=$pkgver") + backup=('etc/ahriman.ini.d/00-triggers.ini') + + cd "$pkgbase-$pkgver" + + python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl" + python subpackages.py "$pkgdir" "$pkgname" + + install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-triggers.ini" "$pkgdir/etc/ahriman.ini.d/00-triggers.ini" +} + +package_ahriman-web() { + pkgname='ahriman-web' + pkgdesc="ArcH linux ReposItory MANager, web server" + depends=("$pkgbase-core=$pkgver" 'python-aiohttp-apispec-git' 'python-aiohttp-cors' 'python-aiohttp-jinja2') + optdepends=('python-aioauth-client: OAuth2 authorization support' + 'python-aiohttp-security: authorization support' + 'python-aiohttp-session: authorization support' + 'python-cryptography: authorization support') + backup=('etc/ahriman.ini.d/00-web.ini') + + cd "$pkgbase-$pkgver" + + python -m installer --destdir="$pkgdir" "dist/$pkgbase-$pkgver-py3-none-any.whl" + python subpackages.py "$pkgdir" "$pkgname" + + install -Dm644 "$pkgdir/usr/share/$pkgbase/settings/ahriman.ini.d/00-web.ini" "$pkgdir/etc/ahriman.ini.d/00-web.ini" +} +sha256sums=('2f2eaef7a1fad1fff0d2d441fadf6384dd6d78f5274111bb05c8bc950d3f1bb7' + '0c1cb37a57c47b5159c626f69c08d094c58241319e2a5a3b29c76170b92f09c8' + '720a02af47ac718b31acd9feb73b1b81a5eed4f0bc4ca7a18dfc299dc0da5013') diff --git a/ahriman/ahriman.install b/ahriman/ahriman.install index a8ec42d..09bfb51 100644 --- a/ahriman/ahriman.install +++ b/ahriman/ahriman.install @@ -2,6 +2,7 @@ post_upgrade() { local breakpoints=( 2.9.0-1 2.12.0-1 + 2.16.0-1 ) for v in "${breakpoints[@]}"; do @@ -21,7 +22,7 @@ It was found that there was an upgrade from old devtools package to the new one, * remove build chroot, e.g.: ahriman service-clean --chroot; * update local databases: ahriman update --no-aur --no-local --no-manual -yy. -For more information kindly refer to migration notes https://ahriman.readthedocs.io/en/stable/migration.html. +For more information kindly refer to migration notes https://ahriman.readthedocs.io/en/stable/migrations/2.9.0.html. EOF } @@ -37,6 +38,16 @@ Whereas old local tree is still supported it is highly recommended to migrate to * enable web and timer services again by using x86_64-aur suffix, where x86_64 is the repository architecture and aur is the repository name. -For more information kindly refer to migration notes https://ahriman.readthedocs.io/en/stable/migration.html. +For more information kindly refer to migration notes https://ahriman.readthedocs.io/en/stable/migrations/2.12.0.html. +EOF +} + +_2_16_0_1_changes() { + cat << EOF +In order to prepare to python 3.13 the project now uses bcrypt instead of passlib for generating and validating +passwords, because the passlib seems to be unmaintained and will be broken since then. If you are using password +authentication, you'd need to generate passwords again. + +For more information kindly refer to migration notes https://ahriman.readthedocs.io/en/stable/migrations/2.16.0.html. EOF } diff --git a/python-aiohttp-apispec-git/.SRCINFO b/python-aiohttp-apispec-git/.SRCINFO new file mode 100644 index 0000000..83ff613 --- /dev/null +++ b/python-aiohttp-apispec-git/.SRCINFO @@ -0,0 +1,19 @@ +pkgbase = python-aiohttp-apispec-git + pkgdesc = Build and document REST APIs with aiohttp and apispec (git version) + pkgver = 3.0.0b2.r8.ge37d587 + pkgrel = 3 + url = https://github.com/maximdanilchenko/aiohttp-apispec + arch = any + license = MIT + makedepends = git + makedepends = python-setuptools + depends = python-aiohttp + depends = python-apispec + depends = python-jinja + depends = python-webargs + provides = python-aiohttp-apispec=3.0.0b2 + conflicts = python-aiohttp-apispec + source = python-aiohttp-apispec-git::git+https://github.com/maximdanilchenko/aiohttp-apispec.git + sha512sums = SKIP + +pkgname = python-aiohttp-apispec-git diff --git a/python-aiohttp-apispec-git/PKGBUILD b/python-aiohttp-apispec-git/PKGBUILD new file mode 100644 index 0000000..75a777f --- /dev/null +++ b/python-aiohttp-apispec-git/PKGBUILD @@ -0,0 +1,34 @@ +# Maintainer: Evgenii Alekseev + +_pkgname=aiohttp-apispec +pkgname=python-$_pkgname-git +pkgver=3.0.0b2.r8.ge37d587 +pkgrel=3 +pkgdesc='Build and document REST APIs with aiohttp and apispec (git version)' +arch=('any') +url='https://github.com/maximdanilchenko/aiohttp-apispec' +license=('MIT') +depends=('python-aiohttp' 'python-apispec' 'python-jinja' 'python-webargs') +makedepends=('git' 'python-setuptools') +conflicts=("python-$_pkgname") +provides=("python-$_pkgname=${pkgver%.r*}") +source=("$pkgname::git+$url.git") +sha512sums=('SKIP') + +pkgver() { + cd "$pkgname" + git describe --tags --long --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g' | sed 's/^[A-Za-z]*//' +} + +build() { + cd "$pkgname" + python setup.py build +} + +package() { + cd "$pkgname" + python setup.py install --root="$pkgdir" --optimize=1 --skip-build + # we don't need to distribute examples + rm -r "$pkgdir$(python -c 'import site; print(site.getsitepackages()[0])')/example" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/python-aiohttp-cors/.SRCINFO b/python-aiohttp-cors/.SRCINFO new file mode 100644 index 0000000..496a83b --- /dev/null +++ b/python-aiohttp-cors/.SRCINFO @@ -0,0 +1,13 @@ +pkgbase = python-aiohttp-cors + pkgdesc = CORS support for aiohttp + pkgver = 0.7.0 + pkgrel = 8 + url = https://github.com/aio-libs/aiohttp-cors + arch = any + license = Apache + makedepends = python-setuptools + depends = python-aiohttp + source = https://files.pythonhosted.org/packages/source/a/aiohttp-cors/aiohttp-cors-0.7.0.tar.gz + sha256sums = 4d39c6d7100fd9764ed1caf8cebf0eb01bf5e3f24e2e073fda6234bc48b19f5d + +pkgname = python-aiohttp-cors diff --git a/python-aiohttp-cors/PKGBUILD b/python-aiohttp-cors/PKGBUILD new file mode 100644 index 0000000..47fe556 --- /dev/null +++ b/python-aiohttp-cors/PKGBUILD @@ -0,0 +1,24 @@ +# Maintainer: Daniel M. Capella + +_name=aiohttp-cors +pkgname=python-aiohttp-cors +pkgver=0.7.0 +pkgrel=8 +pkgdesc='CORS support for aiohttp' +depends=('python-aiohttp') +makedepends=('python-setuptools') +arch=('any') +url=https://github.com/aio-libs/aiohttp-cors +license=('Apache') +source=("https://files.pythonhosted.org/packages/source/${_name::1}/$_name/$_name-$pkgver.tar.gz") +sha256sums=('4d39c6d7100fd9764ed1caf8cebf0eb01bf5e3f24e2e073fda6234bc48b19f5d') + +build() { + cd $_name-$pkgver + python setup.py build +} + +package() { + cd $_name-$pkgver + python setup.py install --root="$pkgdir" --optimize=1 --skip-build +} diff --git a/python-aiohttp-jinja2/.SRCINFO b/python-aiohttp-jinja2/.SRCINFO new file mode 100644 index 0000000..9550d29 --- /dev/null +++ b/python-aiohttp-jinja2/.SRCINFO @@ -0,0 +1,19 @@ +pkgbase = python-aiohttp-jinja2 + pkgdesc = jinja2 template renderer for aiohttp.web + pkgver = 1.6 + pkgrel = 2 + url = http://aiohttp-jinja2.aio-libs.org/ + arch = any + license = Apache-2.0 + checkdepends = python-pytest-aiohttp + checkdepends = python-pytest-asyncio + makedepends = python-build + makedepends = python-installer + makedepends = python-setuptools + makedepends = python-wheel + depends = python-aiohttp + depends = python-jinja + source = https://github.com/aio-libs/aiohttp-jinja2/releases/download/v1.6/aiohttp-jinja2-1.6.tar.gz + sha256sums = a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2 + +pkgname = python-aiohttp-jinja2 diff --git a/python-aiohttp-jinja2/PKGBUILD b/python-aiohttp-jinja2/PKGBUILD new file mode 100644 index 0000000..711ad1d --- /dev/null +++ b/python-aiohttp-jinja2/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: Anton Kudelin + +_pyname=aiohttp-jinja2 +pkgname=python-$_pyname +pkgver=1.6 +pkgrel=2 +pkgdesc='jinja2 template renderer for aiohttp.web' +arch=(any) +url='http://aiohttp-jinja2.aio-libs.org/' +license=(Apache-2.0) +depends=(python-aiohttp python-jinja) +makedepends=(python-build python-installer python-setuptools python-wheel) +checkdepends=(python-pytest-aiohttp python-pytest-asyncio) +source=(https://github.com/aio-libs/$_pyname/releases/download/v$pkgver/$_pyname-$pkgver.tar.gz) +sha256sums=('a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2') + +build() { + cd "$srcdir/$_pyname-$pkgver" + python -m build \ + --wheel \ + --no-isolation \ + --skip-dependency-check +} + +check() { + cd "$srcdir/$_pyname-$pkgver" + + python -m venv --system-site-packages test-env + test-env/bin/python -m installer dist/*.whl + sed -i '/--cov/d' pytest.ini + + test-env/bin/python -m pytest -v +} + +package() { + cd "$srcdir/$_pyname-$pkgver" + python -m installer \ + --destdir="$pkgdir" \ + --compile-bytecode=2 \ + dist/*.whl +}