Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace legacy otherproviders() and packageand() with upstream RPM stuff #241

Closed
Conan-Kudo opened this issue Feb 11, 2019 · 4 comments · Fixed by #254
Closed

Replace legacy otherproviders() and packageand() with upstream RPM stuff #241

Conan-Kudo opened this issue Feb 11, 2019 · 4 comments · Fixed by #254

Comments

@Conan-Kudo
Copy link
Member

Conan-Kudo commented Feb 11, 2019

Upstream RPM since 4.10 supports using Conflicts to denote swappable providers. This was supposed to be fixed in #208 but it still seems to be in wide use in openSUSE itself.

Also, upstream RPM since 4.13 supports (pkgA and pkgB) as a replacement for packageand(pkgA:pkgB) statements.

Thus, something like Requires: packageand(foo:bar) should change to Requires: (foo and bar).

More details are available from RPM documentation: http://rpm.org/user_doc/boolean_dependencies.html

This also will improve compatibility of openSUSE with non-Zypp package managers when being used to build and maintain openSUSE chroots (such as DNF on Fedora, Mageia, and others).

@scarabeusiv
Copy link
Contributor

We can implement this at a point where majority of the packages stop focus on building with Leap 42.3 (SLE12). I suppose approx within a year.

At the moment the Leap 42.3 is still fully supported and it would not make sense to have automated tool breaking all its packages.

@Conan-Kudo
Copy link
Member Author

@scarabeusiv Couldn't this be implemented and them turned off or on as a rule? Projects that are targeting SUSE Linux 15 or newer should be able to force this...

@Conan-Kudo
Copy link
Member Author

Also, the otherproviders() stuff should be able to go away anyway, since SUSE Linux 12 / openSUSE Leap 42 supports the necessary semantics in Conflicts.

@scarabeusiv
Copy link
Contributor

The otherproviders are removed already by spec-cleaner it is not the tools falut that people do not use it :) so if you would run it on any of the current TW packages it would get auto-removed.

kstreitova added a commit to kstreitova/spec-cleaner that referenced this issue Jul 16, 2019
Starting with rpm-4.13, RPM is able to process boolean expressions
in all dependency tokens so 'packageand(pkgA:pkgB)' can be replaced
by '(pkgA and pkgB)' statement. (Closes rpm-software-management#241).
kstreitova added a commit to kstreitova/spec-cleaner that referenced this issue Jul 16, 2019
Starting with rpm-4.13, RPM is able to process boolean expressions
in all dependency tokens so 'packageand(pkgA:pkgB)' can be replaced
by '(pkgA and pkgB)' statement. (Closes rpm-software-management#241).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants