Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 293448 - sys-apps/portage-2.2_rc50 ELOG mail system encounters upstream python3 bug
Summary: sys-apps/portage-2.2_rc50 ELOG mail system encounters upstream python3 bug
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: http://bugs.python.org/issue6521
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 288499
  Show dependency tree
 
Reported: 2009-11-17 01:21 UTC by Albert W. Hopkins
Modified: 2009-11-21 05:17 UTC (History)
0 users

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


Attachments
Proposed patch/workaround (mail.py.patch,341 bytes, patch)
2009-11-17 01:21 UTC, Albert W. Hopkins
Details | Diff
Oops, that was the wrong patch (mail.py.patch,340 bytes, patch)
2009-11-17 01:24 UTC, Albert W. Hopkins
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Albert W. Hopkins 2009-11-17 01:21:06 UTC
I have USE=python3 for portage and PORTAGE_ELOG_SYSTEM="mail" in make.conf

I encounter the following error during emerges:

>>> Installing (3 of 7) dev-util/ctags-5.8
 * Removing /usr/share/info
Switching ctags to exuberant-ctags ...
Switching ctags to exuberant-ctags ...
 * You can set the version to be started by /usr/bin/ctags through
 * the ctags eselect module. "man ctags.eselect" for details.
Traceback (most recent call last):
  File "/usr/lib64/python3.1/email/message.py", line 269, in set_charset
    cte(self)
TypeError: 'str' object is not callable

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 428, 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/EbuildPhase.py", line 94, in _post_phase_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/TaskSequence.py", line 44, in _task_exit_handler
    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/EbuildBuild.py", line 180, in _build_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 7603, 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 4407, in _merge
    elog_process(self.mycpv, self.settings, phasefilter=filter_mergephases)
  File "/usr/lib64/portage/pym/portage/elog/__init__.py", line 165, in elog_process
    m.process(mysettings, str(key), mod_logentries, mod_fulllog)
  File "/usr/lib64/portage/pym/portage/elog/mod_mail.py", line 38, in process
    mymessage = portage.mail.create_message(myfrom, myrecipient, mysubject, fulltext)
  File "/usr/lib64/portage/pym/portage/mail.py", line 43, in create_message
    mymessage = TextMessage(body)
  File "/usr/lib64/portage/pym/portage/mail.py", line 26, in TextMessage
    return MIMEText(_text, _charset="UTF-8")
  File "/usr/lib64/python3.1/email/mime/text.py", line 30, in __init__
    self.set_payload(_text, _charset)
  File "/usr/lib64/python3.1/email/message.py", line 234, in set_payload
    self.set_charset(charset)
  File "/usr/lib64/python3.1/email/message.py", line 271, in set_charset
    self._payload = charset.body_encode(self._payload)
  File "/usr/lib64/python3.1/email/charset.py", line 380, in body_encode
    return email.base64mime.body_encode(string)
  File "/usr/lib64/python3.1/email/base64mime.py", line 94, in body_encode
    enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
TypeError: must be bytes or buffer, not str

This appears to be Python issue #6521.

I've attached a patch with appears to work around the bug while still maintaining functionality.

BTW this is with python-3.1.1-r1
Comment 1 Albert W. Hopkins 2009-11-17 01:21:55 UTC
Created attachment 210470 [details, diff]
Proposed patch/workaround
Comment 2 Albert W. Hopkins 2009-11-17 01:24:03 UTC
Created attachment 210471 [details, diff]
Oops, that was the wrong patch
Comment 3 Zac Medico gentoo-dev 2009-11-17 02:26:43 UTC
Thanks, this is in svn r14844.
Comment 4 Zac Medico gentoo-dev 2009-11-21 05:17:07 UTC
This is fixed in 2.1.7.6 and 2.2_rc51.