diff options
-rw-r--r-- | ipa.spec.in | 9 | ||||
-rw-r--r-- | ipapython/Makefile | 19 | ||||
-rw-r--r-- | ipapython/py_default_encoding/Makefile | 20 | ||||
-rw-r--r-- | ipapython/py_default_encoding/default_encoding_utf8.c | 59 | ||||
-rw-r--r-- | ipapython/py_default_encoding/setup.py | 38 |
5 files changed, 142 insertions, 3 deletions
diff --git a/ipa.spec.in b/ipa.spec.in index 7962465e7..44b9e88a9 100644 --- a/ipa.spec.in +++ b/ipa.spec.in @@ -389,9 +389,8 @@ fi %{_usr}/share/ipa/static/index.xhtml %{_usr}/share/ipa/static/*.png %{_usr}/share/ipa/static/*.css +%{_usr}/share/ipa/static/*.inc %{_usr}/share/ipa/static/*.js -%dir %{_usr}/share/ipa/static -%{_usr}/share/ipa/static/* %dir %{_sysconfdir}/ipa %dir %{_sysconfdir}/ipa/html %config(noreplace) %{_sysconfdir}/ipa/html/ssbrowser.html @@ -470,9 +469,11 @@ fi %dir %{python_sitelib}/ipapython %{python_sitelib}/ipapython/*.py* %{python_sitelib}/ipalib/* +%{python_sitearch}/default_encoding_utf8.so %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 %{python_sitelib}/ipapython-*.egg-info %{python_sitelib}/freeipa-*.egg-info +%{python_sitearch}/python_default_encoding-*.egg-info %endif %config(noreplace) %{_sysconfdir}/ipa/default.conf @@ -496,6 +497,10 @@ fi %endif %changelog +* Wed Oct 6 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-30 +- Remove duplicate %%files entries on share/ipa/static +- Add python default encoding shared library + * Mon Sep 20 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-29 - Drop requires on python-configobj (not used any more) - Drop ipa-ldap-updater message, upgrades are done differently now diff --git a/ipapython/Makefile b/ipapython/Makefile index 4ac027e14..c96d5d9c1 100644 --- a/ipapython/Makefile +++ b/ipapython/Makefile @@ -3,7 +3,12 @@ PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa CONFIGDIR ?= $(DESTDIR)/etc/ipa TESTS = $(wildcard test/*.py) -all: ; +SUBDIRS = py_default_encoding + +all: + @for subdir in $(SUBDIRS); do \ + (cd $$subdir && $(MAKE) $@) || exit 1; \ + done install: if [ "$(DESTDIR)" = "" ]; then \ @@ -11,15 +16,27 @@ install: else \ python setup.py install --root $(DESTDIR); \ fi + @for subdir in $(SUBDIRS); do \ + (cd $$subdir && $(MAKE) $@) || exit 1; \ + done clean: rm -f *~ *.pyc + @for subdir in $(SUBDIRS); do \ + (cd $$subdir && $(MAKE) $@) || exit 1; \ + done distclean: clean rm -f setup.py ipa-python.spec version.py + @for subdir in $(SUBDIRS); do \ + (cd $$subdir && $(MAKE) $@) || exit 1; \ + done maintainer-clean: distclean rm -rf build + @for subdir in $(SUBDIRS); do \ + (cd $$subdir && $(MAKE) $@) || exit 1; \ + done .PHONY: test test: $(subst .py,.tst,$(TESTS)) diff --git a/ipapython/py_default_encoding/Makefile b/ipapython/py_default_encoding/Makefile new file mode 100644 index 000000000..7cd1f6c58 --- /dev/null +++ b/ipapython/py_default_encoding/Makefile @@ -0,0 +1,20 @@ +PYTHONLIBDIR ?= $(shell python -c "from distutils.sysconfig import *; print get_python_lib()") +PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa +CONFIGDIR ?= $(DESTDIR)/etc/ipa + +all: + python setup.py build + +install: + if [ "$(DESTDIR)" = "" ]; then \ + python setup.py install; \ + else \ + python setup.py install --root $(DESTDIR); \ + 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 new file mode 100644 index 000000000..c3cdd4eca --- /dev/null +++ b/ipapython/py_default_encoding/default_encoding_utf8.c @@ -0,0 +1,59 @@ +/* + * Authors: + * John Dennis <jdennis@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. + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#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) +{ + PyObject* m; + + PyUnicode_SetDefaultEncoding("utf-8"); + m = 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 new file mode 100644 index 000000000..6ea520f13 --- /dev/null +++ b/ipapython/py_default_encoding/setup.py @@ -0,0 +1,38 @@ +# Authors: +# John Dennis <jdennis@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. +# +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from distutils.core import setup, Extension + +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 = 'jdennis@redhat.com', + maintainer = 'John Dennis', + maintainer_email = 'jdennis@redhat.com', + license = 'GPLv3+', + platforms = 'posix', + url = '', + download_url = '', + ext_modules = [default_encoding_utf8], +) + |