media-libs/x264-0.0.20081006 buildpkg fails with OSError: [Errno 40] Too many levels of symbolic links: '/usr/portage/packages/media-libs/x264-0.0.20081006.tbz2' Currently running portage 2.1.6.2 on a generally stable tree amd64 Reproducible: Always Steps to Reproduce: 1.emerge -va1 =media-libs/x264-0.0.20081006 2. 3. Actual Results: >>> Source compiled. >>> Test phase [not enabled]: media-libs/x264-0.0.20081006 >>> Completed installing x264-0.0.20081006 strip: x86_64-pc-linux-gnu-strip --strip-unneeded -R .comment usr/lib64/libx264.so.65 usr/lib64/libx264.a OSError: [Errno 40] Expected Results: /usr/portage/packages/media-libs/x264-0.0.20081006.tbz2 Traceback (most recent call last): File "/usr/bin/emerge", line 18, in <module> retval = _emerge.emerge_main() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 14222, in emerge_main myopts, myaction, myfiles, spinner) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 13318, in action_build retval = mergetask.merge() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 9984, in merge rval = self._merge() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 10226, in _merge self._main_loop() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 10354, in _main_loop self._poll_loop() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 8912, in _poll_loop handler(f, event) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2205, in _output_handler self.wait() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1659, in wait self._wait_hook() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1732, in _wait_hook self._exit_listener_stack.pop()(self) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2973, in _post_phase_exit self.wait() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1659, in wait self._wait_hook() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1732, in _wait_hook self._exit_listener_stack.pop()(self) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1964, in _task_exit_handler self.wait() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1659, in wait self._wait_hook() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1732, in _wait_hook self._exit_listener_stack.pop()(self) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1915, in _default_final_exit return self.wait() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1659, in wait self._wait_hook() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1732, in _wait_hook self._exit_listener_stack.pop()(self) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2614, in _build_exit self._start_task(packager, self._buildpkg_exit) File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1928, in _start_task task.start() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 1640, in start self._start() File "//usr/lib64/portage/pym/_emerge/__init__.py", line 2993, in _start bintree.prevent_collision(pkg.cpv) File "//usr/lib64/portage/pym/portage/dbapi/bintree.py", line 332, in prevent_collision self.inject(other_cpv) File "//usr/lib64/portage/pym/portage/dbapi/bintree.py", line 797, in inject s = os.stat(full_path) OSError: [Errno 40] Too many levels of symbolic links: '/usr/portage/packages/media-libs/x264-0.0.20081006.tbz2'
equery f x264 [ Searching for packages matching x264... ] * Contents of media-libs/x264-0.0.20080819: /usr /usr/bin /usr/include /usr/include/x264.h /usr/lib64 /usr/lib64/libx264.a /usr/lib64/libx264.so -> libx264.so.60 /usr/lib64/libx264.so.60 /usr/lib64/pkgconfig /usr/lib64/pkgconfig/x264.pc /usr/share /usr/share/doc /usr/share/doc/x264-0.0.20080819 /usr/share/doc/x264-0.0.20080819/AUTHORS.bz2 /usr/share/doc/x264-0.0.20080819/ratecontrol.txt.bz2 /usr/share/doc/x264-0.0.20080819/regression_test.txt.bz2 /usr/share/doc/x264-0.0.20080819/standards.txt.bz2 /usr/share/doc/x264-0.0.20080819/threads.txt.bz2 /usr/share/doc/x264-0.0.20080819/vui.txt.bz2
Created attachment 176206 [details, diff] avoid creating a circular symlink If this patch is saved as /tmp/circular_symlink.patch, then it can be applied as follows: patch /usr/lib/portage/pym/portage/dbapi/bintree.py /tmp/circular_symlink.patch
This is released in 2.1.6.3 and 2.2_rc19.