When virtual/A belongs to the system set and FEATURES="-buildpkg buildsyspkg", package B/C PROVIDing virtual/A should be treated as system package. It should be done when emerge is invoked with virtual/A OR B/C. # cd /usr/portage # grep -E "gcc|libc" profiles/base/{packages,virtuals} profiles/base/packages:*sys-devel/gcc profiles/base/packages:*virtual/libc profiles/base/virtuals:virtual/libc sys-libs/glibc Actual results: # FEATURES="-buildpkg buildsyspkg" emerge gcc Calculating dependencies... done! >>> Verifying ebuild Manifests... >>> Emerging (1 of 1) sys-devel/gcc-4.1.2 to / >>> This is a system package, let's pack a rescue tarball. * gcc-4.1.2-patches-1.0.tar.bz2 RMD160 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 SHA1 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 SHA256 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 size ;-) ... [ ok ] Exiting on signal 2 # FEATURES="-buildpkg buildsyspkg" emerge glibc Calculating dependencies... done! >>> Verifying ebuild Manifests... >>> Emerging (1 of 1) sys-libs/glibc-2.5-r1 to / * glibc-linuxthreads-2.5.tar.bz2 RMD160 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 SHA1 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 SHA256 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 size ;-) ... [ ok ] Exiting on signal 2 # Expected results: # FEATURES="-buildpkg buildsyspkg" emerge gcc Calculating dependencies... done! >>> Verifying ebuild Manifests... >>> Emerging (1 of 1) sys-devel/gcc-4.1.2 to / >>> This is a system package, let's pack a rescue tarball. * gcc-4.1.2-patches-1.0.tar.bz2 RMD160 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 SHA1 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 SHA256 ;-) ... [ ok ] * gcc-4.1.2-patches-1.0.tar.bz2 size ;-) ... [ ok ] Exiting on signal 2 # FEATURES="-buildpkg buildsyspkg" emerge glibc Calculating dependencies... done! >>> Verifying ebuild Manifests... >>> Emerging (1 of 1) sys-libs/glibc-2.5-r1 to / >>> This is a system package, let's pack a rescue tarball. * glibc-linuxthreads-2.5.tar.bz2 RMD160 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 SHA1 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 SHA256 ;-) ... [ ok ] * glibc-linuxthreads-2.5.tar.bz2 size ;-) ... [ ok ] Exiting on signal 2 #
It should also concern direct dependencies of new-style virtuals.
(In reply to comment #1) > It should also concern direct dependencies of new-style virtuals. For the general case, this will require recursive expansion of new-style virtuals (for cases like virtual/jre -> virtual/jdk). This particular problem is related to bug 157357.
I suggest also something partially related to this bug: Actual results: # grep -E "gcc|glibc" /var/lib/portage/world # emerge -n gcc glibc &>/dev/null # grep -E "gcc|glibc" /var/lib/portage/world sys-libs/glibc # Expected results: # grep -E "gcc|glibc" /var/lib/portage/world # emerge -n gcc glibc &>/dev/null # grep -E "gcc|glibc" /var/lib/portage/world #
Please lets avoid special cases for virtuals, either include all dependencies or none.