Hello,
The Python 3 port is not 100% done, but I think the time has come to
start packaging the py3 bits. This will make it easier to plug into CI.

The existing Python 2 packages should not change, except I've added
"freeipa-common" with files that aren't Python-specific.

The new packages follow Fedora's Python guidelines a bit better. The
main thing is the names: python3-ipalib, python3-ipatests,
python3-ipap11helper.
The pure-Python ones are built as noarch.


The Makefiles are reorganized a bit, but they don't support building for
both py versions at once -- you need to do `make` followed by `make
PYTHON=/usr/bin/python3`. (The latter currently only works in the
directories that are ported so far, though.)


-- 
Petr Viktorin
From 158ac463bb19def552616c430d81d6b5b472cadb Mon Sep 17 00:00:00 2001
From: Petr Viktorin <pvikt...@redhat.com>
Date: Tue, 3 Nov 2015 16:39:40 +0100
Subject: [PATCH] Package ipapython, ipalib, ipaplatform, ipatests for Python 3

Running make with PYTHON=/usr/bin/python3 will build/install the
bits for Python 3.

A separate setup.py is added for ipalib.

Python3 library RPMs have names according to Fedora guidelines (python3-*).
Provides are specified for all top-level Python modules.

Executable scripts in ipatests have symlinks Python version suffixes
as per Fedora guidelines. Suffix-less names point to the Python 2 versions.

Pure-Python files are packaged to noarch RPMs. The ipap11helper
module is split to its own RPM for this reason.

A new package, freeipa-common, is added for files from freeipa-python
usable by both Python versions: translations and configuration.
This package is required by both freeipa-python and python3-ipalib.
---
 .gitignore                             |   3 +
 Makefile                               |   7 +-
 freeipa.spec.in                        | 209 +++++++++++++++++++++++++++++++--
 ipalib/Makefile                        |  23 ++++
 ipalib/cli.py                          |   1 +
 ipalib/setup.py.in                     |  73 ++++++++++++
 ipapython/Makefile                     |  18 +--
 ipapython/ipap11helper/Makefile        |  11 +-
 ipapython/py_default_encoding/Makefile |  21 ++--
 setup.py                               |   2 -
 10 files changed, 327 insertions(+), 41 deletions(-)
 create mode 100644 ipalib/Makefile
 create mode 100644 ipalib/setup.py.in

diff --git a/.gitignore b/.gitignore
index fa35df85abd5b18522d2be17070c3d8aceb9bdc5..e63434b44b29fc25bf3da17e90bc0f75f5075bd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,6 +67,9 @@ freeipa2-dev-doc
 
 /ipatests/setup.py
 
+/ipalib/setup.py
+!/ipalib/Makefile
+
 /ipapython/setup.py
 /ipapython/version.py
 !/ipapython/Makefile
diff --git a/Makefile b/Makefile
index 3c81466d3728022c1d9cf5bb216990f14a59b7e5..44f9420992761d6a924f44c99db1f8fc068f33fb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,10 @@
 include VERSION
 
-SUBDIRS=asn1 daemons install ipapython ipa-client
+SUBDIRS=asn1 daemons install ipapython ipalib ipa-client
 CLIENTDIRS=ipapython ipa-client asn1
 
 PRJ_PREFIX=freeipa
+PRJ_PREFIX_PY3=python3-ipa
 
 RPMBUILD ?= $(PWD)/rpmbuild
 TARGET ?= master
@@ -135,6 +136,8 @@ version-update: release-update
 		> ipapython/setup.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipaplatform/setup.py.in \
 		> ipaplatform/setup.py
+	sed -e s/__VERSION__/$(IPA_VERSION)/ ipalib/setup.py.in \
+		> ipalib/setup.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \
 		> ipapython/version.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipatests/setup.py.in \
@@ -232,6 +235,7 @@ rpms: rpmroot rpmdistdir version-update lint tarballs
 	cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
 	rpmbuild --define "_topdir $(RPMBUILD)" -ba freeipa.spec
 	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
+	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX_PY3)*-$(IPA_VERSION)-*.rpm dist/rpms/
 	cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
 	rm -rf $(RPMBUILD)
 
