summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2017-06-16 12:38:36 -0700
committerBrian Dolbec <dolsen@gentoo.org>2017-06-16 14:50:11 -0700
commit676133f56ce8a8d0a2d1c9af97936b4cb5b9ee57 (patch)
tree25f843fb66183362ec9b640c77969429b78d04d0 /dev-python/autobahn/autobahn-0.16.0-r1.ebuild
parentprofiles/base/make.defualts: Add TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE (diff)
downloadgentoo-676133f56ce8a8d0a2d1c9af97936b4cb5b9ee57.tar.gz
gentoo-676133f56ce8a8d0a2d1c9af97936b4cb5b9ee57.tar.bz2
gentoo-676133f56ce8a8d0a2d1c9af97936b4cb5b9ee57.zip
dev-python/autobahn: Update ebuilds for twisted plugin cashe updates
With TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE now set in make.defaults to prevent access violations. All pkgs installing plugins need to run /usr/bin/twisted-regen-cache in pkg_postinst() for twisted releases. For older split twisted installs, the cache has to be done using a copy of the twisted-r1 eclasses cahche update functions. Package-Manager: Portage-2.3.6_p2, Repoman-2.3.2_p70
Diffstat (limited to 'dev-python/autobahn/autobahn-0.16.0-r1.ebuild')
-rw-r--r--dev-python/autobahn/autobahn-0.16.0-r1.ebuild127
1 files changed, 127 insertions, 0 deletions
diff --git a/dev-python/autobahn/autobahn-0.16.0-r1.ebuild b/dev-python/autobahn/autobahn-0.16.0-r1.ebuild
new file mode 100644
index 000000000000..e550e5d7464c
--- /dev/null
+++ b/dev-python/autobahn/autobahn-0.16.0-r1.ebuild
@@ -0,0 +1,127 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_4 )
+
+inherit distutils-r1 versionator
+
+MY_P="${PN}-$(replace_version_separator 3 -)"
+
+DESCRIPTION="WebSocket and WAMP for Twisted and Asyncio"
+HOMEPAGE="https://pypi.python.org/pypi/autobahn http://autobahn.ws/python/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~amd64"
+IUSE="crypt test"
+
+RDEPEND="
+ $(python_gen_cond_dep '>=dev-python/trollius-2.0[${PYTHON_USEDEP}]' 'python2_7')
+ $(python_gen_cond_dep '>=dev-python/futures-3.0.4[${PYTHON_USEDEP}]' 'python2_7')
+ $(python_gen_cond_dep '>=dev-python/asyncio-3.4.3[${PYTHON_USEDEP}]' 'python3_3')
+ >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/lz4-0.7.0[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pytrie-0.2[${PYTHON_USEDEP}]
+ >=dev-python/pyqrcode-1.1.0[${PYTHON_USEDEP}]
+ )
+ >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/snappy-0.5[${PYTHON_USEDEP}]
+ || (
+ >=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
+ >=dev-python/twisted-core-12.1[$(python_gen_usedep 'python2*')]
+ )
+ >=dev-python/txaio-2.5.1[${PYTHON_USEDEP}]
+ >=dev-python/u-msgpack-2.1[${PYTHON_USEDEP}]
+ >=dev-python/py-ubjson-0.8.4[${PYTHON_USEDEP}]
+ >=dev-python/wsaccel-0.6.2[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-3.6[${PYTHON_USEDEP}]
+ "
+DEPEND="${RDEPEND}
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pytrie-0.2[${PYTHON_USEDEP}]
+ >=dev-python/pyqrcode-1.1.0[${PYTHON_USEDEP}]
+ )"
+
+S="${WORKDIR}"/${MY_P}
+
+python_test() {
+ esetup.py test
+}
+
+# TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE is now
+# set in make.defaults. so update the plugin cache
+
+# copy of the twisted-r1 eclass cache update functions
+# for the older split twisted releases
+
+# @ECLASS-VARIABLE: TWISTED_PLUGINS
+# @DESCRIPTION:
+# An array of Twisted plugins, whose cache is regenerated
+# in pkg_postinst() and pkg_postrm() phases.
+#
+# If no plugins are installed, set to empty array.
+declare -p TWISTED_PLUGINS &>/dev/null || TWISTED_PLUGINS=( twisted.plugins )
+
+# @FUNCTION: _twisted-r1_create_caches
+# @USAGE: <packages>...
+# @DESCRIPTION:
+# Create dropin.cache for plugins in specified packages. The packages
+# are to be listed in standard dotted Python syntax.
+_twisted-r1_create_caches() {
+ # http://twistedmatrix.com/documents/current/core/howto/plugin.html
+ "${PYTHON}" -c \
+"import sys
+sys.path.insert(0, '${ROOT}$(python_get_sitedir)')
+
+fail = False
+
+try:
+ from twisted.plugin import getPlugins, IPlugin
+except ImportError as e:
+ if '${EBUILD_PHASE}' == 'postinst':
+ raise
+else:
+ for module in sys.argv[1:]:
+ try:
+ __import__(module, globals())
+ except ImportError as e:
+ if '${EBUILD_PHASE}' == 'postinst':
+ raise
+ else:
+ list(getPlugins(IPlugin, sys.modules[module]))
+" \
+ "${@}" || die "twisted plugin cache update failed"
+}
+
+# @FUNCTION: twisted-r1_update_plugin_cache
+# @DESCRIPTION:
+# Update and clean up plugin caches for packages listed
+# in TWISTED_PLUGINS.
+twisted-r1_update_plugin_cache() {
+ [[ ${TWISTED_PLUGINS[@]} ]] || return
+
+ local subdirs=( "${TWISTED_PLUGINS[@]//.//}" )
+ local paths=( "${subdirs[@]/#/${ROOT}$(python_get_sitedir)/}" )
+ local caches=( "${paths[@]/%//dropin.cache}" )
+
+ # First, delete existing (possibly stray) caches.
+ rm -f "${caches[@]}" || die
+
+ # Now, let's see which ones we can regenerate.
+ _twisted-r1_create_caches "${TWISTED_PLUGINS[@]}"
+
+ # Finally, drop empty parent directories.
+ rmdir -p "${paths[@]}" 2>/dev/null
+}
+
+pkg_postinst() {
+ _distutils-r1_run_foreach_impl twisted-r1_update_plugin_cache
+}