From 17f07f88e596d04008967dc130981375ce167c96 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 28 May 2022 19:22:37 +0000 Subject: [PATCH] added community/couchdb --- community/couchdb/PKGBUILD | 69 ++++++++++++++++++++++++++++++ community/couchdb/arm.patch | 28 ++++++++++++ community/couchdb/couchdb.default | 3 ++ community/couchdb/couchdb.service | 42 ++++++++++++++++++ community/couchdb/couchdb.sysusers | 1 + community/couchdb/couchdb.tmpfiles | 3 ++ 6 files changed, 146 insertions(+) create mode 100644 community/couchdb/PKGBUILD create mode 100644 community/couchdb/arm.patch create mode 100644 community/couchdb/couchdb.default create mode 100644 community/couchdb/couchdb.service create mode 100644 community/couchdb/couchdb.sysusers create mode 100644 community/couchdb/couchdb.tmpfiles diff --git a/community/couchdb/PKGBUILD b/community/couchdb/PKGBUILD new file mode 100644 index 000000000..aee073c47 --- /dev/null +++ b/community/couchdb/PKGBUILD @@ -0,0 +1,69 @@ +# Maintainer: Bruno Pagani +# Contributor: Sergej Pupykin +# Contributor: Vitaliy Berdinskikh ur6lad[at]i.ua +# Contributor: Michael Fellinger + +# ALARM: Kevin Mihelich +# - patch to fix aarch64 js check, disable LTO + +pkgname=couchdb +pkgver=3.2.2 +pkgrel=2 +pkgdesc="Document-oriented database that can be queried and indexed in a MapReduce fashion using JSON" +arch=(x86_64) +url="https://couchdb.apache.org" +license=(Apache) +depends=(icu js91 zlib) +optdepends=('erlang-nox: for weatherreport') +makedepends=(erlang-nox) +backup=(etc/couchdb/local.ini + etc/couchdb/vm.args + etc/default/couchdb) +source=("https://archive.apache.org/dist/${pkgname}/source/${pkgver}/apache-${pkgname}-${pkgver}.tar.gz"{,.asc} + couchdb.default + couchdb.service + couchdb.sysusers + couchdb.tmpfiles + arm.patch) +sha256sums=('69c9fd6f80133557f68a02e92dda72a4fd646d646f429f45bb8329a30f82f20e' + 'SKIP' + '0d21fdd7851b3a6fa099b030cab0e96705b1d5a3a83a4ff1c871814d8742cae9' + '6ab3d362f3fcd9079036c883dc09dc597584cb627831460f2e0c68a31aa052ae' + '3ed1ad2a37a068ce194b03fb72eb35285d60fa7faf2d2c2bb710703d229108a8' + '7331b9675e3668c5f0d632bee5d154c061cc3e60d451bef3dc0d0ab2dadfa006' + '5d97fe00ad7a05169988817ed0727452ab8a0c0582c5399aa06c90e76bf75754') +validpgpkeys=(2EC788AE3F239FA13E82D215CDE711289384AE37 # Joan Touzet (CODE SIGNING KEY) + D2B17F9DA23C0A10991AF2E3D9EE01E47852AEE4 # Jan Lehnardt + 0BD7A98499C4AB41C910EE65FC04DFBC9657A78E) # Nick Vatamaniuc + +prepare() { + cd apache-couchdb-${pkgver} + sed -i 's|./data|/var/lib/couchdb|' configure + patch -p1 -i ../arm.patch +} + +build() { + cd apache-couchdb-${pkgver} + ./configure --spidermonkey-version 91 + make release +} + +package() { + cd apache-couchdb-${pkgver} + install -dm755 "${pkgdir}"/usr/lib + install -dm755 "${pkgdir}"/etc/couchdb + + cp -r rel/couchdb "${pkgdir}"/usr/lib/couchdb + mv "${pkgdir}"/usr/lib/couchdb/etc/{default.ini,local.ini,vm.args} "${pkgdir}"/etc/couchdb/ + + cd "${srcdir}" + install -Dm644 ${pkgname}.default "${pkgdir}"/etc/default/${pkgname} + install -Dm644 ${pkgname}.service -t "${pkgdir}"/usr/lib/systemd/system/ + install -Dm644 ${pkgname}.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/${pkgname}.conf + install -Dm644 ${pkgname}.sysusers "${pkgdir}"/usr/lib/sysusers.d/${pkgname}.conf + + # Remove some cruft + rm -r "${pkgdir}"/usr/lib/couchdb/erts-12.3/{doc,include,lib,man,src} + rm -rv "${pkgdir}"/usr/lib/couchdb/etc/ + rm -rv "${pkgdir}"/usr/lib/couchdb/lib/couch-${pkgver}/priv/couch_{ejson_compare,js} +} diff --git a/community/couchdb/arm.patch b/community/couchdb/arm.patch new file mode 100644 index 000000000..87026713c --- /dev/null +++ b/community/couchdb/arm.patch @@ -0,0 +1,28 @@ +diff -urN a/configure b/configure +--- a/configure 2022-05-28 11:52:23.733073347 -0600 ++++ b/configure 2022-05-28 11:58:09.110597387 -0600 +@@ -197,12 +197,6 @@ + + parse_opts $@ + +-if [ "${ARCH}" = "aarch64" ] && [ "${SM_VSN}" != "1.8.5" ] +-then +- echo "ERROR: SpiderMonkey 60 is known broken on ARM 64 (aarch64). Use 1.8.5 instead." +- exit 1 +-fi +- + echo "==> configuring couchdb in rel/couchdb.config" + cat > rel/couchdb.config << EOF + % Licensed under the Apache License, Version 2.0 (the "License"); you may not +diff -urN a/src/jiffy/rebar.config.script b/src/jiffy/rebar.config.script +--- a/src/jiffy/rebar.config.script 2021-10-05 09:07:14.000000000 -0600 ++++ b/src/jiffy/rebar.config.script 2022-05-28 11:59:13.368276228 -0600 +@@ -28,7 +28,7 @@ + case os:cmd(FLTO_CHECK) of + [] -> + {port_env, PortEnv} = lists:keyfind(port_env, 1, Config1), +- NewFlag = {".*", "FLTO_FLAG", "-flto"}, ++ NewFlag = {".*", "FLTO_FLAG", ""}, + NewPortEnv = lists:keyreplace("FLTO_FLAG", 2, PortEnv, NewFlag), + lists:keyreplace(port_env, 1, Config1, {port_env, NewPortEnv}); + _ -> diff --git a/community/couchdb/couchdb.default b/community/couchdb/couchdb.default new file mode 100644 index 000000000..939ad937a --- /dev/null +++ b/community/couchdb/couchdb.default @@ -0,0 +1,3 @@ +ERL_EPMD_ADDRESS=127.0.0.1 +COUCHDB_ARGS_FILE=/etc/couchdb/vm.args +COUCHDB_INI_FILES=/etc/couchdb/default.ini /etc/couchdb/local.ini diff --git a/community/couchdb/couchdb.service b/community/couchdb/couchdb.service new file mode 100644 index 000000000..698238804 --- /dev/null +++ b/community/couchdb/couchdb.service @@ -0,0 +1,42 @@ +[Unit] +Description=CouchDB Server + +[Service] +User=couchdb +Group=couchdb +Type=simple +WorkingDirectory=~ +StateDirectory=couchdb +EnvironmentFile=/etc/default/couchdb +ExecStart=/usr/lib/couchdb/bin/couchdb +ReadWritePaths=/etc/couchdb/local.ini +Restart=always +RestartSec=2s +AmbientCapabilities= +CapabilityBoundingSet= +LockPersonality=true +# Not compatible with the use of JS +#MemoryDenyWriteExecute=true +NoNewPrivileges=True +PrivateDevices=true +PrivateTmp=true +PrivateUsers=true +ProtectClock=true +ProtectControlGroups=yes +ProtectHome=true +ProtectHostname=true +ProtectKernelLogs=true +ProtectKernelModules=yes +ProtectKernelTunables=true +ProtectProc=invisible +ProtectSystem=strict +RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX +RestrictNamespaces=true +RestrictRealtime=true +RestrictSUIDSGID=true +SystemCallArchitectures=native +SystemCallFilter=@system-service +SystemCallErrorNumber=EPERM + +[Install] +WantedBy=multi-user.target diff --git a/community/couchdb/couchdb.sysusers b/community/couchdb/couchdb.sysusers new file mode 100644 index 000000000..7dac623a0 --- /dev/null +++ b/community/couchdb/couchdb.sysusers @@ -0,0 +1 @@ +u couchdb - "CouchDB daemon" /var/lib/couchdb diff --git a/community/couchdb/couchdb.tmpfiles b/community/couchdb/couchdb.tmpfiles new file mode 100644 index 000000000..012c87479 --- /dev/null +++ b/community/couchdb/couchdb.tmpfiles @@ -0,0 +1,3 @@ +z /etc/couchdb/local.ini - couchdb couchdb +d /var/lib/couchdb 0755 couchdb couchdb +x /var/lib/couchdb