f = open(filename, 'rb')
blocksize=32768
data = f.read(blocksize)
- size = 0L
+ size = 0
sum = md5.new()
while data:
sum.update(data)
DIFF_WSCOMMENTS = "diff -Nu '%s' '%s' | grep '^[+-][^+-]' | grep -v '^[-+]#' | grep -v '^[-+][:space:]*$'"
# We need a secure scratch dir and python does silly verbose errors on the use of tempnam
-oldmask = os.umask(0077)
+oldmask = os.umask(0o077)
SCRATCH_DIR = None
while SCRATCH_DIR is None:
try:
if os.path.isfile(self.options["log-file"]) \
or not os.path.exists(self.options["log-file"]):
open(self.options["log-file"], 'w').close() # Truncate it
- os.chmod(self.options["log-file"], 0600)
+ os.chmod(self.options["log-file"], 0o600)
else:
self.options["log-file"] = "/dev/null"
# Similar to emerge, emaint needs a default umask so that created
# files (such as the world file) have sane permissions.
- os.umask(022)
+ os.umask(0o22)
# TODO: Create a system that allows external modules to be added without
# the need for hard coding.
bad = create_color_func("BAD")
# A sane umask is needed for files that portage creates.
-os.umask(022)
+os.umask(0o22)
repoman_settings = portage.config(local_config=False,
config_incrementals=portage.const.INCREMENTALS)
repoman_settings.lock()
pkgs = {}
for y in checkdirlist:
if y in no_exec and \
- stat.S_IMODE(os.stat(os.path.join(checkdir, y)).st_mode) & 0111:
+ stat.S_IMODE(os.stat(os.path.join(checkdir, y)).st_mode) & 0o111:
stats["file.executable"] += 1
fails["file.executable"].append(os.path.join(checkdir, y))
if y.endswith(".ebuild"):
stats['changelog.ebuildadded'] += 1
fails['changelog.ebuildadded'].append(relative_path)
- if stat.S_IMODE(os.stat(full_path).st_mode) & 0111:
+ if stat.S_IMODE(os.stat(full_path).st_mode) & 0o111:
stats["file.executable"] += 1
fails["file.executable"].append(x+"/"+y+".ebuild")
if vcs in ("cvs", "svn") and check_ebuild_notadded and y not in eadded:
pkg = self.pkg
pkg_path = self._pkg_path
- dir_mode = 0755
+ dir_mode = 0o755
for mydir in (dir_path, self._image_dir, infloc):
portage.util.ensure_dirs(mydir, uid=portage.data.portage_uid,
gid=portage.data.portage_gid, mode=dir_mode)
pickle.dump(self._cache_data, f, protocol=2)
f.close()
portage.util.apply_secpass_permissions(
- self._cache_filename, gid=portage.portage_gid, mode=0644)
+ self._cache_filename, gid=portage.portage_gid, mode=0o644)
except (IOError, OSError) as e:
pass
self._modified.clear()
portage.util.ensure_dirs(os.path.dirname(catdir),
gid=portage.portage_gid,
- mode=070, mask=0)
+ mode=0o70, mask=0)
catdir_lock = None
try:
catdir_lock = portage.locks.lockdir(catdir)
portage.util.ensure_dirs(catdir,
gid=portage.portage_gid,
- mode=070, mask=0)
+ mode=0o70, mask=0)
self._lock_obj = portage.locks.lockdir(dir_path)
finally:
self.locked = self._lock_obj is not None
files.log = open(logfile, mode='ab')
portage.util.apply_secpass_permissions(logfile,
uid=portage.portage_uid, gid=portage.portage_gid,
- mode=0660)
+ mode=0o660)
if not self.background:
files.stdout = os.fdopen(os.dup(fd_pipes_orig[1]), 'wb')
if porttrees is None:
porttrees = portdb.porttrees
portage.writemsg_stdout("\n>>> Updating Portage cache\n")
- old_umask = os.umask(0002)
+ old_umask = os.umask(0o002)
cachedir = os.path.normpath(settings.depcachedir)
if cachedir in ["/", "/bin", "/dev", "/etc", "/home",
"/lib", "/opt", "/proc", "/root", "/sbin",
st = None
if st is None:
print(">>>",myportdir,"not found, creating it.")
- os.makedirs(myportdir,0755)
+ os.makedirs(myportdir,0o755)
st = os.stat(myportdir)
spawn_kwargs = {}
spawn_kwargs["env"] = settings.environ()
if 'usersync' in settings.features and \
portage.data.secpass >= 2 and \
- (st.st_uid != os.getuid() and st.st_mode & 0700 or \
- st.st_gid != os.getgid() and st.st_mode & 0070):
+ (st.st_uid != os.getuid() and st.st_mode & 0o700 or \
+ st.st_gid != os.getgid() and st.st_mode & 0o070):
try:
homedir = pwd.getpwuid(st.st_uid).pw_dir
except KeyError:
spawn_kwargs["gid"] = st.st_gid
spawn_kwargs["groups"] = [st.st_gid]
spawn_kwargs["env"]["HOME"] = homedir
- umask = 0002
- if not st.st_mode & 0020:
- umask = umask | 0020
+ umask = 0o002
+ if not st.st_mode & 0o020:
+ umask = umask | 0o020
spawn_kwargs["umask"] = umask
syncuri = settings.get("SYNC", "").strip()
vcs_dirs = frozenset([".git", ".svn", "CVS", ".hg"])
vcs_dirs = vcs_dirs.intersection(os.listdir(myportdir))
- os.umask(0022)
+ os.umask(0o022)
dosyncuri = syncuri
updatecache_flg = False
if myaction == "metadata":
errors='backslashreplace')
portage.util.apply_secpass_permissions(file_path,
uid=portage.portage_uid, gid=portage.portage_gid,
- mode=0660)
+ mode=0o660)
mylock = None
try:
mylock = portage.locks.lockfile(mylogfile)
os.environ["ROOT"] = myopts["--root"]
# Portage needs to ensure a sane umask for the files it creates.
- os.umask(022)
+ os.umask(0o22)
settings, trees, mtimedb = load_emerge_config()
portdb = trees[settings["ROOT"]]["porttree"].dbapi
rval = profile_check(trees, myaction)
if env is None:
env = os.environ
envd_dir = os.path.join(target_root, EPREFIX_LSTRIP, "etc", "env.d")
- portage.util.ensure_dirs(envd_dir, mode=0755)
+ portage.util.ensure_dirs(envd_dir, mode=0o755)
fns = listdir(envd_dir, EmptyOnError=1)
fns.sort()
templist = []
# gid, mode, mask, preserve_perms
dir_mode_map = {
- EPREFIX_LSTRIP+"/tmp" : ( -1, 01777, 0, True),
- EPREFIX_LSTRIP+"/var/tmp" : ( -1, 01777, 0, True),
- PRIVATE_PATH : (portage_gid, 02750, 02, False),
- CACHE_PATH : (portage_gid, 0755, 02, False)
+ EPREFIX_LSTRIP+"/tmp" : ( -1, 0o1777, 0, True),
+ EPREFIX_LSTRIP+"/var/tmp" : ( -1, 0o1777, 0, True),
+ PRIVATE_PATH : (portage_gid, 0o2750, 0o2, False),
+ CACHE_PATH : (portage_gid, 0o755, 0o2, False)
}
for mypath, (gid, mode, modemask, preserve_perms) \
fakeroot = fakeroot and uid != 0 and portage.process.fakeroot_capable
if droppriv and not uid and portage_gid and portage_uid:
keywords.update({"uid":portage_uid,"gid":portage_gid,
- "groups":userpriv_groups,"umask":002})
+ "groups":userpriv_groups,"umask":0o02})
if not free:
free=((droppriv and "usersandbox" not in features) or \
(not droppriv and "sandbox" not in features and \
("uid", portage_uid),
("gid", portage_gid),
("groups", userpriv_groups),
- ("umask", 002),
+ ("umask", 0o02),
)
def _spawn_fetch(settings, args, **kwargs):
if can_fetch and not fetch_to_ro:
global _userpriv_test_write_file_cache
- dirmode = 02070
- filemode = 060
- modemask = 02
+ dirmode = 0o2070
+ filemode = 0o60
+ modemask = 0o2
dir_gid = portage_gid
if "FAKED_MODE" in mysettings:
# When inside fakeroot, directories with portage's gid appear
if distdir_writable:
try:
apply_secpass_permissions(myfile_path,
- gid=portage_gid, mode=0664, mask=02,
+ gid=portage_gid, mode=0o664, mask=0o2,
stat_cached=mystat)
except portage.exception.PortageException as e:
if not os.access(myfile_path, os.R_OK):
else:
try:
apply_secpass_permissions(
- myfile_path, gid=portage_gid, mode=0664, mask=02,
+ myfile_path, gid=portage_gid, mode=0o664, mask=0o2,
stat_cached=mystat)
except portage.exception.PortageException as e:
if not os.access(myfile_path, os.R_OK):
finally:
try:
apply_secpass_permissions(myfile_path,
- gid=portage_gid, mode=0664, mask=02)
+ gid=portage_gid, mode=0o664, mask=0o2)
except portage.exception.FileNotFound as e:
pass
except portage.exception.PortageException as e:
""" Privileged phases may have left files that need to be made
writable to a less privileged user."""
apply_recursive_permissions(mysettings["T"],
- uid=portage_uid, gid=portage_gid, dirmode=070, dirmask=0,
- filemode=060, filemask=0)
+ uid=portage_uid, gid=portage_gid, dirmode=0o70, dirmask=0,
+ filemode=0o60, filemask=0)
def _post_src_install_checks(mysettings):
_post_src_install_uid_fix(mysettings)
for mydir in mydirs:
portage.util.ensure_dirs(mydir)
portage.util.apply_secpass_permissions(mydir,
- gid=portage_gid, uid=portage_uid, mode=070, mask=0)
+ gid=portage_gid, uid=portage_uid, mode=0o70, mask=0)
for dir_key in ("PORTAGE_BUILDDIR", "HOME", "PKG_LOGDIR", "T"):
"""These directories don't necessarily need to be group writable.
However, the setup phase is commonly run as a privileged user prior
to the other phases being run by an unprivileged user. Currently,
we use the portage group to ensure that the unprivleged user still
has write access to these directories in any case."""
- portage.util.ensure_dirs(mysettings[dir_key], mode=0775)
+ portage.util.ensure_dirs(mysettings[dir_key], mode=0o775)
portage.util.apply_secpass_permissions(mysettings[dir_key],
uid=portage_uid, gid=portage_gid)
except portage.exception.PermissionDenied as e:
"subdirs":("lock", "state"),
"always_recurse":True}
}
- dirmode = 02070
- filemode = 060
- modemask = 02
+ dirmode = 0o2070
+ filemode = 0o60
+ modemask = 0o2
restrict = mysettings.get("PORTAGE_RESTRICT","").split()
from portage.data import secpass
droppriv = secpass >= 2 and \
time.sleep(5)
def _prepare_workdir(mysettings):
- workdir_mode = 0700
+ workdir_mode = 0o700
try:
mode = mysettings["PORTAGE_WORKDIR_MODE"]
if mode.isdigit():
raise KeyError()
else:
raise ValueError()
- if parsed_mode & 07777 != parsed_mode:
+ if parsed_mode & 0o7777 != parsed_mode:
raise ValueError("Invalid file mode: %s" % mode)
else:
workdir_mode = parsed_mode
modified = portage.util.ensure_dirs(mysettings["PORT_LOGDIR"])
if modified:
apply_secpass_permissions(mysettings["PORT_LOGDIR"],
- uid=portage_uid, gid=portage_gid, mode=02770)
+ uid=portage_uid, gid=portage_gid, mode=0o2770)
except portage.exception.PortageException as e:
writemsg("!!! %s\n" % str(e), noiselevel=-1)
writemsg(_("!!! Permission issues with PORT_LOGDIR='%s'\n") % \
else:
from tempfile import NamedTemporaryFile
fd = NamedTemporaryFile(prefix="exectest-", dir=checkdir)
- os.chmod(fd.name, 0755)
+ os.chmod(fd.name, 0o755)
if not os.access(fd.name, os.X_OK):
writemsg(_("Can not execute files in %s\n"
"Likely cause is that you've mounted it with one of the\n"
""" Privileged phases may have left files that need to be made
writable to a less privileged user."""
apply_recursive_permissions(mysettings["T"],
- uid=portage_uid, gid=portage_gid, dirmode=070, dirmask=0,
- filemode=060, filemask=0)
+ uid=portage_uid, gid=portage_gid, dirmode=0o70, dirmask=0,
+ filemode=0o60, filemask=0)
return retval
elif mydo == "preinst":
phase_retval = spawn(
mysettings["PORTAGE_ACTUAL_DISTDIR"] = orig_distdir
edpath = mysettings["DISTDIR"] = \
os.path.join(mysettings["PORTAGE_BUILDDIR"], "distdir")
- portage.util.ensure_dirs(edpath, gid=portage_gid, mode=0755)
+ portage.util.ensure_dirs(edpath, gid=portage_gid, mode=0o755)
# Remove any unexpected files or directories.
for x in os.listdir(edpath):
myebuild = os.path.join(
infloc, os.path.basename(mytbz2)[:-4] + "ebuild")
portage.util.ensure_dirs(os.path.dirname(catdir),
- uid=portage_uid, gid=portage_gid, mode=070, mask=0)
+ uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
catdir_lock = portage.locks.lockdir(catdir)
portage.util.ensure_dirs(catdir,
- uid=portage_uid, gid=portage_gid, mode=070, mask=0)
+ uid=portage_uid, gid=portage_gid, mode=0o70, mask=0)
try:
shutil.rmtree(builddir)
except (IOError, OSError) as e:
del e
for mydir in (builddir, pkgloc, infloc):
portage.util.ensure_dirs(mydir, uid=portage_uid,
- gid=portage_gid, mode=0755)
+ gid=portage_gid, mode=0o755)
writemsg_stdout(_(">>> Extracting info\n"))
xptbz2.unpackinfo(infloc)
mysettings.setcpv(mycat + "/" + mypkg, mydb=mydbapi)
pickle.dump(d, f, protocol=2)
f.close()
portage.util.apply_secpass_permissions(filename,
- uid=uid, gid=portage_gid, mode=0644)
+ uid=uid, gid=portage_gid, mode=0o644)
except (IOError, OSError) as e:
pass
profiledir, flushmtimedb
# Portage needs to ensure a sane umask for the files it creates.
- os.umask(022)
+ os.umask(0o22)
kwargs = {}
kwargs["config_root"] = os.environ.get("PORTAGE_CONFIGROOT", EPREFIX + "/")
perms = self._perms
if perms == -1:
perms = 0
- perms |= 0755
+ perms |= 0o755
os.mkdir(base, perms)
if self._gid != -1:
os.chown(base, -1, self._gid)
encoding=_encodings['fs'], errors='strict'), 'rb')
blocksize = HASHING_BLOCKSIZE
data = f.read(blocksize)
- size = 0L
+ size = 0
checksum = hashobject()
while data:
checksum.update(data)
ensure_dirs(path)
return
pkgdir_gid = pkgdir_st.st_gid
- pkgdir_grp_mode = 02070 & pkgdir_st.st_mode
+ pkgdir_grp_mode = 0o2070 & pkgdir_st.st_mode
try:
ensure_dirs(path, gid=pkgdir_gid, mode=pkgdir_grp_mode, mask=0)
except PortageException:
depcachedir_w_ok = os.access(self.depcachedir, os.W_OK)
cache_kwargs = {
'gid' : portage_gid,
- 'perms' : 0664
+ 'perms' : 0o664
}
if secpass < 1:
"""Create /var/cache/edb/dep and adjust permissions for the portage
group."""
- dirmode = 02070
- filemode = 060
- modemask = 02
+ dirmode = 0o2070
+ filemode = 0o60
+ modemask = 0o2
try:
ensure_dirs(self.depcachedir, gid=portage_gid,
pickle.dump(self._aux_cache, f, protocol=2)
f.close()
apply_secpass_permissions(
- self._aux_cache_filename, gid=portage_gid, mode=0644)
+ self._aux_cache_filename, gid=portage_gid, mode=0o644)
except (IOError, OSError) as e:
pass
self._aux_cache["modified"] = set()
else:
catdir = os.path.dirname(self.settings["PORTAGE_BUILDDIR"])
ensure_dirs(os.path.dirname(catdir), uid=portage_uid,
- gid=portage_gid, mode=070, mask=0)
+ gid=portage_gid, mode=0o70, mask=0)
builddir_lock = None
catdir_lock = None
catdir_lock = lockdir(catdir)
ensure_dirs(catdir,
uid=portage_uid, gid=portage_gid,
- mode=070, mask=0)
+ mode=0o70, mask=0)
builddir_lock = lockdir(
self.settings["PORTAGE_BUILDDIR"])
try:
cfgfiledict.pop("IGNORE", None)
if cfgfiledict != cfgfiledict_orig:
ensure_dirs(os.path.dirname(conf_mem_file),
- gid=portage_gid, mode=02750, mask=02)
+ gid=portage_gid, mode=0o2750, mask=0o2)
writedict(cfgfiledict, conf_mem_file)
# These caches are populated during collision-protect and the data
settings["PORTAGE_TMPDIR"])
from portage.process import atexit_register
atexit_register(shutil.rmtree, base_path_tmp)
- dir_perms = 0755
+ dir_perms = 0o755
for subdir in "bin", "pym":
var_name = "PORTAGE_%s_PATH" % subdir.upper()
var_orig = settings[var_name]
elogdir = os.path.join(mysettings["PORT_LOGDIR"], "elog")
else:
elogdir = os.path.join(EPREFIX, "var", "log", "portage", "elog")
- ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=02770)
+ ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=0o2770)
elogfilename = os.path.join(elogdir, path + ":" + _unicode_decode(
time.strftime("%Y%m%d-%H%M%S", time.gmtime(time.time())),
elogdir = os.path.join(mysettings["PORT_LOGDIR"], "elog")
else:
elogdir = os.path.join(EPREFIX, "var", "log", "portage", "elog")
- ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=02770)
+ ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=0o2770)
# TODO: Locking
elogfilename = elogdir+"/summary.log"
elogfile = codecs.open(_unicode_encode(elogfilename,
encoding=_encodings['fs'], errors='strict'),
mode='a', encoding=_encodings['content'], errors='backslashreplace')
- apply_permissions(elogfilename, mode=060, mask=0)
+ apply_permissions(elogfilename, mode=0o60, mask=0)
time_str = time.strftime("%Y-%m-%d %H:%M:%S %Z",
time.localtime(time.time()))
# Avoid potential UnicodeDecodeError later.
old_mask = os.umask(000)
try:
try:
- myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR, 0660)
+ myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR, 0o660)
except OSError as e:
func_call = "open('%s')" % lockfilename
if e.errno == OperationNotPermitted.errno:
try:
if myfd is None:
- myfd = os.open(lockfilename, os.O_WRONLY,0660)
+ myfd = os.open(lockfilename, os.O_WRONLY,0o660)
unlinkfile = 1
locking_method(myfd,fcntl.LOCK_UN)
except OSError:
while(time.time() < (start_time + max_wait)):
# We only need it to exist.
- myfd = os.open(myhardlock, os.O_CREAT|os.O_RDWR,0660)
+ myfd = os.open(myhardlock, os.O_CREAT|os.O_RDWR,0o660)
os.close(myfd)
if not os.path.exists(myhardlock):
# execute) bits set. News files should be world readable.
self._uid = int(self.config["PORTAGE_INST_UID"])
self._gid = portage_gid
- self._file_mode = 00064
- self._dir_mode = 00074
- self._mode_mask = 00000
+ self._file_mode = 0o0064
+ self._dir_mode = 0o0074
+ self._mode_mask = 0o0000
portdir = portdb.porttree_root
profiles_base = os.path.join(portdir, 'profiles') + os.path.sep
self._setAtoms(atoms+nonatoms)
def _ensure_dirs(self):
- ensure_dirs(os.path.dirname(self._filename), gid=portage_gid, mode=02750, mask=02)
+ ensure_dirs(os.path.dirname(self._filename), gid=portage_gid, mode=0o2750, mask=0o2)
def lock(self):
self._ensure_dirs()
a=mystring[pos+1]
pos=pos+2
if a=='a':
- newstring=newstring+chr(007)
+ newstring=newstring+chr(0o07)
elif a=='b':
- newstring=newstring+chr(010)
+ newstring=newstring+chr(0o10)
elif a=='e':
- newstring=newstring+chr(033)
+ newstring=newstring+chr(0o33)
elif (a=='f') or (a=='n'):
- newstring=newstring+chr(012)
+ newstring=newstring+chr(0o12)
elif a=='r':
- newstring=newstring+chr(015)
+ newstring=newstring+chr(0o15)
elif a=='t':
- newstring=newstring+chr(011)
+ newstring=newstring+chr(0o11)
elif a=='v':
- newstring=newstring+chr(013)
+ newstring=newstring+chr(0o13)
elif a!='\n':
#remove backslash only, as bash does: this takes care of \\ and \' and \" as well
newstring=newstring+mystring[pos-1:pos]
raise
new_mode = -1
- st_mode = stat_cached.st_mode & 07777 # protect from unwanted bits
+ st_mode = stat_cached.st_mode & 0o7777 # protect from unwanted bits
if mask >= 0:
if mode == -1:
mode = 0 # Don't add any mode bits when mode is unspecified.
else:
- mode = mode & 07777
+ mode = mode & 0o7777
if (mode & st_mode != mode) or \
((mask ^ st_mode) & st_mode != st_mode):
new_mode = mode | st_mode
new_mode = (mask ^ new_mode) & new_mode
elif mode != -1:
- mode = mode & 07777 # protect from unwanted bits
+ mode = mode & 0o7777 # protect from unwanted bits
if mode != st_mode:
new_mode = mode
if mode == -1:
new_mode = st_mode
else:
- mode = mode & 07777
+ mode = mode & 0o7777
if mask >= 0:
new_mode = mode | st_mode
new_mode = (mask ^ new_mode) & new_mode