Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 252243

Summary: 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'
Product: Portage Development Reporter: Matt Summers (RETIRED) <quantumsummers>
Component: Binary packages supportAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: normal CC: quantumsummers
Priority: High Keywords: InVCS
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 210077, 216231    
Attachments: avoid creating a circular symlink

Description Matt Summers (RETIRED) gentoo-dev 2008-12-23 05:19:40 UTC
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'
Comment 1 Matt Summers (RETIRED) gentoo-dev 2008-12-23 05:29:10 UTC
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
Comment 2 Zac Medico gentoo-dev 2008-12-23 09:46:32 UTC
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
Comment 3 Zac Medico gentoo-dev 2008-12-25 07:23:36 UTC
This is released in 2.1.6.3 and 2.2_rc19.