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
This commit is contained in:
yatin 2018-05-11 18:41:50 +05:30
parent 405837ae10
commit f633de2d83
2 changed files with 92 additions and 70 deletions

View File

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

View File

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