commit: e7878326f5127b3bb61c8ba69428f2ce2ffeec61 Author: Mike Gilbert <floppym <AT> gentoo <DOT> org> AuthorDate: Sun May 14 22:33:26 2017 +0000 Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org> CommitDate: Sun May 14 22:33:26 2017 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e7878326
dev-python/pygit2: backport cffi-1.10 fix Bug: https://bugs.gentoo.org/618470 Package-Manager: Portage-2.3.5_p32, Repoman-2.3.2_p62 .../pygit2/files/pygit2-0.25.1-cffi-1.10.patch | 55 ++++++++++++++++++++++ dev-python/pygit2/pygit2-0.25.1.ebuild | 4 ++ 2 files changed, 59 insertions(+) diff --git a/dev-python/pygit2/files/pygit2-0.25.1-cffi-1.10.patch b/dev-python/pygit2/files/pygit2-0.25.1-cffi-1.10.patch new file mode 100644 index 00000000000..c071f9e5dd6 --- /dev/null +++ b/dev-python/pygit2/files/pygit2-0.25.1-cffi-1.10.patch @@ -0,0 +1,55 @@ +From b88dc868423af2f760f649960112efd0e37e5335 Mon Sep 17 00:00:00 2001 +From: Lukas Fleischer <[email protected]> +Date: Sat, 6 May 2017 21:39:33 +0200 +Subject: [PATCH] Fix parameter passing of describe patterns + +When ffi.new() is used to build a new pointer object, the returned +pointer object has ownership on the allocated memory. When it is +garbage-collected, then the memory is freed. Thus, we need to make sure +the original object survives its use, otherwise the casted pointer will +point to garbage. + +This fixes one test which was failing with the latest CFFI version, see +issue #694. Thus, this commit also reverts 803b1cb (cffi 1.10 not yet +supported, 2017-03-22) where the latest CFFI version was marked as +unsupported. + +Signed-off-by: Lukas Fleischer <[email protected]> +--- + .travis.yml | 2 +- + pygit2/repository.py | 6 +++++- + setup.py | 4 ++-- + 3 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/pygit2/repository.py b/pygit2/repository.py +index 9377aa2..472f4ff 100644 +--- a/pygit2/repository.py ++++ b/pygit2/repository.py +@@ -692,7 +692,11 @@ def describe(self, committish=None, max_candidates_tags=None, + if describe_strategy is not None: + options.describe_strategy = describe_strategy + if pattern: +- options.pattern = ffi.new('char[]', to_bytes(pattern)) ++ # The returned pointer object has ownership on the allocated ++ # memory. Make sure it is kept alive until git_describe_commit() or ++ # git_describe_workdir() are called below. ++ pattern_char = ffi.new('char[]', to_bytes(pattern)) ++ options.pattern = pattern_char + if only_follow_first_parent is not None: + options.only_follow_first_parent = only_follow_first_parent + if show_commit_oid_as_fallback is not None: +diff --git a/setup.py b/setup.py +index f4a9f8c..18d3eb0 100644 +--- a/setup.py ++++ b/setup.py +@@ -203,8 +203,8 @@ def run(self): + long_description=long_description, + packages=['pygit2'], + package_data={'pygit2': ['decl.h']}, +- setup_requires=['cffi<1.10'], +- install_requires=['cffi<1.10', 'six'], ++ setup_requires=['cffi'], ++ install_requires=['cffi', 'six'], + zip_safe=False, + cmdclass=cmdclass, + **extra_args) diff --git a/dev-python/pygit2/pygit2-0.25.1.ebuild b/dev-python/pygit2/pygit2-0.25.1.ebuild index a88aff4993c..35a8f52ddc9 100644 --- a/dev-python/pygit2/pygit2-0.25.1.ebuild +++ b/dev-python/pygit2/pygit2-0.25.1.ebuild @@ -21,6 +21,10 @@ RDEPEND=" " DEPEND="${RDEPEND}" +PATCHES=( + "${FILESDIR}"/pygit2-0.25.1-cffi-1.10.patch +) + python_test() { esetup.py test }
