Bug 1687196 - python36 with /usr/bin/python3 fail to update python34 with /usr/bin/python3
Summary: python36 with /usr/bin/python3 fail to update python34 with /usr/bin/python3
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: python36
Version: epel7
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Charalampos Stratakis
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-03-10 20:31 UTC by Tuomo Soini
Modified: 2019-08-10 08:46 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-08-10 08:46:01 UTC


Attachments (Terms of Use)
Proposed patch (1.20 KB, patch)
2019-03-10 20:31 UTC, Tuomo Soini
no flags Details | Diff

Description Tuomo Soini 2019-03-10 20:31:26 UTC
Created attachment 1542700 [details]
Proposed patch

Description of problem:

When /usr/bin/python3 symnlink gets moved from python34 to python36, yum dowsn't undertsand it should pull in python36 to fullfill dependency on /usr/bin/python3

Version-Release number of selected component (if applicable):

System has installed following packages:

rlwrap-0.43-1.el7.x86_64
python34-msgpack-0.5.6-4.el7.x86_64
python34-3.4.9-2.el7.x86_64
python34-setuptools-39.2.0-2.el7.noarch
python34-llfuse-1.0-1.el7.x86_64
python34-libs-3.4.9-2.el7.x86_64

yum update ends to:

Running transaction check
ERROR with transaction check vs depsolve:
/usr/bin/python3 is needed by (installed) rlwrap-0.43-1.el7.x86_64

How reproducible:

Always if python36 package is not installed. Installing python36-3.6.6-2.el7 before update fixes the issue.

Expected results:

I'd expect python36 to be installed to fullfill dependency /usr/bin/python3.

Additional info:

With attached patch, update works as expected.

Installed:
  python36.x86_64 0:3.6.6-4.el7                                                                                         

Dependency Installed:
  python36-libs.x86_64 0:3.6.6-4.el7                                                                                     

Updated:
  python34-libs.x86_64 0:3.4.9-3.el7                                                                                       

Dependency Updated:
  python34.x86_64 0:3.4.9-3.el7                                                                                            

Replaced:
  python34.x86_64 0:3.4.9-2.el7                                                                                            

Complete!

Comment 1 Tuomo Soini 2019-03-13 12:48:09 UTC
Note that obsoletes is only for python34 versions with /usr/bin/python3 symlink so that yum understands to pull in python36 package to replace that symlink. Because latest version of python34 is not obsoleted, dependencies pull in latest python34 and python34-libs updates. So Net effect is that python36 with /usr/bin/python3 gets installed to fullfill file requirements.

Comment 2 Carl George 2019-03-13 16:13:09 UTC
Obsoletes is not the correct choice.  Users that haven't update to the latest python34 will get swapped to python36, which we don't want to force.  python36 does need to add a conflicts (`Conflicts: python34 < 3.4.9-3`) to reflect the file conflict of /usr/bin/python3.

rlwrap requires /usr/bin/python3 due to automatic dependency added from shebang lines of python scripts in /usr/share/rlwrap.  I don't know if those are strictly necessary or not, so I'm changing the component on this to get the rlwrap maintainer's input.  Depending on the answer a few choices exist:

1. remove shebang lines
2. change shebang lines to /usr/bin/python or /usr/bin/python2 to use base python
3. change shebang lines to /usr/bin/python3.4 or /usr/bin/python3.6 if a python3 version is strictly necessary
4. filter out the python auto-dependency
5. remove the execute bit on those files so the auto-dependency tooling ignores them
6. explicitly depend on `python36 >= 3.6.6-3` (the first release to include /usr/bin/python3) so it's included in the update transaction

While typing this up, I noticed that /usr/share/rlwrap/filters/README says:

    The filters in this directory have been written to test rlwrap, 
    not to be practical.

The test suite looks to be a combination of make, shell, and perl.  As best I can tell they don't use python, so I'd lean towards removing the dependency via 1, 4, or 5 above.

Comment 3 Miro Hrončok 2019-03-28 23:45:15 UTC
> Users that haven't update to the latest python34 will get swapped to python36

They wont. See https://src.fedoraproject.org/rpms/python36/pull-request/27#comment-23169

