pygobject: add patch from https://bugzilla.gnome.org/show_bug.cgi?id=676746
This commit is contained in:
parent
19e1e534d8
commit
403bb1ca02
3 changed files with 66 additions and 11 deletions
|
@ -0,0 +1,60 @@
|
||||||
|
From 9de58e168190388d671ed82c30cf17d193f2f64c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Pitt <martinpitt@gnome.org>
|
||||||
|
Date: Fri, 1 Jun 2012 14:44:11 +0200
|
||||||
|
Subject: [PATCH] Escape identifiers which are Python keywords
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=676746
|
||||||
|
---
|
||||||
|
gi/pygi-info.c | 38 +++++++++++++++++++++++++++++++++++++-
|
||||||
|
tests/test_gi.py | 17 +++++++++++++++++
|
||||||
|
2 files changed, 54 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/gi/pygi-info.c b/gi/pygi-info.c
|
||||||
|
index d850052..beaecc0 100644
|
||||||
|
--- gi/pygi-info.c
|
||||||
|
+++ gi/pygi-info.c
|
||||||
|
@@ -95,7 +95,43 @@ PYGLIB_DEFINE_TYPE("gi.BaseInfo", PyGIBaseInfo_Type, PyGIBaseInfo);
|
||||||
|
static PyObject *
|
||||||
|
_wrap_g_base_info_get_name (PyGIBaseInfo *self)
|
||||||
|
{
|
||||||
|
- return PYGLIB_PyUnicode_FromString (g_base_info_get_name (self->info));
|
||||||
|
+ /* It may be better to use keyword.iskeyword(); keep in sync with
|
||||||
|
+ * python -c 'import keyword; print keyword.kwlist' */
|
||||||
|
+#if PY_VERSION_HEX < 0x03000000
|
||||||
|
+ /* Python 2.x */
|
||||||
|
+ static const gchar* keywords[] = {"and", "as", "assert", "break", "class",
|
||||||
|
+ "continue", "def", "del", "elif", "else", "except", "exec", "finally",
|
||||||
|
+ "for", "from", "global", "if", "import", "in", "is", "lambda", "not",
|
||||||
|
+ "or", "pass", "print", "raise", "return", "try", "while", "with",
|
||||||
|
+ "yield", NULL};
|
||||||
|
+#elif PY_VERSION_HEX < 0x04000000
|
||||||
|
+ /* Python 3.x; note that we explicitly keep "print"; it is not a keyword
|
||||||
|
+ * any more, but still raises a SyntaxError */
|
||||||
|
+ static const gchar* keywords[] = {"False", "None", "True", "and", "as",
|
||||||
|
+ "assert", "break", "class", "continue", "def", "del", "elif", "else",
|
||||||
|
+ "except", "finally", "for", "from", "global", "if", "import", "in",
|
||||||
|
+ "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return",
|
||||||
|
+ "try", "while", "with", "yield",
|
||||||
|
+ "print", NULL};
|
||||||
|
+#else
|
||||||
|
+ #error Need keyword list for this major Python version
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ const gchar *name, **i;
|
||||||
|
+
|
||||||
|
+ name = g_base_info_get_name (self->info);
|
||||||
|
+
|
||||||
|
+ /* escape keywords */
|
||||||
|
+ for (i = keywords; *i != NULL; ++i) {
|
||||||
|
+ if (strcmp (name, *i) == 0) {
|
||||||
|
+ gchar *escaped = g_strconcat (name, "_", NULL);
|
||||||
|
+ PyObject *obj = PYGLIB_PyUnicode_FromString (escaped);
|
||||||
|
+ g_free (escaped);
|
||||||
|
+ return obj;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return PYGLIB_PyUnicode_FromString (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
|
@ -1,14 +1,12 @@
|
||||||
# Template file for 'pygobject-devel'.
|
# Template file for 'pygobject-devel'.
|
||||||
#
|
#
|
||||||
depends="libffi-devel glib-devel libgirepository-devel pycairo-devel pygobject>=3.2.2"
|
noarch=yes
|
||||||
|
depends="libffi-devel glib-devel libgirepository-devel pycairo-devel pygobject>=$version"
|
||||||
short_desc="${sourcepkg} development files"
|
short_desc="${sourcepkg} development files"
|
||||||
long_desc="${long_desc}
|
long_desc="${long_desc}
|
||||||
|
|
||||||
This package contains files for development, headers, static libs, etc."
|
This package contains files for development, headers, static libs, etc."
|
||||||
|
|
||||||
|
|
||||||
noarch=yes
|
|
||||||
|
|
||||||
do_install() {
|
do_install() {
|
||||||
vmove usr/include usr
|
vmove usr/include usr
|
||||||
vmove usr/lib/pkgconfig usr/lib
|
vmove usr/lib/pkgconfig usr/lib
|
||||||
|
|
|
@ -1,20 +1,17 @@
|
||||||
# Template file for 'pygobject'
|
# Template file for 'pygobject'
|
||||||
pkgname=pygobject
|
pkgname=pygobject
|
||||||
version=3.2.2
|
version=3.2.2
|
||||||
distfiles="${GNOME_SITE}/$pkgname/3.2/$pkgname-$version.tar.xz"
|
revision=2
|
||||||
build_style=gnu-configure
|
build_style=gnu-configure
|
||||||
|
pycompile_module="gi"
|
||||||
|
subpackages="$pkgname-devel"
|
||||||
depends="python pycairo"
|
depends="python pycairo"
|
||||||
makedepends="pkg-config glib-devel cairo-devel libffi-devel python-devel pycairo-devel gobject-introspection"
|
makedepends="pkg-config glib-devel cairo-devel libffi-devel python-devel pycairo-devel gobject-introspection"
|
||||||
revision=1
|
|
||||||
short_desc="Python bindings for GObject"
|
short_desc="Python bindings for GObject"
|
||||||
homepage="http://www.pygtk.org/"
|
homepage="http://www.pygtk.org/"
|
||||||
license="LGPL-2.1"
|
license="LGPL-2.1"
|
||||||
|
distfiles="${GNOME_SITE}/$pkgname/3.2/$pkgname-$version.tar.xz"
|
||||||
maintainer="Juan RP <xtraeme@gmail.com>"
|
maintainer="Juan RP <xtraeme@gmail.com>"
|
||||||
checksum=4653790baaff0176fd814b88cfb5378c45906a120b25d01be2554f423b726eb0
|
checksum=4653790baaff0176fd814b88cfb5378c45906a120b25d01be2554f423b726eb0
|
||||||
long_desc="
|
long_desc="
|
||||||
Pygobject is a set of Python bindings for the GLib's GObject library."
|
Pygobject is a set of Python bindings for the GLib's GObject library."
|
||||||
|
|
||||||
pycompile_module="gi"
|
|
||||||
subpackages="$pkgname-devel"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue