In some ebuilds in dev-python/*, we have these lines. > # disable pyc compiling > mv py-compile py-compile.orig > ln -s $(type -P true) py-compile This make "py-compile" to be symlink to "/usr/bin/true" on FreeBSD. Then python_copy_sources() (defined in python.eclass) try to hardlink "py-compile", but we cannot make hardlink to symlink itself on FreeBSD (or some other systems). Instead we get hardlink to original file ("/usr/bin/true" here). This can cause cross-device link. Reproducible: Always Steps to Reproduce: 1.mkdir /tmp/portage 2.mount -t tmpfs none /tmp/portage 3.PORTAGE_TMPDIR="/tmp/portage" emerge pygobject Actual Results: emerge fail with "cp: /tmp/portage/portage/dev-python/pygobject-2.20.0/work/pygobject-2.20.0-2.6/py-compile: Cross-device link"
I suppose python people should have read: http://www.opengroup.org/onlinepubs/9699919799/utilities/cp.html the -l option to cp isn't standard; it happens to follow symbolic links on FreeBSD but not on linux with gnu cp. The no_link option should always be set to 1 in python_copy_sources if userland_GNU isn't set.
--no-link option was removed some time ago for a different reason.