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 <[email protected]>
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 <[email protected]>
- *
- * 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 <[email protected]>
-#
-# 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 = '[email protected]',
- maintainer = 'John Dennis',
- maintainer_email = '[email protected]',
- 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