Hi,

the attached patch replaces the default_encoding_utf8 binary module with 2 lines of equivalent Python code.


Honza

--
Jan Cholasta
From c69fece2fb2bcc68c7efec841178ea4cb4cfd48d Mon Sep 17 00:00:00 2001
From: Jan Cholasta <jchol...@redhat.com>
Date: Tue, 5 Jan 2016 08:49:04 +0100
Subject: [PATCH] ipapython: remove default_encoding_utf8

Replace the "import default_encoding_utf8" in ipalib/cli.py with equivalent
Python code.
---
 .gitignore                                         |  1 -
 freeipa.spec.in                                    |  2 -
 ipalib/cli.py                                      | 13 ++---
 ipapython/Makefile                                 |  2 +-
 ipapython/py_default_encoding/Makefile             | 25 ----------
 .../py_default_encoding/default_encoding_utf8.c    | 57 ----------------------
 ipapython/py_default_encoding/setup.py             | 45 -----------------
 ipatests/pytest.ini                                |  1 -
 8 files changed, 4 insertions(+), 142 deletions(-)
 delete mode 100644 ipapython/py_default_encoding/Makefile
 delete mode 100644 ipapython/py_default_encoding/default_encoding_utf8.c
 delete mode 100644 ipapython/py_default_encoding/setup.py

diff --git a/.gitignore b/.gitignore
index 06b017d..9375590 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,7 +73,6 @@ freeipa2-dev-doc
 /ipapython/setup.py
 /ipapython/version.py
 !/ipapython/Makefile
-!/ipapython/py_default_encoding/Makefile
 !/ipapython/ipap11helper/Makefile
 
 /ipaplatform/__init__.py