Comment 4 Fedora Update System 2019-03-29 08:51:55 UTC
abrt-addon-python3-2.1.11-50.el7 asciinema-1.4.0-2.el7 autowrap-0.19.0-2.el7 avogadro2-libs-1.90.0-12.el7 backintime-1.1.20-5.el7 blender-2.68a-8.el7 borgbackup-1.1.8-3.el7 borgmatic-1.1.15-3.el7 cherrytree-0.38.5-5.el7 cinnamon-menus-3.6.0-4.el7 cinnamon-screensaver-3.6.1-4.el7 clustershell-1.8.1-2.el7 cmake3-3.13.4-2.el7 ddupdate-0.6.0-3.el7 debconf-1.5.69-2.el7 devscripts-2.16.5-2.el7 docker-compose-1.18.0-4.el7 espresso-4.0.1-2.el7 fish-2.3.1-2.el7 future-0.16.0-7.el7 global-6.5.6-4.el7 gramps-5.0.1-2.el7 jpype-0.6.3-8.el7 lammps-20181212-2.el7 lensfun-0.3.2-14.el7 lhapdf-6.2.1-6.el7 libpeas-loader-python3-1.22.0-2.el7 libprelude-4.1.0-3.el7 libpreludedb-4.1.0-2.el7 lirc-0.10.0-16.el7 lxc-1.0.11-2.el7 meson-0.47.2-2.el7 mint-y-theme-1.2.4-2.el7 netcdf4-python-1.2.7-4.el7 nordugrid-arc-5.4.3-2.el7 petsc4py-3.9.1-4.el7 prelude-correlator-4.1.1-4.el7 py4j-0.10.7-4.el7 pycmd-1.2-5.el7 pyflakes-1.6.0-4.el7 pyicu-1.5-26.el7 pylint-1.6.5-5.el7 pyotherside-1.5.3-8.el7 pythia8-8.2.35-6.el7 python3-cairo-1.10.0-25.el7 python3-cffi-1.9.1-3.el7 python3-chardet-2.3.0-5.el7 python34-3.4.9-3.el7 python36-3.6.6-5.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-f2d195dada

Comment 5 Fedora Update System 2019-03-29 08:52:08 UTC
abrt-addon-python3-2.1.11-50.el7 asciinema-1.4.0-2.el7 autowrap-0.19.0-2.el7 avogadro2-libs-1.90.0-12.el7 backintime-1.1.20-5.el7 blender-2.68a-8.el7 borgbackup-1.1.8-3.el7 borgmatic-1.1.15-3.el7 cherrytree-0.38.5-5.el7 cinnamon-menus-3.6.0-4.el7 cinnamon-screensaver-3.6.1-4.el7 clustershell-1.8.1-2.el7 cmake3-3.13.4-2.el7 ddupdate-0.6.0-3.el7 debconf-1.5.69-2.el7 devscripts-2.16.5-2.el7 docker-compose-1.18.0-4.el7 espresso-4.0.1-2.el7 fish-2.3.1-2.el7 future-0.16.0-7.el7 global-6.5.6-4.el7 gramps-5.0.1-2.el7 jpype-0.6.3-8.el7 lammps-20181212-2.el7 lensfun-0.3.2-14.el7 lhapdf-6.2.1-6.el7 libpeas-loader-python3-1.22.0-2.el7 libprelude-4.1.0-3.el7 libpreludedb-4.1.0-2.el7 lirc-0.10.0-16.el7 lxc-1.0.11-2.el7 meson-0.47.2-2.el7 mint-y-theme-1.2.4-2.el7 netcdf4-python-1.2.7-4.el7 nordugrid-arc-5.4.3-2.el7 petsc4py-3.9.1-4.el7 prelude-correlator-4.1.1-4.el7 py4j-0.10.7-4.el7 pycmd-1.2-5.el7 pyflakes-1.6.0-4.el7 pyicu-1.5-26.el7 pylint-1.6.5-5.el7 pyotherside-1.5.3-8.el7 pythia8-8.2.35-6.el7 python3-cairo-1.10.0-25.el7 python3-cffi-1.9.1-3.el7 python3-chardet-2.3.0-5.el7 python34-3.4.9-3.el7 python36-3.6.6-5.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-f2d195dada

