summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Deranek <marcin.deranek@booking.com>2023-01-06 21:31:21 +0100
committerMarcin Deranek <marcin.deranek@booking.com>2023-01-07 11:38:04 +0100
commitf5ca15fd4f5830800ea3b651bdbff3c5a0798478 (patch)
tree0b3a048812b3eca3ea8d106bd448f4aafe4144ba
parent5a4dc956a21d0056fd86d9eb16c29d7ccd55f3d4 (diff)
downloadportage-f5ca15fd4f5830800ea3b651bdbff3c5a0798478.tar.gz
portage-f5ca15fd4f5830800ea3b651bdbff3c5a0798478.tar.bz2
portage-f5ca15fd4f5830800ea3b651bdbff3c5a0798478.zip
Initial dev-python/celery ebuild
dev-python/celery fixes
-rw-r--r--dev-python/celery/Manifest5
-rw-r--r--dev-python/celery/celery-5.3.0_beta1.ebuild115
-rw-r--r--dev-python/celery/files/celery.confd-r251
-rw-r--r--dev-python/celery/files/celery.initd-r2204
-rw-r--r--dev-python/celery/metadata.xml13
5 files changed, 388 insertions, 0 deletions
diff --git a/dev-python/celery/Manifest b/dev-python/celery/Manifest
new file mode 100644
index 0000000..4a4067f
--- /dev/null
+++ b/dev-python/celery/Manifest
@@ -0,0 +1,5 @@
+AUX celery.confd-r2 1442 BLAKE2B df6ab3585c12fef2272979ad3412f08827f59e9306b7b997642ee8bd0d4c84b168f32fd9b6427be3c889af411806d37673853588999d366b549908891491bd6e SHA512 ba3172e56a18df963b5886497c51b8aaf5298b5f3055214217561c8c691678b44c762d4f68f96e597807630af4d9185b7a9d557d13f7ffe25fc0092abcd09354
+AUX celery.initd-r2 4293 BLAKE2B 8b19a9e6d41b6691b01f55cb35ba4e8d4d917e2f207e28d692764afb356f1ba1e7e50e89b384739193cc7b9fdead875900e26ea470df81c3bd32139786903f15 SHA512 69d0ab39a4235f5582b89cfe98f4820baafde33f36f4c4ef8850175c626c0c9e1b49f9d59515a153b658f49e22212a85e7a1d8f0f1209f4b794f86546bf00eb8
+DIST celery-5.3.0_beta1.gh.tar.gz 1509819 BLAKE2B 8864d9895823fde8ed1938a8b418906e624f14f6d306f1afb54bfc3c1897facfb22a85e368b2fb3ac96992d639e5f03589bfc78488de9ce060c88d9d1321e4ab SHA512 c617a03ca85120b7889eb94b36e41b3ba45b93acfe239c56c93b0860042a06fceaad1c396342e27f941ae58fd3d7468bf22d6b042b04e246b55abe5eedb63016
+EBUILD celery-5.3.0_beta1.ebuild 3538 BLAKE2B 4927549e7740d03239e8036410b5fc6dc63e2e3ff3aaf9e76e63e7d1f4f015887ad2fa3635baf66f5cafd73b27f37404c32b28d513740c5ef9ca22740b65844d SHA512 8d28aef4931f95c3f49345112a83e0b7972a1850f3ec0b4b34ceada947dc69490b1361f4efd5d123bd77e93a8a1d74e9970f320557cf91c876cacd01805bd468
+MISC metadata.xml 438 BLAKE2B 1b550a110de9f38e77710b61eb24f0a932d43fb0b2f0b25798c7d17f6afc1ae804d0e88755c84af8b9cdf05b79b2031d4cb7f4229edbe47ed355f6517872dd07 SHA512 f07aafe63040c066f5797c89cd2d2972a82ec2ad9991893cb4e84bf7d2cca4aa632d65235ed94121939686ea63794f7efef141cf359b9d51463893633d7adb0d
diff --git a/dev-python/celery/celery-5.3.0_beta1.ebuild b/dev-python/celery/celery-5.3.0_beta1.ebuild
new file mode 100644
index 0000000..e969f01
--- /dev/null
+++ b/dev-python/celery/celery-5.3.0_beta1.ebuild
@@ -0,0 +1,115 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit bash-completion-r1 distutils-r1 optfeature
+
+MY_PV="${PV/_beta/b}"
+DESCRIPTION="Asynchronous task queue/job queue based on distributed message passing"
+HOMEPAGE="
+ https://celeryproject.org/
+ https://pypi.org/project/celery/
+ https://github.com/celery/celery
+"
+SRC_URI="https://github.com/celery/celery/archive/v${MY_PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples"
+
+RDEPEND="
+ >=dev-python/billiard-3.6.4.0[${PYTHON_USEDEP}]
+ <dev-python/billiard-5.0.0[${PYTHON_USEDEP}]
+ >=dev-python/click-8.1.2[${PYTHON_USEDEP}]
+ <dev-python/click-9.0.0[${PYTHON_USEDEP}]
+ >=dev-python/click-didyoumean-0.3.0[${PYTHON_USEDEP}]
+ >=dev-python/click-plugins-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/click-repl-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/kombu-5.3.0_beta1[${PYTHON_USEDEP}]
+ <dev-python/kombu-6.0[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2021.3[${PYTHON_USEDEP}]
+ >=dev-python/vine-5.0.0[${PYTHON_USEDEP}]
+ <dev-python/vine-6.0.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep 'ncurses(+)')
+ >=dev-python/boto3-1.9.178[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/elasticsearch-py[${PYTHON_USEDEP}]
+ >=dev-python/moto-2.2.6[${PYTHON_USEDEP}]
+ dev-python/msgpack[${PYTHON_USEDEP}]
+ dev-python/pylibmc[${PYTHON_USEDEP}]
+ >=dev-python/pymongo-4.0.2[${PYTHON_USEDEP}]
+ dev-python/pytest-celery[${PYTHON_USEDEP}]
+ dev-python/pytest-click[${PYTHON_USEDEP}]
+ dev-python/pytest-subtests[${PYTHON_USEDEP}]
+ >=dev-python/pytest-timeout-1.4.2[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.10[${PYTHON_USEDEP}]
+ dev-python/redis-py[${PYTHON_USEDEP}]
+ dev-python/sphinx-testing[${PYTHON_USEDEP}]
+ dev-python/tblib[${PYTHON_USEDEP}]
+ sci-astronomy/pyephem[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ )
+ doc? (
+ dev-python/docutils[${PYTHON_USEDEP}]
+ >=dev-python/sphinx_celery-2.0.0[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs --no-autodoc
+
+EPYTEST_DESELECT=(
+ # Failing tests
+ t/unit/contrib/test_sphinx.py::test_sphinx
+)
+python_prepare_all() {
+ # Remove failed tests
+ rm t/unit/app/test_backends.py \
+ t/unit/backends/test_{base,rpc}.py
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ # Main celeryd init.d and conf.d
+ newinitd "${FILESDIR}/celery.initd-r2" celery
+ newconfd "${FILESDIR}/celery.confd-r2" celery
+
+ if use examples; then
+ docinto examples
+ dodoc -r examples/.
+ docompress -x "/usr/share/doc/${PF}/examples"
+ fi
+
+ newbashcomp extra/bash-completion/celery.bash "${PN}"
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "msgpack support" dev-python/msgpack
+ #optfeature "rabbitmq support" dev-python/librabbitmq
+ #optfeature "slmq support" dev-python/softlayer_messaging
+ #optfeature "couchbase support" dev-python/couchbase
+ optfeature "redis support" dev-python/redis-py
+ optfeature "auth support" dev-python/pyopenssl
+ optfeature "pyro support" dev-python/Pyro4
+ optfeature "yaml support" dev-python/pyyaml
+ optfeature "memcache support" dev-python/pylibmc
+ optfeature "mongodb support" dev-python/pymongo
+ optfeature "sqlalchemy support" dev-python/sqlalchemy
+ optfeature "sqs support" dev-python/boto
+ #optfeature "cassandra support" dev-python/cassandra-driver
+}
diff --git a/dev-python/celery/files/celery.confd-r2 b/dev-python/celery/files/celery.confd-r2
new file mode 100644
index 0000000..d5ba2f7
--- /dev/null
+++ b/dev-python/celery/files/celery.confd-r2
@@ -0,0 +1,51 @@
+# /etc/conf.d/celery
+
+##############################################################################
+# GLOBAL CONFIGURATION
+
+# User and group
+#CELERY_USER="celery"
+#CELERY_GROUP="celery"
+
+# This is generaly a good idea to set the environment correctly
+# because a lot of python package try to use HOME on init
+#export HOME="/var/lib/myproject"
+
+# Full path to the python project directory.
+#CELERY_PROJDIR="/var/lib/myproject"
+
+##############################################################################
+# CELERYD
+
+# Start the Celery worker daemon
+#CELERYD_ENABLED="yes"
+
+# celeryd notes
+#CELERYD_NODES="celery"
+
+# celeryd options
+# Example: set a 5 minute hard time limit for tasks, disable queue process prefetching and specify an app module from CELERY_PROJDIR
+#CELERYD_OPTS="--time-limit=300 -Ofair -A celeryapp"
+
+# Location and level of the celeryd log file
+#CELERYD_LOG_FILE=/var/log/celery/celeryd@%n.log
+#CELERYD_LOG_LEVEL="INFO"
+
+# Location of the celeryd pid file
+#CELERYD_PID_FILE=/run/celery/celeryd@%n.pid
+
+##############################################################################
+# CELERYBEAT
+
+# Start the Celery task scheduler daemon
+#CELERYBEAT_ENABLED="yes"
+
+# celerybeat options
+#CELERYBEAT_OPTS=""
+
+# Location and level of the celerybeat log file
+#CELERYBEAT_LOG_FILE=/var/log/celery/celerybeat.log
+#CELERYBEAT_LOG_LEVEL="INFO"
+
+# Location of the celerybeat pid file
+#CELERYBEAT_PID_FILE=/run/celery/celerybeat.pid
diff --git a/dev-python/celery/files/celery.initd-r2 b/dev-python/celery/files/celery.initd-r2
new file mode 100644
index 0000000..422904d
--- /dev/null
+++ b/dev-python/celery/files/celery.initd-r2
@@ -0,0 +1,204 @@
+#!/sbin/openrc-run
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the BSD license
+
+extra_started_commands="reload"
+
+depend() {
+ use rabbitmq redis logger dns
+}
+
+CELERYD_ENABLED=${CELERYD_ENABLED:-"no"}
+CELERYD_PID_FILE=${CELERYD_PID_FILE:-"/run/celery/celeryd@%n.pid"}
+CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-"/var/log/celery/celeryd@%n.log"}
+CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-"INFO"}
+CELERYD_NODES=${CELERYD_NODES:-"celery"}
+
+CELERYBEAT_ENABLED=${CELERYBEAT_ENABLED:-"no"}
+CELERYBEAT_PID_FILE=${CELERYBEAT_PID_FILE:-"/run/celery/celerybeat.pid"}
+CELERYBEAT_LOG_FILE=${CELERYBEAT_LOG_FILE:-"/var/log/celery/celerybeat.log"}
+CELERYBEAT_LOG_LEVEL=${CELERYBEAT_LOG_LEVEL:-"INFO"}
+
+export CELERY_LOADER
+
+CELERYD_MULTI=${CELERYD_MULTI:-"celery multi"}
+CELERYCTL=${CELERYCTL:-"celery"}
+CELERYBEAT=${CELERYBEAT:-"celery beat"}
+
+CELERYD_OPTS="${CELERYD_OPTS}"
+CELERYBEAT_OPTS="${CELERYBEAT_OPTS} -f ${CELERYBEAT_LOG_FILE} -l ${CELERYBEAT_LOG_LEVEL}"
+
+create_dirs() {
+ local logfile="${1}"
+ local pidfile="${2}"
+ local logdir=$(dirname ${logfile})
+ local piddir=$(dirname ${pidfile})
+
+ checkpath -d -q -m 0750 -o ${CELERY_USER:-"root"}:${CELERY_GROUP:-"root"} ${logdir} ${piddir}
+}
+
+[ -n "${CELERY_USER}" ] && DAEMON_OPTS="${DAEMON_OPTS} --uid=${CELERY_USER}"
+[ -n "${CELERY_GROUP}" ] && DAEMON_OPTS="${DAEMON_OPTS} --gid=${CELERY_GROUP}"
+
+checkconfig() {
+ if [ ! -c /dev/null ]; then
+ eerror "/dev/null is not a character device!"
+ return 1
+ fi
+
+ if [ -z "${CELERY_PROJDIR}" ]; then
+ eerror "Missing CELERY_PROJDIR variable"
+ return 1
+ fi
+
+ yesno "${CELERYD_ENABLED}" && \
+ create_dirs "${CELERYD_LOG_FILE}" "${CELERYD_PID_FILE}"
+
+ yesno "${CELERYBEAT_ENABLED}" && \
+ create_dirs "${CELERYBEAT_LOG_FILE}" "${CELERYBEAT_PID_FILE}"
+
+ return 0
+}
+
+celery_chdir() {
+ [ -n "${CELERY_PROJDIR}" ] && cd "${CELERY_PROJDIR}"
+}
+
+wait_pid () {
+ local pidfile=${1}
+ local timeout=${STOPTIMEOUT:-"10"}
+ local PID=$(cat "${pidfile}" 2>/dev/null)
+
+ while [ -n "${PID}" ] && [ "${timeout}" -ge 1 ]; do
+ kill -0 ${PID} 2>/dev/null || break
+ kill -TERM "${PID}"
+ timeout=$((${timeout} - 1))
+ sleep 0.5
+ done
+
+ [ "${timeout}" -lt 1 ] && return 1
+ [ -f ${pidfile} ] && rm -f ${pidfile}
+ return 0
+}
+
+# celeryd
+start_workers() {
+ yesno "${CELERYD_ENABLED}" || return 0
+
+ ${CELERYD_MULTI} start ${CELERYD_NODES} ${DAEMON_OPTS} \
+ --pidfile="${CELERYD_PID_FILE}" \
+ --logfile="${CELERYD_LOG_FILE}" \
+ --loglevel="${CELERYD_LOG_LEVEL}" \
+ ${CELERYD_OPTS}
+}
+
+stop_workers() {
+ yesno "${CELERYD_ENABLED}" || return 0
+
+ local timeout=${STOPTIMEOUT:-"10"}
+
+ ${CELERYD_MULTI} stop ${CELERYD_NODES} --pidfile="${CELERYD_PID_FILE}" || return 1
+
+ # Wait for each node
+ for node in ${CELERYD_NODES}; do
+ local pidfile=${CELERYD_PID_FILE/\%n/${node}}
+ local PID=$(cat "${pidfile}" 2>/dev/null)
+ while [ -n "${PID}" ] && [ "${timeout}" -ge 1 ]; do
+ kill -0 ${PID} 2>/dev/null || break
+ timeout=$((${timeout} - 1))
+ sleep 0.5
+ done
+ done
+
+ [ "${timeout}" -lt 1 ] && return 1
+ return 0
+}
+
+restart_workers() {
+ yesno "${CELERYD_ENABLED}" || return 0
+
+ ${CELERYD_MULTI} restart ${CELERYD_NODES} ${DAEMON_OPTS} \
+ --pidfile="${CELERYD_PID_FILE}" \
+ --logfile="${CELERYD_LOG_FILE}" \
+ --loglevel="${CELERYD_LOG_LEVEL}" \
+ ${CELERYD_OPTS}
+}
+
+# celerybeat
+start_beat() {
+ yesno "${CELERYBEAT_ENABLED}" || return 0
+
+ ebegin "Starting celerybeat"
+ ${CELERYBEAT} ${CELERYBEAT_OPTS} ${DAEMON_OPTS} --detach \
+ --pidfile="${CELERYBEAT_PID_FILE}"
+ eend ${?}
+}
+
+
+stop_beat() {
+ yesno "${CELERYBEAT_ENABLED}" || return 0
+
+ ebegin "Stopping celerybeat"
+ if [ -f "${CELERYBEAT_PID_FILE}" ]; then
+ wait_pid "${CELERYBEAT_PID_FILE}"
+ else
+ ewarn "not running"
+ fi
+ eend ${?}
+}
+
+
+start() {
+ local cr=0
+
+ checkconfig || return 1
+
+ ebegin "Starting ${SVCNAME}"
+ eindent
+
+ celery_chdir && \
+ start_workers && \
+ start_beat || cr=1
+
+ eoutdent
+ eend ${cr}
+}
+
+stop() {
+ local cr=0
+
+ checkconfig || return 1
+
+ ebegin "Stopping ${SVCNAME}"
+ eindent
+
+ celery_chdir
+ stop_workers || cr=1
+ stop_beat || cr=1
+
+ eoutdent
+ eend ${cr}
+}
+
+reload() {
+ local cr=0
+
+ checkconfig || return 1
+
+ ebegin "Restarting ${SVCNAME}"
+ eindent
+
+ celery_chdir
+ restart_workers || cr=1
+ stop_beat && start_beat || cr=1
+
+ eoutdent
+ eend ${cr}
+}
+
+status() {
+ checkconfig || return 1
+
+ celery_chdir && \
+ ${CELERYCTL} status
+}
diff --git a/dev-python/celery/metadata.xml b/dev-python/celery/metadata.xml
new file mode 100644
index 0000000..f32dce5
--- /dev/null
+++ b/dev-python/celery/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/celery/celery/issues</bugs-to>
+ <remote-id type="github">celery/celery</remote-id>
+ <remote-id type="pypi">celery</remote-id>
+ </upstream>
+</pkgmetadata>