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/cffi
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/cffi')
-rw-r--r--dev-python/cffi/Manifest6
-rw-r--r--dev-python/cffi/cffi-0.8.6.ebuild38
-rw-r--r--dev-python/cffi/cffi-0.9.2.ebuild38
-rw-r--r--dev-python/cffi/cffi-1.0.2.ebuild40
-rw-r--r--dev-python/cffi/cffi-1.0.3.ebuild40
-rw-r--r--dev-python/cffi/cffi-1.1.0.ebuild42
-rw-r--r--dev-python/cffi/cffi-1.1.2.ebuild40
-rw-r--r--dev-python/cffi/files/cffi-1.1.0-test-backport.patch44
-rw-r--r--dev-python/cffi/files/issue177_prot_exec.patch79
-rw-r--r--dev-python/cffi/metadata.xml8
10 files changed, 375 insertions, 0 deletions
diff --git a/dev-python/cffi/Manifest b/dev-python/cffi/Manifest
new file mode 100644
index 000000000000..5100f95b3932
--- /dev/null
+++ b/dev-python/cffi/Manifest
@@ -0,0 +1,6 @@
+DIST cffi-0.8.6.tar.gz 196835 SHA256 2532d9e3af9e3c6d0f710fc98b0295b563c7f39cfd97dd2242bd36fbf4900610 SHA512 b913d459bf0d355f0cb42fa0587a940c227d6765450033b14ab4d5281173cd1875cd6872911bb4f0b567cc1c5b0ca330615ec5f6ba205b25c41b683ae8c77790 WHIRLPOOL 4a03a077f15f943e0f06acf1bc10572b19680379e36805dbfc3dfffb8a5d735d28d9bab38e2d233f3a347fc03cede8126cc2ce017c6e3a0896b9baecddfae39f
+DIST cffi-0.9.2.tar.gz 209160 SHA256 1988ce7ff9c64ecd5077776175e90fd8f0a8c827cb241a23647175ce08126bb2 SHA512 93371a1189955d3f794915f8e7c6f6b9ab36cd531ff0ddeeb2108364c94dbf4dbe5d7d3f75e0aa52576d1a59559c13ec3e0f68dec4d52e6221e683ac519b850c WHIRLPOOL dcdf3a35b35607a4982035e75332c0e2f87d2df5cca9df77c48c5d57cc783d341b77fd95f71681877695b03a12564f8f28717a975bd51e832f496b71f73c3736
+DIST cffi-1.0.2.tar.gz 317360 SHA256 a5a8937f8a1e3c65d5ff9258137d2d08b6ca6dbee7c55d42af3d18930940ada3 SHA512 535b8295caedca418eb3f45041e45135d23f399a936561961be5bb281821e53bcfc124ea65b18dfc1b45037f4d112191d47cca5dcfef1479a81ffb315a70ae90 WHIRLPOOL d4cb8af18470e7a07f926fa452f82ae583a544d61072aab4302adebefb25bc2bc305c56d681fdb456479542032dbc5b5a76fe0de7fa7b81a14f7d046da931d6e
+DIST cffi-1.0.3.tar.gz 317372 SHA256 4fdede789f446fb6c57eed8cf5eb43d2a582a34536ff2cd1edf7256e17e9046c SHA512 a5f2b0ab356fe51b1d9f3f2e4bfadbc11bb10ec7f9458c019f3707b738dded1953723f797a8b37ed768cd14fe86f674d07d2cd5ce166406abaa1a68b443293b1 WHIRLPOOL 176c9acb1fb02c2e074d371b337f307b3cb7a473a05c016aa160c0caf6f680be1fcfaa6b9756aa88e7ca8008e5b4e47b58ab8de7078e97d53813dec51525eac3
+DIST cffi-1.1.0.tar.gz 323962 SHA256 d8c1dcef421bf3b9335925dd5bf39c3fad923a3cbd814c3664d754638b32355e SHA512 c9725869ffb8a10b83484b4b90ee02c66aa38a439334a404e043452de894f97f37050d7ba2467531820a6fdc7ee93a529078734e22b3637c5116d7d6d4b86ca0 WHIRLPOOL 4747675071ed4223def2b2a17429c1cadd2bfcae582ada6167f076065b6dc91fe06775e1d31c5f65fa68ea597dfdca36d9bab89e263affa1c25fe7c8f0e65d4a
+DIST cffi-1.1.2.tar.gz 326758 SHA256 390970b602708c91ddc73953bb6929e56291c18a4d80f360afa00fad8b6f3339 SHA512 d146984013b63382ea64bd2d6188cdbf9154cf83d66bf4dbb9353f1daea66f9eae07c6da47e152c5758d3458a742adde0310f71c792eb0a80950d7f857bfb943 WHIRLPOOL 02b92f0d13b02e351ba63e55a731c0b5480ae0b376c99a8dc1a256b3b55bf0119b4238dca88171605c1348b0847a6ff305ba4ec69cd1b42b9950708f42d6067e
diff --git a/dev-python/cffi/cffi-0.8.6.ebuild b/dev-python/cffi/cffi-0.8.6.ebuild
new file mode 100644
index 000000000000..e7446c74ba22
--- /dev/null
+++ b/dev-python/cffi/cffi-0.8.6.ebuild
@@ -0,0 +1,38 @@
+# 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} pypy )
+
+inherit distutils-r1
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ use doc && dohtml -r doc/build/
+}
diff --git a/dev-python/cffi/cffi-0.9.2.ebuild b/dev-python/cffi/cffi-0.9.2.ebuild
new file mode 100644
index 000000000000..3d6e250a56c6
--- /dev/null
+++ b/dev-python/cffi/cffi-0.9.2.ebuild
@@ -0,0 +1,38 @@
+# 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
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/cffi/cffi-1.0.2.ebuild b/dev-python/cffi/cffi-1.0.2.ebuild
new file mode 100644
index 000000000000..1e2899ad1b75
--- /dev/null
+++ b/dev-python/cffi/cffi-1.0.2.ebuild
@@ -0,0 +1,40 @@
+# 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
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="
+ virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/cffi/cffi-1.0.3.ebuild b/dev-python/cffi/cffi-1.0.3.ebuild
new file mode 100644
index 000000000000..1e2899ad1b75
--- /dev/null
+++ b/dev-python/cffi/cffi-1.0.3.ebuild
@@ -0,0 +1,40 @@
+# 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
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="
+ virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/cffi/cffi-1.1.0.ebuild b/dev-python/cffi/cffi-1.1.0.ebuild
new file mode 100644
index 000000000000..df453d99c53b
--- /dev/null
+++ b/dev-python/cffi/cffi-1.1.0.ebuild
@@ -0,0 +1,42 @@
+# 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
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="
+ virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+PATCHES=( "${FILESDIR}"/${P}-test-backport.patch )
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/cffi/cffi-1.1.2.ebuild b/dev-python/cffi/cffi-1.1.2.ebuild
new file mode 100644
index 000000000000..ee778887d15e
--- /dev/null
+++ b/dev-python/cffi/cffi-1.1.2.ebuild
@@ -0,0 +1,40 @@
+# 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} pypy )
+
+inherit distutils-r1
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/ https://pypi.python.org/pypi/cffi"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="
+ virtual/libffi
+ dev-python/pycparser[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/cffi/files/cffi-1.1.0-test-backport.patch b/dev-python/cffi/files/cffi-1.1.0-test-backport.patch
new file mode 100644
index 000000000000..2609e333991e
--- /dev/null
+++ b/dev-python/cffi/files/cffi-1.1.0-test-backport.patch
@@ -0,0 +1,44 @@
+# HG changeset patch
+# User Armin Rigo <arigo@tunes.org>
+# Date 1433182838 -7200
+# Node ID 34d5fd98bc84d202dd6692906f21509bb5abefaf
+# Parent feea0af4a450e0ff0045f1b7c0a5f430c97520f9
+Issue #204: second try
+
+diff --git a/testing/cffi1/test_zdist.py b/testing/cffi1/test_zdist.py
+--- a/testing/cffi1/test_zdist.py
++++ b/testing/cffi1/test_zdist.py
+@@ -29,13 +29,17 @@
+ if hasattr(self, 'saved_cwd'):
+ os.chdir(self.saved_cwd)
+
+- def run(self, args):
++ def run(self, args, cwd=None):
+ env = os.environ.copy()
+- newpath = self.rootdir
+- if 'PYTHONPATH' in env:
+- newpath += os.pathsep + env['PYTHONPATH']
+- env['PYTHONPATH'] = newpath
+- subprocess.check_call([self.executable] + args, env=env)
++ # a horrible hack to prevent distutils from finding ~/.pydistutils.cfg
++ # (there is the --no-user-cfg option, but not in Python 2.6...)
++ env['HOME'] = '/this/path/does/not/exist'
++ if cwd is None:
++ newpath = self.rootdir
++ if 'PYTHONPATH' in env:
++ newpath += os.pathsep + env['PYTHONPATH']
++ env['PYTHONPATH'] = newpath
++ subprocess.check_call([self.executable] + args, cwd=cwd, env=env)
+
+ def _prepare_setuptools(self):
+ if hasattr(TestDist, '_setuptools_ready'):
+@@ -44,8 +48,7 @@
+ import setuptools
+ except ImportError:
+ py.test.skip("setuptools not found")
+- subprocess.check_call([self.executable, 'setup.py', 'egg_info'],
+- cwd=self.rootdir)
++ self.run(['setup.py', 'egg_info'], cwd=self.rootdir)
+ TestDist._setuptools_ready = True
+
+ def check_produced_files(self, content, curdir=None):
diff --git a/dev-python/cffi/files/issue177_prot_exec.patch b/dev-python/cffi/files/issue177_prot_exec.patch
new file mode 100644
index 000000000000..8dbcf07c0052
--- /dev/null
+++ b/dev-python/cffi/files/issue177_prot_exec.patch
@@ -0,0 +1,79 @@
+# HG changeset patch
+# User Armin Rigo <arigo@tunes.org>
+# Date 1424942568 -3600
+# Node ID c7edb1e84eb3c29cac0674790cb4efcbcf1683b2
+# Parent 95e0563201602a2e1a8d83cc95a6a70048dfeece
+issue #177: workaround for some Linux kernels
+
+diff --git a/c/malloc_closure.h b/c/malloc_closure.h
+--- a/c/malloc_closure.h
++++ b/c/malloc_closure.h
+@@ -14,6 +14,54 @@
+ # endif
+ #endif
+
++/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
++
++ This is, apparently, an undocumented change to ffi_prep_closure():
++ depending on the Linux kernel we're running on, we must give it a
++ mmap that is either PROT_READ|PROT_WRITE|PROT_EXEC or only
++ PROT_READ|PROT_WRITE. In the latter case, just trying to obtain a
++ mmap with PROT_READ|PROT_WRITE|PROT_EXEC would kill our process(!),
++ but in that situation libffi is fine with only PROT_READ|PROT_WRITE.
++ There is nothing in the libffi API to know that, though, so we have
++ to guess by parsing /proc/self/status. "Meh."
++ */
++#ifdef __linux__
++#include <stdlib.h>
++
++static int emutramp_enabled = -1;
++
++static int
++emutramp_enabled_check (void)
++{
++ char *buf = NULL;
++ size_t len = 0;
++ FILE *f;
++ int ret;
++ f = fopen ("/proc/self/status", "r");
++ if (f == NULL)
++ return 0;
++ ret = 0;
++
++ while (getline (&buf, &len, f) != -1)
++ if (!strncmp (buf, "PaX:", 4))
++ {
++ char emutramp;
++ if (sscanf (buf, "%*s %*c%c", &emutramp) == 1)
++ ret = (emutramp == 'E');
++ break;
++ }
++ free (buf);
++ fclose (f);
++ return ret;
++}
++
++#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
++ : (emutramp_enabled = emutramp_enabled_check ()))
++#else
++#define is_emutramp_enabled() 0
++#endif
++
++
+ /* 'allocate_num_pages' is dynamically adjusted starting from one
+ page. It grows by a factor of PAGE_ALLOCATION_GROWTH_RATE. This is
+ meant to handle both the common case of not needing a lot of pages,
+@@ -77,9 +125,12 @@
+ if (item == NULL)
+ return;
+ #else
++ int prot = PROT_READ | PROT_WRITE | PROT_EXEC;
++ if (is_emutramp_enabled ())
++ prot &= ~PROT_EXEC;
+ item = (union mmaped_block *)mmap(NULL,
+ allocate_num_pages * _pagesize,
+- PROT_READ | PROT_WRITE | PROT_EXEC,
++ prot,
+ MAP_PRIVATE | MAP_ANONYMOUS,
+ -1,
+ 0);
diff --git a/dev-python/cffi/metadata.xml b/dev-python/cffi/metadata.xml
new file mode 100644
index 000000000000..26eeef001935
--- /dev/null
+++ b/dev-python/cffi/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>python</herd>
+ <upstream>
+ <remote-id type="pypi">cffi</remote-id>
+ </upstream>
+</pkgmetadata>