portage._disable_legacy_globals()
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
from repoman.checks import run_checks
from repoman import utilities
desc_path = os.path.join(path, 'profiles', 'profiles.desc')
try:
- desc_file = codecs.open(desc_path, mode='r',
- encoding='utf_8', errors='replace')
+ desc_file = codecs.open(_unicode_encode(desc_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'], errors='replace')
except EnvironmentError:
pass
else:
continue
try:
line = 1
- for l in codecs.open(os.path.join(checkdir, y), mode='r',
- encoding='utf_8'):
+ for l in codecs.open(_unicode_encode(os.path.join(checkdir, y),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content']):
line +=1
except UnicodeDecodeError, ue:
stats["file.UTF8"] += 1
full_path = os.path.join(repodir, relative_path)
try:
# All ebuilds should have utf_8 encoding.
- f = codecs.open(full_path, mode='r', encoding='utf_8')
+ f = codecs.open(_unicode_encode(full_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'])
try:
for check_name, e in run_checks(f, pkg):
stats[check_name] += 1
types that \fB/etc/make.profile/\fR does, except parent). Do NOT edit the
settings in \fB/etc/make.profile/\fR because they WILL be lost with the next
`emerge \-\-sync`.
+
+Any file in this directory, directories of other profiles or top-level
+"profiles" directory that begins with "package." or "use." can be more than
+just a flat file. If it is a directory, then all the files in that directory
+will be sorted in ascending alphabetical order by file name and summed together
+as if it were a single file.
+
+.I Example:
+.nf
+/usr/portage/profiles/package.mask/removals
+/usr/portage/profiles/package.mask/testing
+.fi
.RS
.TP
.BR deprecated
from portage.util import writemsg
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
import codecs
import sys
if os.environ.__contains__("PORTAGE_PYTHONPATH"):
log_path = self.settings.get("PORTAGE_LOG_FILE")
if log_path is not None:
- f = codecs.open(log_path, mode='a',
- encoding='utf_8', errors='replace')
+ f = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
try:
f.write(msg)
finally:
else:
continue
- f = codecs.open(os.path.join(infloc, k), mode='w',
- encoding='utf_8', errors='replace')
+ f = codecs.open(_unicode_encode(os.path.join(infloc, k),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['content'], errors='replace')
try:
f.write(v + "\n")
finally:
f.close()
# Store the md5sum in the vdb.
- f = open(os.path.join(infloc, "BINPKGMD5"), "w")
+ f = codecs.open(_unicode_encode(os.path.join(infloc, 'BINPKGMD5'),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['content'], errors='strict')
try:
f.write(str(portage.checksum.perform_md5(pkg_path)) + "\n")
finally:
import sys
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
import codecs
class BinpkgVerifier(AsynchronousTask):
stderr_orig = sys.stderr
log_file = None
if self.background and self.logfile is not None:
- log_file = codecs.open(self.logfile, mode='a',
- encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(self.logfile,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
try:
if log_file is not None:
sys.stdout = log_file
from portage.util import writemsg
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
+import codecs
from portage.output import colorize
from portage.const import EPREFIX
class EbuildBuild(CompositeTask):
log_path = self.settings.get("PORTAGE_LOG_FILE")
if log_path is not None:
- log_file = codecs.open(log_path, mode='a',
- encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
try:
log_file.write(msg)
finally:
import sys
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
import codecs
from portage.elog.messages import eerror
elog_out = None
if self.logfile is not None:
if self.background:
- elog_out = codecs.open(self.logfile, mode='a',
- encoding='utf_8', errors='replace')
+ elog_out = codecs.open(_unicode_encode(self.logfile,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
msg = "Fetch failed for '%s'" % (self.pkg.cpv,)
if self.logfile is not None:
msg += ", Log file:"
from portage.cache.mappings import slot_dict_class
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
from itertools import izip
import fcntl
import codecs
os.path.basename(ebuild_path))
if eapi is None and \
'parse-eapi-ebuild-head' in settings.features:
- eapi = portage._parse_eapi_ebuild_head(codecs.open(ebuild_path,
- mode='r', encoding='utf_8', errors='replace'))
+ eapi = portage._parse_eapi_ebuild_head(
+ codecs.open(_unicode_encode(ebuild_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'],
+ errors='replace'))
if eapi is not None:
if not portage.eapi_is_supported(eapi):
fd_pipes[self._metadata_fd] = slave_fd
self._raw_metadata = []
- files.ebuild = os.fdopen(master_fd, 'r')
+ files.ebuild = os.fdopen(master_fd, 'rb')
self._reg_id = self.scheduler.register(files.ebuild.fileno(),
self._registered_events, self._output_handler)
self._registered = True
def _set_returncode(self, wait_retval):
SubProcess._set_returncode(self, wait_retval)
if self.returncode == os.EX_OK:
- metadata_lines = u''.join(unicode(chunk,
- encoding='utf_8', errors='replace')
+ metadata_lines = ''.join(unicode(chunk,
+ encoding=_encodings['repo.content'], errors='replace')
for chunk in self._raw_metadata).splitlines()
if len(portage.auxdbkeys) != len(metadata_lines):
# Don't trust bash's returncode if the
from portage.util import writemsg
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
import codecs
class EbuildPhase(CompositeTask):
log_path = self.settings.get("PORTAGE_LOG_FILE")
log_file = None
if self.background and log_path is not None:
- log_file = codecs.open(log_path, mode='a',
- encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
out = log_file
try:
portage._check_build_log(self.settings, out=out)
log_path = self.settings.get("PORTAGE_LOG_FILE")
log_file = None
if self.background and log_path is not None:
- log_file = codecs.open(log_path, mode='a',
- encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
out = log_file
portage._post_src_install_chost_fix(settings)
portage._post_src_install_uid_fix(settings, out=out)
import logging
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
from _emerge.AsynchronousTask import AsynchronousTask
from _emerge.unmerge import unmerge
from _emerge.UninstallFailure import UninstallFailure
portage.util.writemsg_level(msg,
level=level, noiselevel=noiselevel)
- f = codecs.open(log_path, mode='a',
- encoding='utf_8', errors='replace')
+ f = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'], errors='replace')
try:
f.write(msg)
finally:
from itertools import izip
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_decode
+from portage import _unicode_encode
from portage.cache.mappings import slot_dict_class
from portage.elog.messages import eerror
from portage.output import colorize, create_color_func, darkgreen, red
bad = create_color_func("BAD")
+from portage.sets import SETPREFIX
from portage.sets.base import InternalPackageSet
from portage.util import writemsg, writemsg_level
def _append_to_log_path(self, log_path, msg):
- f = codecs.open(portage._unicode_encode(log_path), mode='a',
- encoding='utf_8', errors='replace')
+ f = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'],
+ errors='backslashreplace')
try:
- f.write(portage._unicode_decode(msg))
+ f.write(_unicode_decode(msg,
+ encoding=_encodings['content'], errors='replace'))
finally:
f.close()
background = self._background
if background and log_path is not None:
- log_file = codecs.open(portage._unicode_encode(log_path), mode='a',
- encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'],
+ errors='backslashreplace')
out = log_file
try:
log_path = self._locate_failure_log(failed_pkg)
if log_path is not None:
try:
- log_file = codecs.open(portage._unicode_encode(log_path),
- mode='r', encoding='utf_8', errors='replace')
+ log_file = codecs.open(_unicode_encode(log_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['content'], errors='replace')
except IOError:
pass
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
def calc_changelog(ebuildpath,current,next):
if ebuildpath == None or not os.path.exists(ebuildpath):
next = next[:-3]
changelogpath = os.path.join(os.path.split(ebuildpath)[0],'ChangeLog')
try:
- changelog = codecs.open(portage._unicode_encode(changelogpath),
- mode='r', encoding='utf_8', errors='replace').read()
+ changelog = codecs.open(_unicode_encode(changelogpath,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'], errors='replace'
+ ).read()
except SystemExit, e:
raise # Needed else can't exit
except:
import time
import portage
from portage import os
+from portage import _encodings
+from portage import _unicode_encode
from portage.data import secpass
from portage.output import xtermTitle
from portage.const import EPREFIX
xtermTitle(short_msg)
try:
file_path = os.path.join(_emerge_log_dir, 'emerge.log')
- mylogfile = codecs.open(portage._unicode_encode(file_path), mode='a',
- encoding='utf_8', errors='replace')
+ mylogfile = codecs.open(_unicode_encode(file_path,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='a', encoding=_encodings['content'],
+ errors='backslashreplace')
portage.util.apply_secpass_permissions(file_path,
uid=portage.portage_uid, gid=portage.portage_gid,
mode=0660)
'content' : 'utf_8',
'fs' : 'utf_8',
'merge' : sys.getfilesystemencoding(),
+ 'repo.content' : 'utf_8',
}
+# This can happen if python is built with USE=build (stage 1).
+if _encodings['merge'] is None:
+ _encodings['merge'] = 'ascii'
+
# Deprecated attributes. Instead use _encodings directly.
_content_encoding = _encodings['content']
_fs_encoding = _encodings['fs']
default_fallback = 'utf_8'
default_encoding = sys.getdefaultencoding().lower().replace('-', '_')
- filesystem_encoding = sys.getfilesystemencoding().lower().replace('-', '_')
+ filesystem_encoding = _encodings['merge'].lower().replace('-', '_')
required_encodings = set(['ascii', 'utf_8'])
required_encodings.add(default_encoding)
required_encodings.add(filesystem_encoding)
import errno
import stat
from portage import os
+from portage import _encodings
from portage import _unicode_encode
class database(fs_template.FsBased):
def _getitem(self, cpv):
fp = os.path.join(self.location, cpv)
try:
- myf = codecs.open(_unicode_encode(fp),
- mode='r', encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'],
+ errors='replace')
try:
d = self._parse_data(myf.readlines(), cpv)
if '_mtime_' not in d:
s = cpv.rfind("/")
fp = os.path.join(self.location,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:]))
try:
- myf = codecs.open(_unicode_encode(fp), mode='w',
- encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['repo.content'],
+ errors='backslashreplace')
except (IOError, OSError), e:
if errno.ENOENT == e.errno:
try:
self._ensure_dirs(cpv)
- myf = codecs.open(_unicode_encode(fp), mode='w',
- encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['repo.content'],
+ errors='backslashreplace')
except (OSError, IOError),e:
raise cache_errors.CacheCorruption(cpv, e)
else:
from portage.cache import fs_template
from portage.cache import cache_errors
from portage import os
+from portage import _encodings
from portage import _unicode_encode
import codecs
import errno
def _getitem(self, cpv):
d = {}
try:
- myf = codecs.open(_unicode_encode(os.path.join(self._base, cpv)),
- mode='r', encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(os.path.join(self._base, cpv),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'],
+ errors='replace')
for k,v in zip(self.auxdbkey_order, myf):
d[k] = v.rstrip("\n")
except (OSError, IOError),e:
s = cpv.rfind("/")
fp=os.path.join(self._base,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:]))
try:
- myf = codecs.open(_unicode_encode(fp), mode='w',
- encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['repo.content'],
+ errors='backslashreplace')
except (OSError, IOError), e:
if errno.ENOENT == e.errno:
try:
self._ensure_dirs(cpv)
- myf = codecs.open(_unicode_encode(fp), mode='w',
- encoding='utf_8', errors='replace')
+ myf = codecs.open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['repo.content'],
+ errors='backslashreplace')
except (OSError, IOError),e:
raise cache_errors.CacheCorruption(cpv, e)
else:
import errno
import re
from portage import os
+from portage import _encodings
from portage import _unicode_encode
from portage.cache import cache_errors, flat_hash
import portage.eclass_cache
new_content = []
for k in self.auxdbkey_order:
- new_content.append(values.get(k, u''))
- new_content.append(u'\n')
+ new_content.append(values.get(k, ''))
+ new_content.append('\n')
for i in xrange(magic_line_count - len(self.auxdbkey_order)):
- new_content.append(u'\n')
- new_content = u''.join(new_content)
- new_content = _unicode_encode(new_content)
+ new_content.append('\n')
+ new_content = ''.join(new_content)
+ new_content = _unicode_encode(new_content,
+ _encodings['repo.content'], errors='backslashreplace')
new_fp = os.path.join(self.location, cpv)
try:
- f = open(_unicode_encode(new_fp), 'rb')
+ f = open(_unicode_encode(new_fp,
+ encoding=_encodings['fs'], errors='strict'), 'rb')
except EnvironmentError:
pass
else:
fp = os.path.join(self.location,cpv[:s],
".update.%i.%s" % (os.getpid(), cpv[s+1:]))
try:
- myf = open(_unicode_encode(fp), 'wb')
+ myf = open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'), 'wb')
except EnvironmentError, e:
if errno.ENOENT == e.errno:
try:
self._ensure_dirs(cpv)
- myf = open(_unicode_encode(fp), 'wb')
+ myf = open(_unicode_encode(fp,
+ encoding=_encodings['fs'], errors='strict'), 'wb')
except EnvironmentError, e:
raise cache_errors.CacheCorruption(cpv, e)
else: