Bug 1745601 - %python3_version and %python3_version_nodots will break with Python 3.10
Summary: %python3_version and %python3_version_nodots will break with Python 3.10
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-rpm-macros
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
low
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-08-26 13:12 UTC by Miro Hrončok
Modified: 2019-10-04 20:05 UTC (History)
7 users (show)

Fixed In Version: python-rpm-macros-3-49.fc31
Clone Of:
Environment:
Last Closed: 2019-10-04 20:05:36 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2019-08-26 13:12:20 UTC
Current implementation of %python3_version and %python3_version_nodots will break with Python 3.10:

%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3])")
%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3].replace('.',''))")

sys.version[:3] will be '3.1' on Python 3.10.

Interestingly, %python2_version and %python_version are defined correctly in this regard:

macros.python2
%python2_version %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
%python2_version_nodots %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")

macros.python
%python_version %(%{__python} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
%python_version_nodots %(%{__python} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")

Comment 1 Miro Hrončok 2019-08-26 13:19:11 UTC
There are other packages where this will break:

$ rg -F 'sys.version[' rpm-specs/
rpm-specs/python-fedmsg-meta-fedora-infrastructure.spec
8:%{!?py2ver: %global py2ver %(%{?__python2} -c 'import sys; print(sys.version[0:3])' 2>/dev/null)}
10:%{!?py3ver: %global py3ver %(%{?__python3} -c 'import sys; print(sys.version[0:3])' 2>/dev/null)}

rpm-specs/python-logging-tree.spec
2:%{!?py3ver: %global py3ver %(%{__python3} -c "import sys ; print(sys.version[:3])")}

rpm-specs/lcgdm.spec
527:	'/config -lpython' + sys.version[:3] \

rpm-specs/cherrytree.spec
2:%global py_ver %(if [ -f "%{__python}" ]; then %{__python} -c "import sys; sys.stdout.write(sys.version[:3])"; else echo 0; fi;)

rpm-specs/moksha.spec
2:%{!?pyver: %define pyver %(%{__python} -c "import sys ; print sys.version[:3]")}

rpm-specs/odcs.spec
6:%{!?pyver: %global pyver %(%{__python} -c "import sys ; print sys.version[:3]")}

rpm-specs/python-dockerfile-parse.spec
4:%{!?python2_version: %global python2_version %(%{__python2} -c "import sys; sys.stdout.write(sys.version[:3])")}

rpm-specs/python-zc-buildout.spec
9:%{!?py3ver: %global py3ver %(%{__python3} -c "import sys ; print(sys.version[:3])")}
11:%{!?py2ver: %global py2ver %(%{__python2} -c "import sys ; print sys.version[:3]")}

rpm-specs/python-webob.spec
3:%{!?py3ver: %global py3ver %(%{__python3} -c "import sys ; print(sys.version[:3])")}
6:%{!?py2ver: %global py2ver %(%{__python} -c "import sys ; print sys.version[:3]")}

rpm-specs/python-easygui.spec
3:%{!?python_version: %global python_version %(%{__python} -c "import sys ; print sys.version[:3]")}
6:%{!?python3_version: %global python3_version %(%{__python3} -c "import sys; sys.stdout.write(sys.version[:3])")}

rpm-specs/openvdb.spec
1:%global python_version %(%{__python3} -c "import sys ; print(sys.version[:3])")

rpm-specs/blender.spec
178:    -DPYTHON_VERSION=$(%{__python3} -c "import sys ; print(sys.version[:3])") \

Comment 3 Petr Viktorin (pviktori) 2019-09-03 13:30:08 UTC
Leaving open to fix all the packages above.

Comment 4 Miro Hrončok 2019-09-17 11:06:09 UTC
$ rg -F 'sys.version[' rpm-specs/
rpm-specs/odcs.spec
6:%{!?pyver: %global pyver %(%{__python} -c "import sys ; print sys.version[:3]")}

rpm-specs/python-dockerfile-parse.spec
4:%{!?python2_version: %global python2_version %(%{__python2} -c "import sys; sys.stdout.write(sys.version[:3])")}

rpm-specs/python-zc-buildout.spec
9:%{!?py3ver: %global py3ver %(%{__python3} -c "import sys ; print(sys.version[:3])")}
11:%{!?py2ver: %global py2ver %(%{__python2} -c "import sys ; print sys.version[:3]")}

rpm-specs/python-easygui.spec
3:%{!?python_version: %global python_version %(%{__python} -c "import sys ; print sys.version[:3]")}
6:%{!?python3_version: %global python3_version %(%{__python3} -c "import sys; sys.stdout.write(sys.version[:3])")}

rpm-specs/openvdb.spec
1:%global python_version %(%{__python3} -c "import sys ; print(sys.version[:3])")

rpm-specs/blender.spec
178:    -DPYTHON_VERSION=$(%{__python3} -c "import sys ; print(sys.version[:3])") \

Comment 5 Miro Hrončok 2019-09-17 11:17:20 UTC
https://src.fedoraproject.org/rpms/odcs/pull-request/4

python-dockerfile-parse only has it with RHEL <= 6 and python2

python-zc-buildout is orphaned for 6 weeks and will be retired soon

https://src.fedoraproject.org/rpms/python-easygui/pull-request/2

https://src.fedoraproject.org/rpms/openvdb/pull-request/1

https://src.fedoraproject.org/rpms/blender/pull-request/7

Comment 6 Fedora Update System 2019-09-30 12:48:01 UTC
FEDORA-2019-f7d435cd16 has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2019-f7d435cd16

Comment 7 Fedora Update System 2019-10-01 03:06:30 UTC
python-rpm-macros-3-49.fc31 has been pushed to the Fedora 31 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-f7d435cd16

Comment 8 Fedora Update System 2019-10-04 20:05:36 UTC
python-rpm-macros-3-49.fc31 has been pushed to the Fedora 31 stable repository. If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.