@@ -239,6 +243,7 @@ client-rpms: rpmroot rpmdistdir version-update lint tarballs
 	cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
 	rpmbuild --define "_topdir $(RPMBUILD)" --define "ONLY_CLIENT 1" -ba freeipa.spec
 	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
+	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX_PY3)*-$(IPA_VERSION)-*.rpm dist/rpms/
 	cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
 	rm -rf $(RPMBUILD)
 
diff --git a/freeipa.spec.in b/freeipa.spec.in
index 56c5a4d5ca2db9d299ed079be4ec4fed5747f07a..b813a17fde76fa452104a17ea86f96df38f9aff2 100644
--- a/freeipa.spec.in
+++ b/freeipa.spec.in
@@ -2,6 +2,12 @@
 # subpackages
 %{!?ONLY_CLIENT:%global ONLY_CLIENT 0}
 
+%if 0%{?rhel}
+%global with_python3 0
+%else
+%global with_python3 1
+%endif
+
 %global alt_name ipa
 %if 0%{?rhel}
 %global samba_version 4.0.5-1
@@ -307,6 +313,8 @@ This package provides command-line tools for IPA administrators.
 %package python
 Summary: Python libraries used by IPA
 Group: System Environment/Libraries
+
+Requires: %{name}-common = %{version}-%{release}
 Requires: python-gssapi >= 1.1.2
 Requires: gnupg
 Requires: iproute
@@ -339,6 +347,73 @@ features for further integration with Linux based clients (SUDO, automount)
 and integration with Active Directory based infrastructures (Trusts).
 If you are using IPA, you need to install this package.
 
+%if 0%{?with_python3}
+
+%package -n python3-ipalib
+BuildArch: noarch
+Summary: Python 3 libraries used by IPA
+Group: System Environment/Libraries
+
+Provides: python3-ipaplatform
+Provides: python3-ipapython
+
+Requires: %{name}-common = %{version}-%{release}
+Requires: python3-ipap11helper = %{version}-%{release}
+Requires: python3-gssapi >= 1.1.2
+Requires: gnupg
+Requires: iproute
+Requires: keyutils
+Requires: python3-pyOpenSSL
+Requires: python3-nss >= 0.16
+Requires: python3-cryptography
+Requires: python3-lxml
+Requires: python3-netaddr
+Requires: python3-libipa_hbac
+Requires: python3-qrcode-core >= 5.0.0
+Requires: python3-pyasn1
+Requires: python3-dateutil
+Requires: python3-yubico >= 1.2.3
+Requires: python3-sss-murmur
+Requires: wget
+Requires: python3-dbus
+Requires: python3-setuptools
+Requires: python3-six
+Requires: python3-jwcrypto
+
+%description -n python3-ipalib
+IPA is an integrated solution to provide centrally managed Identity (users,
+hosts, services), Authentication (SSO, 2FA), and Authorization
+(host access control, SELinux user roles, services). The solution provides
+features for further integration with Linux based clients (SUDO, automount)
+and integration with Active Directory based infrastructures (Trusts).
+This package is needed for running IPA components under Python 3.
+
+%package -n python3-ipap11helper
+Summary: Python 3 libraries used by IPA
+Group: System Environment/Libraries
+
+%description -n python3-ipap11helper
+IPA is an integrated solution to provide centrally managed Identity (users,
+hosts, services), Authentication (SSO, 2FA), and Authorization
+(host access control, SELinux user roles, services). The solution provides
+features for further integration with Linux based clients (SUDO, automount)
+and integration with Active Directory based infrastructures (Trusts).
+This package contains the ipap11helper extension for Python 3.
+
+%endif # with_python3
+
+%package common
+Summary: Common files used by IPA
+Group: System Environment/Libraries
+
+%description common
+IPA is an integrated solution to provide centrally managed Identity (users,
+hosts, services), Authentication (SSO, 2FA), and Authorization
+(host access control, SELinux user roles, services). The solution provides
+features for further integration with Linux based clients (SUDO, automount)
+and integration with Active Directory based infrastructures (Trusts).
+If you are using IPA, you need to install this package.
+
 %if ! %{ONLY_CLIENT}
 %package tests
 Summary: IPA tests and test tools
