summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Bodet2020-12-02 22:08:04 +0100
committerAmaury Bodet2020-12-02 22:08:04 +0100
commitec0a4fbc237755d6b908e40a540867eca2c8e0dc (patch)
tree393cf4a5fb30b19390a4b8a5db208f027dd1a99d
downloadaur-ec0a4fbc237755d6b908e40a540867eca2c8e0dc.tar.gz
Initial submission
-rw-r--r--.SRCINFO52
-rw-r--r--PKGBUILD92
-rw-r--r--papermerge-gunicorn.service22
-rw-r--r--papermerge-worker.service17
-rw-r--r--papermerge.install54
-rwxr-xr-xpapermerge.sh4
-rw-r--r--papermerge.sysusers1
-rw-r--r--papermerge.tmpfiles7
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 -