diff --git a/freeipa.spec.in b/freeipa.spec.in
index d4e23bc..ea4b3b8 100644
--- a/freeipa.spec.in
+++ b/freeipa.spec.in
@@ -1309,13 +1309,11 @@ fi
 %{python_sitelib}/ipalib/*
 %dir %{python_sitelib}/ipaplatform
 %{python_sitelib}/ipaplatform/*
-%attr(0644,root,root) %{python_sitearch}/default_encoding_utf8.so
 %attr(0644,root,root) %{python_sitearch}/_ipap11helper.so
 %{python_sitelib}/ipapython-*.egg-info
 %{python_sitelib}/ipalib-*.egg-info
 %{python_sitelib}/freeipa-*.egg-info
 %{python_sitelib}/ipaplatform-*.egg-info
-%{python_sitearch}/python_default_encoding-*.egg-info
 %{python_sitearch}/_ipap11helper-*.egg-info
 
 
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 3b1b5a3..a956485 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -39,16 +39,9 @@ from six.moves import input
 if six.PY3:
     unicode = str
 
-try:
-    #pylint: disable=F0401
-    import default_encoding_utf8  # pylint: disable=unused-import
-except ImportError:
-    # This is a chicken-and-egg problem. The api can't be imported unless
-    # this is already installed and since it is installed with IPA therein
-    # lies the problem. Skip it for now so ipalib can be imported in-tree
-    # even in cases that IPA isn't installed on the dev machine.
-    # Also, under Python 3, default_encoding_utf8 is not built at all.
-    pass
+if six.PY2:
+    reload(sys)
+    sys.setdefaultencoding('utf-8')     # pylint: disable=no-member
 
 from ipalib import frontend
 from ipalib import backend
diff --git a/ipapython/Makefile b/ipapython/Makefile
index 833f3cd..201c589 100644
--- a/ipapython/Makefile
+++ b/ipapython/Makefile
@@ -1,7 +1,7 @@
 PYTHON ?= /usr/bin/python2
 PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib())")
 
-SUBDIRS = py_default_encoding ipap11helper
+SUBDIRS = ipap11helper
 
 all:
 	@for subdir in $(SUBDIRS); do \
diff --git a/ipapython/py_default_encoding/Makefile b/ipapython/py_default_encoding/Makefile
deleted file mode 100644
index a73f429..0000000
--- a/ipapython/py_default_encoding/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-PYTHON ?= /usr/bin/python2
-PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib())")
-PYTHONVERSION ?= $(shell $(PYTHON) -c "import sys; print(sys.version_info[0])")
-
-all:
-	if [ "$(PYTHONVERSION)" = "2" ]; then \
-		python2 setup.py build; \
-	fi
-
-install:
-	# Skip this module under Python 3
-	if [ "$(PYTHONVERSION)" = "2" ]; then \
-		if [ "$(DESTDIR)" = "" ]; then \
-			python2 setup.py install; \
-		else \
-			python2 setup.py install --root $(DESTDIR); \
-		fi; \
-	fi
-
-clean:
-	rm -rf build
-
-distclean: clean
-
-maintainer-clean: distclean
diff --git a/ipapython/py_default_encoding/default_encoding_utf8.c b/ipapython/py_default_encoding/default_encoding_utf8.c
deleted file mode 100644
index 07adf28..0000000
--- a/ipapython/py_default_encoding/default_encoding_utf8.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Authors:
- *   John Dennis <jden...@redhat.com>
- *
- * Copyright (C) 2009  Red Hat
- * see file 'COPYING' for use and warranty information
- *
- * This program is free software you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-
-PyDoc_STRVAR(setdefaultencoding_doc,
-"setdefaultencoding(encoding='utf-8')\n\
-\n\
-Set the current default string encoding used by the Unicode implementation.\n\
-Defaults to utf-8."
-);
-
-static PyObject *
-setdefaultencoding(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"utf-8", NULL};
-    char *encoding;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s:setdefaultencoding", kwlist, &encoding))
-        return NULL;
-
-    if (PyUnicode_SetDefaultEncoding(encoding))
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef methods[] = {
-    {"setdefaultencoding", (PyCFunction)setdefaultencoding, METH_VARARGS|METH_KEYWORDS, setdefaultencoding_doc},
-	{NULL,		NULL}		/* sentinel */
-};
-
-
-PyMODINIT_FUNC
-initdefault_encoding_utf8(void) 
-{
-    PyUnicode_SetDefaultEncoding("utf-8");
-    Py_InitModule3("default_encoding_utf8", methods, "Forces the default encoding to utf-8");
-}
diff --git a/ipapython/py_default_encoding/setup.py b/ipapython/py_default_encoding/setup.py
deleted file mode 100644
index 6a1af62..0000000
--- a/ipapython/py_default_encoding/setup.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Authors:
-#   John Dennis <jden...@redhat.com>
-#
-# Copyright (C) 2009  Red Hat
-# see file 'COPYING' for use and warranty information
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-from distutils.core import setup, Extension
-from distutils.sysconfig import get_python_inc
-import sys
-import os
-
-python_header = os.path.join(get_python_inc(plat_specific=0), 'Python.h')
-if not os.path.exists(python_header):
-    sys.exit("Cannot find Python development packages that provide Python.h")
-
-default_encoding_utf8 = Extension('default_encoding_utf8', ['default_encoding_utf8.c'])
-
-setup(name             = 'python-default-encoding',
-      version          = '0.1',
-      description      = 'Forces the default encoding in Python to be utf-8',
-      long_description = 'Forces the default encoding in Python to be utf-8',
-      author           = 'John Dennis',
-      author_email     = 'jden...@redhat.com',
-      maintainer       = 'John Dennis',
-      maintainer_email = 'jden...@redhat.com',
-      license          = 'GPLv3+',
-      platforms        = 'posix',
-      url              = '',
-      download_url     = '',
-      ext_modules      = [default_encoding_utf8],
-)
-
diff --git a/ipatests/pytest.ini b/ipatests/pytest.ini
index 9593227..e38858b 100644
--- a/ipatests/pytest.ini
+++ b/ipatests/pytest.ini
@@ -21,7 +21,6 @@ addopts = --doctest-modules
           --ignore=doc/examples/python-api.py
           --ignore=install/share/copy-schema-to-ca.py
           --ignore=install/share/wsgi.py
-          --ignore=ipapython/py_default_encoding/setup.py
           --ignore=ipapython/ipap11helper/setup.py
 markers =
     tier0: basic unit tests and critical functionality
-- 
2.4.3

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to