@@ -365,6 +440,32 @@ features for further integration with Linux based clients (SUDO, automount)
 and integration with Active Directory based infrastructures (Trusts).
 This package contains tests that verify IPA functionality.
 
+%if 0%{?with_python3}
+
+%package -n python3-ipatests
+Summary: IPA tests and test tools
+BuildArch: noarch
+
+Requires: python3-ipalib = %{version}-%{release}
+Requires: tar
+Requires: xz
+Requires: python3-nose
+Requires: python3-pytest >= 2.6
+Requires: python3-coverage
+Requires: python3-polib
+Requires: python3-pytest-multihost >= 0.5
+Requires: python3-pytest-sourceorder
+
+%description -n python3-ipatests
+IPA is an integrated solution to provide centrally managed Identity (users,
+hosts, services), Authentication (SSO, 2FA), and Authorization
+(host access control, SELinux user roles, services). The solution provides
+features for further integration with Linux based clients (SUDO, automount)
+and integration with Active Directory based infrastructures (Trusts).
+This package contains tests that verify IPA functionality under Python 3.
+
+%endif # with_python3
+
 %endif # ONLY_CLIENT
 
 
@@ -393,12 +494,17 @@ cd daemons; ../autogen.sh --prefix=%{_usr} --sysconfdir=%{_sysconfdir} --localst
 cd install; ../autogen.sh --prefix=%{_usr} --sysconfdir=%{_sysconfdir} --localstatedir=%{_localstatedir} --libdir=%{_libdir} --mandir=%{_mandir}; cd ..
 %endif # ONLY_CLIENT
 
+%if 0%{?with_python3}
+(cd ipapython/ipap11helper && make PYTHON=%{__python3} IPA_VERSION_IS_GIT_SNAPSHOT=no %{?_smp_mflags} all)
+%endif
+
 %if ! %{ONLY_CLIENT}
 make IPA_VERSION_IS_GIT_SNAPSHOT=no %{?_smp_mflags} all
 %else
 make IPA_VERSION_IS_GIT_SNAPSHOT=no %{?_smp_mflags} client
 %endif # ONLY_CLIENT
 
+
 %install
 rm -rf %{buildroot}
 export SUPPORTED_PLATFORM=%{platform_module}
@@ -412,9 +518,38 @@ rm -f ipaplatform/constants.py
 make version-update
 %if ! %{ONLY_CLIENT}
 make install DESTDIR=%{buildroot}
+
+mv %{buildroot}%{_bindir}/ipa-run-tests %{buildroot}%{_bindir}/ipa-run-tests-%{python2_version}
+mv %{buildroot}%{_bindir}/ipa-test-config %{buildroot}%{_bindir}/ipa-test-config-%{python2_version}
+mv %{buildroot}%{_bindir}/ipa-test-task %{buildroot}%{_bindir}/ipa-test-task-%{python2_version}
+
+%if 0%{?with_python3}
+(cd ipatests && %{__python3} setup.py install --root %{buildroot})
+mv %{buildroot}%{_bindir}/ipa-run-tests %{buildroot}%{_bindir}/ipa-run-tests-%{python3_version}
+mv %{buildroot}%{_bindir}/ipa-test-config %{buildroot}%{_bindir}/ipa-test-config-%{python3_version}
+mv %{buildroot}%{_bindir}/ipa-test-task %{buildroot}%{_bindir}/ipa-test-task-%{python3_version}
+ln -s %{_bindir}/ipa-run-tests-%{python3_version} %{buildroot}%{_bindir}/ipa-run-tests-3
+ln -s %{_bindir}/ipa-test-config-%{python3_version} %{buildroot}%{_bindir}/ipa-test-config-3
+ln -s %{_bindir}/ipa-test-task-%{python3_version} %{buildroot}%{_bindir}/ipa-test-task-3
+%endif # with_python3
+
+ln -s %{_bindir}/ipa-run-tests-%{python2_version} %{buildroot}%{_bindir}/ipa-run-tests-2
+ln -s %{_bindir}/ipa-test-config-%{python2_version} %{buildroot}%{_bindir}/ipa-test-config-2
+ln -s %{_bindir}/ipa-test-task-%{python2_version} %{buildroot}%{_bindir}/ipa-test-task-2
+ln -s %{_bindir}/ipa-run-tests-%{python2_version} %{buildroot}%{_bindir}/ipa-run-tests
+ln -s %{_bindir}/ipa-test-config-%{python2_version} %{buildroot}%{_bindir}/ipa-test-config
+ln -s %{_bindir}/ipa-test-task-%{python2_version} %{buildroot}%{_bindir}/ipa-test-task
+
 %else
 make client-install DESTDIR=%{buildroot}
 %endif # ONLY_CLIENT
