diff options
author | Amaury Bodet | 2020-12-02 22:08:04 +0100 |
---|---|---|
committer | Amaury Bodet | 2020-12-02 22:08:04 +0100 |
commit | ec0a4fbc237755d6b908e40a540867eca2c8e0dc (patch) | |
tree | 393cf4a5fb30b19390a4b8a5db208f027dd1a99d | |
download | aur-ec0a4fbc237755d6b908e40a540867eca2c8e0dc.tar.gz |
Initial submission
-rw-r--r-- | .SRCINFO | 52 | ||||
-rw-r--r-- | PKGBUILD | 92 | ||||
-rw-r--r-- | papermerge-gunicorn.service | 22 | ||||
-rw-r--r-- | papermerge-worker.service | 17 | ||||
-rw-r--r-- | papermerge.install | 54 | ||||
-rwxr-xr-x | papermerge.sh | 4 | ||||
-rw-r--r-- | papermerge.sysusers | 1 | ||||
-rw-r--r-- | papermerge.tmpfiles | 7 |
8 files changed, 249 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..15e0aba36e6a --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = papermerge + pkgdesc = An open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. + pkgver = 1.5.3 + pkgrel = 1 + url = https://github.com/ciur/papermerge + install = papermerge.install + arch = any + license = Apache + depends = imagemagick + depends = pdftk + depends = poppler + depends = python-celery + depends = python-django + depends = python-django-allauth + depends = python-django-celery-results + depends = python-django-dynamic-preferences + depends = python-django-modelcluster + depends = python-django-mptt + depends = python-django-polymorphic-tree + depends = python-django-rest-framework + depends = python-django-rest-knox + depends = python-django-taggit + depends = python-imapclient + depends = python-lxml + depends = python-mgclipboard + depends = python-mglib + depends = python-psycopg2 + depends = python-pyaml + depends = tesseract + depends = gunicorn + optdepends = nginx: reverse proxy for papermerge provided by gunicorn + optdepends = redis: file based transport of messaging queue + optdepends = python-redis: file based transport of messaging queue + backup = etc/papermerge.conf.py + backup = usr/lib/python3.8/site-packages/config/settings/production.py + source = papermerge-1.5.3.src.tar.gz::https://github.com/ciur/papermerge/archive/v1.5.3.tar.gz + source = papermerge.install + source = papermerge.sysusers + source = papermerge.tmpfiles + source = papermerge-gunicorn.service + source = papermerge-worker.service + source = papermerge.sh + sha512sums = f6ac25b363ddf81b9e2631c1b963a1f04ed679a7174caac91bf42ef5b81929ad49b1be3a5ace17e038406a688a773f0e0b80b95549dbeb5414823374a33b98e7 + sha512sums = c63ce4c8eb95c477c37f70d4a6abba2e467f72617d2032e5dbe7e6a73a63ce092acacb9ec4d8776e5d5fba7351e1b81c18a69afc5960bff0d269086930c4c11f + sha512sums = eb408d6d6c0072b4883cae9b6aa591935b910585e93aa6fdacbb543dbc4233588678d396c06d0f10b7c74b4d393af19b8be526d094821de23792c29df593d4a5 + sha512sums = 6b14701ab03192756f00d7d9105aceba82c808341099819e4830e601d005e808261c381b0580d65e9d0d489a6906bf85b249edb6b5f6d8bd5173f2b78e8fefce + sha512sums = 4a8e1d3ce19e0ce13febea0c93d5130c492eb3d319194eb63791ad5a95f40083f2f90d299a74f1059865db1d38b6effb1f9cbfe4576680a70b43b6a594c85b9a + sha512sums = fcdd49e0b6b93ade84ddafd77111f28bdea75a4f12829ec249d414d46a14399198be7bf29d0ce5166de6dba1d6386eda4ab9b39a1f5376b7c7758c8966a53ce3 + sha512sums = b838d54dca56e45f99690ddaae1b058e3f72b314adf9d689869f14bb141a5bbf209df974eea20cb2305b127d5119d0b8d11293494d47350f6974edc6fffc374f + +pkgname = papermerge + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..756295a2d512 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,92 @@ +# Maintainer: amo <https://aur.archlinux.org/account/amo> +# Contributor: Lucki <https://aur.archlinux.org/account/Lucki> + +pkgname=papermerge +pkgver=1.5.3 +pkgrel=1 +pkgdesc="An open source document management system (DMS) primarily designed for archiving and retrieving your digital documents." +arch=('any') +url="https://github.com/ciur/papermerge" +license=('Apache') +backup=("etc/$pkgname.conf.py" "usr/lib/python3.8/site-packages/config/settings/production.py") +install=$pkgname.install +depends=('imagemagick' 'pdftk' 'poppler' 'python-celery' 'python-django' 'python-django-allauth' 'python-django-celery-results' 'python-django-dynamic-preferences' 'python-django-modelcluster' 'python-django-mptt' 'python-django-polymorphic-tree' 'python-django-rest-framework' 'python-django-rest-knox' 'python-django-taggit' 'python-imapclient' 'python-lxml' 'python-mgclipboard' 'python-mglib' 'python-psycopg2' 'python-pyaml' 'tesseract' 'gunicorn') +optdepends=('nginx: reverse proxy for papermerge provided by gunicorn' 'redis: file based transport of messaging queue' 'python-redis: file based transport of messaging queue') +source=("$pkgname-$pkgver.src.tar.gz::https://github.com/ciur/$pkgname/archive/v$pkgver.tar.gz" + "$pkgname.install" + "$pkgname.sysusers" + "$pkgname.tmpfiles" + "$pkgname-gunicorn.service" + "$pkgname-worker.service" + "$pkgname.sh") +sha512sums=('f6ac25b363ddf81b9e2631c1b963a1f04ed679a7174caac91bf42ef5b81929ad49b1be3a5ace17e038406a688a773f0e0b80b95549dbeb5414823374a33b98e7' + 'c63ce4c8eb95c477c37f70d4a6abba2e467f72617d2032e5dbe7e6a73a63ce092acacb9ec4d8776e5d5fba7351e1b81c18a69afc5960bff0d269086930c4c11f' + 'eb408d6d6c0072b4883cae9b6aa591935b910585e93aa6fdacbb543dbc4233588678d396c06d0f10b7c74b4d393af19b8be526d094821de23792c29df593d4a5' + '6b14701ab03192756f00d7d9105aceba82c808341099819e4830e601d005e808261c381b0580d65e9d0d489a6906bf85b249edb6b5f6d8bd5173f2b78e8fefce' + '4a8e1d3ce19e0ce13febea0c93d5130c492eb3d319194eb63791ad5a95f40083f2f90d299a74f1059865db1d38b6effb1f9cbfe4576680a70b43b6a594c85b9a' + 'fcdd49e0b6b93ade84ddafd77111f28bdea75a4f12829ec249d414d46a14399198be7bf29d0ce5166de6dba1d6386eda4ab9b39a1f5376b7c7758c8966a53ce3' + 'b838d54dca56e45f99690ddaae1b058e3f72b314adf9d689869f14bb141a5bbf209df974eea20cb2305b127d5119d0b8d11293494d47350f6974edc6fffc374f') + +prepare() { + { + echo 'DBDIR = "/var/lib/papermerge/database"'; + echo 'MEDIA_DIR = "/var/lib/papermerge/media"'; + echo 'STATIC_DIR = "/var/lib/papermerge/static"'; + echo 'IMPORTER_DIR = "/var/lib/papermerge/import"'; + echo 'TASK_QUEUE_DIR = "/var/tmp/papermerge/queue"' + } >> "$pkgname-$pkgver/$pkgname.conf.py.example" + + # https://papermerge.readthedocs.io/en/latest/setup/server_configurations.html#step-1-install-gunicorn + { + echo 'from .base import * # noqa'; + echo 'DEBUG = False'; + echo "ALLOWED_HOSTS = ['*']" + } > "$pkgname-$pkgver/config/settings/production.py" + + # The admin package is missing somehow so let's move it plain stupid directly in place + mkdir -p "$pkgname-$pkgver/build/lib/$pkgname/" + cp -dpr --no-preserve=ownership "$pkgname-$pkgver/$pkgname/contrib" "$pkgname-$pkgver/build/lib/$pkgname/" +} + +build() { + cd "$pkgname-$pkgver" || exit + python setup.py build +} + +check() { + cd "$pkgname-$pkgver" || exit + ./run_tests.sh +} + +package() { + # tmpfiles.d + install -Dm 644 "$pkgname.tmpfiles" \ + "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf" + + # sysusers.d + install -Dm 644 "$pkgname.sysusers" \ + "$pkgdir/usr/lib/sysusers.d/$pkgname.conf" + + # service files + install -Dm 644 "$pkgname-gunicorn.service" \ + "$pkgdir/usr/lib/systemd/system/$pkgname-gunicorn.service" + install -Dm 644 "$pkgname-worker.service" \ + "$pkgdir/usr/lib/systemd/system/$pkgname-worker.service" + + # wrapper + install -Dm 755 "$pkgname.sh" \ + "$pkgdir/usr/bin/$pkgname-manage" + + cd "$pkgname-$pkgver" || exit + + # config + install -Dm 644 "$pkgname.conf.py.example" \ + "$pkgdir/etc/$pkgname.conf.py" + + # migrations + # mkdir -p "$pkgdir/usr/lib/python3.8/site-packages/papermerge/core" + # ln -s /var/lib/papermerge/migrations "$pkgdir/usr/lib/python3.8/site-packages/papermerge/core/migrations" + + export PYTHONHASHSEED=0 + python setup.py install --root="$pkgdir" --optimize=1 --skip-build +} diff --git a/papermerge-gunicorn.service b/papermerge-gunicorn.service new file mode 100644 index 000000000000..96c68559d6dc --- /dev/null +++ b/papermerge-gunicorn.service @@ -0,0 +1,22 @@ +[Unit] +Description=Gunicorn providing papermerge +Documentation=https://papermerge.readthedocs.io/en/latest/setup/server_configurations.html,https://docs.gunicorn.org/en/latest/deploy.html#systemd +After=network.target +Wants=papermerge-worker.service + +[Service] +Type=notify +User=papermerge +Group=papermerge +RuntimeDirectory=papermerge +WorkingDirectory=/var/lib/papermerge +Environment="DJANGO_SETTINGS_MODULE=config.settings.production" +ExecStart=/usr/bin/gunicorn config.wsgi:application --bind 127.0.0.1:9001 --workers 2 --access-logfile "/var/log/papermerge/gunicorn.access" --error-logfile "/var/log/papermerge/gunicorn.error" +ExecReload=/bin/kill -s HUP $MAINPID +KillMode=mixed +TimeoutStopSec=5 +PrivateTmp=true +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/papermerge-worker.service b/papermerge-worker.service new file mode 100644 index 000000000000..99450fe0ce30 --- /dev/null +++ b/papermerge-worker.service @@ -0,0 +1,17 @@ +[Unit] +Description=Papermerge Worker +Documentation=https://papermerge.readthedocs.io/en/latest/setup/server_configurations.html +After=network.target +PartOf=papermerge-gunicorn.service + +[Service] +Type=simple +User=papermerge +Group=papermerge +WorkingDirectory=/tmp +Environment="DJANGO_SETTINGS_MODULE=config.settings.production" +ExecStart=/usr/bin/django-admin worker --pidfile /var/run/papermerge/papermerge-worker.pid +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/papermerge.install b/papermerge.install new file mode 100644 index 000000000000..52bf2528a861 --- /dev/null +++ b/papermerge.install @@ -0,0 +1,54 @@ +pre_install() { + # create the papermerge user and folders early so we can chown the migrations folder and run migrations after installation + echo 'u papermerge - "open source document management system" -' | systemd-sysusers --replace=/usr/lib/sysusers.d/papermerge.conf - + + { + echo 'd /var/lib/papermerge/media - papermerge papermerge -' + echo 'd /var/lib/papermerge/media - papermerge papermerge -' + echo 'd /var/lib/papermerge/static - papermerge papermerge -' + echo 'd /var/lib/papermerge/database - papermerge papermerge -' + echo 'd /var/lib/papermerge/import 777 papermerge papermerge -' + echo 'd /run/papermerge - papermerge papermerge -' + echo 'd /var/log/papermerge - papermerge papermerge -' + } | systemd-tmpfiles --create --replace=/usr/lib/tmpfiles.d/papermerge.conf - + + # mkdir -p "/usr/lib/python3.8/site-packages/papermerge/core" + # ln -s /var/lib/papermerge/migrations "/usr/lib/python3.8/site-packages/papermerge/core/migrations" +} + +post_install() { + systemctl daemon-reload + + # Make sure the papermerge user owns the migrations directory (write access needed) + if id papermerge &>/dev/null; then + chown -R papermerge:papermerge "/usr/lib/python3.8/site-packages/papermerge/core/migrations" + else + printf '\n --> Please run "sudo chown -R papermerge:papermerge /usr/lib/python3.8/site-packages/papermerge/core/migrations" before launching the papermerge service for the first time!\n' + fi + + # run the migrations + runuser -u papermerge -- /usr/bin/papermerge-manage makemigrations --merge --noinput + runuser -u papermerge -- /usr/bin/papermerge-manage migrate --noinput + runuser -u papermerge -- /usr/bin/papermerge-manage collectstatic --noinput + + printf '\n --> Run papermerge with "sudo systemctl start papermerge-gunicorn papermerge-worker". Point your reverse proxy (e.g. nginx) to 127.0.0.1:9001.\n' + printf '\n --> If this is a new Papermerge installation, please run "sudo -u papermerge papermerge-manage createsuperuser" to create the admin user.\n\n' +} + +# Run migrations and restart the systemd service +post_upgrade() { + # Make sure the papermerge user owns the migrations directory (write access needed) + chown -R papermerge:papermerge "/usr/lib/python3.8/site-packages/papermerge/core/migrations" + + # run the migrations + runuser -u papermerge -- /usr/bin/papermerge-manage makemigrations --merge --noinput + runuser -u papermerge -- /usr/bin/papermerge-manage migrate --noinput + runuser -u papermerge -- /usr/bin/papermerge-manage collectstatic --noinput + + systemctl daemon-reload + + running="$(systemctl is-active papermerge-gunicorn)" + if [ "$running" == "active" ]; then + systemctl restart papermerge-gunicorn + fi +} diff --git a/papermerge.sh b/papermerge.sh new file mode 100755 index 000000000000..7f6fc8ec0562 --- /dev/null +++ b/papermerge.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export DJANGO_SETTINGS_MODULE=config.settings.dev +cd /tmp || exit +exec /usr/bin/django-admin "$@" diff --git a/papermerge.sysusers b/papermerge.sysusers new file mode 100644 index 000000000000..77c12231944b --- /dev/null +++ b/papermerge.sysusers @@ -0,0 +1 @@ +u papermerge - "open source document management system" - diff --git a/papermerge.tmpfiles b/papermerge.tmpfiles new file mode 100644 index 000000000000..aa0ae9913f90 --- /dev/null +++ b/papermerge.tmpfiles @@ -0,0 +1,7 @@ +d /var/lib/papermerge/ - papermerge papermerge - +d /var/lib/papermerge/media - papermerge papermerge - +d /var/lib/papermerge/static - papermerge papermerge - +d /var/lib/papermerge/database - papermerge papermerge - +d /var/lib/papermerge/import 777 papermerge papermerge - +d /run/papermerge - papermerge papermerge - +d /var/log/papermerge - papermerge papermerge - |