Summary: | [TRACKER] Uses of slot operator := in any-of dependency specs | ||
---|---|---|---|
Product: | Quality Assurance | Reporter: | Michał Górny <mgorny> |
Component: | Trackers | Assignee: | Gentoo Quality Assurance Team <qa> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bircoph |
Priority: | Normal | Keywords: | Tracker |
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 586240, 586304, 586308, 586310, 586312, 586314, 586316, 586318, 586320, 586322, 586326, 586328, 586330, 586900, 586902, 586904, 586906, 586908, 586910, 586912, 586914, 586916, 586918, 586920, 586922, 586924, 586926, 586928, 586930, 586932 | ||
Bug Blocks: |
Description
Michał Górny
![]() ![]() ![]() ![]() Subslot operator := inside || () clause is allowed by PMS as was pointed out by axs on the gentoo-dev mail list: 8.2: [...] An any-of group, which consists of the string ||, followed by whitespace, followed by an open parenthesis, followed by whitespace, followed by zero or more of (a dependency item of any kind followed by whitespace), followed by a close parenthesis. Note "a dependency item of any kind" here. So these packages are valid according to current PMS. Such issues must have a community discussion prior to enforcing controversial changes on packages. @qa team, I'd like to hear your opinion on this. It is likely that problem needs to be fixed elsewhere. Anyway, I see no evidence that "any occurence of := operator inside || () is forbidden" as mgorny stated. (In reply to Andrew Savchenko from comment #1) > @qa team, I'd like to hear your opinion on this. It is likely that problem > needs to be fixed elsewhere. Right, there is bug 489458 for fixing of the underlying problem. > Anyway, I see no evidence that "any occurence of := operator inside || () is > forbidden" as mgorny stated. It isn't clear to me if the construct is formally allowed. There may be issues with VDB generation. However, even if it was allowed, bug 489458 comment 13 has a rationale why the behaviour is not very useful. Assuming there is a runtime dependency like || ( foo:= bar:= ) then the PM could switch from foo:1 to bar and then from bar to foo:2 which renders the := useless. (In reply to Ulrich Müller from comment #2) > However, even if it was allowed, bug 489458 comment 13 has a rationale why > the behaviour is not very useful. Assuming there is a runtime dependency > like || ( foo:= bar:= ) then the PM could switch from foo:1 to bar and then > from bar to foo:2 which renders the := useless. Solution is simple: in case of || ( A:= B:= ) treat change from A to B be like subslot change (IOW rebuild is required if old or new have :=). This approach will solve even || ( A:= B ) cases. (In reply to Andrew Savchenko from comment #3) > Solution is simple: in case of || ( A:= B:= ) treat change from A to B be > like subslot change (IOW rebuild is required if old or new have :=). This > approach will solve even || ( A:= B ) cases. It won't, because behaviour of || in case of a provider change is undefined. There are cases where a rebuild is not desirable. That's why we need a ||= operator, see bug 489458. commit 3b1a4cc0f9b9a0a2c70d6bb53cb71bf059e2920e Author: Michał Górny <mgorny@gentoo.org> AuthorDate: Tue Jun 21 23:02:17 2016 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: Tue Jun 21 23:03:57 2016 dev-ml/ocamlnet: Remove another := slot op from || dep commit 9675d96cfe244033e97dd7034b95c5af251405e3 Author: Michał Górny <mgorny@gentoo.org> AuthorDate: Tue Jun 21 23:01:45 2016 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: Tue Jun 21 23:02:55 2016 dev-ml/lablgl: Remove another := slot op from || dep (In reply to Michał Górny from comment #5) > commit 3b1a4cc0f9b9a0a2c70d6bb53cb71bf059e2920e > Author: Michał Górny <mgorny@gentoo.org> > AuthorDate: Tue Jun 21 23:02:17 2016 > Commit: Michał Górny <mgorny@gentoo.org> > CommitDate: Tue Jun 21 23:03:57 2016 > > dev-ml/ocamlnet: Remove another := slot op from || dep > > commit 9675d96cfe244033e97dd7034b95c5af251405e3 > Author: Michał Górny <mgorny@gentoo.org> > AuthorDate: Tue Jun 21 23:01:45 2016 > Commit: Michał Górny <mgorny@gentoo.org> > CommitDate: Tue Jun 21 23:02:55 2016 > > dev-ml/lablgl: Remove another := slot op from || dep Oops, wrong bug. Sorry. All direct QA failures were fixed now. We can handle improving individual deps on the specific bugs. A number of issues were reintroduced by aballier. Fatal in pkgcheck for quite some time and no instances in tree. (In reply to Sam James from comment #9) > Fatal in pkgcheck for quite some time and no instances in tree. https://github.com/pkgcore/pkgcheck/commit/387b96a44c9cd81167266ee797351ad7240f40f6 The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/portage.git/commit/?id=ee127db438307c133fcf650c148ed594ceb68591 commit ee127db438307c133fcf650c148ed594ceb68591 Author: Sam James <sam@gentoo.org> AuthorDate: 2023-09-04 17:40:06 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2023-12-10 22:01:48 +0000 dep: add comment to _eval_deps wrt binding slot deps in any-of || ( ... ) Bug: https://bugs.gentoo.org/455904 Bug: https://bugs.gentoo.org/489458 Bug: https://bugs.gentoo.org/586238 Signed-off-by: Sam James <sam@gentoo.org> lib/portage/dep/_slot_operator.py | 1 + 1 file changed, 1 insertion(+) |