I'd expect that ROOT=/some/path emerge -e world is going to recompile and emerge a whole new tree under /some/path. However most packages (99%+) end up being merged in /. The first merge package is sys-devel/patch. From the build log: >>> Merging sys-devel/patch-2.5.9 to / --- /usr/ --- /usr/bin/ >>> /usr/bin/patch --- /usr/share/ --- /usr/share/man/ --- /usr/share/man/man1/ >>> /usr/share/man/man1/patch.1.gz --- /usr/share/doc/ --- /usr/share/doc/patch-2.5.9/ >>> /usr/share/doc/patch-2.5.9/AUTHORS.gz >>> /usr/share/doc/patch-2.5.9/NEWS.gz >>> /usr/share/doc/patch-2.5.9/ChangeLog.gz >>> /usr/share/doc/patch-2.5.9/README.gz >>> Safely unmerging already-installed instance... --- !found obj /mnt/ROOT/usr/share/man/man1/patch.1.gz --- !found dir /mnt/ROOT/usr/share/man/man1 --- !found obj /mnt/ROOT/usr/share/doc/patch-2.5.9/README.gz --- !found obj /mnt/ROOT/usr/share/doc/patch-2.5.9/NEWS.gz --- !found obj /mnt/ROOT/usr/share/doc/patch-2.5.9/ChangeLog.gz --- !found obj /mnt/ROOT/usr/share/doc/patch-2.5.9/AUTHORS.gz --- !found dir /mnt/ROOT/usr/share/doc/patch-2.5.9 --- !found obj /mnt/ROOT/usr/bin/patch --- !found dir /mnt/ROOT/usr/bin --- !empty dir /mnt/ROOT/usr/share/man --- !empty dir /mnt/ROOT/usr/share/doc --- !empty dir /mnt/ROOT/usr/share --- !empty dir /mnt/ROOT/usr (ROOT is set to /mnt/ROOT) See how the new version is merged in /, but the old version is unmerged from /mnt/ROOT. Reproducible: Always Steps to Reproduce:
Created attachment 74316 [details] emerge --info output This is my emerge --info.
Of course it doesn't work, since most packages don't support it yet. File bugs for each case, but do not assign the bugs please. This is nothing Portage devs can do anything about.
wtf are you talking about ? this is clearly a bug in portage almost all of system supports ROOT because we cross-compile systems using portage now
(In reply to comment #3) > wtf are you talking about ? this is clearly a bug in portage > > almost all of system supports ROOT because we cross-compile systems > using portage now Yes... For example, "ROOT=/some/path emerge -1 patch" works as expected.
*** This bug has been marked as a duplicate of 34887 ***
For reference: ROOT=/some/dir emerge $(cat /var/lib/portage/world) does (correctly) what: ROOT=/some/dir emerge -e world ought to do. Except for bug #114923, but that can be worked arounc too.