summaryrefslogtreecommitdiff
path: root/databases/py-carbon
diff options
context:
space:
mode:
authorriz <riz@pkgsrc.org>2015-12-11 21:40:50 +0000
committerriz <riz@pkgsrc.org>2015-12-11 21:40:50 +0000
commit2e40c021c3e24ce35b3104f04d7debaf038f2280 (patch)
tree2dba19198ac25ade9968a00cd3ea06da79fa082b /databases/py-carbon
parentdc16f0b7b0ff69e64e5da278f9770e455c2ecf8d (diff)
downloadpkgsrc-2e40c021c3e24ce35b3104f04d7debaf038f2280.tar.gz
Add py-carbon 0.9.15, from pkgsrc-wip.
Carbon is a backend data caching and persistence daemon for Graphite. See https://github.com/graphite-project/ for more information.
Diffstat (limited to 'databases/py-carbon')
-rw-r--r--databases/py-carbon/DESCR1
-rw-r--r--databases/py-carbon/Makefile78
-rw-r--r--databases/py-carbon/Makefile.common16
-rw-r--r--databases/py-carbon/PLIST107
-rw-r--r--databases/py-carbon/distinfo8
-rw-r--r--databases/py-carbon/files/carbon-aggregator.sh73
-rw-r--r--databases/py-carbon/files/carbon-cache.sh73
-rw-r--r--databases/py-carbon/files/carbon-relay.sh73
-rw-r--r--databases/py-carbon/options.mk30
-rw-r--r--databases/py-carbon/patches/patch-carbon_conf_example57
-rw-r--r--databases/py-carbon/patches/patch-setup.py29
11 files changed, 545 insertions, 0 deletions
diff --git a/databases/py-carbon/DESCR b/databases/py-carbon/DESCR
new file mode 100644
index 00000000000..a9e345ff0f1
--- /dev/null
+++ b/databases/py-carbon/DESCR
@@ -0,0 +1 @@
+Carbon is a backend data caching and persistence daemon for Graphite.
diff --git a/databases/py-carbon/Makefile b/databases/py-carbon/Makefile
new file mode 100644
index 00000000000..3d3ebfe6af0
--- /dev/null
+++ b/databases/py-carbon/Makefile
@@ -0,0 +1,78 @@
+# $NetBSD: Makefile,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+DISTNAME= carbon-0.9.15
+PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
+CATEGORIES= databases
+GITHUB_PROJECT= carbon
+MASTER_SITES= ${MASTER_SITE_GITHUB:=graphite-project/}
+
+MAINTAINER= riz@NetBSD.org
+HOMEPAGE= http://launchpad.net/graphite
+COMMENT= Backend storage application for graphite
+LICENSE= apache-2.0
+
+DEPENDS+= ${PYPKGPREFIX}-twisted-[0-9]*:../../net/py-twisted
+DEPENDS+= ${PYPKGPREFIX}-whisper>=${PKGVERSION_NOREV}:../../databases/py-whisper
+
+USE_LANGUAGES= # none
+
+PYTHON_VERSIONS_INCOMPATIBLE= 33 34 35 # py-twisted
+
+.include "../../mk/bsd.prefs.mk"
+.include "options.mk"
+
+BUILD_DEFS+= VARBASE GRAPHITE_USER GRAPHITE_GROUP GRAPHITE_DIR
+
+RCD_SCRIPTS= carbon-aggregator carbon-cache carbon-relay
+FILES_SUBST+= GRAPHITE_USER=${GRAPHITE_USER} GRAPHITE_GROUP=${GRAPHITE_GROUP} \
+ GRAPHITE_DIR=${GRAPHITE_DIR}
+
+OWN_DIRS_PERMS+= ${GRAPHITE_DIR} ${WWW_USER} ${GRAPHITE_GROUP} 0775
+OWN_DIRS_PERMS+= ${GRAPHITE_DIR}/lists ${GRAPHITE_USER} ${GRAPHITE_GROUP} 0755
+OWN_DIRS_PERMS+= ${GRAPHITE_DIR}/rrd ${GRAPHITE_USER} ${GRAPHITE_GROUP} 0755
+OWN_DIRS_PERMS+= ${GRAPHITE_DIR}/whisper ${GRAPHITE_USER} ${GRAPHITE_GROUP} 0755
+OWN_DIRS_PERMS+= ${GRAPHITE_LOG_DIR} ${GRAPHITE_USER} ${GRAPHITE_GROUP} 0755
+OWN_DIRS_PERMS+= ${VARBASE}/run/graphite ${GRAPHITE_USER} ${GRAPHITE_GROUP} 0755
+
+
+SUBST_CLASSES+= dirs
+SUBST_STAGE.dirs= pre-configure
+SUBST_MESSAGE.dirs= Patching default storage directory
+SUBST_FILES.dirs= setup.py conf/*
+SUBST_VARS.dirs= GRAPHITE_DIR GRAPHITE_EGDIR GRAPHITE_USER PREFIX \
+ PKG_SYSCONFDIR VARBASE
+
+# NetBSD has posix_fallocate in libc, but fs can't actually use it.
+.if ${OPSYS} == "NetBSD"
+SUBST_CLASSES+= fallocate
+SUBST_STAGE.fallocate= pre-configure
+SUBST_MESSAGE.fallocate=Patching for NetBSD defaults
+SUBST_FILES.fallocate= conf/carbon.conf.example
+SUBST_SED.fallocate= -e 's,^\(WHISPER_FALLOCATE_CREATE *= *\)\(.*\),\1False,'
+.endif
+
+PKG_SYSCONFSUBDIR= graphite
+
+GRAPHITE_CONF_FILES= aggregation-rules.conf \
+ blacklist.conf \
+ carbon.amqp.conf \
+ carbon.conf \
+ relay-rules.conf \
+ rewrite-rules.conf \
+ storage-aggregation.conf \
+ storage-schemas.conf \
+ whitelist.conf
+
+.for file in ${GRAPHITE_CONF_FILES}
+CONF_FILES+= ${GRAPHITE_EGDIR}/${file}.example \
+ ${PKG_SYSCONFDIR}/${file}
+.endfor
+
+PYSETUPINSTALLARGS= --prefix=${PREFIX} \
+ --install-lib=${PREFIX}/${PYSITELIB}
+
+INSTALLATION_DIRS+= share/examples/graphite
+
+.include "../../databases/py-carbon/Makefile.common"
+.include "../../lang/python/distutils.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/databases/py-carbon/Makefile.common b/databases/py-carbon/Makefile.common
new file mode 100644
index 00000000000..4b2db8624ef
--- /dev/null
+++ b/databases/py-carbon/Makefile.common
@@ -0,0 +1,16 @@
+# $NetBSD: Makefile.common,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+# used by databases/py-carbon/Makefile
+# used by www/py-graphite-web/Makefile
+
+GRAPHITE_USER?= graphite
+GRAPHITE_GROUP?= graphite
+WWW_USER?= www
+WWW_GROUP?= www
+GRAPHITE_DIR?= ${VARBASE}/graphite
+GRAPHITE_EGDIR?= share/examples/graphite
+GRAPHITE_LOG_DIR?= ${VARBASE}/log/graphite
+
+PKG_GROUPS+= ${GRAPHITE_GROUP} ${WWW_GROUP}
+PKG_USERS+= ${GRAPHITE_USER}:${GRAPHITE_GROUP} ${WWW_USER}:${WWW_GROUP}
+PKG_GECOS.${GRAPHITE_USER}= Graphite Carbon user
diff --git a/databases/py-carbon/PLIST b/databases/py-carbon/PLIST
new file mode 100644
index 00000000000..fdd50eadbde
--- /dev/null
+++ b/databases/py-carbon/PLIST
@@ -0,0 +1,107 @@
+@comment $NetBSD: PLIST,v 1.1 2015/12/11 21:40:50 riz Exp $
+bin/carbon-aggregator.py
+bin/carbon-cache.py
+bin/carbon-client.py
+bin/carbon-relay.py
+bin/validate-storage-schemas.py
+${PYSITELIB}/${EGG_FILE}
+${PYSITELIB}/carbon/__init__.py
+${PYSITELIB}/carbon/__init__.pyc
+${PYSITELIB}/carbon/__init__.pyo
+${PYSITELIB}/carbon/aggregator/__init__.py
+${PYSITELIB}/carbon/aggregator/__init__.pyc
+${PYSITELIB}/carbon/aggregator/__init__.pyo
+${PYSITELIB}/carbon/aggregator/buffers.py
+${PYSITELIB}/carbon/aggregator/buffers.pyc
+${PYSITELIB}/carbon/aggregator/buffers.pyo
+${PYSITELIB}/carbon/aggregator/receiver.py
+${PYSITELIB}/carbon/aggregator/receiver.pyc
+${PYSITELIB}/carbon/aggregator/receiver.pyo
+${PYSITELIB}/carbon/aggregator/rules.py
+${PYSITELIB}/carbon/aggregator/rules.pyc
+${PYSITELIB}/carbon/aggregator/rules.pyo
+${PYSITELIB}/carbon/amqp0-8.xml
+${PYSITELIB}/carbon/amqp_listener.py
+${PYSITELIB}/carbon/amqp_listener.pyc
+${PYSITELIB}/carbon/amqp_listener.pyo
+${PYSITELIB}/carbon/amqp_publisher.py
+${PYSITELIB}/carbon/amqp_publisher.pyc
+${PYSITELIB}/carbon/amqp_publisher.pyo
+${PYSITELIB}/carbon/cache.py
+${PYSITELIB}/carbon/cache.pyc
+${PYSITELIB}/carbon/cache.pyo
+${PYSITELIB}/carbon/client.py
+${PYSITELIB}/carbon/client.pyc
+${PYSITELIB}/carbon/client.pyo
+${PYSITELIB}/carbon/conf.py
+${PYSITELIB}/carbon/conf.pyc
+${PYSITELIB}/carbon/conf.pyo
+${PYSITELIB}/carbon/events.py
+${PYSITELIB}/carbon/events.pyc
+${PYSITELIB}/carbon/events.pyo
+${PYSITELIB}/carbon/exceptions.py
+${PYSITELIB}/carbon/exceptions.pyc
+${PYSITELIB}/carbon/exceptions.pyo
+${PYSITELIB}/carbon/hashing.py
+${PYSITELIB}/carbon/hashing.pyc
+${PYSITELIB}/carbon/hashing.pyo
+${PYSITELIB}/carbon/instrumentation.py
+${PYSITELIB}/carbon/instrumentation.pyc
+${PYSITELIB}/carbon/instrumentation.pyo
+${PYSITELIB}/carbon/log.py
+${PYSITELIB}/carbon/log.pyc
+${PYSITELIB}/carbon/log.pyo
+${PYSITELIB}/carbon/management.py
+${PYSITELIB}/carbon/management.pyc
+${PYSITELIB}/carbon/management.pyo
+${PYSITELIB}/carbon/manhole.py
+${PYSITELIB}/carbon/manhole.pyc
+${PYSITELIB}/carbon/manhole.pyo
+${PYSITELIB}/carbon/protocols.py
+${PYSITELIB}/carbon/protocols.pyc
+${PYSITELIB}/carbon/protocols.pyo
+${PYSITELIB}/carbon/regexlist.py
+${PYSITELIB}/carbon/regexlist.pyc
+${PYSITELIB}/carbon/regexlist.pyo
+${PYSITELIB}/carbon/relayrules.py
+${PYSITELIB}/carbon/relayrules.pyc
+${PYSITELIB}/carbon/relayrules.pyo
+${PYSITELIB}/carbon/rewrite.py
+${PYSITELIB}/carbon/rewrite.pyc
+${PYSITELIB}/carbon/rewrite.pyo
+${PYSITELIB}/carbon/routers.py
+${PYSITELIB}/carbon/routers.pyc
+${PYSITELIB}/carbon/routers.pyo
+${PYSITELIB}/carbon/service.py
+${PYSITELIB}/carbon/service.pyc
+${PYSITELIB}/carbon/service.pyo
+${PYSITELIB}/carbon/state.py
+${PYSITELIB}/carbon/state.pyc
+${PYSITELIB}/carbon/state.pyo
+${PYSITELIB}/carbon/storage.py
+${PYSITELIB}/carbon/storage.pyc
+${PYSITELIB}/carbon/storage.pyo
+${PYSITELIB}/carbon/util.py
+${PYSITELIB}/carbon/util.pyc
+${PYSITELIB}/carbon/util.pyo
+${PYSITELIB}/carbon/writer.py
+${PYSITELIB}/carbon/writer.pyc
+${PYSITELIB}/carbon/writer.pyo
+${PYSITELIB}/twisted/plugins/carbon_aggregator_plugin.py
+${PYSITELIB}/twisted/plugins/carbon_aggregator_plugin.pyc
+${PYSITELIB}/twisted/plugins/carbon_aggregator_plugin.pyo
+${PYSITELIB}/twisted/plugins/carbon_cache_plugin.py
+${PYSITELIB}/twisted/plugins/carbon_cache_plugin.pyc
+${PYSITELIB}/twisted/plugins/carbon_cache_plugin.pyo
+${PYSITELIB}/twisted/plugins/carbon_relay_plugin.py
+${PYSITELIB}/twisted/plugins/carbon_relay_plugin.pyc
+${PYSITELIB}/twisted/plugins/carbon_relay_plugin.pyo
+share/examples/graphite/aggregation-rules.conf.example
+share/examples/graphite/blacklist.conf.example
+share/examples/graphite/carbon.amqp.conf.example
+share/examples/graphite/carbon.conf.example
+share/examples/graphite/relay-rules.conf.example
+share/examples/graphite/rewrite-rules.conf.example
+share/examples/graphite/storage-aggregation.conf.example
+share/examples/graphite/storage-schemas.conf.example
+share/examples/graphite/whitelist.conf.example
diff --git a/databases/py-carbon/distinfo b/databases/py-carbon/distinfo
new file mode 100644
index 00000000000..270fefb0c7c
--- /dev/null
+++ b/databases/py-carbon/distinfo
@@ -0,0 +1,8 @@
+$NetBSD: distinfo,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+SHA1 (carbon-0.9.15.tar.gz) = 204e837684c29ac09069d740d009f070bfb942d3
+RMD160 (carbon-0.9.15.tar.gz) = 4a1b11d8ba06357f44e6eca3d45ee0f89dfef98a
+SHA512 (carbon-0.9.15.tar.gz) = cc56257e703fc262dd27019d4a4e86d483daf55bb4c0792200be82533fc721b087b9eb5926cd007bf1e1c0f799729de871de5182f807fa9e0394ba08eccfa2fe
+Size (carbon-0.9.15.tar.gz) = 57328 bytes
+SHA1 (patch-carbon_conf_example) = 75153928e117e5a982dd00ae18b715f272854306
+SHA1 (patch-setup.py) = c9d08fcc91db9329b35ff79fdb08c1aa4bc0fd8d
diff --git a/databases/py-carbon/files/carbon-aggregator.sh b/databases/py-carbon/files/carbon-aggregator.sh
new file mode 100644
index 00000000000..386c90e6069
--- /dev/null
+++ b/databases/py-carbon/files/carbon-aggregator.sh
@@ -0,0 +1,73 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: carbon-aggregator.sh,v 1.1 2015/12/11 21:40:50 riz Exp $
+#
+# PROVIDE: carbon-aggregator
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+
+if [ -f /etc/rc.subr ]; then
+ . /etc/rc.subr
+fi
+
+name="carbon_aggregator"
+rcvar=$name
+command="@PREFIX@/bin/carbon-aggregator.py"
+config="--config=@PKG_SYSCONFDIR@/carbon.conf"
+graphite_user="@GRAPHITE_USER@"
+graphite_group="@GRAPHITE_GROUP@"
+graphite_dir="@GRAPHITE_DIR@"
+extra_commands="status"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+start_precmd='setproclimits'
+
+setproclimits()
+{
+ local climit
+ climit=$(ulimit -n)
+ if [ "$climit" -lt 4096 ]; then
+ ulimit -n 4096
+ fi
+}
+
+carbon_aggregator_start()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} start"
+}
+
+carbon_aggregator_stop()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} stop"
+}
+
+carbon_aggregator_status()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} status"
+}
+
+
+if [ -f /etc/rc.subr -a -f /etc/rc.conf ]; then
+ load_rc_config $name
+ run_rc_command "$1"
+else
+ if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+ fi
+ case $1 in
+ start)
+ ${start_cmd}
+ ;;
+ stop)
+ ${stop_cmd}
+ ;;
+ restart)
+ ${stop_cmd} && ${start_cmd}
+ ;;
+ *)
+ @ECHO@ "Usage: $0 {start|stop|restart}" 1>&2
+ exit 64
+ ;;
+ esac
+fi
diff --git a/databases/py-carbon/files/carbon-cache.sh b/databases/py-carbon/files/carbon-cache.sh
new file mode 100644
index 00000000000..5d90ab4a381
--- /dev/null
+++ b/databases/py-carbon/files/carbon-cache.sh
@@ -0,0 +1,73 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: carbon-cache.sh,v 1.1 2015/12/11 21:40:50 riz Exp $
+#
+# PROVIDE: carbon-cache
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+
+if [ -f /etc/rc.subr ]; then
+ . /etc/rc.subr
+fi
+
+name="carbon_cache"
+rcvar=$name
+command="@PREFIX@/bin/carbon-cache.py"
+config="--config=@PKG_SYSCONFDIR@/carbon.conf"
+graphite_user="@GRAPHITE_USER@"
+graphite_group="@GRAPHITE_GROUP@"
+graphite_dir="@GRAPHITE_DIR@"
+extra_commands="status"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+start_precmd='setproclimits'
+
+setproclimits()
+{
+ local climit
+ climit=$(ulimit -n)
+ if [ "$climit" -lt 4096 ]; then
+ ulimit -n 4096
+ fi
+}
+
+carbon_cache_start()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} start"
+}
+
+carbon_cache_stop()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} stop"
+}
+
+carbon_cache_status()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} status"
+}
+
+
+if [ -f /etc/rc.subr -a -f /etc/rc.conf ]; then
+ load_rc_config $name
+ run_rc_command "$1"
+else
+ if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+ fi
+ case $1 in
+ start)
+ ${start_cmd}
+ ;;
+ stop)
+ ${stop_cmd}
+ ;;
+ restart)
+ ${stop_cmd} && ${start_cmd}
+ ;;
+ *)
+ @ECHO@ "Usage: $0 {start|stop|restart}" 1>&2
+ exit 64
+ ;;
+ esac
+fi
diff --git a/databases/py-carbon/files/carbon-relay.sh b/databases/py-carbon/files/carbon-relay.sh
new file mode 100644
index 00000000000..8b62b468ce9
--- /dev/null
+++ b/databases/py-carbon/files/carbon-relay.sh
@@ -0,0 +1,73 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: carbon-relay.sh,v 1.1 2015/12/11 21:40:50 riz Exp $
+#
+# PROVIDE: carbon-relay
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+
+if [ -f /etc/rc.subr ]; then
+ . /etc/rc.subr
+fi
+
+name="carbon_relay"
+rcvar=$name
+command="@PREFIX@/bin/carbon-relay.py"
+config="--config=@PKG_SYSCONFDIR@/carbon.conf"
+graphite_user="@GRAPHITE_USER@"
+graphite_group="@GRAPHITE_GROUP@"
+graphite_dir="@GRAPHITE_DIR@"
+extra_commands="status"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+start_precmd='setproclimits'
+
+setproclimits()
+{
+ local climit
+ climit=$(ulimit -n)
+ if [ "$climit" -lt 4096 ]; then
+ ulimit -n 4096
+ fi
+}
+
+carbon_relay_start()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} start"
+}
+
+carbon_relay_stop()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} stop"
+}
+
+carbon_relay_status()
+{
+ @SU@ -m ${graphite_user} -c "${command} ${config} status"
+}
+
+
+if [ -f /etc/rc.subr -a -f /etc/rc.conf ]; then
+ load_rc_config $name
+ run_rc_command "$1"
+else
+ if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+ fi
+ case $1 in
+ start)
+ ${start_cmd}
+ ;;
+ stop)
+ ${stop_cmd}
+ ;;
+ restart)
+ ${stop_cmd} && ${start_cmd}
+ ;;
+ *)
+ @ECHO@ "Usage: $0 {start|stop|restart}" 1>&2
+ exit 64
+ ;;
+ esac
+fi
diff --git a/databases/py-carbon/options.mk b/databases/py-carbon/options.mk
new file mode 100644
index 00000000000..2dd97b28c2e
--- /dev/null
+++ b/databases/py-carbon/options.mk
@@ -0,0 +1,30 @@
+# $NetBSD: options.mk,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.py-carbon
+PKG_SUPPORTED_OPTIONS= amqp ldap memcached
+PKG_SUGGESTED_OPTIONS= #
+
+.include "../../mk/bsd.options.mk"
+
+###
+### AMQP support
+###
+.if !empty(PKG_OPTIONS:Mamqp)
+DEPENDS+= ${PYPKGPREFIX}-txamqp-[0-9]*:../../net/py-txamqp
+.endif
+
+###
+### LDAP support
+###
+.if !empty(PKG_OPTIONS:Mldap)
+DEPENDS+= ${PYPKGPREFIX}-ldap-[0-9]*:../../databases/py-ldap
+PYTHON_VERSIONS_INCOMPATIBLE= 33 34 35 # py-ldap
+.endif
+
+###
+### Memcached support
+###
+.if !empty(PKG_OPTIONS:Mmemcached)
+DEPENDS+= ${PYPKGPREFIX}-memcached-[0-9]*:../../devel/py-memcached
+PYTHON_VERSIONS_INCOMPATIBLE= 33 34 35 # py-memcached
+.endif
diff --git a/databases/py-carbon/patches/patch-carbon_conf_example b/databases/py-carbon/patches/patch-carbon_conf_example
new file mode 100644
index 00000000000..7967179cc93
--- /dev/null
+++ b/databases/py-carbon/patches/patch-carbon_conf_example
@@ -0,0 +1,57 @@
+$NetBSD: patch-carbon_conf_example,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+Set package-appropriate defaults
+
+--- conf/carbon.conf.example.orig 2015-11-27 10:37:07.000000000 -0800
++++ conf/carbon.conf.example 2015-12-06 11:41:02.000000000 -0800
+@@ -30,6 +30,13 @@
+ #
+ #LOCAL_DATA_DIR = /opt/graphite/storage/whisper/
+
++STORAGE_DIR = @GRAPHITE_DIR@
++LOCAL_DATA_DIR = @GRAPHITE_DIR@/whisper
++WHITELISTS_DIR = @GRAPHITE_DIR@/lists
++CONF_DIR = @PKG_SYSCONFDIR@
++LOG_DIR = @VARBASE@/log/graphite/
++PID_DIR = @VARBASE@/run/graphite/
++
+ # Enable daily log rotation. If disabled, carbon will automatically re-open
+ # the file if it's rotated out of place (e.g. by logrotate daemon)
+ ENABLE_LOGROTATION = True
+@@ -37,7 +44,7 @@
+ # Specify the user to drop privileges to
+ # If this is blank carbon runs as the user that invokes it
+ # This user must have write access to the local data directory
+-USER =
++USER = @GRAPHITE_USER@
+ #
+ # NOTE: The above settings must be set under [relay] and [aggregator]
+ # to take effect for those daemons as well
+@@ -235,6 +242,13 @@
+
+
+ [relay]
++STORAGE_DIR = @GRAPHITE_DIR@
++LOCAL_DATA_DIR = @GRAPHITE_DIR@/whisper
++WHITELISTS_DIR = @GRAPHITE_DIR@/lists
++CONF_DIR = @PKG_SYSCONFDIR@
++LOG_DIR = @VARBASE@/log/graphite/
++PID_DIR = @VARBASE@/run/graphite/
++USER = @GRAPHITE_USER@
+ LINE_RECEIVER_INTERFACE = 0.0.0.0
+ LINE_RECEIVER_PORT = 2013
+ PICKLE_RECEIVER_INTERFACE = 0.0.0.0
+@@ -322,6 +336,13 @@
+
+
+ [aggregator]
++STORAGE_DIR = @GRAPHITE_DIR@
++LOCAL_DATA_DIR = @GRAPHITE_DIR@/whisper
++WHITELISTS_DIR = @GRAPHITE_DIR@/lists
++CONF_DIR = @PKG_SYSCONFDIR@
++LOG_DIR = @VARBASE@/log/graphite/
++PID_DIR = @VARBASE@/run/graphite/
++USER = @GRAPHITE_USER@
+ LINE_RECEIVER_INTERFACE = 0.0.0.0
+ LINE_RECEIVER_PORT = 2023
+
diff --git a/databases/py-carbon/patches/patch-setup.py b/databases/py-carbon/patches/patch-setup.py
new file mode 100644
index 00000000000..c185314437e
--- /dev/null
+++ b/databases/py-carbon/patches/patch-setup.py
@@ -0,0 +1,29 @@
+$NetBSD: patch-setup.py,v 1.1 2015/12/11 21:40:50 riz Exp $
+
+Rearrange installation dirs for pkgsrc, and don't install redhat files
+
+--- setup.py.orig 2015-11-27 10:37:07.000000000 -0800
++++ setup.py 2015-12-04 12:53:42.000000000 -0800
+@@ -13,19 +13,12 @@
+ setup_kwargs = dict()
+
+
+-storage_dirs = [ ('storage/whisper',[]), ('storage/lists',[]),
+- ('storage/log',[]), ('storage/rrd',[]) ]
+-conf_files = [ ('conf', glob('conf/*.example')) ]
++storage_dirs = [ ('@GRAPHITE_DIR@/whisper',[]), ('@GRAPHITE_DIR@/lists',[]),
++ ('@GRAPHITE_DIR@/log',[]), ('@GRAPHITE_DIR@/rrd',[]) ]
++conf_files = [ ('@PREFIX@/@GRAPHITE_EGDIR@', glob('conf/*.example')) ]
+
+ install_files = storage_dirs + conf_files
+
+-# Let's include redhat init scripts, despite build platform
+-# but won't put them in /etc/init.d/ automatically anymore
+-init_scripts = [ ('examples/init.d', ['distro/redhat/init.d/carbon-cache',
+- 'distro/redhat/init.d/carbon-relay',
+- 'distro/redhat/init.d/carbon-aggregator']) ]
+-install_files += init_scripts
+-
+
+ setup(
+ name='carbon',