fd1.write("... ")
else:
for pkg in myglsa.packages.keys():
- mylist = vardb.match(portage.dep_getkey(pkg))
+ mylist = vardb.match(portage.dep_getkey(str(pkg)))
if len(mylist) > 0:
pkg = color(" ".join(mylist))
fd1.write(" " + pkg + " ")
else:
fd_pipes[0] = fd_pipes_orig[0]
- files.process = os.fdopen(master_fd, 'r')
+ files.process = os.fdopen(master_fd, 'rb')
if logfile is not None:
fd_pipes[1] = slave_fd
fd_pipes[2] = slave_fd
- files.log = open(logfile, "a")
+ files.log = open(logfile, mode='ab')
portage.util.apply_secpass_permissions(logfile,
uid=portage.portage_uid, gid=portage.portage_gid,
mode=0660)
if not self.background:
- files.stdout = os.fdopen(os.dup(fd_pipes_orig[1]), 'w')
+ files.stdout = os.fdopen(os.dup(fd_pipes_orig[1]), 'wb')
output_handler = self._output_handler
return mypids
if logfile:
- log_file = open(logfile, 'a')
- stdout_file = os.fdopen(os.dup(fd_pipes_orig[1]), 'w')
- master_file = os.fdopen(master_fd, 'r')
+ log_file = open(logfile, mode='ab')
+ stdout_file = os.fdopen(os.dup(fd_pipes_orig[1]), 'wb')
+ master_file = os.fdopen(master_fd, 'rb')
iwtd = [master_file]
owtd = []
ewtd = []
import os, re, shutil, stat, errno, copy, subprocess
import logging
import shlex
+import sys
from itertools import izip
try:
def _aux_cache_init(self):
aux_cache = None
+ open_kwargs = {}
+ if sys.hexversion >= 0x3000000:
+ # Buffered io triggers extreme performance issues in
+ # Unpickler.load() (problem observed with python-3.0.1).
+ # Unfortunately, performance is still poor relative to
+ # python-2.x, but buffering makes it much worse.
+ open_kwargs["buffering"] = 0
try:
- f = open(self._aux_cache_filename, 'rb')
+ f = open(self._aux_cache_filename, mode='rb', **open_kwargs)
mypickle = pickle.Unpickler(f)
aux_cache = mypickle.load()
f.close()
# only joins relative paths when the infile
# attribute is properly set.
lex = shlex_class(f, infile=mycfg, posix=True)
- lex.wordchars += "~!@#$%*_\:;?,./-+{}"
+ lex.wordchars = string.digits + string.ascii_letters + \
+ "~!@#$%*_\:;?,./-+{}"
lex.quotes="\"'"
if allow_sourcing:
lex.source="source"