Bug 1699834 - /usr/bin/blockdiag is removed on upgrade to F30
Summary: /usr/bin/blockdiag is removed on upgrade to F30
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-blockdiag
Version: 28
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Dridi Boukelmoune
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-04-15 10:41 UTC by Elliott Sales de Andrade
Modified: 2019-04-27 21:27 UTC (History)
2 users (show)

Fixed In Version: python-blockdiag-1.5.4-4.fc30
Clone Of:
Environment:
Last Closed: 2019-04-27 21:27:28 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Elliott Sales de Andrade 2019-04-15 10:41:54 UTC
Description of problem:
Testing out the upgrade, I see:

 fedora-obsolete-packages                   noarch               30-36                                            updates-testing                53 k
     replacing  python2-blockdiag.noarch 1.5.3-15.fc29

but I don't see python3-blockdiag being installed. This means that /usr/bin/blockdiag is no longer available (which is the reason I installed this package in the first place.)


Version-Release number of selected component (if applicable):
1.5.3-15.fc29 and 1.5.4-1.fc30


Steps to Reproduce:
$ docker run --rm -it fedora:29 /bin/bash
# dnf install python2-blockdiag
# dnf --releasever=30 --setopt=module_platform_id=platform:f30 --enablerepo=updates-testing distro-sync


Actual results:
python2-blockdiag is removed and nothing replaced /usr/bin/blockdiag


Expected results:
The blockdiag program is not removed.

Comment 1 Dridi Boukelmoune 2019-04-15 11:25:35 UTC
I see, the python3-blockdiag package should replace somehow (obsolete and provide?) the python2-blockdiag package.

This is tricky because while we are providing python modules in addition to programs in this package and the other related *diag packages. One way to solve this would be to produce a "blockdiag" sub-package with the relevant bits (program, manual etc) and have it require the python3-blockdiag package containing the python module.

Any idea what the best course of action would be to make the upgrade path work?

I will have to ponder this, thanks for catching that!

Comment 2 Elliott Sales de Andrade 2019-04-16 06:23:08 UTC
Miro might have a better idea of what's done for other Python 2->3 executables.

Comment 3 Miro Hrončok 2019-04-16 08:46:56 UTC
Providing a "blockdiag" package with the tool and manuals etc. is a good approach, but it won't fix your problem.

Note that python2-blockdiag screams "python 2 module", not "an executable that is supposed to do some things", so yes, please do this.

Once there is a "blockdiag" package, you should probably provide/obsolete python2-blockdiag from it (and remove the obsoleting bits from fedora-obsolete-packages)and conflict with python3-blockdiag < LAST_VERSION_WITH_THE_EXECUTABLE. That will solve you upgrade path.

If you are looking for a quicker fix, obsoleting and providing python2-blockdiag from python3-blockdiag will do the trick.

Comment 4 Dridi Boukelmoune 2019-04-20 11:10:38 UTC
Miro, would this change in f30 be enough if I don't split the f29 packages?

    %package -n %{srcname}
    Summary:        %{summary}
    Requires:       python3-%{srcname} = %{version}-%{release}
    Supplements:    python2-%{srcname}

Would a supplement work even though it is also obsoleted by fedora-obsolete-packages?

Comment 5 Miro Hrončok 2019-04-20 13:49:02 UTC
Why Supplements? What are you trying to accomplish?

Comment 6 Dridi Boukelmoune 2019-04-20 14:03:02 UTC
In f29 python2-blockdiag contains both libraries and /usr/bin/blockdiag, so the idea is to move the program in a blockdiag package in f30 that replaces (or supplements) python2-blockdiag.

This way the python2-blockdiag package could still be marked as obsolete, but offer an upgrade path to blockdiag in f30.

Assuming that blockdiag users would primarily install python2-blockdiag for the program itself, they would still have it in f30 if Supplements: can work together with Obsoletes: (from fedora-obsolete-packages) in this scenario.

Comment 7 Miro Hrončok 2019-04-20 16:29:48 UTC
I've never seen supplements used to replace something and I don't think it works that way. I'd use obsoletes. We can remove the obsoletes from fedora-obsolete-packages.

Comment 8 Dridi Boukelmoune 2019-04-20 16:45:43 UTC
I see, I will add this instead in f30 and rawhide:

    %package -n %{srcname}
    Summary:        %{summary}
    Requires:       python3-%{srcname} = %{version}-%{release}
    Obsoletes:      python2-%{srcname}
    Provides:       python2-%{srcname}

And you can remove python2-{block,act,seq,nw}diag from fedora-obsolete-packages (the 3 other packages have the same problem).

Conflicting with python3-%{srcname} < $F29_VERSION shouldn't be needed, there is already a strict Requires: field.

Would you agree with this plan?

Comment 9 Miro Hrončok 2019-04-20 17:29:02 UTC
Please:

    Obsoletes:      python2-%{srcname} < $F29_VERSION_RELEASE+1
    Provides:       python2-%{srcname} = %{version}-%{release}

Comment 10 Dridi Boukelmoune 2019-04-20 17:39:24 UTC
Right, that wasn't explicitly said in your first message but I guess this is standard procedure from the guidelines.

Duly noted.

Those two specific lines can go away when f29 reaches its EOL, correct?

Comment 11 Miro Hrončok 2019-04-20 17:52:42 UTC
Usually there are kept for 3 releases, to support updates from the version that got the obsoleted package.

Comment 12 Miro Hrončok 2019-04-20 17:56:13 UTC
Let me know when both rawhide and F30 builds are ready, so I can do a joined F30 update.

Comment 13 Dridi Boukelmoune 2019-04-21 08:21:19 UTC
The following packages were built f30:

- python-actdiag-0.5.4-14.fc30 (https://koji.fedoraproject.org/koji/taskinfo?taskID=34307645)
- python-blockdiag-1.5.4-4.fc30 (https://koji.fedoraproject.org/koji/taskinfo?taskID=34307649)
- python-nwdiag-1.0.4-14.fc30 (https://koji.fedoraproject.org/koji/taskinfo?taskID=34307581)
- python-seqdiag-0.9.6-2.fc30 (https://koji.fedoraproject.org/koji/taskinfo?taskID=34307611)

Built in rawhide before f30.

Comment 14 Fedora Update System 2019-04-22 14:10:54 UTC
python-seqdiag-0.9.6-2.fc30 python-nwdiag-1.0.4-14.fc30 python-blockdiag-1.5.4-4.fc30 python-actdiag-0.5.4-14.fc30 fedora-obsolete-packages-30-41 has been submitted as an update to Fedora 30. https://bodhi.fedoraproject.org/updates/FEDORA-2019-919e826bbe

Comment 15 Fedora Update System 2019-04-23 14:55:37 UTC
fedora-obsolete-packages-30-41, python-actdiag-0.5.4-14.fc30, python-blockdiag-1.5.4-4.fc30, python-nwdiag-1.0.4-14.fc30, python-seqdiag-0.9.6-2.fc30 has been pushed to the Fedora 30 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-919e826bbe

Comment 16 Fedora Update System 2019-04-27 21:27:28 UTC
fedora-obsolete-packages-30-41, python-actdiag-0.5.4-14.fc30, python-blockdiag-1.5.4-4.fc30, python-nwdiag-1.0.4-14.fc30, python-seqdiag-0.9.6-2.fc30 has been pushed to the Fedora 30 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.