summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-python/Kivy
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-python/Kivy')
-rw-r--r--dev-python/Kivy/Kivy-1.8.0.ebuild47
-rw-r--r--dev-python/Kivy/Kivy-1.9.0.ebuild45
-rw-r--r--dev-python/Kivy/Manifest2
-rw-r--r--dev-python/Kivy/files/Kivy-1.9.0-cython-0.22-backport.patch713
-rw-r--r--dev-python/Kivy/files/cython-0.22.patch139
-rw-r--r--dev-python/Kivy/files/cython-fixes.patch42
-rw-r--r--dev-python/Kivy/metadata.xml18
7 files changed, 1006 insertions, 0 deletions
diff --git a/dev-python/Kivy/Kivy-1.8.0.ebuild b/dev-python/Kivy/Kivy-1.8.0.ebuild
new file mode 100644
index 000000000000..af6192ab7228
--- /dev/null
+++ b/dev-python/Kivy/Kivy-1.8.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit distutils-r1 eutils
+
+DESCRIPTION="A software library for rapid development of hardware-accelerated multitouch applications"
+HOMEPAGE="http://kivy.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="cairo camera doc examples garden gstreamer spell"
+
+RDEPEND="
+ dev-python/pygame[${PYTHON_USEDEP}]
+ virtual/python-imaging[${PYTHON_USEDEP}]
+ cairo? ( dev-python/pycairo[${PYTHON_USEDEP}] )
+ camera? ( media-libs/opencv )
+ garden? ( dev-python/kivy-garden[${PYTHON_USEDEP}] )
+ gstreamer? ( dev-python/gst-python:1.0[${PYTHON_USEDEP}] )
+ spell? ( dev-python/pyenchant[${PYTHON_USEDEP}] )
+ "
+RDEPEND="${DEPEND}
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -e '/data_files=/d' -i "${S}/setup.py" || die
+ epatch "${FILESDIR}/cython-fixes.patch"
+ if has_version '>=dev-python/cython-0.22' ; then
+ epatch "${FILESDIR}/cython-0.22.patch"
+ fi
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ use doc && DOCS=( doc/sources/. )
+ use examples && EXAMPLES=( examples )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/Kivy/Kivy-1.9.0.ebuild b/dev-python/Kivy/Kivy-1.9.0.ebuild
new file mode 100644
index 000000000000..9dbec84d0a6d
--- /dev/null
+++ b/dev-python/Kivy/Kivy-1.9.0.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit distutils-r1 eutils
+
+DESCRIPTION="A software library for rapid development of hardware-accelerated multitouch applications"
+HOMEPAGE="http://kivy.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="cairo camera doc examples garden gstreamer spell"
+
+RDEPEND="
+ dev-python/pygame[${PYTHON_USEDEP}]
+ virtual/python-imaging[${PYTHON_USEDEP}]
+ cairo? ( dev-python/pycairo[${PYTHON_USEDEP}] )
+ camera? ( media-libs/opencv )
+ garden? ( dev-python/kivy-garden[${PYTHON_USEDEP}] )
+ gstreamer? ( dev-python/gst-python:1.0[${PYTHON_USEDEP}] )
+ spell? ( dev-python/pyenchant[${PYTHON_USEDEP}] )
+ "
+DEPEND="${RDEPEND}
+ <=dev-python/cython-0.22[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+PATCHES=( "${FILESDIR}"/${P}-cython-0.22-backport.patch )
+
+python_prepare_all() {
+ sed -e '/data_files=/d' -i "${S}/setup.py" || die
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ use doc && DOCS=( doc/sources/. )
+ use examples && EXAMPLES=( examples )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/Kivy/Manifest b/dev-python/Kivy/Manifest
new file mode 100644
index 000000000000..f81ab10cd867
--- /dev/null
+++ b/dev-python/Kivy/Manifest
@@ -0,0 +1,2 @@
+DIST Kivy-1.8.0.tar.gz 14655888 SHA256 1bb5add88132c902ed746e7624034ecaab49e61f3fbbfde231604e887e6fb324 SHA512 e7057b008cceec9513961ddc3d4aaef2aa1a10de9c2de09ad82bd90ca88300047374e5f8c982cb018712fb0465c03208108c3110887ef383c00a45ee9e5bc81d WHIRLPOOL a6530edebcae34aede981c2f0db37a26a9378e148a073dc1396096b4db04ebdef0f6d96de4222383a5e2d84858bdf10383611751f9bf5ae625eafc67d1cf702f
+DIST Kivy-1.9.0.tar.gz 16178808 SHA256 b828617f858963f7873f5c81bb8824ca1dfa265e7811fce03599e2ba7200ffa0 SHA512 e0efc27f8ae070f5748570ee9224220791d32e931bbaf0bad5ddee894cf1d0f9ded5eebcc54d3b666491edaab0316923311f5e0cc7b1e46929d87ea3bec87f21 WHIRLPOOL c57c696752c88d3c8643e126180aa00b864df45bad0de4e6456143fd0f1486085a258a787ec2e4017b982004dd5a1212b11dbcb352f1f72b77591fa5fd9c934e
diff --git a/dev-python/Kivy/files/Kivy-1.9.0-cython-0.22-backport.patch b/dev-python/Kivy/files/Kivy-1.9.0-cython-0.22-backport.patch
new file mode 100644
index 000000000000..cea6fd2501d7
--- /dev/null
+++ b/dev-python/Kivy/files/Kivy-1.9.0-cython-0.22-backport.patch
@@ -0,0 +1,713 @@
+From 124fe6c7f08defb36305f6aa0bba203ab645ab8a Mon Sep 17 00:00:00 2001
+From: Alexander Taylor <alexanderjohntaylor@gmail.com>
+Date: Sat, 18 Apr 2015 17:03:03 +0100
+Subject: [PATCH] Changed 'except *' to 'except -1' for cython 0.22
+
+---
+ kivy/graphics/context_instructions.pxd | 22 +++++++-------
+ kivy/graphics/context_instructions.pyx | 8 ++---
+ kivy/graphics/fbo.pxd | 2 +-
+ kivy/graphics/fbo.pyx | 3 +-
+ kivy/graphics/gl_instructions.pyx | 8 +++--
+ kivy/graphics/instructions.pxd | 30 +++++++++---------
+ kivy/graphics/instructions.pyx | 49 ++++++++++++++++++------------
+ kivy/graphics/shader.pxd | 12 ++++----
+ kivy/graphics/shader.pyx | 25 +++++++++------
+ kivy/graphics/stencil_instructions.pxd | 8 ++---
+ kivy/graphics/stencil_instructions.pyx | 14 ++++++---
+ kivy/graphics/vertex_instructions_line.pxi | 9 +++---
+ setup.py | 8 ++---
+ 13 files changed, 110 insertions(+), 88 deletions(-)
+
+diff --git a/kivy/graphics/context_instructions.pxd b/kivy/graphics/context_instructions.pxd
+index f6562b1..f8027e2 100644
+--- a/kivy/graphics/context_instructions.pxd
++++ b/kivy/graphics/context_instructions.pxd
+@@ -16,39 +16,39 @@ cdef class PopState(ContextInstruction):
+ pass
+
+ cdef class LineWidth(ContextInstruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class Color(ContextInstruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class BindTexture(ContextInstruction):
+ cdef int _index
+ cdef object _source
+ cdef Texture _texture
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+
+ cdef class LoadIdentity(ContextInstruction):
+ pass
+
+ cdef class PushMatrix(ContextInstruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class PopMatrix(ContextInstruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class ApplyContextMatrix(ContextInstruction):
+ cdef object _target_stack
+ cdef object _source_stack
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class UpdateNormalMatrix(ContextInstruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class MatrixInstruction(ContextInstruction):
+ cdef object _stack
+ cdef Matrix _matrix
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+ cdef class Transform(MatrixInstruction):
+ cpdef transform(self, Matrix trans)
+@@ -61,17 +61,17 @@ cdef class Rotate(Transform):
+ cdef float _angle
+ cdef tuple _axis
+ cdef tuple _origin
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef void compute(self)
+
+ cdef class Scale(Transform):
+ cdef tuple _origin
+ cdef float _x, _y, _z
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef set_scale(self, double x, double y, double z)
+
+ cdef class Translate(Transform):
+ cdef double _x, _y, _z
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef set_translate(self, double x, double y, double z)
+
+diff --git a/kivy/graphics/context_instructions.pyx b/kivy/graphics/context_instructions.pyx
+index 2107a2c..189656a 100644
+--- a/kivy/graphics/context_instructions.pyx
++++ b/kivy/graphics/context_instructions.pyx
+@@ -344,7 +344,7 @@ cdef class BindTexture(ContextInstruction):
+
+ self.index = kwargs.get('index', 0)
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef RenderContext context = self.get_context()
+ context.set_texture(self._index, self._texture)
+
+@@ -458,7 +458,7 @@ cdef class ApplyContextMatrix(ContextInstruction):
+ self.target_stack = kwargs.get('target_stack', 'modelview_mat')
+ self.source_stack = kwargs.get('source_stack', 'modelview_mat')
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef RenderContext context = self.get_context()
+ m = context.get_state(self._target_stack)
+ m = m.multiply(context.get_state(self._source_stack))
+@@ -494,7 +494,7 @@ cdef class UpdateNormalMatrix(ContextInstruction):
+
+ .. versionadded:: 1.6.0
+ '''
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef RenderContext context = self.get_context()
+ mvm = context.get_state('modelview_mat')
+ context.set_state('normal_mat', mvm.normal_matrix())
+@@ -509,7 +509,7 @@ cdef class MatrixInstruction(ContextInstruction):
+ self.stack = kwargs.get('stack', 'modelview_mat')
+ self._matrix = None
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ '''Apply the matrix of this instance to the
+ context model view matrix.
+ '''
+diff --git a/kivy/graphics/fbo.pxd b/kivy/graphics/fbo.pxd
+index 31b281a..2c202dd 100644
+--- a/kivy/graphics/fbo.pxd
++++ b/kivy/graphics/fbo.pxd
+@@ -24,7 +24,7 @@ cdef class Fbo(RenderContext):
+
+ cdef void create_fbo(self)
+ cdef void delete_fbo(self)
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef void raise_exception(self, str message, int status=?)
+ cdef str resolve_status(self, int status)
+ cdef void reload(self)
+diff --git a/kivy/graphics/fbo.pyx b/kivy/graphics/fbo.pyx
+index 901d600..d7f6c09 100644
+--- a/kivy/graphics/fbo.pyx
++++ b/kivy/graphics/fbo.pyx
+@@ -323,12 +323,13 @@ cdef class Fbo(RenderContext):
+ else:
+ glClear(GL_COLOR_BUFFER_BIT)
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ if self.flags & GI_NEEDS_UPDATE:
+ self.bind()
+ RenderContext.apply(self)
+ self.release()
+ self.flag_update_done()
++ return 0
+
+ cdef void reload(self):
+ # recreate the framebuffer, without deleting it. the deletion is not
+diff --git a/kivy/graphics/gl_instructions.pyx b/kivy/graphics/gl_instructions.pyx
+index afe3404..78b0fe5 100644
+--- a/kivy/graphics/gl_instructions.pyx
++++ b/kivy/graphics/gl_instructions.pyx
+@@ -50,8 +50,9 @@ cdef class ClearColor(Instruction):
+ self.b = b
+ self.a = a
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ glClearColor(self.r, self.g, self.b, self.a)
++ return 0
+
+ property rgba:
+ '''RGBA color used for the clear color, a list of 4 values in the 0-1
+@@ -136,7 +137,7 @@ cdef class ClearBuffers(Instruction):
+ self.clear_stencil = int(kwargs.get('clear_stencil', 0))
+ self.clear_depth = int(kwargs.get('clear_depth', 0))
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef GLbitfield mask = 0
+ if self.clear_color:
+ mask |= GL_COLOR_BUFFER_BIT
+@@ -145,7 +146,8 @@ cdef class ClearBuffers(Instruction):
+ if self.clear_depth:
+ mask |= GL_DEPTH_BUFFER_BIT
+ glClear(mask)
+-
++ return 0
++
+ property clear_color:
+ '''If True, the color buffer will be cleared.
+ '''
+diff --git a/kivy/graphics/instructions.pxd b/kivy/graphics/instructions.pxd
+index 9008aef..09b0fd6 100644
+--- a/kivy/graphics/instructions.pxd
++++ b/kivy/graphics/instructions.pxd
+@@ -26,7 +26,7 @@ cdef class Instruction(ObjectWithUid):
+ cdef object __weakref__
+ cdef object __proxy_ref
+
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ IF DEBUG:
+ cdef int flag_update(self, int do_parent=?, list _instrs=?) except -1
+ ELSE:
+@@ -58,9 +58,9 @@ cdef class ContextInstruction(Instruction):
+ cdef list context_pop
+
+ cdef RenderContext get_context(self)
+- cdef void set_state(self, str name, value) except *
+- cdef void push_state(self, str name) except *
+- cdef void pop_state(self, str name) except *
++ cdef int set_state(self, str name, value) except -1
++ cdef int push_state(self, str name) except -1
++ cdef int pop_state(self, str name) except -1
+
+
+ from context_instructions cimport BindTexture
+@@ -80,8 +80,8 @@ cdef class Callback(Instruction):
+ cdef Shader _shader
+ cdef object func
+ cdef int _reset_context
+- cdef void apply(self)
+- cdef void enter(self)
++ cdef int apply(self) except -1
++ cdef int enter(self) except -1
+
+
+
+@@ -99,7 +99,7 @@ cdef class Canvas(CanvasBase):
+ cpdef add(self, Instruction c)
+ cpdef remove(self, Instruction c)
+ cpdef draw(self)
+- cdef void apply(self)
++ cdef int apply(self) except -1
+
+
+ cdef class RenderContext(Canvas):
+@@ -113,14 +113,14 @@ cdef class RenderContext(Canvas):
+ cdef void set_texture(self, int index, Texture texture)
+ cdef void set_state(self, str name, value, int apply_now=?)
+ cdef get_state(self, str name)
+- cdef void set_states(self, dict states) except *
+- cdef void push_state(self, str name) except *
+- cdef void push_states(self, list names) except *
+- cdef void pop_state(self, str name) except *
+- cdef void pop_states(self, list names) except *
+- cdef void enter(self) except *
+- cdef void leave(self) except *
+- cdef void apply(self) except *
++ cdef int set_states(self, dict states) except -1
++ cdef int push_state(self, str name) except -1
++ cdef int push_states(self, list names) except -1
++ cdef int pop_state(self, str name) except -1
++ cdef int pop_states(self, list names) except -1
++ cdef int enter(self) except -1
++ cdef int leave(self) except -1
++ cdef int apply(self) except -1
+ cpdef draw(self)
+ cdef void reload(self)
+
+diff --git a/kivy/graphics/instructions.pyx b/kivy/graphics/instructions.pyx
+index 2b5e081..5249556 100644
+--- a/kivy/graphics/instructions.pyx
++++ b/kivy/graphics/instructions.pyx
+@@ -57,8 +57,8 @@ cdef class Instruction(ObjectWithUid):
+ if self.parent:
+ self.parent.add(self)
+
+- cdef void apply(self):
+- pass
++ cdef int apply(self) except -1:
++ return 0
+
+ IF DEBUG:
+ cdef int flag_update(self, int do_parent=1, list _instrs=None) except -1:
+@@ -145,7 +145,7 @@ cdef class InstructionGroup(Instruction):
+ else:
+ self.compiler = GraphicsCompiler()
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef Instruction c
+ cdef list children
+ if self.compiler is not None:
+@@ -161,6 +161,7 @@ cdef class InstructionGroup(Instruction):
+ else:
+ for c in self.children:
+ c.apply()
++ return 0
+
+ cdef void build(self):
+ self.compiled_children = self.compiler.compile(self)
+@@ -246,7 +247,7 @@ cdef class ContextInstruction(Instruction):
+ cdef RenderContext context = getActiveContext()
+ return context
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef RenderContext context = self.get_context()
+ if self.context_push:
+ context.push_states(self.context_push)
+@@ -254,20 +255,20 @@ cdef class ContextInstruction(Instruction):
+ context.set_states(self.context_state)
+ if self.context_pop:
+ context.pop_states(self.context_pop)
++ return 0
+
+- cdef void set_state(self, str name, value):
++ cdef int set_state(self, str name, value) except -1:
+ self.context_state[name] = value
+ self.flag_update()
+
+- cdef void push_state(self, str name):
++ cdef int push_state(self, str name) except -1:
+ self.context_push.append(name)
+ self.flag_update()
+
+- cdef void pop_state(self, str name):
++ cdef int pop_state(self, str name) except -1:
+ self.context_pop.append(name)
+ self.flag_update()
+
+-
+ cdef class VertexInstruction(Instruction):
+ '''The VertexInstruction class is the base for all graphics instructions
+ that have a direct visual representation on the canvas, such as Rectangles,
+@@ -400,11 +401,12 @@ cdef class VertexInstruction(Instruction):
+ cdef void build(self):
+ pass
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ if self.flags & GI_NEEDS_UPDATE:
+ self.build()
+ self.flag_update_done()
+ self.batch.draw()
++ return 0
+
+
+ cdef class Callback(Instruction):
+@@ -466,7 +468,7 @@ cdef class Callback(Instruction):
+ '''
+ self.flag_update()
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef RenderContext rcx
+ cdef Context ctx
+ cdef Shader shader
+@@ -512,9 +514,11 @@ cdef class Callback(Instruction):
+ rcx.set_texture(index, texture)
+
+ reset_gl_context()
++ return 0
+
+- cdef void enter(self):
++ cdef int enter(self) except -1:
+ self._shader.use()
++ return 0
+
+ property reset_context:
+ '''Set this to True if you want to reset the OpenGL context for Kivy
+@@ -597,7 +601,7 @@ cdef class Canvas(CanvasBase):
+ '''
+ self.apply()
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef float opacity = self._opacity
+ cdef float rc_opacity
+ cdef RenderContext rc
+@@ -609,6 +613,7 @@ cdef class Canvas(CanvasBase):
+ InstructionGroup.apply(self)
+ if opacity != 1.0:
+ rc.pop_state('opacity')
++ return 0
+
+ cpdef add(self, Instruction c):
+ # the after group must remain the last one.
+@@ -786,29 +791,29 @@ cdef class RenderContext(Canvas):
+ cdef get_state(self, str name):
+ return self.state_stacks[name][-1]
+
+- cdef void set_states(self, dict states):
++ cdef int set_states(self, dict states) except -1:
+ cdef str name
+ for name, value in states.iteritems():
+ self.set_state(name, value)
+
+- cdef void push_state(self, str name):
++ cdef int push_state(self, str name) except -1:
+ stack = self.state_stacks[name]
+ stack.append(stack[-1])
+ self.flag_update()
+
+- cdef void push_states(self, list names):
++ cdef int push_states(self, list names) except -1:
+ cdef str name
+ for name in names:
+ self.push_state(name)
+
+- cdef void pop_state(self, str name):
++ cdef int pop_state(self, str name) except -1:
+ stack = self.state_stacks[name]
+ oldvalue = stack.pop()
+ if oldvalue != stack[-1]:
+ self.set_state(name, stack[-1])
+ self.flag_update()
+
+- cdef void pop_states(self, list names):
++ cdef int pop_states(self, list names) except -1:
+ cdef str name
+ for name in names:
+ self.pop_state(name)
+@@ -828,13 +833,15 @@ cdef class RenderContext(Canvas):
+ texture.bind()
+ self.flag_update()
+
+- cdef void enter(self):
++ cdef int enter(self) except -1:
+ self._shader.use()
++ return 0
+
+- cdef void leave(self):
++ cdef int leave(self) except -1:
+ self._shader.stop()
++ return 0
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ cdef list keys
+ if PY2:
+ keys = self.state_stacks.keys()
+@@ -857,6 +864,8 @@ cdef class RenderContext(Canvas):
+ popActiveContext()
+ self.flag_update_done()
+
++ return 0
++
+ cdef void reload(self):
+ pushActiveContext(self)
+ reset_gl_context()
+diff --git a/kivy/graphics/shader.pxd b/kivy/graphics/shader.pxd
+index c418207..1058ff4 100644
+--- a/kivy/graphics/shader.pxd
++++ b/kivy/graphics/shader.pxd
+@@ -26,14 +26,14 @@ cdef class Shader:
+
+ cdef void use(self)
+ cdef void stop(self)
+- cdef void set_uniform(self, str name, value) except *
+- cdef void upload_uniform(self, str name, value) except *
++ cdef int set_uniform(self, str name, value) except -1
++ cdef int upload_uniform(self, str name, value) except -1
+ cdef void upload_uniform_matrix(self, int loc, Matrix value)
+ cdef int get_uniform_loc(self, str name) except *
+- cdef void build(self) except *
+- cdef void build_vertex(self, int link=*) except *
+- cdef void build_fragment(self, int link=*) except *
+- cdef void link_program(self) except *
++ cdef int build(self) except -1
++ cdef int build_vertex(self, int link=*) except -1
++ cdef int build_fragment(self, int link=*) except -1
++ cdef int link_program(self) except -1
+ cdef int is_linked(self)
+ cdef ShaderSource compile_shader(self, str source, int shadertype)
+ cdef get_program_log(self, shader)
+diff --git a/kivy/graphics/shader.pyx b/kivy/graphics/shader.pyx
+index acda2bf..edb1c5a 100644
+--- a/kivy/graphics/shader.pyx
++++ b/kivy/graphics/shader.pyx
+@@ -230,13 +230,14 @@ cdef class Shader:
+ '''
+ glUseProgram(0)
+
+- cdef void set_uniform(self, str name, value):
++ cdef int set_uniform(self, str name, value) except -1:
+ if name in self.uniform_values and self.uniform_values[name] == value:
+- return
++ return 0
+ self.uniform_values[name] = value
+ self.upload_uniform(name, value)
++ return 0
+
+- cdef void upload_uniform(self, str name, value):
++ cdef int upload_uniform(self, str name, value) except -1:
+ '''Pass a uniform variable to the shader.
+ '''
+ cdef long vec_size, index, x, y
+@@ -255,7 +256,7 @@ cdef class Shader:
+ #Logger.debug('Shader: uploading uniform %s (loc=%d, value=%r)' % (name, loc, value))
+ if loc == -1:
+ #Logger.debug('Shader: -> ignored')
+- return
++ return 0
+ #Logger.debug('Shader: -> (gl:%d) %s' % (glGetError(), str(value)))
+
+ if val_type is Matrix:
+@@ -414,6 +415,7 @@ cdef class Shader:
+ free(int_list)
+ else:
+ raise Exception('for <%s>, type not handled <%s>' % (name, val_type))
++ return 0
+
+ cdef void upload_uniform_matrix(self, int loc, Matrix value):
+ cdef GLfloat mat[16]
+@@ -421,7 +423,7 @@ cdef class Shader:
+ mat[x] = <GLfloat>value.mat[x]
+ glUniformMatrix4fv(loc, 1, False, mat)
+
+- cdef int get_uniform_loc(self, str name):
++ cdef int get_uniform_loc(self, str name) except *:
+ cdef bytes c_name = name.encode('utf-8')
+ cdef int loc = glGetUniformLocation(self.program, c_name)
+ self.uniform_locations[name] = loc
+@@ -462,11 +464,12 @@ cdef class Shader:
+ # save for the next run.
+ self._current_vertex_format = vertex_format
+
+- cdef void build(self):
++ cdef int build(self) except -1:
+ self.build_vertex()
+ self.build_fragment()
++ return 0
+
+- cdef void build_vertex(self, int link=1):
++ cdef int build_vertex(self, int link=1) except -1:
+ if self.vertex_shader is not None:
+ glDetachShader(self.program, self.vertex_shader.shader)
+ self.vertex_shader = None
+@@ -475,8 +478,9 @@ cdef class Shader:
+ glAttachShader(self.program, self.vertex_shader.shader)
+ if link:
+ self.link_program()
++ return 0
+
+- cdef void build_fragment(self, int link=1):
++ cdef int build_fragment(self, int link=1) except -1:
+ if self.fragment_shader is not None:
+ glDetachShader(self.program, self.fragment_shader.shader)
+ self.fragment_shader = None
+@@ -486,9 +490,9 @@ cdef class Shader:
+ if link:
+ self.link_program()
+
+- cdef void link_program(self):
++ cdef int link_program(self) except -1:
+ if self.vertex_shader is None or self.fragment_shader is None:
+- return
++ return 0
+
+ # XXX to ensure that shader is ok, read error state right now.
+ glGetError()
+@@ -503,6 +507,7 @@ cdef class Shader:
+ self._success = 0
+ raise Exception('Shader didnt link, check info log.')
+ self._success = 1
++ return 0
+
+ cdef int is_linked(self):
+ cdef GLint result = 0
+diff --git a/kivy/graphics/stencil_instructions.pxd b/kivy/graphics/stencil_instructions.pxd
+index 1cf556e..4d33c44 100644
+--- a/kivy/graphics/stencil_instructions.pxd
++++ b/kivy/graphics/stencil_instructions.pxd
+@@ -1,11 +1,11 @@
+ from kivy.graphics.instructions cimport Instruction
+
+ cdef class StencilPush(Instruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef class StencilPop(Instruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef class StencilUse(Instruction):
+ cdef unsigned int _op
+- cdef void apply(self)
++ cdef int apply(self) except -1
+ cdef class StencilUnUse(Instruction):
+- cdef void apply(self)
++ cdef int apply(self) except -1
+diff --git a/kivy/graphics/stencil_instructions.pyx b/kivy/graphics/stencil_instructions.pyx
+index 469a239..67cc709 100644
+--- a/kivy/graphics/stencil_instructions.pyx
++++ b/kivy/graphics/stencil_instructions.pyx
+@@ -126,7 +126,7 @@ cdef class StencilPush(Instruction):
+ '''Push the stencil stack. See the module documentation for more
+ information.
+ '''
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ global _stencil_level, _stencil_in_push
+ if _stencil_in_push:
+ raise Exception('Cannot use StencilPush inside another '
+@@ -146,11 +146,12 @@ cdef class StencilPush(Instruction):
+ glStencilFunc(GL_ALWAYS, 0, 0)
+ glStencilOp(GL_INCR, GL_INCR, GL_INCR)
+ glColorMask(0, 0, 0, 0)
++ return 0
+
+ cdef class StencilPop(Instruction):
+ '''Pop the stencil stack. See the module documentation for more information.
+ '''
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ global _stencil_level, _stencil_in_push
+ if _stencil_level == 0:
+ raise Exception('Too much StencilPop (stack underflow)')
+@@ -159,10 +160,11 @@ cdef class StencilPop(Instruction):
+ glColorMask(1, 1, 1, 1)
+ if _stencil_level == 0:
+ glDisable(GL_STENCIL_TEST)
+- return
++ return 0
+ # reset for previous
+ glStencilFunc(GL_EQUAL, _stencil_level, 0xff)
+ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP)
++ return 0
+
+
+ cdef class StencilUse(Instruction):
+@@ -176,12 +178,13 @@ cdef class StencilUse(Instruction):
+ else:
+ self._op = GL_EQUAL
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ global _stencil_in_push
+ _stencil_in_push = 0
+ glColorMask(1, 1, 1, 1)
+ glStencilFunc(self._op, _stencil_level, 0xff)
+ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP)
++ return 0
+
+ property func_op:
+ '''Determine the stencil operation to use for glStencilFunc(). Can be
+@@ -207,7 +210,8 @@ cdef class StencilUse(Instruction):
+ cdef class StencilUnUse(Instruction):
+ '''Use current stencil buffer to unset the mask.
+ '''
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ glStencilFunc(GL_ALWAYS, 0, 0)
+ glStencilOp(GL_DECR, GL_DECR, GL_DECR)
+ glColorMask(0, 0, 0, 0)
++ return 0
+diff --git a/kivy/graphics/vertex_instructions_line.pxi b/kivy/graphics/vertex_instructions_line.pxi
+index b074a22..0c13132 100644
+--- a/kivy/graphics/vertex_instructions_line.pxi
++++ b/kivy/graphics/vertex_instructions_line.pxi
+@@ -174,10 +174,10 @@ cdef class Line(VertexInstruction):
+ self._stencil_use = StencilUse(op='lequal')
+ self._stencil_unuse = StencilUnUse()
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ if self._width == 1.:
+ VertexInstruction.apply(self)
+- return
++ return 0
+
+ cdef double alpha = getActiveContext()['color'][-1]
+ self._use_stencil = alpha < 1
+@@ -195,6 +195,7 @@ cdef class Line(VertexInstruction):
+ self._stencil_pop.apply()
+ else:
+ VertexInstruction.apply(self)
++ return 0
+
+ cdef void build_legacy(self):
+ cdef int i
+@@ -1238,9 +1239,9 @@ cdef class SmoothLine(Line):
+
+ self.build_smooth()
+
+- cdef void apply(self):
++ cdef int apply(self) except -1:
+ VertexInstruction.apply(self)
+- return
++ return 0
+
+ cdef void build_smooth(self):
+ cdef:
+diff --git a/setup.py b/setup.py
+index 76d7c82..30cc091 100644
+--- a/setup.py
++++ b/setup.py
+@@ -31,12 +31,12 @@ def ver_equal(self, other):
+
+ MIN_CYTHON_STRING = '0.20'
+ MIN_CYTHON_VERSION = LooseVersion(MIN_CYTHON_STRING)
+-MAX_CYTHON_STRING = '0.21.2'
++MAX_CYTHON_STRING = '0.22'
+ MAX_CYTHON_VERSION = LooseVersion(MAX_CYTHON_STRING)
+ CYTHON_UNSUPPORTED = (
+- LooseVersion('0.22'),
+- LooseVersion('0.22.beta0'),
+- LooseVersion('0.22.alpha0'),
++ # LooseVersion('0.22'),
++ # LooseVersion('0.22.beta0'),
++ # LooseVersion('0.22.alpha0'),
+ )
+
+
diff --git a/dev-python/Kivy/files/cython-0.22.patch b/dev-python/Kivy/files/cython-0.22.patch
new file mode 100644
index 000000000000..9b125f9ad648
--- /dev/null
+++ b/dev-python/Kivy/files/cython-0.22.patch
@@ -0,0 +1,139 @@
+--- kivy/graphics.orig/shader.pyx 2015-02-19 07:27:13.062070969 +0100
++++ kivy/graphics/shader.pyx 2015-02-19 07:27:22.838737743 +0100
+@@ -221,13 +221,13 @@
+ '''
+ glUseProgram(0)
+
+- cdef void set_uniform(self, str name, value):
++ cdef void set_uniform(self, str name, value) except *:
+ if name in self.uniform_values and self.uniform_values[name] == value:
+ return
+ self.uniform_values[name] = value
+ self.upload_uniform(name, value)
+
+- cdef void upload_uniform(self, str name, value):
++ cdef void upload_uniform(self, str name, value) except *:
+ '''Pass a uniform variable to the shader.
+ '''
+ cdef long vec_size, index, x, y
+@@ -412,7 +412,7 @@
+ mat[x] = <GLfloat>value.mat[x]
+ glUniformMatrix4fv(loc, 1, False, mat)
+
+- cdef int get_uniform_loc(self, str name):
++ cdef int get_uniform_loc(self, str name) except *:
+ cdef bytes c_name = name.encode('utf-8')
+ cdef int loc = glGetUniformLocation(self.program, c_name)
+ self.uniform_locations[name] = loc
+@@ -453,11 +453,11 @@
+ # save for the next run.
+ self._current_vertex_format = vertex_format
+
+- cdef void build(self):
++ cdef void build(self) except *:
+ self.build_vertex()
+ self.build_fragment()
+
+- cdef void build_vertex(self, int link=1):
++ cdef void build_vertex(self, int link=1) except *:
+ if self.vertex_shader is not None:
+ glDetachShader(self.program, self.vertex_shader.shader)
+ self.vertex_shader = None
+@@ -467,7 +467,7 @@
+ if link:
+ self.link_program()
+
+- cdef void build_fragment(self, int link=1):
++ cdef void build_fragment(self, int link=1) except *:
+ if self.fragment_shader is not None:
+ glDetachShader(self.program, self.fragment_shader.shader)
+ self.fragment_shader = None
+@@ -477,7 +477,7 @@
+ if link:
+ self.link_program()
+
+- cdef void link_program(self):
++ cdef void link_program(self) except *:
+ if self.vertex_shader is None or self.fragment_shader is None:
+ return
+
+--- kivy/graphics.orig/instructions.pyx 2015-02-19 07:27:13.062070969 +0100
++++ kivy/graphics/instructions.pyx 2014-01-20 03:49:50.000000000 +0100
+@@ -233,15 +233,15 @@
+ if self.context_pop:
+ context.pop_states(self.context_pop)
+
+- cdef void set_state(self, str name, value):
++ cdef void set_state(self, str name, value) except *:
+ self.context_state[name] = value
+ self.flag_update()
+
+- cdef void push_state(self, str name):
++ cdef void push_state(self, str name) except *:
+ self.context_push.append(name)
+ self.flag_update()
+
+- cdef void pop_state(self, str name):
++ cdef void pop_state(self, str name) except *:
+ self.context_pop.append(name)
+ self.flag_update()
+
+@@ -764,29 +764,29 @@
+ cdef get_state(self, str name):
+ return self.state_stacks[name][-1]
+
+- cdef void set_states(self, dict states):
++ cdef void set_states(self, dict states) except *:
+ cdef str name
+ for name, value in states.iteritems():
+ self.set_state(name, value)
+
+- cdef void push_state(self, str name):
++ cdef void push_state(self, str name) except *:
+ stack = self.state_stacks[name]
+ stack.append(stack[-1])
+ self.flag_update()
+
+- cdef void push_states(self, list names):
++ cdef void push_states(self, list names) except *:
+ cdef str name
+ for name in names:
+ self.push_state(name)
+
+- cdef void pop_state(self, str name):
++ cdef void pop_state(self, str name) except *:
+ stack = self.state_stacks[name]
+ oldvalue = stack.pop()
+ if oldvalue != stack[-1]:
+ self.set_state(name, stack[-1])
+ self.flag_update()
+
+- cdef void pop_states(self, list names):
++ cdef void pop_states(self, list names) except *:
+ cdef str name
+ for name in names:
+ self.pop_state(name)
+@@ -806,10 +806,10 @@
+ texture.bind()
+ self.flag_update()
+
+- cdef void enter(self):
++ cdef void enter(self) except *:
+ self._shader.use()
+
+- cdef void leave(self):
++ cdef void leave(self) except *:
+ self._shader.stop()
+
+ cdef void apply(self):
+--- kivy/graphics.orig/instructions.pxd 2015-02-19 07:44:16.315415541 +0100
++++ kivy/graphics/instructions.pxd 2014-01-20 03:49:50.000000000 +0100
+@@ -115,7 +115,7 @@
+ cdef void pop_states(self, list names) except *
+ cdef void enter(self) except *
+ cdef void leave(self) except *
+- cdef void apply(self) except *
++ cdef void apply(self)
+ cpdef draw(self)
+ cdef void reload(self)
+
diff --git a/dev-python/Kivy/files/cython-fixes.patch b/dev-python/Kivy/files/cython-fixes.patch
new file mode 100644
index 000000000000..b9eca4c5d5da
--- /dev/null
+++ b/dev-python/Kivy/files/cython-fixes.patch
@@ -0,0 +1,42 @@
+--- kivy/lib/gstplayer/_gstplayer.pyx.orig 2014-01-29 17:45:32.000000000 +0100
++++ kivy/lib/gstplayer/_gstplayer.pyx 2015-01-01 21:24:55.480191418 +0100
+@@ -207,7 +207,7 @@
+ self.eos_cb()
+
+ def load(self):
+- cdef char *c_uri
++ cdef bytes py_uri
+
+ # if already loaded before, clean everything.
+ if self.pipeline != NULL:
+@@ -256,8 +256,8 @@
+
+ # configure playbin
+ g_object_set_int(self.pipeline, 'async-handling', 1)
+- c_uri = <bytes>self.uri.encode('utf-8')
+- g_object_set_void(self.playbin, 'uri', c_uri)
++ py_uri = <bytes>self.uri.encode('utf-8')
++ g_object_set_void(self.playbin, 'uri', <char *>py_uri)
+
+ # attach the callback
+ # NOTE no need to create a weakref here, as we manage to grab/release
+--- kivy/graphics/shader.pyx.orig 2014-01-20 03:49:50.000000000 +0100
++++ kivy/graphics/shader.pyx 2015-01-01 21:25:01.446858150 +0100
+@@ -421,6 +421,7 @@
+ cdef void bind_vertex_format(self, VertexFormat vertex_format):
+ cdef unsigned int i
+ cdef vertex_attr_t *attr
++ cdef bytes name
+
+ # if the current vertex format used in the shader is the current one, do
+ # nothing.
+@@ -445,7 +446,8 @@
+ attr = &vertex_format.vattr[i]
+ if attr.per_vertex == 0:
+ continue
+- attr.index = glGetAttribLocation(self.program, <char *><bytes>attr.name)
++ name = <bytes>attr.name
++ attr.index = glGetAttribLocation(self.program, <char *>name)
+ glEnableVertexAttribArray(attr.index)
+
+ # save for the next run.
diff --git a/dev-python/Kivy/metadata.xml b/dev-python/Kivy/metadata.xml
new file mode 100644
index 000000000000..7da70174c4ee
--- /dev/null
+++ b/dev-python/Kivy/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>slis@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="camera">
+ Install libraries needed to support camera
+ </flag>
+ <flag name="garden">
+ Install garden tool to manage user maintained widgets
+ </flag>
+ </use>
+ <upstream>
+ <remote-id type="pypi">Kivy</remote-id>
+ </upstream>
+</pkgmetadata>