From f633de2d835db6d77305e199537173ba8c00d79a Mon Sep 17 00:00:00 2001 From: yatin Date: Fri, 11 May 2018 18:41:50 +0530 Subject: [PATCH] Switch to python3 for keystone service python2 will retire in sometime, so we should start switch to python3. As there are no real consumers for rpm-packaging services specs, so switching services spec to python3 only. Also do not skip py3 while generating spec for keystone. Change-Id: Id8eba4dcfa9652967993c41af9161bad8559b9fd --- openstack/keystone/keystone.spec.j2 | 152 +++++++++++++++------------- tools/run_renderspec.sh | 10 +- 2 files changed, 92 insertions(+), 70 deletions(-) diff --git a/openstack/keystone/keystone.spec.j2 b/openstack/keystone/keystone.spec.j2 index bcaded704..8e91a5b10 100644 --- a/openstack/keystone/keystone.spec.j2 +++ b/openstack/keystone/keystone.spec.j2 @@ -19,26 +19,37 @@ Source3: openstack-keystone.tmpfiles Source4: openstack-keystone.defaultconf Source5: openstack-keystone.README.config BuildRequires: openstack-macros -BuildRequires: {{ py2pkg('Flask') }} -BuildRequires: {{ py2pkg('WebTest') }} -BuildRequires: {{ py2pkg('bcrypt') }} -BuildRequires: {{ py2pkg('devel') }} -BuildRequires: {{ py2pkg('fixtures') }} -BuildRequires: {{ py2pkg('freezegun') }} -BuildRequires: {{ py2pkg('lxml') }} -BuildRequires: {{ py2pkg('mock') }} -BuildRequires: {{ py2pkg('oslo.cache') }} -BuildRequires: {{ py2pkg('oslo.config') }} -BuildRequires: {{ py2pkg('oslotest') }} -BuildRequires: {{ py2pkg('osprofiler') }} -BuildRequires: {{ py2pkg('pbr') }} -BuildRequires: {{ py2pkg('requests') }} -BuildRequires: {{ py2pkg('scrypt') }} -BuildRequires: {{ py2pkg('stestr') }} -BuildRequires: {{ py2pkg('testresources') }} -BuildRequires: {{ py2pkg('testtools') }} +BuildRequires: {{ py2pkg('Flask', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('WebTest', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('bcrypt', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('devel', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('fixtures', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('freezegun', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('jsonschema', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('keystonemiddleware', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('ldappool', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('lxml', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('mock', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oauthlib', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslo.cache', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslo.config', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslo.db', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslo.messaging', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslo.policy', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('oslotest', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('osprofiler', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('passlib', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('pbr', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('pysaml2', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('requests', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('scrypt', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('sqlparse', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('stestr', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('testresources', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('testscenarios', py_versions=['py3']) }} +BuildRequires: {{ py2pkg('testtools', py_versions=['py3']) }} BuildRequires: which -Requires: python-{{ pypi_name }} = %{epoch}:%{version}-%{release} +Requires: python3-{{ pypi_name }} = %{epoch}:%{version}-%{release} BuildArch: noarch %if 0%{?suse_version} BuildRequires: libxmlsec1-openssl1 @@ -55,55 +66,55 @@ Keystone is a Python implementation of the OpenStack . This package contains the keystone python libraries. -%package -n python-{{ pypi_name }} +%package -n python3-{{ pypi_name }} Summary: Keystone Python libraries Group: Applications/System -Requires: {{ py2pkg('Babel') }} -Requires: {{ py2pkg('Flask') }} -Requires: {{ py2pkg('Paste') }} -Requires: {{ py2pkg('PasteDeploy') }} -Requires: {{ py2pkg('PyMySQL') }} -Requires: {{ py2pkg('Routes') }} -Requires: {{ py2pkg('SQLAlchemy') }} -Requires: {{ py2pkg('WebOb') }} -Requires: {{ py2pkg('bcrypt') }} -Requires: {{ py2pkg('cryptography') }} -Requires: {{ py2pkg('dogpile.cache') }} -Requires: {{ py2pkg('jsonschema') }} -Requires: {{ py2pkg('python-keystoneclient') }} -Requires: {{ py2pkg('keystonemiddleware') }} -Requires: {{ py2pkg('ldappool') }} -Requires: {{ py2pkg('msgpack') }} -Requires: {{ py2pkg('oauthlib') }} -Requires: {{ py2pkg('oslo.cache') }} -Requires: {{ py2pkg('oslo.concurrency') }} -Requires: {{ py2pkg('oslo.config') }} -Requires: {{ py2pkg('oslo.context') }} -Requires: {{ py2pkg('oslo.db') }} -Requires: {{ py2pkg('oslo.i18n') }} -Requires: {{ py2pkg('oslo.log') }} -Requires: {{ py2pkg('oslo.messaging') }} -Requires: {{ py2pkg('oslo.middleware') }} -Requires: {{ py2pkg('oslo.policy') }} -Requires: {{ py2pkg('oslo.serialization') }} -Requires: {{ py2pkg('oslo.utils') }} -Requires: {{ py2pkg('osprofiler') }} -Requires: {{ py2pkg('passlib') }} -Requires: {{ py2pkg('pbr') }} -Requires: {{ py2pkg('pycadf') }} -Requires: {{ py2pkg('pysaml2') }} -Requires: {{ py2pkg('python-memcached') }} -Requires: {{ py2pkg('six') }} -Requires: {{ py2pkg('sqlalchemy-migrate') }} -Requires: {{ py2pkg('stevedore') }} +Requires: {{ py2pkg('Babel', py_versions=['py3']) }} +Requires: {{ py2pkg('Flask', py_versions=['py3']) }} +Requires: {{ py2pkg('Paste', py_versions=['py3']) }} +Requires: {{ py2pkg('PasteDeploy', py_versions=['py3']) }} +Requires: {{ py2pkg('PyMySQL', py_versions=['py3']) }} +Requires: {{ py2pkg('Routes', py_versions=['py3']) }} +Requires: {{ py2pkg('SQLAlchemy', py_versions=['py3']) }} +Requires: {{ py2pkg('WebOb', py_versions=['py3']) }} +Requires: {{ py2pkg('bcrypt', py_versions=['py3']) }} +Requires: {{ py2pkg('cryptography', py_versions=['py3']) }} +Requires: {{ py2pkg('dogpile.cache', py_versions=['py3']) }} +Requires: {{ py2pkg('jsonschema', py_versions=['py3']) }} +Requires: {{ py2pkg('python-keystoneclient', py_versions=['py3']) }} +Requires: {{ py2pkg('keystonemiddleware', py_versions=['py3']) }} +Requires: {{ py2pkg('ldappool', py_versions=['py3']) }} +Requires: {{ py2pkg('msgpack', py_versions=['py3']) }} +Requires: {{ py2pkg('oauthlib', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.cache', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.concurrency', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.config', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.context', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.db', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.i18n', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.log', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.messaging', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.middleware', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.policy', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.serialization', py_versions=['py3']) }} +Requires: {{ py2pkg('oslo.utils', py_versions=['py3']) }} +Requires: {{ py2pkg('osprofiler', py_versions=['py3']) }} +Requires: {{ py2pkg('passlib', py_versions=['py3']) }} +Requires: {{ py2pkg('pbr', py_versions=['py3']) }} +Requires: {{ py2pkg('pycadf', py_versions=['py3']) }} +Requires: {{ py2pkg('pysaml2', py_versions=['py3']) }} +Requires: {{ py2pkg('python-memcached', py_versions=['py3']) }} +Requires: {{ py2pkg('six', py_versions=['py3']) }} +Requires: {{ py2pkg('sqlalchemy-migrate', py_versions=['py3']) }} +Requires: {{ py2pkg('stevedore', py_versions=['py3']) }} %if 0%{?suse_version} -Requires: {{ py2pkg('pyldap') }} +Requires: {{ py2pkg('pyldap', py_versions=['py3']) }} %endif %if 0%{?rdo} -Requires: {{ py2pkg('python-ldap') }} +Requires: {{ py2pkg('python-ldap', py_versions=['py3']) }} %endif -%description -n python-{{ pypi_name }} +%description -n python3-{{ pypi_name }} Keystone is a Python implementation of the OpenStack (http://docs.openstack.org/developer/keystone/) identity service API. This package contains the Keystone Python library. @@ -129,6 +140,7 @@ BuildRequires: {{ py2pkg('oslo.log') }} BuildRequires: {{ py2pkg('oslo.messaging') }} BuildRequires: {{ py2pkg('oslo.middleware') }} BuildRequires: {{ py2pkg('oslo.policy') }} +BuildRequires: {{ py2pkg('osprofiler') }} BuildRequires: {{ py2pkg('passlib') }} BuildRequires: {{ py2pkg('pysaml2') }} BuildRequires: {{ py2pkg('python-memcached') }} @@ -152,9 +164,8 @@ sed -i 's#apache2#httpd#' httpd/wsgi-keystone.conf sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg %build -%{py2_build} - -PBR_VERSION={{ upstream_version }} sphinx-build -b html doc/source doc/build/html +%{py3_build} +PYTHONPATH=. PBR_VERSION={{ upstream_version }} sphinx-build -b html doc/source doc/build/html # remove the Sphinx-build leftovers rm -rf doc/build/html/.{doctrees,buildinfo} # config file generation @@ -164,7 +175,7 @@ oslo-config-generator --config-file config-generator/keystone.conf \ oslopolicy-sample-generator --config-file config-generator/keystone-policy-generator.conf --output-file etc/keystone.policy.yaml %install -%{py2_install} +%{py3_install} install -d -m 755 %{buildroot}%{_sysconfdir}/keystone install -d -m 755 %{buildroot}%{_sysconfdir}/sysctl.d install -d -m 750 %{buildroot}%{_localstatedir}/{lib,log}/keystone @@ -198,7 +209,12 @@ exit 0 %check # don't want to depend on hacking for package building rm keystone/tests/unit/test_hacking_checks.py +%if 0%{?suse_version} stestr run --black-regex keystone.tests.unit.test_policy.GeneratePolicyFileTestCase.test_policy_generator_from_command_line +%endif +%if 0%{?rdo} +stestr-3 run --black-regex keystone.tests.unit.test_policy.GeneratePolicyFileTestCase.test_policy_generator_from_command_line +%endif %post %tmpfiles_create %{_tmpfilesdir}/keystone.conf @@ -231,12 +247,12 @@ stestr run --black-regex keystone.tests.unit.test_policy.GeneratePolicyFileTestC %dir %attr(0750, %{keystone}, %{keystone}) %{_localstatedir}/cache/keystone %{_sysconfdir}/sysctl.d/openstack-keystone.conf -%files -n python-keystone +%files -n python3-keystone %defattr(-,root,root,-) %doc README.rst %license LICENSE -%{python2_sitelib}/keystone* -%{python2_sitelib}/keystone-*.egg-info +%{python3_sitelib}/keystone* +%{python3_sitelib}/keystone-*.egg-info %files doc %license LICENSE diff --git a/tools/run_renderspec.sh b/tools/run_renderspec.sh index 4ba83ef67..60e8c9de1 100755 --- a/tools/run_renderspec.sh +++ b/tools/run_renderspec.sh @@ -16,15 +16,21 @@ for specstyle in $specstyles; do rm -rf $OUTPUTDIR/${specstyle}/* done +py3onlypackages=("openstack-keystone") + count=0 echo "run renderspec over specfiles from ${specdir}" for specstyle in $specstyles; do for spec in ${specdir}/**/*.spec.j2; do echo "run ${spec} for ${specstyle}" pkg_name=$(pymod2pkg --dist $specstyle $(basename $spec .spec.j2)) + if [[ ! " ${py3onlypackages[@]} " =~ " ${pkg_name} " ]];then + skip="--skip-pyversion py3" + else + skip="" + fi renderspec --spec-style ${specstyle} ${spec} \ - --requirements $basedir/global-requirements.txt \ - --skip-pyversion py3 \ + --requirements $basedir/global-requirements.txt ${skip} \ -o $WORKSPACE/logs/${specstyle}/$pkg_name.spec & let count+=1 [[ count -eq $MAXPROC ]] && wait && count=0