+
+%if 0%{?with_python3}
+(cd ipalib && make PYTHON=%{__python3} IPA_VERSION_IS_GIT_SNAPSHOT=no %{?_smp_mflags} DESTDIR=%{buildroot} install)
+(cd ipapython && make PYTHON=%{__python3} IPA_VERSION_IS_GIT_SNAPSHOT=no %{?_smp_mflags} DESTDIR=%{buildroot} install)
+(cd ipaplatform && %{__python3} setup.py install --root %{buildroot})
+%endif # with_python3
+
 %find_lang %{gettext_domain}
 
 
@@ -940,7 +1075,22 @@ fi
 %config %{_sysconfdir}/bash_completion.d
 %{_mandir}/man1/ipa.1.gz
 
-%files python -f %{gettext_domain}.lang
+%files common -f %{gettext_domain}.lang
+%defattr(-,root,root,-)
+%doc README Contributors.txt
+%license COPYING
+%dir %attr(0755,root,root) %{_sysconfdir}/ipa/
+%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/default.conf
+%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/ca.crt
+%dir %attr(0755,root,root) %{_sysconfdir}/ipa/nssdb
+%dir %attr(0755,root,root) %{_sysconfdir}/ipa/dnssec
+%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/cert8.db
+%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key3.db
+%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/secmod.db
+%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pwdfile.txt
+%ghost %config(noreplace) %{_sysconfdir}/pki/ca-trust/source/ipa.p11-kit
+
+%files python
 %defattr(-,root,root,-)
 %doc README Contributors.txt
 %license COPYING
@@ -959,20 +1109,34 @@ fi
 %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
-%dir %attr(0755,root,root) %{_sysconfdir}/ipa/
-%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/default.conf
-%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/ca.crt
-%dir %attr(0755,root,root) %{_sysconfdir}/ipa/nssdb
-%dir %attr(0755,root,root) %{_sysconfdir}/ipa/dnssec
-%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/cert8.db
-%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key3.db
-%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/secmod.db
-%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pwdfile.txt
-%ghost %config(noreplace) %{_sysconfdir}/pki/ca-trust/source/ipa.p11-kit
+
+%if 0%{?with_python3}
+%files -n python3-ipalib
+%defattr(-,root,root,-)
+%doc README Contributors.txt
+%license COPYING
+
+%{python3_sitelib}/ipapython/
+%{python3_sitelib}/ipalib/
+%{python3_sitelib}/ipaplatform/
+%{python3_sitelib}/ipapython-*.egg-info
+%{python3_sitelib}/ipalib-*.egg-info
+%{python3_sitelib}/ipaplatform-*.egg-info
+
+%files -n python3-ipap11helper
+%defattr(-,root,root,-)
+%doc README Contributors.txt
+%license COPYING
+
+%attr(0644,root,root) %{python3_sitearch}/_ipap11helper.cpython-*.so
+%{python3_sitearch}/_ipap11helper-*.egg-info
+
+%endif # with_python3
 
 %if ! %{ONLY_CLIENT}
 %files tests -f tests-python.list
@@ -993,10 +1157,33 @@ fi
 %{_bindir}/ipa-run-tests
 %{_bindir}/ipa-test-config
 %{_bindir}/ipa-test-task
+%{_bindir}/ipa-run-tests-2
+%{_bindir}/ipa-test-config-2
+%{_bindir}/ipa-test-task-2
+%{_bindir}/ipa-run-tests-%{python2_version}
+%{_bindir}/ipa-test-config-%{python2_version}
+%{_bindir}/ipa-test-task-%{python2_version}
 %{python_sitelib}/ipatests-*.egg-info
 %{_mandir}/man1/ipa-run-tests.1.gz
 %{_mandir}/man1/ipa-test-config.1.gz
 %{_mandir}/man1/ipa-test-task.1.gz
