All ebuilds in the official portage tree for app-portage/eix share the same RDEPEND section: RDEPEND="sqlite? ( >=dev-db/sqlite-3 ) nls? ( virtual/libintl ) zsh-completion? ( !!<app-shells/zsh-completion-20091203-r1 )" Although zsh-completion dependency says that app-shells/zsh-completion must not be older that exact version, it does not say that it must be in place (in case of USE="zsh-completion"). So, emerge --depclean tries to remove zsh-completion (and, respectively, zsh itself), if there're no more packages except eix depending on zsh-completion. Reproducible: Always Steps to Reproduce: 1. Remove all packages depending on zsh-completion, except eix. 2. Emerge eix with USE="zsh-completion". 3. Run 'emerge --depclean'. Actual Results: Portage pretend to remove app-shells/zsh-completion Expected Results: Portage keeps app-shells/zsh-completion, as long as app-portage/eix depends on it.
Created attachment 308041 [details, diff] Simple fix for incorrect dependency Just a simple patch, fixing incorrect dependency in ebuild (I took eix-0.25.3.ebuild as an example).
(In reply to comment #0)Expected Results: > Portage keeps app-shells/zsh-completion, as long as app-portage/eix depends > on it. No, it doesn't depend on it in any way. In contrast to bash, zsh has the infrastructure for completion built in and need not use some other package to have a sane completion. In particular, app-portage/eix does not depend on app-shells/zsh-completion, since it provides all files needed for completion of eix commands by its own. app-shells/zsh-completion only adds completion for some other gentoo commands (emerge, eselect, layman, ...), completely unrelated with eix. Older versions of that package also provided completion for eix which would lead to a file collission if used simultaneously with eix's completion files. So the current *DEPEND strings of eix are correct. Perhaps what should be fixed is the description of app-shells/zsh-completion, since it has a rather different meaning than app-shells/bash-completion; this might be confusing to new users and is not so clear from the description. Perhaps even moving app-shells/zsh-completion to app-portage/zsh-completion might be appropriate, since this package only provides completion for gentoo-only commands.
Okay, but the dependency is still incorrect. Run emerge --depclean and see that as app-shells/zsh-completion as app-shells/zsh will be removed. Or maybe (*sracasm*) app-portage/eix contains itself the functional of zsh and its autocompletion?
Also, why is there a "zsh-completion" USE flag, then?
$ euses -s zsh-completion zsh-completion - Enable zsh completion support Maybe it would aid discussion to formalise a USE flag description particular to app-portage/eix?
(In reply to comment #4) > Also, why is there a "zsh-completion" USE flag, then? For the same reason as it is for all packages which use zsh-completion: To instruct the eix build system to decide whether to create and install the zsh-completion files. (Creation of the files does not take long, but anyway it is unnecessary if the user does not want these files.) (In reply to comment #5) > Maybe it would aid discussion to formalise a USE flag description particular > to app-portage/eix? USE=zsh-completion does the same for all packages: If it is selected, the completion files for the corresponding package will get installed. There is nothing special about how eix uses it. The only special thing is app-shells/zsh-completion, since (in contrast to USE=zsh-completion for individual packages) it provides a bulk of completion files for several independent gentoo packages. (And by accident, it used to do this also for eix which is why the blocker became necessary.) (In reply to comment #3) > Okay, but the dependency is still incorrect. Run emerge --depclean and see > that as app-shells/zsh-completion as app-shells/zsh will be removed. This is absolutely correct. It would be rather stupid if eix would force completion support for completely unrelated commands: Of course, app-portage/eix[zsh-completion] means only that zsh-completion for *eix* should be installed. (In reply to comment #3) > Or maybe (*sracasm*) app-portage/eix contains itself the functional of zsh > and its autocompletion? eix provides everything needed to have completion for eix with zsh. Of course, if you do not use zsh (or do not have it installed) you will not profit from this completion, but the completion support is provided independently of this: If you install and use zsh later on, you will immediately have the completion support without configuration.
It has been more than 12 months since "zsh-completion? ( !!<app-shells/zsh-completion-20091203-r1 )" was added to the eix ebuild and that version of zsh-completion was removed from the tree. The atom will be dropped from the next eix version bump.
removed in 0.25.5