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