Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 405561 - emerge gives unhelpful message if manifest changes during runtime
Summary: emerge gives unhelpful message if manifest changes during runtime
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-24 11:46 UTC by Patrick Lauer
Modified: 2012-02-25 03:56 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 Patrick Lauer gentoo-dev 2012-02-24 11:46:05 UTC
Scenario: one cvs checkout shared between multiple chroots, long merge running in one, fixing stuff in the other, commit affects a to-be-merged package

Alternate scenario: emerge --sync while doing an update

The traceback is rather uninformative:

Traceback (most recent call last):
  File "/usr/bin/emerge", line 43, in <module>
    retval = emerge_main()
  File "/usr/lib64/portage/pym/_emerge/main.py", line 2030, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "/usr/lib64/portage/pym/_emerge/actions.py", line 442, in action_build
    retval = mergetask.merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1002, in merge
    rval = self._merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1352, in _merge
    self._main_loop()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 148, in _main_loop
    self.sched_iface.iteration()
  File "/usr/lib64/portage/pym/portage/util/_eventloop/EventLoop.py", line 166, in iteration
    if not x.callback(f, event, *x.args):
  File "/usr/lib64/portage/pym/_emerge/SpawnProcess.py", line 215, in _output_handler
    self._unregister_if_appropriate(event)
  File "/usr/lib64/portage/pym/_emerge/AbstractPollTask.py", line 129, in _unregister_if_appropriate
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 53, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 146, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/EbuildMerge.py", line 58, in _merge_exit
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 53, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 146, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 134, in _default_final_exit
    return self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 53, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 146, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1244, in _merge_exit
    self._schedule()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 134, in _schedule
    self._schedule_tasks()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1516, in _schedule_tasks
    if self._schedule_tasks_imp():
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1604, in _schedule_tasks_imp
    self._task_queues.jobs.add(task)
  File "/usr/lib64/portage/pym/_emerge/SequentialTaskQueue.py", line 23, in add
    self.schedule()
  File "/usr/lib64/portage/pym/_emerge/SequentialTaskQueue.py", line 45, in schedule
    task.start()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 26, in start
    self._start()
  File "/usr/lib64/portage/pym/_emerge/MergeListItem.py", line 91, in _start
    self._start_task(build, self._default_final_exit)
  File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 147, in _start_task
    task.start()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 26, in start
    self._start()
  File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 56, in _start
    settings=self.settings, db=portdb)
  File "/usr/lib64/portage/pym/portage/package/ebuild/doebuild.py", line 358, in doebuild_environment
    ["SRC_URI"], mytree=mytree)
  File "/usr/lib64/portage/pym/portage/dbapi/porttree.py", line 517, in aux_get
    raise KeyError(mycpv)
KeyError: u'app-accessibility/sphinxbase-0.7'
Comment 1 Zac Medico gentoo-dev 2012-02-25 03:56:51 UTC
I guess we could handle this similarly to how EACCES is currently handled, and just bail out with a short error message showing the path of the missing ebuild.