Comment 6 Tuomo Soini 2019-03-29 08:59:17 UTC
(In reply to Miro Hrončok from comment #3)
> > Users that haven't update to the latest python34 will get swapped to python36
> 
> They wont. See
> https://src.fedoraproject.org/rpms/python36/pull-request/27#comment-23169

I was talking about attached patch which is better approach for this - only one package needs to be obsoleted - obsoleting all of them can break it all.

Comment 7 Miro Hrončok 2019-03-29 09:02:53 UTC
> obsoleting all of them can break it all.

What's the difference?

Comment 8 Tuomo Soini 2019-03-29 09:15:35 UTC
Only one package should be obsoleted. Not all of them. Now you replace all python34 sub-packages which can cause total replacement of python34 with pyton36 equivalents which is not what was wanted - see my explanation from this bug again and check my patch which does minimal changes fixing only this issue and not causing several other issues.

Comment 9 Miro Hrončok 2019-03-29 09:21:01 UTC
I've checked your patch. What is the **difference in behavior** to obsoleting all subpackages? You say it causes several issues. What issues?

The obsoleted subpackages depend transitively on the main package. They cannot stay while the main package is removed.

Comment 10 Tuomo Soini 2019-03-29 09:51:06 UTC
Your suggested patch causes complete removal of python34* In case of python3 software on system is not rpm packaged which is quite normal case. See comment 1 and initial bug report what my patch causes. It only causes python36 to be added to system with python34 so that /usr/bin/python3 shebang still works. This was throughly ttested.

Comment 11 Miro Hrončok 2019-03-29 10:09:56 UTC
It causes old python34 to be removed if no other packages depend on it.

For users with python34 installed without additional packages installed, it acts as (yes, potentially breaking) update from 3.4 to 3.6.
For users with additional python34 packages installed, it keeps it installed.

python34-libs isn't "additional packages", it is an essential part of python34.

If you use Python 3 software that only depends on the standard library, you get a newer Python version, but it should work, in most cases. if it doesn't work, you can fetch 3.4 back.
If you use Python 3 software but also have stuff like pytho34-requests installed to make it work, Python 3.4 will be kept.

This is the desired behavior, we eventually want to get rid of Python 3.4, it just lost security support from upstream.

Comment 12 Tuomo Soini 2019-03-29 10:16:49 UTC
I completely understand that - but what you do now is more than just a fix for this issue.

Comment 13 Miro Hrončok 2019-03-29 12:42:49 UTC
Yes, it is a strategic decision of a sort that also fixes this issue. Thanks

Comment 14 Fedora Update System 2019-03-29 19:08:55 UTC
abrt-addon-python3-2.1.11-50.el7, asciinema-1.4.0-2.el7, autowrap-0.19.0-2.el7, avogadro2-libs-1.90.0-12.el7, backintime-1.1.20-5.el7, blender-2.68a-8.el7, borgbackup-1.1.8-3.el7, borgmatic-1.1.15-3.el7, cherrytree-0.38.5-5.el7, cinnamon-menus-3.6.0-4.el7, cinnamon-screensaver-3.6.1-4.el7, clustershell-1.8.1-2.el7, cmake3-3.13.4-2.el7, ddupdate-0.6.0-3.el7, debconf-1.5.69-2.el7, devscripts-2.16.5-2.el7, docker-compose-1.18.0-4.el7, espresso-4.0.1-2.el7, fish-2.3.1-2.el7, future-0.16.0-7.el7, global-6.5.6-4.el7, gramps-5.0.1-2.el7, jpype-0.6.3-8.el7, lammps-20181212-2.el7, lensfun-0.3.2-14.el7, lhapdf-6.2.1-6.el7, libpeas-loader-python3-1.22.0-2.el7, libprelude-4.1.0-3.el7, libpreludedb-4.1.0-2.el7, lirc-0.10.0-16.el7, lxc-1.0.11-2.el7, meson-0.47.2-2.el7, mint-y-theme-1.2.4-2.el7, netcdf4-python-1.2.7-4.el7, nordugrid-arc-5.4.3-2.el7, petsc4py-3.9.1-4.el7, prelude-correlator-4.1.1-4.el7, py4j-0.10.7-4.el7, pycmd-1.2-5.el7, pyflakes-1.6.0-4.el7, pyicu-1.5-26.el7, pylint-1.6.5-5.el7, pyotherside-1.5.3-8.el7, pythia8-8.2.35-6.el7, python3-cairo-1.10.0-25.el7, python3-cffi-1.9.1-3.el7, python3-chardet-2.3.0-5.el7, python34-3.4.9-3.el7, python36-3.6.6-5.el7 has been pushed to the Fedora EPEL 7 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-EPEL-2019-f2d195dada

Comment 15 Fedora Update System 2019-04-03 18:50:42 UTC
abrt-addon-python3-2.1.11-50.el7, asciinema-1.4.0-2.el7, autowrap-0.19.0-2.el7, avogadro2-libs-1.90.0-12.el7, backintime-1.1.20-5.el7, blender-2.68a-8.el7, borgbackup-1.1.8-3.el7, borgmatic-1.1.15-3.el7, cherrytree-0.38.5-5.el7, cinnamon-menus-3.6.0-4.el7, cinnamon-screensaver-3.6.1-4.el7, clustershell-1.8.1-2.el7, cmake3-3.13.4-2.el7, ddupdate-0.6.0-3.el7, debconf-1.5.69-2.el7, devscripts-2.16.5-2.el7, docker-compose-1.18.0-4.el7, espresso-4.0.1-2.el7, fish-2.3.1-2.el7, future-0.16.0-7.el7, global-6.5.6-4.el7, gramps-5.0.1-2.el7, jpype-0.6.3-8.el7, lammps-20181212-2.el7, lensfun-0.3.2-14.el7, lhapdf-6.2.1-6.el7, libpeas-loader-python3-1.22.0-2.el7, libprelude-4.1.0-3.el7, libpreludedb-4.1.0-2.el7, lirc-0.10.0-16.el7, lxc-1.0.11-2.el7, meson-0.47.2-2.el7, mint-y-theme-1.2.4-2.el7, netcdf4-python-1.2.7-4.el7, nordugrid-arc-5.4.3-2.el7, petsc4py-3.9.1-4.el7, prelude-correlator-4.1.1-4.el7, py4j-0.10.7-4.el7, pycmd-1.2-5.el7, pyflakes-1.6.0-4.el7, pyicu-1.5-26.el7, pylint-1.6.5-5.el7, pyotherside-1.5.3-8.el7, pythia8-8.2.35-6.el7, python3-cairo-1.10.0-25.el7, python3-cffi-1.9.1-3.el7, python3-chardet-2.3.0-5.el7, python34-3.4.9-3.el7, python36-3.6.6-5.el7 has been pushed to the Fedora EPEL 7 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.