summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2017-05-14 18:33:26 -0400
committerMike Gilbert <floppym@gentoo.org>2017-05-14 18:33:26 -0400
commite7878326f5127b3bb61c8ba69428f2ce2ffeec61 (patch)
treefe827a3e94036a32d1c3eca2bd9caeeeba269060
parentdev-python/paver: add python 3.5/3.6 (diff)
downloadgentoo-e7878326f5127b3bb61c8ba69428f2ce2ffeec61.tar.gz
gentoo-e7878326f5127b3bb61c8ba69428f2ce2ffeec61.tar.bz2
gentoo-e7878326f5127b3bb61c8ba69428f2ce2ffeec61.zip
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
-rw-r--r--dev-python/pygit2/files/pygit2-0.25.1-cffi-1.10.patch55
-rw-r--r--dev-python/pygit2/pygit2-0.25.1.ebuild4
2 files changed, 59 insertions, 0 deletions
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 000000000000..c071f9e5dd6b
--- /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 <lfleischer@lfos.de>
+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 <lfleischer@lfos.de>
+---
+ .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 a88aff4993c4..35a8f52ddc96 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
}