summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2022-10-13 12:39:04 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2022-10-19 17:18:14 -0400
commit0bcfc852caa1e548c59a7f19818be980cb5d8b47 (patch)
tree5f060a8dfc973a22101ea0dd9b59e4e5fb854f1c
parent741b2b35a61fe632d9aedb77f1728ac658d8e947 (diff)
sq goblin python deps
-rw-r--r--pcr/mediagoblin/PKGBUILD95
-rw-r--r--pcr/python-amqp2/PKGBUILD42
-rw-r--r--pcr/python-billiard3/PKGBUILD45
-rw-r--r--pcr/python-celery4.3/PKGBUILD86
-rw-r--r--pcr/python-celery4.3/celery.tmpfiles.d2
-rw-r--r--pcr/python-celery4.3/celery@.service15
-rw-r--r--pcr/python-docutils0.16/PKGBUILD53
-rw-r--r--pcr/python-exifread/PKGBUILD36
-rw-r--r--pcr/python-jinja2/PKGBUILD54
-rw-r--r--pcr/python-kombu4/PKGBUILD58
-rw-r--r--pcr/python-markupsafe2.0/PKGBUILD42
-rw-r--r--pcr/python-pastescript/PKGBUILD35
-rw-r--r--pcr/python-pyld/0001-Fixed-remote-frame-context-handling.patch253
-rw-r--r--pcr/python-pyld/PKGBUILD39
-rw-r--r--pcr/python-soundfile/PKGBUILD40
-rw-r--r--pcr/python-sphinx4/PKGBUILD77
-rw-r--r--pcr/python-vine1.3/PKGBUILD41
-rw-r--r--pcr/python-werkzeug1/PKGBUILD50
-rw-r--r--pcr/python-wtforms2/PKGBUILD44
19 files changed, 1088 insertions, 19 deletions
diff --git a/pcr/mediagoblin/PKGBUILD b/pcr/mediagoblin/PKGBUILD
index 71ae2add8..aba11d263 100644
--- a/pcr/mediagoblin/PKGBUILD
+++ b/pcr/mediagoblin/PKGBUILD
@@ -1,5 +1,30 @@
# Maintainer (aur): Immae <ismael.bouya@normalesup.org>
-# Maintainer: Isaac David <isacdaavid@at@isacdaavid@dot@info>
+# Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - allow building offline (no pip, npm, etc)
+# - dependencies packaged only for mediagoblin:
+# * python-billiard3
+# * python-celery4.2
+# * python-docutils0.16
+# * python-exifread
+# * python-jinja2
+# * python-kombu4
+# * python-markupsafe2.0 <- python-jinja2
+# * python-pastescript
+# * python-pyld
+# * python-soundfile
+# * python-sphinx4
+# * python-vine1.3
+# * python-werkzeug1
+# * python-wtforms2
+# file conflicts:
+# mediagoblin: /usr/bin/jsonschema ekzistas en dosiersistemo (python-jsonschema ĝin posedas)
+# mediagoblin: /usr/bin/markdown_py ekzistas en dosiersistemo (python-markdown ĝin posedas)
+# mediagoblin: /usr/bin/pybabel ekzistas en dosiersistemo (python-babel ĝin posedas)
+# mediagoblin: /usr/bin/pygmentize ekzistas en dosiersistemo (python-pygments ĝin posedas)
pkgname=mediagoblin
@@ -9,7 +34,32 @@ pkgdesc="A free software media publishing platform"
url=https://mediagoblin.org
license=(AGPL)
arch=(armv7h i686 x86_64)
-depends=(python-babel python-lxml python-pillow nodejs sqlite)
+depends=(nodejs python-lxml python-pillow sqlite)
+makedepends=(
+python-alembic
+python-amqp2
+python-babel
+python-bcrypt
+python-billiard3
+python-celery4.2
+python-certifi
+python-configobj
+python-dateutil
+python-docutils0.16
+python-email-validator
+python-exifread
+python-feedgenerator
+python-itsdangerous
+python-jinja2
+python-jsonschema
+python-kombu4
+python-markdown
+python-oauthlib
+python-paste
+python-pastedeploy
+python-pastescript python-pyld=1.0.5 python-setuptools python-soundfile python-sphinx4 python-sqlalchemy1.3 python-unidecode
+python-vine1.3
+python-waitress python-werkzeug1 python-wtforms2)
optdepends=('postgresql: to use the postgresql database backend'
'python-psycopg2: to use the postgresql database backend'
'python-gobject: to handle videos'
@@ -33,7 +83,7 @@ sha256sums=('64706dd2d1d39cdc4c269b04858495d382c6ead5274b57767acd9059e43b4bce'
'f636d02f86d2dab5ecc901be5b0f7c42366500393f22dfdc7e354ca299fca65a'
'ac914d60886d9bf53d3f40b8b00a60d46ada1cac9130210e045a4776d898e884'
'9adf338f5dbfb94ee7ae29433091b6991a1fa39a6135a8295f9f1cc1fde0edc1'
- 'abb6c4c4e54d4372adfe67ab22371ad625505098311955e5ae8e34102b059d47'
+ 'fd6f6dea7f933d4d006bbe1702d9f2a5de4d09595c913a00a51b6b25b894c39c'
'79bb2cf315dc760e0eee16c9c9e990c78e56ea0a8fa3c46f0b5ff2c1fc4e4974')
@@ -41,8 +91,16 @@ prepare()
{
cd "${srcdir}"/${pkgname}-${pkgver}
- sed -i '/^git/d' bootstrap.sh
+ # non-VCS patching
+ sed -i '/^git submodule /d' bootstrap.sh
+ # non-pip patching
+ sed -i 's|py-bcrypt|bcrypt|' setup.cfg
+
+ # bug fixes
+ # the `--with-virtualenv` handling borks the generated configure script
+ # https://todo.sr.ht/~mediagoblin/mediagoblin/12
+ # offered upstream https://lists.gnu.org/archive/html/mediagoblin-devel/2022-10/msg00001.html
echo "applying ac.patch"
patch -Np1 < "${srcdir}"/ac.patch
}
@@ -52,34 +110,33 @@ build()
cd "${srcdir}"/${pkgname}-${pkgver}
./bootstrap.sh
- ./configure
+ ./configure --prefix=/usr
make
}
package()
{
cd "${srcdir}"/${pkgname}-${pkgver}
- rm -rf .git .gitignore
+ make DESTDIR="${pkgdir}" install
+
+return 0
install -dm755 "${pkgdir}"/usr/share/webapps/mediagoblin/
cp -a . "${pkgdir}"/usr/share/webapps/mediagoblin
-
- cd "${pkgdir}"/usr/share/webapps/mediagoblin
- find . -name '*.pyc' -delete
- find . -type f -exec sed -Ei \
+ find "${pkgdir}"/usr/share/webapps/mediagoblin -name '*.pyc' -delete
+ find "${pkgdir}"/usr/share/webapps/mediagoblin -type f -exec sed -Ei \
"s|${srcdir}/${pkgname}(-${pkgver})?|/usr/share/webapps/${pkgname}|g" {} \;
- install -dm755 "${pkgdir}"/var/lib/mediagoblin
install -dm755 "${pkgdir}"/etc/webapps/mediagoblin
+ install -Dm644 "${srcdir}"/paste_local.ini "${pkgdir}"/etc/webapps/mediagoblin/paste_local.ini
+ install -Dm644 "${srcdir}"/mediagoblin_local.ini "${pkgdir}"/etc/webapps/mediagoblin/mediagoblin_local.ini
+ ln -s /etc/webapps/mediagoblin/paste_local.ini "${pkgdir}"/usr/share/webapps/mediagoblin/paste_local.ini
+ ln -s /etc/webapps/mediagoblin/mediagoblin_local.ini "${pkgdir}"/usr/share/webapps/mediagoblin/mediagoblin_local.ini
- install -Dm644 "$srcdir"/paste_local.ini "${pkgdir}"/etc/webapps/mediagoblin/paste_local.ini
- ln -s /etc/webapps/mediagoblin/paste_local.ini "${pkgdir}"/usr/share/webapps/mediagoblin/paste_local.ini
- install -Dm644 "$srcdir"/mediagoblin_local.ini "${pkgdir}"/etc/webapps/mediagoblin/mediagoblin_local.ini
- ln -s /etc/webapps/mediagoblin/mediagoblin_local.ini "${pkgdir}"/usr/share/webapps/mediagoblin/mediagoblin_local.ini
-
+ install -dm755 "${pkgdir}"/var/lib/mediagoblin
ln -s /var/lib/mediagoblin/ "${pkgdir}"/usr/share/webapps/mediagoblin/user_dev
- install -Dm644 "$srcdir"/mediagoblin-paster.service "${pkgdir}"/usr/lib/systemd/system/mediagoblin-paster.service
- install -Dm644 "$srcdir"/mediagoblin-celeryd.service "${pkgdir}"/usr/lib/systemd/system/mediagoblin-celeryd.service
- install -Dm644 "$srcdir"/mediagoblin-tmpfiles.conf "${pkgdir}"/usr/lib/tmpfiles.d/mediagoblin.conf
+ install -Dm644 "${srcdir}"/mediagoblin-paster.service "${pkgdir}"/usr/lib/systemd/system/mediagoblin-paster.service
+ install -Dm644 "${srcdir}"/mediagoblin-celeryd.service "${pkgdir}"/usr/lib/systemd/system/mediagoblin-celeryd.service
+ install -Dm644 "${srcdir}"/mediagoblin-tmpfiles.conf "${pkgdir}"/usr/lib/tmpfiles.d/mediagoblin.conf
}
diff --git a/pcr/python-amqp2/PKGBUILD b/pcr/python-amqp2/PKGBUILD
new file mode 100644
index 000000000..c4b47749e
--- /dev/null
+++ b/pcr/python-amqp2/PKGBUILD
@@ -0,0 +1,42 @@
+# Maintainer (arch): Felix Yan <felixonmars@archlinux.org>
+# Contributor: mutantmonkey <aur@mutantmonkey.in>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - down-grade of 'python-amqp'
+# - build dependency of 'mediagoblin' (<2.7 >=2.6)
+
+
+pkgname=python-amqp2
+pkgver=2.6.1
+pkgrel=1
+pkgdesc="Low-level AMQP client for Python (fork of amqplib)"
+arch=('any')
+url="https://github.com/celery/py-amqp"
+license=('custom:BSD3') # https://github.com/celery/py-amqp/pull/104
+provides=(python-amqp)
+conflicts=(python-amqp)
+depends=('python-vine1.3')
+checkdepends=('python-case' 'python-pytest-sugar')
+source=("https://github.com/celery/py-amqp/archive/v$pkgver/$pkgname-$pkgver.tar.gz")
+sha512sums=('47e2d848df8023e31969fef54456eced1c63db49d7570264c6fdb969399d7a97998e948cf65995f8216cbf9932795573c13b6b08bcbcd5d9865155caaeee7aeb')
+
+build() {
+ cd py-amqp-$pkgver
+ python setup.py build
+}
+
+check() {
+ # FAILED t/unit/test_transport.py::test_AbstractTransport_connect::test_connect_already_connected
+ return 0
+
+ cd py-amqp-$pkgver
+ pytest
+}
+
+package() {
+ cd py-amqp-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1
+ install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/pcr/python-billiard3/PKGBUILD b/pcr/python-billiard3/PKGBUILD
new file mode 100644
index 000000000..7dca54850
--- /dev/null
+++ b/pcr/python-billiard3/PKGBUILD
@@ -0,0 +1,45 @@
+# Maintainer (arch): Felix Yan <felixonmars@archlinux.org>
+# Contributor: Benjamin A. Shelton <zancarius@gmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - down-grade of 'python-billiard'
+# - build dependency of 'mediagoblin' (<4.0)
+
+
+pkgname=python-billiard3
+pkgver=3.6.4.0
+pkgrel=3
+pkgdesc="Python multiprocessing fork with improvements and bugfixes."
+arch=('any')
+url="https://pypi.org/project/billiard/"
+license=('custom:BSD3')
+provides=(python-billiard)
+conflicts=(python-billiard)
+depends=('python')
+makedepends=('python-setuptools')
+checkdepends=('python-pytest-runner' 'python-case' 'python-psutil')
+source=("https://pypi.io/packages/source/b/billiard/billiard-$pkgver.tar.gz")
+sha512sums=('9f2a44024e45c4e7667472a0a3ade7caae755ec7c163929433f818e4b87165218b9cc9545bdee2254e7159c206e525306e383d38906b00fd5428bd1616c39b8f')
+
+prepare() {
+ cd billiard-$pkgver
+ sed -i 's/< *5/<6/' requirements/test.txt
+}
+
+build() {
+ cd billiard-$pkgver
+ python setup.py build
+}
+
+check() {
+ cd billiard-$pkgver
+ python setup.py pytest
+}
+
+package() {
+ cd billiard-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1 --skip-build
+ install -Dm664 LICENSE.txt -t "$pkgdir"/usr/share/licenses/$pkgname/
+}
diff --git a/pcr/python-celery4.3/PKGBUILD b/pcr/python-celery4.3/PKGBUILD
new file mode 100644
index 000000000..cabb24929
--- /dev/null
+++ b/pcr/python-celery4.3/PKGBUILD
@@ -0,0 +1,86 @@
+# Maintainer: Felix Yan <felixonmars@archlinux.org>
+# Contributor: Marcin Kolenda <marcinkolenda419@gmail.com>
+# Contributor: Valentin Haloiu <vially.ichb+aur@gmail.com>
+# Contributor: Lukas Linhart <bugs@almad.net>
+# Contributor: Marco Elver <marco.elver AT gmail.com>
+# Contributor: apkawa <apkawa@gmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - remove python2 split package
+# - down-grade of 'python-celery'
+# - build dependency of 'mediagoblin' (<4.3.0)
+
+
+pkgname=python-celery4.2
+pkgver=4.2.2
+pkgrel=1
+pkgdesc='Distributed Asynchronous Task Queue'
+arch=('any')
+url='http://celeryproject.org/'
+license=('custom:BSD3')
+provides=('python-celery')
+conflicts=('python-celery')
+makedepends=('python-setuptools' 'python2-setuptools' 'python-kombu' 'python2-kombu'
+ 'python-billiard' 'python2-billiard' 'python-pytz' 'python2-pytz')
+makedepends=( ${makedepends[*]/python2-*/} )
+checkdepends=('python-pytest32' 'python2-pytest32' 'python-pytest-runner' 'python2-pytest-runner'
+ 'python-case' 'python2-case' 'python-pyopenssl' 'python2-pyopenssl' 'python-gevent'
+ 'python2-gevent' 'python2-librabbitmq' 'python-pymongo' 'python2-pymongo'
+ 'python-msgpack' 'python2-msgpack' 'python-pyro' 'python2-pyro' 'python-redis'
+ 'python2-redis' 'python-sqlalchemy' 'python2-sqlalchemy' 'python-boto' 'python2-boto'
+ 'python-yaml' 'python2-yaml' 'python-pyzmq' 'python2-pyzmq' 'python-eventlet'
+ 'python2-eventlet')
+checkdepends=( ${makedepends[*]/python2-*/} )
+source=("https://pypi.io/packages/source/c/celery/celery-$pkgver.tar.gz"
+ "https://github.com/celery/celery/commit/e7002769211f7340f38df80b3112706a8e07cafb.patch"
+ "https://github.com/celery/celery/commit/1c3a15938d0b9dde674d4666689d6a6c733d64e4.patch"
+ celery@.service
+ celery.tmpfiles.d)
+options=('!emptydirs')
+sha512sums=('22183c8bfed0c17aa50ec8bda16fb4faf5e5e2cab4265124f0831929dc6414daabf182c4b07a8d6385a4954a440c3c99cfd1e784b126f566fcdbb887feeefd9b'
+ 'f3778f20233f50fa0fa39c7f8b5ca1f5c9dafd342aa58ccb9083e8126d229a97d3a28ef9892d713659113f440bfbbe5cb2b4085a1c5fa4dbf9047670ff184d8d'
+ '470bbd68cbc31a48cedac4e09a45d0f414bd765450e65697d443f0e4ace8eb141735b7a4bd5d23e912d1f9d0014770bc8196bef5625b54162c7ad0df4cb7263a'
+ '3c6c9dbdacca2de12d49c03526b34797fd867c14d04115af0d1fda64d2848a5d3f64ceb6d284be319a81d932dc86e69c157b6f5f859f2fa213fc2f43a6052c65'
+ '67279b75c3b44d065811c9c90aee006296164000912d5bb97c74956b26ee4ad4f0847e846052a896d379848b869c849300367e676d3f689cf29e3a0c7ae5310b')
+
+prepare() {
+ # python 3.7 compat
+ patch -p1 -d celery-$pkgver < e7002769211f7340f38df80b3112706a8e07cafb.patch
+ patch -p1 -d celery-$pkgver < 1c3a15938d0b9dde674d4666689d6a6c733d64e4.patch
+ sed -i -e 's/< *3.6/<4/' -e 's/< *4.4/<5/' celery-$pkgver/requirements/default.txt
+ cp -a celery-$pkgver{,-py2}
+}
+
+build() {
+ cd "$srcdir"/celery-$pkgver
+ python setup.py build
+}
+
+check() {
+ cd "$srcdir"/celery-$pkgver
+ # Project does not officially support python 3.7, and does not wish us to
+ # open bugreports for python 3.7 issues. Backport all known python 3.7 fixes
+ # and hope for the best. https://github.com/celery/celery/issues/4913
+ python setup.py pytest || warning "tests fail on python 3.7: https://github.com/celery/celery/issues/4913"
+}
+
+package() {
+ depends=('python-kombu' 'python-billiard' 'python-pytz')
+ optdepends=('python-pyopenssl: for celery.security'
+ 'python-pymongo: for celery.backends.mongodb'
+ 'python-msgpack: for using the msgpack serializer'
+ 'python-pyro: for using Pyro4 message transport'
+ 'python-redis: for celery.backends.redis'
+ 'python-sqlalchemy: for celery.backends.database'
+ 'python-boto: for SQS transport'
+ 'python-yaml: for using the yaml serializer'
+ 'python-pyzmq: for using ZeroMQ transport')
+
+ cd "$srcdir"/celery-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1 --skip-build
+ install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+ install -Dm644 "$srcdir"/celery@.service "$pkgdir"/usr/lib/systemd/system/celery@.service
+ install -Dm644 "$srcdir"/celery.tmpfiles.d "$pkgdir"/usr/lib/tmpfiles.d/celery.conf
+}
diff --git a/pcr/python-celery4.3/celery.tmpfiles.d b/pcr/python-celery4.3/celery.tmpfiles.d
new file mode 100644
index 000000000..9e6a8b783
--- /dev/null
+++ b/pcr/python-celery4.3/celery.tmpfiles.d
@@ -0,0 +1,2 @@
+d /run/celery 0755 - - - -
+d /var/log/celery 0755 - - - -
diff --git a/pcr/python-celery4.3/celery@.service b/pcr/python-celery4.3/celery@.service
new file mode 100644
index 000000000..ce38b5c89
--- /dev/null
+++ b/pcr/python-celery4.3/celery@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Celery Nodes Daemon
+After=network.target
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/celery/%I.conf
+ExecStart=/usr/bin/celery multi start $CELERYD_NODES --pidfile=/run/celery/%n.pid --logfile=/var/log/celery/%n.log --loglevel="INFO" $CELERYD_OPTS
+ExecStop=/usr/bin/celery multi stopwait $CELERYD_NODES --pidfile=/run/celery/%n.pid
+ExecReload=/usr/bin/celery multi restart $CELERYD_NODES --pidfile=/run/celery/%n.pid --logfile=/var/log/celery/%n.log --loglevel="INFO" $CELERYD_OPTS
+KillMode=control-group
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/pcr/python-docutils0.16/PKGBUILD b/pcr/python-docutils0.16/PKGBUILD
new file mode 100644
index 000000000..c4305c055
--- /dev/null
+++ b/pcr/python-docutils0.16/PKGBUILD
@@ -0,0 +1,53 @@
+# Maintainer (arch): Felix Yan <felixonmars@archlinux.org>
+# Maintainer (arch): Daniel M. Capella <polyzen@archlinux.org>
+# Contributor: Sébastien Luttringer
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-docutils')
+# - build dependency of 'mediagoblin' (<0.18)
+
+
+_name=docutils
+pkgname=python-docutils0.16
+pkgver=0.16
+pkgrel=2
+epoch=1
+pkgdesc='Set of tools for processing plaintext docs into formats such as HTML, XML, or LaTeX'
+arch=('any')
+url='http://docutils.sourceforge.net'
+license=(custom:PD custom:BSD2 GPL3 custom:PSF2.1.1 PSF)
+provides=(python-docutils)
+conflicts=(python-docutils)
+depends=('python')
+makedepends=('python-setuptools')
+source=("https://downloads.sourceforge.net/$_name/$_name-$pkgver.tar.gz")
+sha512sums=('1a4e1bdedc79388e73dd438ae6d4d2ba67a005c745613452e027c0f6b378058b528f3329d650454fc0d3dd5253a1eb95dc52b35846cbfb4d8618d9bd4c3ad934')
+
+build() {
+ cd $_name-$pkgver
+ python setup.py build
+}
+
+check() {
+ cd $_name-$pkgver
+ # we need utf locale to valid utf8 tests
+ export LANG=en_US.UTF-8
+ PYTHONPATH="$PWD/build/python/" python test/alltests.py
+}
+
+package() {
+ cd $_name-$pkgver
+ python setup.py build install --root="$pkgdir" --optimize=1
+ # symlink without .py
+ for f in "$pkgdir"/usr/bin/*.py; do
+ ln -s "$(basename $f)" "$pkgdir/usr/bin/$(basename $f .py)"
+ done
+ # setup license
+ install -D -m644 COPYING.txt "$pkgdir/usr/share/licenses/$pkgname/COPYING.txt"
+ install -D -m644 licenses/BSD-2-Clause.txt "$pkgdir/usr/share/licenses/$pkgname/BSD-2-Clause.txt"
+ install -D -m644 licenses/python-2-1-1.txt "$pkgdir/usr/share/licenses/$pkgname/python-2-1-1.txt"
+}
diff --git a/pcr/python-exifread/PKGBUILD b/pcr/python-exifread/PKGBUILD
new file mode 100644
index 000000000..2fabdaecc
--- /dev/null
+++ b/pcr/python-exifread/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer (aur): nblock <nblock [/at\] archlinux DOT us>
+# Contributor: Simon Chabot <simon dot chabot at etu dot utc dot fr>
+# Contributor: Christopher Loen <christopherloen at gmail dot com>
+# Contributor: David McInnis <davidm@eagles.ewu.edu>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes
+# - build dependency of 'mediagoblin'
+
+
+pkgname=python-exifread
+_name="ExifRead"
+pkgver=3.0.0
+pkgrel=2
+pkgdesc="Python library to extract EXIF data from tiff and jpeg files"
+arch=('any')
+url="https://github.com/ianare/exif-py"
+license=('custom:BSD3')
+depends=('python')
+makedepends=('python-setuptools')
+source=("https://files.pythonhosted.org/packages/source/${_name::1}/$_name/$_name-$pkgver.tar.gz")
+sha1sums=('1558d678b959b9c374c6d932700762d3d261a831')
+sha256sums=('0ac5a364169dbdf2bd62f94f5c073970ab6694a3166177f5e448b10c943e2ca4')
+
+build() {
+ cd "$_name-$pkgver"
+ python setup.py build
+}
+
+package() {
+ cd "$_name-$pkgver"
+ install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ python setup.py install --root="$pkgdir/" --optimize=1 --skip-build
+}
diff --git a/pcr/python-jinja2/PKGBUILD b/pcr/python-jinja2/PKGBUILD
new file mode 100644
index 000000000..b62412650
--- /dev/null
+++ b/pcr/python-jinja2/PKGBUILD
@@ -0,0 +1,54 @@
+# Maintainer (arch): Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: David Runge <dave@sleepmap.de>
+# Contributor: Peter Baldwin <bald_pete@hotmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-jinja')
+# - build dependency of 'mediagoblin' (<3.0.0)
+
+
+pkgname=python-jinja2
+pkgver=2.11.3
+pkgrel=2
+pkgdesc="A simple pythonic template language written in Python"
+arch=('any')
+url="https://palletsprojects.com/p/jinja/"
+license=('custom:BSD3')
+provides=('python-jinja')
+conflicts=('python-jinja')
+depends=('python-markupsafe2.0')
+makedepends=('python-setuptools')
+optdepends=('python-babel: for i18n support')
+# checkdepends=('python-pytest')
+source=(https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-$pkgver.tar.gz)
+sha256sums=('a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6')
+
+build() {
+ cd Jinja2-$pkgver
+ python3 setup.py build
+}
+
+check() {
+ cd Jinja2-$pkgver
+
+ # large number of failing tests
+ return 0
+
+ # https://github.com/pypa/setuptools/issues/2466
+ PYTHONPATH=build/lib pytest \
+ --deselect tests/test_bytecode_cache.py::TestByteCodeCache::test_simple \
+ --deselect tests/test_loader.py::TestLoaders::test_package_loader \
+ --deselect tests/test_loader.py::TestLoaders::test_choice_loader
+}
+
+package() {
+ cd Jinja2-$pkgver
+ python3 setup.py install --root="$pkgdir" --optimize=1 --skip-build
+ install -Dm644 LICENSE.rst -t "$pkgdir/usr/share/licenses/$pkgname"
+
+ install -Dm644 ext/Vim/jinja.vim -t "$pkgdir/usr/share/vim/vimfiles/syntax"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/python-kombu4/PKGBUILD b/pcr/python-kombu4/PKGBUILD
new file mode 100644
index 000000000..8bf49785d
--- /dev/null
+++ b/pcr/python-kombu4/PKGBUILD
@@ -0,0 +1,58 @@
+# Maintainer (arch): Felix Yan <felixonmars@archlinux.org>
+# Contributor: mutantmonkey <aur@mutantmonkey.in>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - down-grade of 'python-kombu'
+# - build dependency of 'mediagoblin' (<5)
+
+
+pkgname=python-kombu4
+pkgver=4.6.11
+pkgrel=1
+pkgdesc='A messaging library for Python'
+arch=('any')
+url="https://kombu.readthedocs.org/"
+license=('custom:BSD3')
+options=('!emptydirs')
+provides=(python-kombu)
+conflicts=(python-kombu)
+depends=('python-amqp')
+optdepends=('python-pymongo: for MongoDB support'
+ 'python-msgpack: for MessagePack support'
+ 'python-pyro: for Pyro support'
+ 'python-redis: for Redis support'
+ 'python-sqlalchemy: for SQLAlchemy support'
+ 'python-boto3: for Amazon SQS support'
+ 'python-pycurl: for Amazon SQS support'
+ 'python-yaml: for YAML support')
+ # 'python-softlayer-messaging: for SoftLayer Message Queue support': Not packaged yet
+ # 'python-kazoo: for Zookeeper support': Not packaged yet
+ # 'python-librabbitmq: C optimization for AMQP transport' Not available for python 3 yet
+makedepends=('python-setuptools')
+checkdepends=('python-pytest' 'python-redis' 'python-yaml' 'python-msgpack' 'python-pycurl'
+ 'python-case' 'python-pymongo' 'python-pytz' 'python-pytest-sugar' 'python-sqlalchemy'
+ 'python-pyro' 'python-boto3')
+checkdepends+=(python-vine1.3)
+source=("$pkgname-$pkgver.tar.gz::https://github.com/celery/kombu/archive/v$pkgver.tar.gz")
+sha512sums=('67656c63e42c1cf018c438d60edece925cdf1a25abb46c9b413bfca3032ba108550277ced70f6696d61561d501fe49f85f0f8ee063405ac650662aa24d0cc95a')
+
+build() {
+ cd kombu-$pkgver
+ python setup.py build
+}
+
+check() {
+ # many tests fail
+ return 0
+
+ cd kombu-$pkgver
+ python -m pytest
+}
+
+package() {
+ cd kombu-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1 --skip-build
+ install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/pcr/python-markupsafe2.0/PKGBUILD b/pcr/python-markupsafe2.0/PKGBUILD
new file mode 100644
index 000000000..dbbc04be0
--- /dev/null
+++ b/pcr/python-markupsafe2.0/PKGBUILD
@@ -0,0 +1,42 @@
+# Maintainer (arch) : Felix Yan <felixonmars@archlinux.org>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Alex Anthony <alex.anthony28991@gmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-markupsafe')
+# - build dependency of 'mediagoblin' -> 'python-jinja2'
+
+
+pkgname=python-markupsafe2.0
+pkgver=2.0.1
+pkgrel=3
+pkgdesc="Implements a XML/HTML/XHTML Markup safe string for Python"
+arch=('any')
+url="https://pypi.python.org/pypi/MarkupSafe"
+license=('custom:BSD3')
+provides=('python-markupsafe')
+conflicts=('python-markupsafe')
+depends=('python')
+makedepends=('python-setuptools')
+checkdepends=('python-pytest-runner')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/pallets/markupsafe/archive/$pkgver.tar.gz")
+sha512sums=('f9a32c6aebd5057b85ac374d24d14b4ffbe627858932ba551c0cf60f4100afef17436a0c822f195d070b7f0cd73fb099d1726f07b50c30068a0bae500c6387e0')
+
+build() {
+ cd markupsafe-$pkgver
+ python setup.py build
+}
+
+check() {
+ cd markupsafe-$pkgver
+ python setup.py pytest
+}
+
+package() {
+ cd markupsafe-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1
+
+ install -D -m644 LICENSE.rst "$pkgdir"/usr/share/licenses/python-markupsafe/LICENSE.rst
+}
diff --git a/pcr/python-pastescript/PKGBUILD b/pcr/python-pastescript/PKGBUILD
new file mode 100644
index 000000000..daae121ad
--- /dev/null
+++ b/pcr/python-pastescript/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - build dependency of 'mediagoblin'
+
+
+pkgname=python-pastescript
+_upstream_name=pastescript
+pkgver=3.2.1
+pkgrel=1
+pkgdesc="a pluggable command-line tool for paste"
+arch=(any)
+url=https://github.com/cdent/pastescript/
+license=(custom:MIT)
+makedepends=(python-setuptools)
+source=(${_upstream_name}-${pkgver}.tar.gz::https://github.com/cdent/pastescript/archive/refs/tags/${pkgver}.tar.gz)
+sha256sums=('0ab37947ff35e37daf7c383ff4ab8dfb1452d916bd22c2b6090a85783efe5401')
+
+
+build()
+{
+ cd "${srcdir}"/${_upstream_name}-${pkgver}/
+
+ python setup.py build
+}
+
+package()
+{
+ cd "${srcdir}"/${_upstream_name}-${pkgver}/
+
+ python setup.py install --root="${pkgdir}" -O1
+
+ install -Dm644 docs/license.txt "${pkgdir}"/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/pcr/python-pyld/0001-Fixed-remote-frame-context-handling.patch b/pcr/python-pyld/0001-Fixed-remote-frame-context-handling.patch
new file mode 100644
index 000000000..e5368df3e
--- /dev/null
+++ b/pcr/python-pyld/0001-Fixed-remote-frame-context-handling.patch
@@ -0,0 +1,253 @@
+From a87843cca026e82fe2779d7176c6be3a6e4c9478 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C5=81ukasz=20Jancewicz?= <lj@rdprojekt.pl>
+Date: Thu, 24 Jul 2014 16:11:10 +0200
+Subject: [PATCH 1/2] Fixed remote frame context handling.
+
+Added unit-tests to cover this scenario.
+---
+ lib/pyld/jsonld.py | 9 ++-
+ tests/unit-tests.py | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 206 insertions(+), 5 deletions(-)
+ create mode 100644 tests/unit-tests.py
+
+diff --git a/lib/pyld/jsonld.py b/lib/pyld/jsonld.py
+index b9eecaa..0aa8ef1 100644
+--- a/lib/pyld/jsonld.py
++++ b/lib/pyld/jsonld.py
+@@ -832,11 +832,11 @@ class JsonLdProcessor:
+ if frame is not None:
+ ctx = frame.get('@context', {})
+ if remote_frame['contextUrl'] is not None:
+- if ctx is not None:
+- ctx = remote_frame['contextUrl']
+- else:
++ if ctx:
+ ctx = JsonLdProcessor.arrayify(ctx)
+ ctx.append(remote_frame['contextUrl'])
++ else:
++ ctx = remote_frame['contextUrl']
+ frame['@context'] = ctx
+
+ try:
+@@ -1036,8 +1036,7 @@ class JsonLdProcessor:
+
+ # retrieve URLs in local_ctx
+ local_ctx = copy.deepcopy(local_ctx)
+- if (_is_string(local_ctx) or (
+- _is_object(local_ctx) and '@context' not in local_ctx)):
++ if not (_is_object(local_ctx) and '@context' in local_ctx):
+ local_ctx = {'@context': local_ctx}
+ try:
+ self._retrieve_context_urls(
+diff --git a/tests/unit-tests.py b/tests/unit-tests.py
+new file mode 100644
+index 0000000..3248b20
+--- /dev/null
++++ b/tests/unit-tests.py
+@@ -0,0 +1,202 @@
++import json
++import unittest
++
++from pyld import jsonld
++
++# Inputs and outputs used here are essentially modified documents
++# of JSON-LD frame-0001 test.
++
++FRAME_0001_IN = '''{
++ "@context": {
++ "dc": "http://purl.org/dc/elements/1.1/",
++ "ex": "http://example.org/vocab#",
++ "ex:contains": {"@type": "@id"}
++ },
++ "@graph": [
++ {
++ "@id": "http://example.org/test/#library",
++ "@type": "ex:Library",
++ "ex:contains": "http://example.org/test#book"
++ },
++ {
++ "@id": "http://example.org/test#book",
++ "@type": "ex:Book",
++ "dc:contributor": "Writer",
++ "dc:title": "My Book",
++ "ex:contains": "http://example.org/test#chapter"
++ },
++ {
++ "@id": "http://example.org/test#chapter",
++ "@type": "ex:Chapter",
++ "dc:description": "Fun",
++ "dc:title": "Chapter One"
++ }
++ ]
++}'''
++
++
++FRAME_0001_FRAME = '''{
++ "@context": {
++ "dc": "http://purl.org/dc/elements/1.1/",
++ "ex": "http://example.org/vocab#"
++ },
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@type": "ex:Book",
++ "ex:contains": {
++ "@type": "ex:Chapter"
++ }
++ }
++}'''
++
++FRAME_0001_FRAME_WITHOUT_CONTEXT = '''{
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@type": "ex:Book",
++ "ex:contains": {
++ "@type": "ex:Chapter"
++ }
++ }
++}'''
++
++FRAME_0001_FRAME_WITH_PARTIAL_CONTEXT = '''{
++ "@context": {
++ "dc": "http://purl.org/dc/elements/1.1/"
++ },
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@type": "ex:Book",
++ "ex:contains": {
++ "@type": "ex:Chapter"
++ }
++ }
++}'''
++
++FRAME_0001_FRAME_CONTEXT = '''{
++ "@context": {
++ "dc": "http://purl.org/dc/elements/1.1/",
++ "ex": "http://example.org/vocab#"
++ }
++}'''
++
++FRAME_0001_FRAME_PARTIAL_CONTEXT = '''{
++ "@context": {
++ "ex": "http://example.org/vocab#"
++ }
++}'''
++
++FRAME_0001_OUT_WITH_REMOTE_CONTEXT = '''{
++ "@context": "http://example.com/frame-context.json",
++ "@graph": [{
++ "@id": "http://example.org/test/#library",
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@id": "http://example.org/test#book",
++ "@type": "ex:Book",
++ "dc:contributor": "Writer",
++ "dc:title": "My Book",
++ "ex:contains": {
++ "@id": "http://example.org/test#chapter",
++ "@type": "ex:Chapter",
++ "dc:description": "Fun",
++ "dc:title": "Chapter One"
++ }
++ }
++ }]
++}'''
++
++FRAME_0001_OUT_WITH_LOCAL_AND_REMOTE_CONTEXT = '''{
++ "@context": [{
++ "dc": "http://purl.org/dc/elements/1.1/",
++ "ex": "http://example.org/vocab#"
++ }, "http://example.com/frame-context.json"],
++ "@graph": [{
++ "@id": "http://example.org/test/#library",
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@id": "http://example.org/test#book",
++ "@type": "ex:Book",
++ "dc:contributor": "Writer",
++ "dc:title": "My Book",
++ "ex:contains": {
++ "@id": "http://example.org/test#chapter",
++ "@type": "ex:Chapter",
++ "dc:description": "Fun",
++ "dc:title": "Chapter One"
++ }
++ }
++ }]
++}'''
++
++FRAME_0001_OUT_WITH_HALF_LOCAL_AND_HALF_REMOTE_CONTEXT = '''{
++ "@context": [{
++ "dc": "http://purl.org/dc/elements/1.1/"
++ }, "http://example.com/frame-context.json"],
++ "@graph": [{
++ "@id": "http://example.org/test/#library",
++ "@type": "ex:Library",
++ "ex:contains": {
++ "@id": "http://example.org/test#book",
++ "@type": "ex:Book",
++ "dc:contributor": "Writer",
++ "dc:title": "My Book",
++ "ex:contains": {
++ "@id": "http://example.org/test#chapter",
++ "@type": "ex:Chapter",
++ "dc:description": "Fun",
++ "dc:title": "Chapter One"
++ }
++ }
++ }]
++}'''
++
++
++class TestCaseForFrame(unittest.TestCase):
++
++ def _test_remote_context_with(
++ self, frame_doc, frame_context_doc, out_doc):
++ input_ = json.loads(FRAME_0001_IN)
++
++ def fake_loader(url):
++ if url == 'http://example.com/frame.json':
++ return {
++ 'contextUrl': 'http://example.com/frame-context.json',
++ 'document': frame_doc,
++ 'documentUrl': url
++ }
++ elif url == 'http://example.com/frame-context.json':
++ return {
++ 'contextUrl': None,
++ 'document': frame_context_doc,
++ 'documentUrl': url
++ }
++ else:
++ raise Exception("Unknown URL: {}".format(url))
++
++ options = {
++ 'documentLoader': fake_loader
++ }
++ framed = jsonld.frame(
++ input_, 'http://example.com/frame.json', options=options)
++
++ self.assertEqual(framed, json.loads(out_doc))
++
++ def test_remote_context_local_and_remote_context_equal(self):
++ self._test_remote_context_with(
++ FRAME_0001_FRAME, FRAME_0001_FRAME_CONTEXT,
++ FRAME_0001_OUT_WITH_LOCAL_AND_REMOTE_CONTEXT)
++
++ def test_remote_context_remote_context_only(self):
++ self._test_remote_context_with(
++ FRAME_0001_FRAME_WITHOUT_CONTEXT, FRAME_0001_FRAME_CONTEXT,
++ FRAME_0001_OUT_WITH_REMOTE_CONTEXT)
++
++ def test_remote_context_half_context_local_and_half_remote(self):
++ self._test_remote_context_with(
++ FRAME_0001_FRAME_WITH_PARTIAL_CONTEXT,
++ FRAME_0001_FRAME_PARTIAL_CONTEXT,
++ FRAME_0001_OUT_WITH_HALF_LOCAL_AND_HALF_REMOTE_CONTEXT)
++
++
++if __name__ == '__main__':
++ unittest.main()
+\ No newline at end of file
+--
+2.11.0
+
diff --git a/pcr/python-pyld/PKGBUILD b/pcr/python-pyld/PKGBUILD
new file mode 100644
index 000000000..a5f3fa50c
--- /dev/null
+++ b/pcr/python-pyld/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer (aur): Sven Schneider <archlinux.sandmann@googlemail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - remove python2 split package
+# - build dependency of 'mediagoblin' (<2.0.0)
+
+
+pkgname=python-pyld
+pkgver=1.0.5
+pkgrel=3
+pkgdesc="An implementation of the JSON-LD specification in Python"
+arch=('any')
+url="https://github.com/digitalbazaar/pyld"
+license=('custom:BSD3')
+makedepends=('python-setuptools')
+source=(pyld-1.0.5.tar.gz::https://github.com/digitalbazaar/pyld/archive/refs/tags/1.0.5.tar.gz
+ 0001-Fixed-remote-frame-context-handling.patch)
+sha512sums=('a673d953be990fde98a3b32e879e1b7941afc9d3082be6400f69223deee226047e05b0ce68bdf05844cb7e8e3142f731f7c4891b6a4986413518dbdaa2da779c'
+ 'd0b15814c2fe315ad3dddda8ea452229a172be060d7074b6d99ec9eaed857f2e6b715e760cbcc194f9c8a679bc929ac652df847377c6e8b4944bf77795432f19')
+
+prepare() {
+ cd "${srcdir}"/pyld-1.0.5/
+ patch -p1 < "${srcdir}"/0001-Fixed-remote-frame-context-handling.patch
+}
+
+build() {
+ cd "${srcdir}"/pyld-1.0.5/
+ python setup.py build
+}
+
+package() {
+ cd "${srcdir}"/pyld-1.0.5/
+
+ python setup.py install --root="${pkgdir}" -O1
+
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/pcr/python-soundfile/PKGBUILD b/pcr/python-soundfile/PKGBUILD
new file mode 100644
index 000000000..2db88bba2
--- /dev/null
+++ b/pcr/python-soundfile/PKGBUILD
@@ -0,0 +1,40 @@
+# Maintainer (aur): OSAMC <https://github.com/osam-cologne/archlinux-proaudio>
+# Contributor: Christopher Arndt <aur -at- chrisarndt -dot- de>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes
+# - build dependency of 'mediagoblin'
+
+
+_name=soundfile
+pkgname=python-soundfile
+pkgver=0.11.0
+pkgrel=3
+pkgdesc='A Python library to read and write audio files using libsndfile, CFFI and NumPy'
+url='https://github.com/bastibe/python-soundfile'
+arch=(any)
+license=(custom:BSD3)
+makedepends=(python-build python-installer python-setuptools python-wheel)
+depends=(python-cffi libsndfile python-numpy)
+checkdepends=(python-pytest python-setuptools)
+source=("https://github.com/bastibe/python-soundfile/releases/download/$pkgver/$_name-$pkgver.tar.gz")
+sha256sums=('931738a1c93e8684c2d3e1d514ac63440ce827ec783ea0a2d3e4730e3dc58c18')
+
+build() {
+ cd $_name-$pkgver
+ python -m build --wheel --no-isolation
+}
+
+check() {
+ cd $_name-$pkgver
+ python setup.py test
+}
+
+package() {
+ cd $_name-$pkgver
+ python -m installer --destdir="$pkgdir" dist/*.whl
+ # install license
+ install -Dm644 LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname
+}
diff --git a/pcr/python-sphinx4/PKGBUILD b/pcr/python-sphinx4/PKGBUILD
new file mode 100644
index 000000000..e6b54b261
--- /dev/null
+++ b/pcr/python-sphinx4/PKGBUILD
@@ -0,0 +1,77 @@
+# Maintainer (arch): Johannes Löthberg <johannes@kyriasis.com>
+# Maintainer: Daniel M. Capella <polyzen@archlinux.org>
+# Contributor: Sébastien Luttringer
+# Contributor: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Fabio Volpe <volpefabio@gmail.com>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-sphinx')
+# - build dependency of 'mediagoblin' -> jinja2<3.0.0
+# 'mediagoblin' -> 'sphinx' -> jinja2>=3.0
+# error: Jinja2 2.11.3 is installed but Jinja2>=3.0 is required by {'sphinx'}
+
+
+pkgname=python-sphinx4
+pkgver=4.5.0
+pkgrel=1
+pkgdesc='Python documentation generator'
+arch=('any')
+url=http://www.sphinx-doc.org/
+license=('custom:BSD2')
+provides=('python-sphinx')
+conflicts=('python-sphinx')
+depends=('python-babel'
+ 'python-docutils'
+ 'python-imagesize'
+ 'python-jinja'
+ 'python-packaging'
+ 'python-pygments'
+ 'python-requests'
+ 'python-snowballstemmer'
+ 'python-sphinx-alabaster-theme'
+ 'python-sphinxcontrib-'{{apple,dev,html}help,jsmath,qthelp,serializinghtml})
+makedepends=('python-setuptools')
+# checkdepends=('cython'
+# 'imagemagick' 'librsvg'
+# 'python-html5lib'
+# 'python-pytest'
+# 'texlive-fontsextra' 'texlive-latexextra')
+optdepends=('imagemagick: for ext.imgconverter'
+ 'texlive-latexextra: for generation of PDF documentation')
+source=("https://pypi.org/packages/source/S/Sphinx/Sphinx-$pkgver.tar.gz"{,.asc})
+noextract=(Sphinx-$pkgver.tar.gz)
+sha256sums=('7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6'
+ 'SKIP')
+b2sums=('e6c46d35492c3d3068c4f97e497d33973ca86b40934578804fcec901fa89d2c52b45a7546b835b873846dd16936c1bd34a7b053aec8206c688d974671155fd56'
+ 'SKIP')
+validpgpkeys=('8A11B79A5D0D749A66F0A030102C2C17498D6B9E' # Takeshi KOMIYA <i.tkomiya@gmail.com>
+ 'E9BEABB07E7B9CC3F56E62C91425F8CE5EBA0E07') # Takayuki Shimizukawa <shimizukawa@gmail.com>
+
+prepare()
+{
+ LC_ALL='en_US.UTF-8' tar xzf "${srcdir}"/Sphinx-$pkgver.tar.gz
+}
+
+build() {
+ cd Sphinx-$pkgver
+ make build
+}
+
+check() {
+ # with networking disabled
+ # === 26 failed, 1736 passed, 27 skipped, 23101 warnings in 193.18s (0:03:13) ====
+ # with networking enabled
+ # === 24 failed, 1738 passed, 27 skipped, 23101 warnings in 199.94s (0:03:19) ====
+ return 0
+
+ cd Sphinx-$pkgver
+ LC_ALL="en_US.UTF-8" make test
+}
+
+package() {
+ cd Sphinx-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1 --skip-build
+ install -Dm644 -t "$pkgdir"/usr/share/licenses/$pkgname LICENSE
+}
diff --git a/pcr/python-vine1.3/PKGBUILD b/pcr/python-vine1.3/PKGBUILD
new file mode 100644
index 000000000..dbe498956
--- /dev/null
+++ b/pcr/python-vine1.3/PKGBUILD
@@ -0,0 +1,41 @@
+# Maintainer (arch): Felix Yan <felixonmars@archlinux.org>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - down-grade of 'python-vine'
+# - build dependency of 'mediagoblin' (<5.0.0a1)
+# also: mediagoblin -> python-amqp2 -> python-vine<5
+# also: mediagoblin -> python-kombu4 -> python-vine<5
+
+
+pkgname=python-vine1.3
+pkgver=1.3.0
+pkgrel=3
+pkgdesc="Promises, promises, promises"
+arch=('any')
+license=('custom:BSD3')
+url="https://github.com/celery/vine"
+provides=(python-vine)
+conflicts=(python-vine)
+depends=('python-case')
+makedepends=('python-setuptools')
+checkdepends=('python-pytest')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/celery/vine/archive/v$pkgver.tar.gz")
+sha512sums=('cb6ee9fcfcd7e7e23e894fce646c9e8b2300622fcc1811c1547bda90e3756de248ac01e4f812ecbb31dd1798734219d0b8f986354ae16014a7e5d949ab5d994f')
+
+build() {
+ cd "$srcdir"/vine-$pkgver
+ python setup.py build
+}
+
+check() {
+ cd "$srcdir"/vine-$pkgver
+ python setup.py test
+}
+
+package() {
+ cd vine-$pkgver
+ python setup.py install --root="$pkgdir" --optimize=1
+ install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/pcr/python-werkzeug1/PKGBUILD b/pcr/python-werkzeug1/PKGBUILD
new file mode 100644
index 000000000..db796ea29
--- /dev/null
+++ b/pcr/python-werkzeug1/PKGBUILD
@@ -0,0 +1,50 @@
+# Maintainer (arch): Sven-Hendrik Haase <svenstaro@gmail.com>
+# Contributor: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: Thomas Dziedzic < gostrc at gmail >
+# Contributor: Dan Serban
+# Contributor: Richard Murri
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-werkzeug')
+# - build dependency of 'mediagoblin'
+
+
+pkgname=python-werkzeug1
+pkgver=1.0.1
+pkgrel=4
+pkgdesc='Swiss Army knife of Python web development'
+url='http://werkzeug.pocoo.org/'
+arch=('any')
+license=('custom:BSD3')
+provides=('python-werkzeug')
+conflicts=('python-werkzeug')
+depends=('python')
+makedepends=('python-setuptools')
+# checkdepends=('python-pytest-timeout' 'python-requests')
+source=(werkzeug-1.0.1.tar.gz::https://github.com/pallets/werkzeug/archive/1.0.1.tar.gz)
+sha512sums=('ba82120fb3e96e3a1334c6452d5ba1950fc016d2d147d643bbc2168ccec496f1dea799982ae8c578167155082c0bdbda5d56a23f64b4b6865f97e90e22df022e')
+
+build() {
+ cd "werkzeug-$pkgver"
+
+ python setup.py build
+}
+
+check() {
+ cd "werkzeug-$pkgver"
+
+ # FAILED tests/test_datastructures.py::TestFileStorage::test_save_to_pathlib_dst
+ # FAILED tests/test_formparser.py::TestMultiPart::test_basic - pytest.PytestUnr...
+ return 0
+
+ PYTHONPATH="$PWD/build/lib" pytest
+}
+
+package() {
+ cd "werkzeug-$pkgver"
+
+ python setup.py install --root="$pkgdir" --optimize=1
+ install -Dm644 LICENSE.rst "$pkgdir/usr/share/licenses/$pkgname/LICENSE.rst"
+}
diff --git a/pcr/python-wtforms2/PKGBUILD b/pcr/python-wtforms2/PKGBUILD
new file mode 100644
index 000000000..4048d19f9
--- /dev/null
+++ b/pcr/python-wtforms2/PKGBUILD
@@ -0,0 +1,44 @@
+# Maintainer (arch): Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: nblock <nblock [/at\] archlinux DOT us>
+# Contributor: neithere <neithere at gmail>
+# Contributor: mitsuse <mitsuse at gmail>
+# Maintainer: bill-auger <bill-auger@programmer.net>
+
+
+# parabola changes and rationale:
+# - no changes (down-grade of 'python-wtforms')
+# - build dependency of 'mediagoblin'
+
+
+pkgname=python-wtforms2
+pkgver=2.3.3
+pkgrel=3
+pkgdesc='Flexible forms validation and rendering library for python web development'
+url='https://wtforms.readthedocs.io/'
+arch=('any')
+license=('custom:BSD3')
+provides=('python-wtforms')
+conflicts=('python-wtforms')
+depends=('python')
+makedepends=('python-setuptools' 'python-babel' 'python-sphinx'
+ 'python-pallets-sphinx-themes' 'python-sphinx-issues'
+ 'python-sphinxcontrib-log-cabinet')
+source=(wtforms-2.3.3.tar.gz::https://github.com/wtforms/wtforms/archive/refs/tags/2.3.3.tar.gz)
+sha512sums=('f2b825a85f46a5eca2c8ecb7e0d1945e9697ad98c430b3043952eb5df87b77e180ac26aea0ad10c134438ef8f9d9c8d00ffc5b38a9fa413c6c95d43a681456a2')
+b2sums=('96a504e5a5334086372c81f3691edc0a598d3df9bb3eecce007daae1f445930e80aeea5c943e10500b2cba24ebff16e6e89ec31c9e6a1a33c5008297bbc1b064')
+
+build() {
+ cd wtforms-2.3.3/
+ python setup.py compile_catalog build
+ export PYTHONPATH=..
+ make -C docs html SPHINXBUILD=sphinx-build
+}
+
+package() {
+ cd wtforms-2.3.3/
+ python setup.py install --root="${pkgdir}" -O1
+ find "$pkgdir" -type f -name \*.po -delete
+ install -Dm 644 LICENSE.rst -t "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -Dm 644 CHANGES.rst README.rst -t "${pkgdir}/usr/share/doc/${pkgname}"
+ cp -r docs/_build/html "${pkgdir}/usr/share/doc/${pkgname}/html"
+}