+
+%if 0%{?with_python3}
+%files -n python3-ipatests
+%defattr(-,root,root,-)
+%doc README Contributors.txt
+%license COPYING
+
+%{python3_sitelib}/ipatests/
+%{_bindir}/ipa-run-tests-3
+%{_bindir}/ipa-test-config-3
+%{_bindir}/ipa-test-task-3
+%{_bindir}/ipa-run-tests-%{python3_version}
+%{_bindir}/ipa-test-config-%{python3_version}
+%{_bindir}/ipa-test-task-%{python3_version}
+%{python3_sitelib}/ipatests-*.egg-info
+%endif # with_python3
+
 %endif # ONLY_CLIENT
 
 %changelog
diff --git a/ipalib/Makefile b/ipalib/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9b39a50f8b7bc946a8fec65be8a2e5bbdd89ed2c
--- /dev/null
+++ b/ipalib/Makefile
@@ -0,0 +1,23 @@
+PYTHON ?= /usr/bin/python2
+PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib())")
+
+all:
+	# Pure Python; no need to build
+	true
+
+.PHONY: install
+install:
+	if [ "$(DESTDIR)" = "" ]; then \
+		$(PYTHON) setup.py install; \
+	else \
+		$(PYTHON) setup.py install --root $(DESTDIR); \
+	fi
+
+clean:
+	rm -f *~ *.pyc __pycache__/
+
+distclean: clean
+	rm -f setup.py
+
+maintainer-clean: distclean
+	rm -rf build
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 44ef61d3033c0a187ba84f682b5d88b2130076bf..567b599461c9c7d474881212e62be0179e09108f 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -47,6 +47,7 @@
     # 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
 
 from ipalib import frontend
