[opensuse-buildservice] Let's OBS Understand Recommends to Resolve "have choice for".
Reference1: https://github.com/openSUSE/perl-BSSolv/issues/6 Reference2: https://github.com/openSUSE/perl-BSSolv/pull/7 Hello, When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says "have choice for" error and stops building. (From Reference 1) Case: Package A A requires A-compat A recommends A-x A-x provides A-compat A-y provides A-compat Package B B buildrequires A Result of building B "unresolvable" because "have choice for A-compat needed by A: A-x A-y Expected Result: Building B incurs installing A-x and A unless it explicitly BuildRuquires on A-y We are already experiencing this issue at build.tizen.org and I do not want to force release engineers to put "Prefer" for every case in the OBS project config. So I'd rather update perl-BSSolv and obs-build. (Reference 2) Those troubling packages (A-x, A-y, ...) are usually binaries behaving differently with the common interfaces. (e.g., one for optimized-size, another for optimized-energy, ...) Users may choose one of them at install-time (or at binary-image configuration). Could you please tell me how can I make the commits resolving the mentioned issue more probable to contribute? or give me some comments on them? ( https://github.com/openSUSE/perl-BSSolv/pull/7 https://github.com/openSUSE/obs-build/pull/303 ) Cheers, MyungJoo
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf. -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore. We would need some trigger that only newer projects take recommends for choice error into account, maybe some flag in project config .... -- Adrian Schroeter email: adrian@suse.de SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Nov 17 2016, Adrian Schröter
On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore.
IIUC, that would only change build configs that were unresolvable before, if existing prefer declarations still take precedence. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Donnerstag, 17. November 2016, 12:18:18 CET wrote Andreas Schwab:
On Nov 17 2016, Adrian Schröter
wrote: On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore.
IIUC, that would only change build configs that were unresolvable before, if existing prefer declarations still take precedence.
yes, but you would have more built rpms then and they would suddenly appear in repos where you did not expect it before. So, we would need to find a way to make this active only by opt-in. -- Adrian Schroeter email: adrian@suse.de SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Donnerstag, 17. November 2016, 12:18:18 CET wrote Andreas Schwab:
On Nov 17 2016, Adrian Schroter
wrote: On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore.
IIUC, that would only change build configs that were unresolvable before, if existing prefer declarations still take precedence.
yes, but you would have more built rpms then and they would suddenly appear in repos where you did not expect it before.
So, we would need to find a way to make this active only by opt-in.
This change will not change binaries already created without "unresolvable" errors. This enables building "not resolved" packages that were supposed to be built without problems. One exception is when "A Requires B" and B has additional condidate (X Provides B) that had been "unresolvable" due to not recognizing Recommends, which will make A "unresolvable" unless A/B has additional Recommends statement. However, please note that "Recommends" is to be fulfilled as long as there is no Conflicts and there is a package that may fulfill it. If we are to enable "Recommends" for resolving "have choice for" with prjconf, do you suppose to add something like: "ResolveRecommends: 1"? Cheers, MyungJoo
On Freitag, 18. November 2016, 01:42:20 CET wrote MyungJoo Ham:
On Donnerstag, 17. November 2016, 12:18:18 CET wrote Andreas Schwab:
On Nov 17 2016, Adrian Schroter
wrote: On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote:
When there are multiple packages available for a specific "Requires:" entity during OBS build, even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore.
IIUC, that would only change build configs that were unresolvable before, if existing prefer declarations still take precedence.
yes, but you would have more built rpms then and they would suddenly appear in repos where you did not expect it before.
So, we would need to find a way to make this active only by opt-in.
This change will not change binaries already created without "unresolvable" errors. This enables building "not resolved" packages that were supposed to be built without problems.
One exception is when "A Requires B" and B has additional condidate (X Provides B) that had been "unresolvable" due to not recognizing Recommends, which will make A "unresolvable" unless A/B has additional Recommends statement.
However, please note that "Recommends" is to be fulfilled as long as there is no Conflicts and there is a package that may fulfill it.
If we are to enable "Recommends" for resolving "have choice for" with prjconf, do you suppose to add something like: "ResolveRecommends: 1"?
It would be a flag for BuildFlags, maybe something like BuildFlags: UseRecommendsForChoices -- Adrian Schroeter email: adrian@suse.de SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org
On Freitag, 18. November 2016, 01:42:20 CET wrote MyungJoo Ham:
On Donnerstag, 17. November 2016, 12:18:18 CET wrote Andreas Schwab:
On Nov 17 2016, Adrian Schroter
wrote: On Donnerstag, 17. November 2016, 11:39:16 CET wrote Jan Engelhardt:
On Thursday 2016-11-17 02:53, MyungJoo Ham wrote: > >When there are multiple packages available for a specific "Requires:" entity during OBS build, >even if it is directed to a single package with "Recommends:", OBS says
Because recommends does not specify a hard requirement, it is not directing. You have to use Prefer lines in prjconf.
Well, I can follow MyungJoo with his proposal. It is just hard to make this change now, because we may risk that older builds are not the same anymore.
IIUC, that would only change build configs that were unresolvable before, if existing prefer declarations still take precedence.
yes, but you would have more built rpms then and they would suddenly appear in repos where you did not expect it before.
So, we would need to find a way to make this active only by opt-in.
If we are to enable "Recommends" for resolving "have choice for" with prjconf, do you suppose to add something like: "ResolveRecommends: 1"?
It would be a flag for BuildFlags, maybe something like
BuildFlags: UseRecommendsForChoices
I've updated commits according to your comments: https://github.com/openSUSE/perl-BSSolv/pull/7 https://github.com/openSUSE/obs-build/pull/303 Cheers, MyungJoo
participants (4)
-
Adrian Schröter
-
Andreas Schwab
-
Jan Engelhardt
-
MyungJoo Ham