Hi guys,

Thank you so much for the feedback.

Let's wrap it up... 

1) We will not rename the current "minizip-compat" to "minizip".

2) The Obsolete in the "minizip-ng" package will look like this: "Obsoletes: minizip < 3.0.3"
It shouldn't affect the "minizip-compat" because we won't rename that (look at step 1)

3) The removal of the "Provides" and "Obsolete" in the new "minizip-ng" package will be removed in Fedora 42 (hopefully at that time all users are upgraded)

Note: The rebuild (step 2 in the proposal change) will be done by the maintainers of the dependent packages. I'll report a bug for each component, where I will request it. If some of the maintainers will not be responsive, I will create a PR and as provenpackagers to merge it.

Is this plan correction okay with you?
Or is there something else you would like to clear out?

On Tue, Aug 30, 2022 at 11:04 PM Maxwell G via devel <devel@lists.fedoraproject.org> wrote:
On 22/08/30 05:57PM, Zbigniew Jędrzejewski-Szmek wrote:
> On Mon, Aug 15, 2022 at 05:04:27PM -0400, Ben Cotton wrote:
> > == Detailed Description ==
> > Upstream has changed the naming of the "minizip" package to
> > "minizip-ng" and we should follow their naming so there is no
> > confusion about which package is the right one. Upstream has also
> > requested to rename the "minizip-compat" zlib subpackage to "minizip"
> > which is the right naming for the package.
> >
> > The "minizip" and "minizip-compat" provides different shared libraries
> > which prevent us from conflicting sonames.
> >
> > The plan behind this change can be put into x steps which will be
> > completed separately and in the given order:
> >
> > ''NOTE: All of the Provides and Obsoletes will be added to the *-devel
> > subpackages as well.''
> >
> > 1) Create a new package "minizip-ng" which will `Provides: minizip =
> > %{sameevr}` and `Obsoletes: (minizip < 3.0.2-7 and minizip > 3.0.0-1)`
>
> Hi,
>
> it seems that Obsoletes does not work with boolean dependencies,
> so the proposed for would not work.

Correct. And even if it did work, you'd want to use the "with" operator
not "and."

> Instead, please use the standard form described by the Packaging
> Guidelines:
>   Obsoletes: minizip < 3.0.3

That also won't work. If minizip-ng "Obsoletes: minizip < 3.0.3" and the
new minizip package (the current minizip-compat) is 1.2.12-5, it will
get Obsoleted by minizip-ng, which is unwanted. I would suggest adding
"Epoch: 1" to the new minizip package (current minizip-compat) so it
sorts above 3.0.3.

You also shouldn't add "Provides: minizip = %{sameevr}`" to minizip-ng.
It will break parallel installability with the new minizip package. Just
wait to retire the current minizip (the one that's becoming minizip-ng)
until step 2 has been completed.

> > 2) Rebuild all of the packages that BuildRequire/Require "minizip"
> > package to BuildRequire/Require new "minizip-ng" package

Who will be doing this? How will it be done?

> > 3) Retire the "minizip" package following the
> > [https://docs.fedoraproject.org/en-US/package-maintainers/Package_Retirement_Process/
> > Package Retirement Process]
> >
> > 4) Wait for the Fedora 40 when it's ensured that every user has
> > updated at least to the Fedora 38. Remove the `Provides` and
> > `Obsoletes` from the "minizip-ng" package
>
> FWIW, I prefer to keep those for a while. We don't officially support
> this, but people do upgrades over more than two versions quite often,
> and it's nice not to break that.

I agree. If you use the approach I outlined above, removing the
the Obsoletes won't be necessary in order to rename minizip-compat to
minizip.

> > 5) Rename the "minizip-compat" to the "minizip" package and add
> > `Provides: minizip-compat = %{sameevr}` and `Obsoletes: minizip-compat
> > < 1.2.12`
>
> As already mentioned in the original discussion thread, this step is
> risky. We generally try to follow upstream naming on packages, but
> sometimes it's not possible for various technical reasons. This seems
> to be one of those cases, because limitiations of Obsoletes mean that
> we can't obsolete a subset of package versions.

If you use the Epoch approach, this wouldn't be an
issue. Also, what's the idea of waiting to do step 5 until Fedora 40?

> Minizip-compat is not intended to be used by anything in the
> distribution, so it's not a big deal if the package name is "wrong".
> Thus, I think it's better to skip this last step and tell minizip
> upstream that the we'll keep the "-compat" name for compatiblity
> reasons. Maybe add a sentence of explanation to the package name.

I agree. While it's possible to overcome the technical hurdles, this
whole Change seems like more headache than its worth. Kevin and I had to
deal with a similar situation of Obsoletes and Provides and boolean
Requires with the ansible -> ansible-core split, and it's been a huge
pain. This change is probably more complicated than that. It's likely
that I've confused something in this email given the complexity of a
renaming like this

--
Thanks,

Maxwell G (@gotmax23)
Pronouns: He/Him/His
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-leave@lists.fedoraproject.org
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue


--
S pozdravom/ Best regards

Lukáš Javorský

Software Engineer, Core service - Databases

Red Hat

Purkyňova 115 (TPB-C)

612 00 Brno - Královo Pole

ljavorsk@redhat.com