Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 293998 - sys-apps/portage-2.2_rc51[python3] cannot install kernel sources
Summary: sys-apps/portage-2.2_rc51[python3] cannot install kernel sources
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 288499
  Show dependency tree
 
Reported: 2009-11-22 01:40 UTC by Albert W. Hopkins
Modified: 2009-11-26 01:26 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Albert W. Hopkins 2009-11-22 01:40:19 UTC
* Description
When I attempt to emerge tuxonice-sources I encounter the following during the install phase:

>>> Installing (2 of 493) sys-kernel/tuxonice-sources-2.6.31
Traceback (most recent call last):                                              
  File "/usr/lib64/portage/pym/portage/__init__.py", line 7513, in movefile
    ret=os.rename(src,dest)
  File "/usr/lib64/portage/pym/portage/__init__.py", line 194, in __call__
    rval = self._func(*wrapped_args, **wrapped_kwargs)
OSError: [Errno 18] Invalid cross-device link

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/emerge", line 42, in <module>
    retval = emerge_main()
  File "/usr/lib64/portage/pym/_emerge/main.py", line 1523, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "/usr/lib64/portage/pym/_emerge/actions.py", line 410, in action_build
    retval = mergetask.merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 841, in merge
    rval = self._merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1149, in _merge
    self._main_loop()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1289, in _main_loop
    self._poll_loop()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 134, in _poll_loop
    handler(f, event)
  File "/usr/lib64/portage/pym/_emerge/SpawnProcess.py", line 192, in _output_handler
    self._unregister_if_appropriate(event)
  File "/usr/lib64/portage/pym/_emerge/AbstractPollTask.py", line 27, in _unregister_if_appropriate
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 42, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 115, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 232, in _buildpkg_exit
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 42, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 115, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 106, in _default_final_exit
    return self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 42, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 115, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1128, in _build_exit
    self._schedule()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 43, in _schedule
    return self._schedule_tasks()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1318, in _schedule_tasks                                                                             
    if q.schedule():
  File "/usr/lib64/portage/pym/_emerge/SequentialTaskQueue.py", line 56, in schedule
    task.start()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 24, in start
    self._start()
  File "/usr/lib64/portage/pym/_emerge/PackageMerge.py", line 44, in _start
    self.returncode = self.merge.merge()
  File "/usr/lib64/portage/pym/_emerge/MergeListItem.py", line 148, in merge
    retval = self._install_task.install()
  File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 271, in install
    rval = merge.execute()
  File "/usr/lib64/portage/pym/_emerge/EbuildMerge.py", line 27, in execute
    blockers=self.find_blockers)
  File "/usr/lib64/portage/pym/portage/__init__.py", line 7604, in merge
    mydbapi=mydbapi, prev_mtimes=prev_mtimes)
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4393, in merge
    mydbapi=mydbapi, prev_mtimes=prev_mtimes)
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4404, in _merge
    cleanup=cleanup, mydbapi=mydbapi, prev_mtimes=prev_mtimes)
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 3824, in treewalk
    if self.mergeme(srcroot, destroot, outfile, secondhand, "", cfgfiledict, mymtime):
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4235, in mergeme
    join(offset, x), cfgfiledict, thismtime):
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4235, in mergeme
    join(offset, x), cfgfiledict, thismtime):
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4235, in mergeme
    join(offset, x), cfgfiledict, thismtime):
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4235, in mergeme
    join(offset, x), cfgfiledict, thismtime):
  File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4324, in mergeme
    encoding=_encodings['merge'])
  File "/usr/lib64/portage/pym/portage/__init__.py", line 7518, in movefile
    if e[0]!=errno.EXDEV:
TypeError: 'OSError' object is not subscriptable

* Background
/usr/src is on a separate filesystem that is actually a bind mount to /usr/src

* Workaround
I do not know of any workaround at this time

* Resolution
I looked at the code only briefly, but it appears that the second exception is raised because "e" is an OSError-type object.  AFAIK it has no integral subscripts and the errno is retrieved through the "errno" attribute, e.g.:
 
(portage/__init__.py:7518)
    if e.errno!=errno.EXDEV:

Changing the line to above seems to fix the problem.
Comment 1 Zac Medico gentoo-dev 2009-11-22 01:58:28 UTC
Thanks, this is fixed in svn r14873.
Comment 2 Zac Medico gentoo-dev 2009-11-26 00:06:33 UTC
This is fixed in 2.1.7.7 and 2.2_rc52.
Comment 3 Albert W. Hopkins 2009-11-26 01:26:17 UTC
Thanks. You guys are awesome!