# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..13} )
DISTUTILS_USE_SETUPTOOLS=no # export USE_SETUPTOOLS to activate
PYPI_NO_NORMALIZE=1
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 prefix pypi
MY_PN="graphite-web"
COMMIT="ce4e991fa0220d50a1be2fd731a2b678f1e7bdeb"
DESCRIPTION="Enterprise scalable realtime graphing"
HOMEPAGE="https://graphiteapp.org/"
SRC_URI="https://github.com/graphite-project/graphite-web/archive/${COMMIT}.tar.gz -> ${P}.gh.tar.gz"
S="${WORKDIR}/${MY_PN}-${COMMIT}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="+carbon ldap mysql memcached postgres +sqlite"
RESTRICT="mirror"
DEPEND=""
RDEPEND="
carbon? ( dev-python/carbon[${PYTHON_USEDEP}] )
ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
memcached? ( dev-python/python-memcached[${PYTHON_USEDEP}] )
mysql? ( dev-python/mysqlclient[${PYTHON_USEDEP}] )
postgres? ( dev-python/psycopg:2[${PYTHON_USEDEP}] )
>=dev-python/django-1.11.19[sqlite?,${PYTHON_USEDEP}]
<dev-python/django-6[sqlite?,${PYTHON_USEDEP}]
>=dev-python/django-tagging-0.4.6[${PYTHON_USEDEP}]
dev-python/cairocffi[${PYTHON_USEDEP}]
dev-python/pyparsing[${PYTHON_USEDEP}]
dev-python/pytz[${PYTHON_USEDEP}]
dev-python/six[${PYTHON_USEDEP}]
dev-python/urllib3[${PYTHON_USEDEP}]
media-libs/fontconfig
"
PATCHES=(
# Do not install the configuration and data files. We install them
# somewhere sensible by hand.
"${FILESDIR}"/"${PN}"-1.1.10-fhs-paths.patch
)
python_prepare_all() {
# Use a less common name
mv bin/build-index bin/"${PN}"-build-index || die
# use FHS-style paths
export GRAPHITE_NO_PREFIX=yes
distutils-r1_python_prepare_all
eprefixify \
conf/graphite.wsgi.example \
webapp/graphite/local_settings.py.example
}
python_install_all() {
distutils-r1_python_install_all
keepdir /var/{lib,log}/"${PN}"
docinto examples
docompress -x "/usr/share/doc/${PF}/examples"
dodoc \
examples/example-graphite-vhost.conf \
conf/dashboard.conf.example \
conf/graphite.wsgi.example
}
python_install() {
distutils-r1_python_install \
--install-data="${EPREFIX}"/usr/share/"${PN}"
# copy the file once, to keep the timestamps correct, #808863
if [[ ! -e ${ED}/etc/${PN}/local_settings.py ]] ; then
insinto /etc/"${PN}"
newins webapp/graphite/local_settings.py.example local_settings.py
fi
pushd "${D}/$(python_get_sitedir)"/graphite > /dev/null || die
ln -s ../../../../../etc/"${PN}"/local_settings.py local_settings.py || die
popd > /dev/null || die
python_optimize
}
pkg_config() {
"${EROOT}"/usr/bin/django-admin.py migrate \
--settings=graphite.settings --run-syncdb
"${EROOT}"/usr/bin/"${PN}"-build-index
}
pkg_postinst() {
# Only display this for new installs
if [[ -z ${REPLACING_VERSIONS} ]]; then
elog "You need to configure ${PN} to run with a WSGI server of your choice."
elog "For example using Apache, you can use www-apache/mod_wsgi,"
elog " using Nginx, you can use www-servers/uwsgi."
elog "Don't forget to edit local_settings.py in ${EPREFIX}/etc/${PN}"
elog "See https://graphite.readthedocs.org/en/latest/config-local-settings.html"
elog "Run emerge --config =${PN}-${PVR} if this is a fresh install."
elog ""
elog "If you want to update the search index regularily, you should consider running"
elog "the '${PN}-build-index' script in a crontab."
fi
}