summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt/auth.py3
-rw-r--r--debian/changelog1
-rw-r--r--python/generic.h4
3 files changed, 7 insertions, 1 deletions
diff --git a/apt/auth.py b/apt/auth.py
index eff13b1a..c1b8da2a 100644
--- a/apt/auth.py
+++ b/apt/auth.py
@@ -78,7 +78,8 @@ def _call_apt_key_script(*args, **kwargs):
stderr=subprocess.PIPE)
content = kwargs.get("stdin", None)
- if isinstance(content, unicode):
+ # py2 needs this encoded, py3.3 will crash if it is
+ if isinstance(content, unicode) and sys.version_info[:2] < (3, 3):
content = content.encode("utf-8")
output, stderr = proc.communicate(content)
diff --git a/debian/changelog b/debian/changelog
index 8a7e3392..7fba9286 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,7 @@ python-apt (0.8.8.1~exp1) UNRELEASED; urgency=low
* python/cache.cc:
- add "Codename" to PackageFile object
* add dep8 style autopkgtest support
+ * build fixes for python3.3
[ Jason Conti ]
* lp:~jconti/python-apt/closeable-cache:
diff --git a/python/generic.h b/python/generic.h
index f9680ca5..914456e2 100644
--- a/python/generic.h
+++ b/python/generic.h
@@ -80,10 +80,14 @@ typedef int Py_ssize_t;
static inline const char *PyUnicode_AsString(PyObject *op) {
// Convert to bytes object, using the default encoding.
+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 3
+ return PyUnicode_AsUTF8(op);
+#else
// Use Python-internal API, there is no other way to do this
// without a memory leak.
PyObject *bytes = _PyUnicode_AsDefaultEncodedString(op, 0);
return bytes ? PyBytes_AS_STRING(bytes) : 0;
+#endif
}
// Convert any type of string based object to a const char.