diff options
Diffstat (limited to 'dev-python/elasticsearch-curator/elasticsearch-curator-5.8.1-r3.ebuild')
-rw-r--r-- | dev-python/elasticsearch-curator/elasticsearch-curator-5.8.1-r3.ebuild | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/dev-python/elasticsearch-curator/elasticsearch-curator-5.8.1-r3.ebuild b/dev-python/elasticsearch-curator/elasticsearch-curator-5.8.1-r3.ebuild new file mode 100644 index 000000000000..526bbb2aac47 --- /dev/null +++ b/dev-python/elasticsearch-curator/elasticsearch-curator-5.8.1-r3.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_7 ) + +MY_PN="curator" +ES_VERSION="7.3.2" + +inherit distutils-r1 + +DESCRIPTION="Tending time-series indices in Elasticsearch" +HOMEPAGE="https://github.com/elastic/curator" +SRC_URI="https://github.com/elastic/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz + test? ( https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz )" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +# tests fail in chroot +# https://github.com/elastic/elasticsearch/issues/12018 +RESTRICT="test" +IUSE="doc test" + +# vulnerable pyyaml +# https://github.com/elastic/curator/issues/1415 +RDEPEND=" + >=dev-python/elasticsearch-py-7.0.4[${PYTHON_USEDEP}] + <dev-python/elasticsearch-py-8.0.0[${PYTHON_USEDEP}] + >=dev-python/click-6.7[${PYTHON_USEDEP}] + <dev-python/click-7.0[${PYTHON_USEDEP}] + >=dev-python/certifi-2019.9.11[${PYTHON_USEDEP}] + >=dev-python/requests-2.20.0[${PYTHON_USEDEP}] + >=dev-python/urllib3-1.24.2[${PYTHON_USEDEP}] + <dev-python/urllib3-1.26[${PYTHON_USEDEP}] + >=dev-python/voluptuous-0.9.3[${PYTHON_USEDEP}]" +DEPEND="dev-python/setuptools[${PYTHON_USEDEP}] + >=dev-python/six-1.11.0[${PYTHON_USEDEP}] + dev-python/sphinx + dev-python/pyyaml[${PYTHON_USEDEP}] + dev-python/cx_Freeze[${PYTHON_USEDEP}] + dev-python/importlib_metadata[${PYTHON_USEDEP}] + test? ( ${RDEPEND} + virtual/jre + dev-python/mock[${PYTHON_USEDEP}] + dev-python/nose[${PYTHON_USEDEP}] + dev-python/six[${PYTHON_USEDEP}] )" + +S="${WORKDIR}/${MY_PN}-${PV}" + +python_prepare_all() { + # avoid downloading from net + sed -e '/^intersphinx_mapping/,+3d' -i docs/conf.py || die + + # requests_aws4auth not in portage + sed -e '/boto3/d' \ + -e '/requests_aws4auth/d' \ + -e 's/pyyaml==3.13/pyyaml/g' \ + -e '/tests_require/s/, "coverage", "nosexcover"//g' \ + -i setup.cfg setup.py || die + + # Bug 713342 + sed -i 's/yaml.load/yaml.unsafe_load/g' curator/utils.py test/unit/* || die + + distutils-r1_python_prepare_all +} + +python_compile_all() { + emake -C docs -j1 man $(usex doc html "") +} + +# running tests in non-chroot environments: +# FEATURES="test -usersandbox" emerge dev-python/elasticsearch-curator +python_test_all() { + # starts two ES instances (local,remote) and runs the tests + # https://github.com/elastic/curator/blob/master/travis-run.sh + local ES_INSTANCES="local remote" + local ES_PATH="${WORKDIR}/elasticsearch-${ES_VERSION}" + + declare -A ES_PORT + ES_PORT[local]=9200 + ES_PORT[remote]=9201 + + local i transport + declare -A ES_CONFIG_DIR ES_CONFIG_PATH ES_INSTANCE ES_LOG ES_PID + for i in ${ES_INSTANCES}; do + ES_CONFIG_DIR[$i]="${ES_PATH}/$i" + ES_CONFIG_PATH[$i]="${ES_CONFIG_DIR[$i]}/elasticsearch.yml" + ES_PID[$i]="${ES_PATH}/$i.pid" + ES_LOG[$i]="${ES_PATH}/logs/$i.log" + done + + # configure ES instances + for i in ${ES_INSTANCES}; do + mkdir -p "${ES_CONFIG_DIR[$i]}" || die + cp ${ES_PATH}/config/{jvm.options,log4j2.properties} "${ES_CONFIG_DIR[$i]}"/ || die + echo 'network.host: 127.0.0.1' > "${ES_CONFIG_PATH[$i]}" || die + echo "http.port: ${ES_PORT[$i]}" >> "${ES_CONFIG_PATH[$i]}" || die + echo "cluster.name: $i" >> "${ES_CONFIG_PATH[$i]}" || die + echo "node.name: $i" >> "${ES_CONFIG_PATH[$i]}" || die + echo 'node.max_local_storage_nodes: 2' >> "${ES_CONFIG_PATH[$i]}" || die + transport=$((${ES_PORT[$i]}+100)) + echo "transport.port: ${transport}" >> "${ES_CONFIG_PATH[$i]}" || die + echo "discovery.seed_hosts: [\"localhost:${transport}\"]" >> "${ES_CONFIG_PATH[$i]}" || die + echo "discovery.type: single-node" >> "${ES_CONFIG_PATH[$i]}" || die + done + + echo 'path.repo: /' >> "${ES_CONFIG_PATH[local]}" || die + echo "reindex.remote.whitelist: localhost:${ES_PORT[remote]}" >> "${ES_CONFIG_PATH[local]}" || die + + # start ES instances + for i in ${ES_INSTANCES}; do + ES_PATH_CONF=${ES_CONFIG_DIR[$i]} "${ES_PATH}/bin/elasticsearch" -d -p "${ES_PID[$i]}" || die + + local j + local es_started=0 + for j in {1..30}; do + grep -q "started" "${ES_LOG[$i]}" 2> /dev/null + if [[ $? -eq 0 ]]; then + einfo "Elasticsearch $i started" + es_started=1 + eend 0 + break + elif grep -q 'BindException\[Address already in use\]' "${ES_LOG[$i]}" 2>/dev/null; then + eend 1 + eerror "Elasticsearch $i already running" + die "Cannot start Elasticsearch $i for tests" + else + einfo "Waiting for Elasticsearch $i" + eend 1 + sleep 2 + continue + fi + done + + [[ $es_started -eq 0 ]] && die "Elasticsearch failed to start" + done + + export TEST_ES_SERVER="localhost:${ES_PORT[local]}" + export REMOTE_ES_SERVER="localhost:${ES_PORT[remote]}" + + # run tests + nosetests -v || die + + for i in ${ES_INSTANCES}; do + pkill -F ${ES_PID[$i]} + done +} + +python_install_all() { + use doc && local HTML_DOCS=( docs/_build/html/. ) + doman docs/_build/man/* + distutils-r1_python_install_all +} + +pkg_postinst() { + ewarn "" + ewarn "For Python 3 support information please read: http://click.pocoo.org/latest/python3/" + ewarn "" + ewarn "Example usage on Python 3:" + ewarn "export LC_ALL=en_US.UTF-8" + ewarn "export LANG=en_US.UTF-8" + ewarn "curator ..." +} |