diff --git a/ipalib/setup.py.in b/ipalib/setup.py.in
new file mode 100644
index 0000000000000000000000000000000000000000..47481dbe0c6b95e1c419258da1eb9b2543a8a3d8
--- /dev/null
+++ b/ipalib/setup.py.in
@@ -0,0 +1,73 @@
+#!/usr/bin/python2
+# Copyright (C) 2007  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/>.
+#
+
+"""FreeIPA common python library
+
+FreeIPA is a server for identity, policy, and audit.
+"""
+
+DOCLINES = __doc__.split("\n")
+
+import os
+import sys
+import distutils.sysconfig
+
+CLASSIFIERS = """\
+Intended Audience :: System Environment/Base
+License :: GPL
+Programming Language :: Python
+Operating System :: POSIX
+Operating System :: Unix
+"""
+
+# BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
+# update it when the contents of directories change.
+if os.path.exists('MANIFEST'): os.remove('MANIFEST')
+
+def setup_package():
+
+    from distutils.core import setup
+
+    old_path = os.getcwd()
+    local_path = os.path.dirname(os.path.abspath(sys.argv[0]))
+    os.chdir(local_path)
+    sys.path.insert(0,local_path)
+
+    try:
+        setup(
+            name = "ipalib",
+            version = "__VERSION__",
+            license = "GPL",
+            url = "http://www.freeipa.org/";,
+            description = DOCLINES[0],
+            long_description = "\n".join(DOCLINES[2:]),
+            download_url = "http://www.freeipa.org/page/Downloads";,
+            classifiers=[line for line in CLASSIFIERS.split('\n') if line],
+            platforms = ["Linux", "Solaris", "Unix"],
+            package_dir = {'ipalib': ''},
+            packages = ["ipalib",
+                        "ipalib.plugins",
+                       ],
+        )
+    finally:
+        del sys.path[0]
+        os.chdir(old_path)
+    return
+
+if __name__ == '__main__':
+    setup_package()
diff --git a/ipapython/Makefile b/ipapython/Makefile
index 8527643232fd1b14fc246bd36678631baac088db..b4f877395b2f665b821d197112f36cebdfda5a08 100644
--- a/ipapython/Makefile
+++ b/ipapython/Makefile
@@ -1,7 +1,5 @@
-PYTHONLIBDIR ?= $(shell  python2 -c "from distutils.sysconfig import *; print get_python_lib()")
-PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa
-CONFIGDIR ?= $(DESTDIR)/etc/ipa
-TESTS = $(wildcard test/*.py)
+PYTHON ?= /usr/bin/python2
+PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib())")
 
 SUBDIRS = py_default_encoding ipap11helper
 
@@ -13,16 +11,16 @@ all:
 .PHONY: install
 install:
 	if [ "$(DESTDIR)" = "" ]; then \
-		python2 setup.py install; \
+		$(PYTHON) setup.py install; \
 	else \
-		python2 setup.py install --root $(DESTDIR); \
+		$(PYTHON) setup.py install --root $(DESTDIR); \
 	fi
 	@for subdir in $(SUBDIRS); do \
 		(cd $$subdir && $(MAKE) $@) || exit 1; \
 	done
 
 clean:
-	rm -f *~ *.pyc
+	rm -f *~ *.pyc __pycache__/
 	@for subdir in $(SUBDIRS); do \
 		(cd $$subdir && $(MAKE) $@) || exit 1; \
 	done
@@ -38,9 +36,3 @@ maintainer-clean: distclean
 	@for subdir in $(SUBDIRS); do \
 		(cd $$subdir && $(MAKE) $@) || exit 1; \
 	done
-
-.PHONY: test
-test: $(subst .py,.tst,$(TESTS))
-
-%.tst: %.py
-	python2 $<
diff --git a/ipapython/ipap11helper/Makefile b/ipapython/ipap11helper/Makefile
index 88f17f70588e1fa20ed98409e37f7dc2e72b6f68..8fe220c0494befcd4fa42e92dd9dd772aaf7832d 100644
--- a/ipapython/ipap11helper/Makefile
+++ b/ipapython/ipap11helper/Makefile
@@ -1,15 +1,14 @@
-PYTHONLIBDIR ?= $(shell  python2 -c "from distutils.sysconfig import *; print get_python_lib()")
-PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa
-CONFIGDIR ?= $(DESTDIR)/etc/ipa
+PYTHON ?= /usr/bin/python2
+PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print get_python_lib()")
 
 all:
-	python2 setup.py build
+	$(PYTHON) setup.py build
 
 install:
 	if [ "$(DESTDIR)" = "" ]; then \
-		python2 setup.py install; \
+		$(PYTHON) setup.py install; \
 	else \
-		python2 setup.py install --root $(DESTDIR); \
+		$(PYTHON) setup.py install --root $(DESTDIR); \
 	fi
 
 clean:
diff --git a/ipapython/py_default_encoding/Makefile b/ipapython/py_default_encoding/Makefile
index 88f17f70588e1fa20ed98409e37f7dc2e72b6f68..a73f429dbb71fb89998685d55124b6bb42b17cf4 100644
--- a/ipapython/py_default_encoding/Makefile
+++ b/ipapython/py_default_encoding/Makefile
@@ -1,15 +1,20 @@
-PYTHONLIBDIR ?= $(shell  python2 -c "from distutils.sysconfig import *; print get_python_lib()")
-PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa
-CONFIGDIR ?= $(DESTDIR)/etc/ipa
+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:
-	python2 setup.py build
+	if [ "$(PYTHONVERSION)" = "2" ]; then \
+		python2 setup.py build; \
+	fi
 
 install:
-	if [ "$(DESTDIR)" = "" ]; then \
-		python2 setup.py install; \
-	else \
-		python2 setup.py install --root $(DESTDIR); \
+	# 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:
diff --git a/setup.py b/setup.py
index 330503d6125ddff287b39874c1754fa04d15e7c9..006f34e70fb7862005ee7feae7a4c3d6209f3d3d 100755
--- a/setup.py
+++ b/setup.py
@@ -75,8 +75,6 @@ def run(self):
     license='GPLv3+',
     url='http://freeipa.org/',
     packages=[
-        'ipalib',
-        'ipalib.plugins',
         'ipaserver',
         'ipaserver.advise',
         'ipaserver.advise.plugins',
-- 
2.1.0

-- 
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