I use app-emulation/win4lin as example here as I found the bug in this ebuild. All 5.x ebuilds had an error in RDEPEND: win4lin-5.0.1.ebuild:RDEPEND="!<=app/emulation/win4lin-4.0.22" win4lin-5.0.4.ebuild:RDEPEND="!<=app/emulation/win4lin-4.0.22" win4lin-5.0.8.ebuild:RDEPEND="!<=app/emulation/win4lin-4.0.22" Repoman didnt like it much: checking package app-emulation/win4lin Traceback (most recent call last): File "/usr/bin/repoman", line 720, in ? mydep=portage.dep_check(myvalue,portage.db["/"]["porttree"].dbapi,repoman_settings,use="all",mode=matchmode) File "/usr/lib/portage/pym/portage.py", line 3015, in dep_check mysplit2=dep_wordreduce(mysplit2,mydbapi,mode) File "/usr/lib/portage/pym/portage.py", line 3041, in dep_wordreduce mydep=mydbapi.xmatch(mode,deplist[mypos]) File "/usr/lib/portage/pym/portage.py", line 4502, in xmatch myval=match_from_list(mydep,self.xmatch("list-visible",None,mydep,mykey)) File "/usr/lib/portage/pym/portage.py", line 3180, in match_from_list raise KeyError, "Specific key requires an operator (%s)" % (mydep) KeyError: Specific key requires an operator (app-emulation/win4lin-4.0.22) Further testing showed that it handles the "foo/bar/baz" typo (instead of foo-bar/baz) wrong: 20 DEPEND="app/arch/rpm2targz 21 virtual/winkernel" 22 RDEPEND="!<=app-emulation/win4lin-4.0.22" checking package app-emulation/win4lin DEPEND.bad 1 app-emulation/win4lin/win4lin-5.0.8.ebuild: ~x86 ['app/arch/rpm2targz'] Removing the operators from the RDEPEND line gives some the same traceback as above even if the 'foo/bar/baz' error is not made: 20 DEPEND="app-arch/rpm2targz 21 virtual/winkernel" 22 RDEPEND="app-emulation/win4lin-4.0.22" checking package app-emulation/win4lin Traceback (most recent call last): File "/usr/bin/repoman", line 720, in ? mydep=portage.dep_check(myvalue,portage.db["/"]["porttree"].dbapi,repoman_settings,use="all",mode=matchmode) File "/usr/lib/portage/pym/portage.py", line 3015, in dep_check mysplit2=dep_wordreduce(mysplit2,mydbapi,mode) File "/usr/lib/portage/pym/portage.py", line 3041, in dep_wordreduce mydep=mydbapi.xmatch(mode,deplist[mypos]) File "/usr/lib/portage/pym/portage.py", line 4502, in xmatch myval=match_from_list(mydep,self.xmatch("list-visible",None,mydep,mykey)) File "/usr/lib/portage/pym/portage.py", line 3180, in match_from_list raise KeyError, "Specific key requires an operator (%s)" % (mydep) KeyError: Specific key requires an operator (app-emulation/win4lin-4.0.22) More fun: If the RDEPEND is not the package itself, repoman doesnt detect the 'foo/bar/baz' error IF there are operators. It does but reports the wrong error if you remove the operators: 21 RDEPEND="!<=app/emulation/wine" checking package app-emulation/win4lin RepoMan sez: "If everyone were like you, I'd be out of business!" 21 RDEPEND="app/emulation/wine" checking package app-emulation/win4lin RDEPEND.bad 1 app-emulation/win4lin/win4lin-5.0.8.ebuild: ~x86 ['app/emulation/wine'] Thats about it, happy new year! ;)
Fixed in CVS
Tried Portage .50pre12. If there is an Operator like '!<=' in front of the DEPEND/RDEPEND, repoman still doesnt catch the foo/bar/baz instead of foo-bar/baz error.
supposed to be fixed in 2.0.50 which is stable now. If this bug is not fixed please reopen.