Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
custommirrors = grabdict(os.path.join(mysettings["PORTAGE_CONFIGROOT"],
CUSTOM_MIRRORS_FILE), recursive=1)
mymirrors=[]
if listonly or ("distlocks" not in features):
use_locks = 0
distdir_writable = os.access(mysettings["DISTDIR"], os.W_OK)
fetch_to_ro = 0
if "skiprocheck" in features:
fetch_to_ro = 1
if not distdir_writable and fetch_to_ro:
if use_locks:
writemsg(colorize("BAD",
_("!!! For fetching to a read-only filesystem, "
"locking should be turned off.\n")), noiselevel=-1)
writemsg(_("!!! This can be done by adding -distlocks to "
"FEATURES in /etc/portage/make.conf\n"), noiselevel=-1)
# use_locks = 0
# local mirrors are always added
if try_mirrors and "local" in custommirrors:
mymirrors += custommirrors["local"]
if restrict_mirror:
# We don't add any mirrors.
pass
else:
if try_mirrors:
mymirrors += [x.rstrip("/") for x in mysettings["GENTOO_MIRRORS"].split() if x]
if discard_atoms:
for atom in sorted(discard_atoms):
if pretend:
action_desc = "Would remove"
else:
action_desc = "Removing"
if atom.startswith(SETPREFIX):
filename = "world_sets"
else:
filename = "world"
writemsg_stdout(
">>> %s %s from \"%s\" favorites file...\n" %
(action_desc, colorize("INFORM", str(atom)),
filename), noiselevel=-1)
if '--ask' in opts:
prompt = "Would you like to remove these " + \
"packages from your world favorites?"
uq = UserQuery(opts)
if uq.query(prompt, enter_invalid) == 'No':
return 128 + signal.SIGINT
remaining = set(world_set)
remaining.difference_update(discard_atoms)
if not pretend:
world_set.replace(remaining)
else:
print(">>> No matching atoms found in \"world\" favorites file...")
finally:
def pkgprint(pkg_str, pkg_info):
"""Colorizes a string acording to pkg_info settings
@param pkg_str: string
@param pkg_info: dictionary
@rtype colorized string
"""
if pkg_info.merge:
if pkg_info.built:
if pkg_info.system:
return colorize("PKG_BINARY_MERGE_SYSTEM", pkg_str)
elif pkg_info.world:
return colorize("PKG_BINARY_MERGE_WORLD", pkg_str)
else:
return colorize("PKG_BINARY_MERGE", pkg_str)
else:
if pkg_info.system:
return colorize("PKG_MERGE_SYSTEM", pkg_str)
elif pkg_info.world:
return colorize("PKG_MERGE_WORLD", pkg_str)
else:
return colorize("PKG_MERGE", pkg_str)
elif pkg_info.operation == "uninstall":
return colorize("PKG_UNINSTALL", pkg_str)
else:
if pkg_info.system:
return colorize("PKG_NOMERGE_SYSTEM", pkg_str)
elif pkg_info.world:
return colorize("PKG_NOMERGE_WORLD", pkg_str)
for y in localtree.dep_match(cp):
if y not in pkgmap[x]["omitted"] and \
y not in pkgmap[x]["selected"] and \
y not in pkgmap[x]["protected"] and \
y not in all_selected:
pkgmap[x]["omitted"].add(y)
if global_unmerge and not pkgmap[x]["selected"]:
#avoid cluttering the preview printout with stuff that isn't getting unmerged
continue
if not (pkgmap[x]["protected"] or pkgmap[x]["omitted"]) and cp in syslist:
virt_cp = sys_virt_map.get(cp)
if virt_cp is None:
cp_info = "'%s'" % (cp,)
else:
cp_info = "'%s' (%s)" % (cp, virt_cp)
writemsg_level(colorize("BAD","\n\n!!! " + \
"%s is part of your system profile.\n" % (cp_info,)),
level=logging.WARNING, noiselevel=-1)
writemsg_level(colorize("WARN","!!! Unmerging it may " + \
"be damaging to your system.\n\n"),
level=logging.WARNING, noiselevel=-1)
if not quiet:
writemsg_level("\n %s\n" % (bold(cp),), noiselevel=-1)
else:
writemsg_level(bold(cp) + ": ", noiselevel=-1)
for mytype in ["selected","protected","omitted"]:
if not quiet:
writemsg_level((mytype + ": ").rjust(14), noiselevel=-1)
if pkgmap[x][mytype]:
sorted_pkgs = []
for mypkg in pkgmap[x][mytype]:
try:
USER_VIRTUALS_FILE)
if os.path.exists(abs_user_virtuals):
writemsg("\n!!! /etc/portage/virtuals is deprecated in favor of\n")
writemsg("!!! /etc/portage/profile/virtuals. Please move it to\n")
writemsg("!!! this new location.\n\n")
if not sandbox_capable and \
("sandbox" in self.features or "usersandbox" in self.features):
if self.profile_path is not None and \
os.path.realpath(self.profile_path) == \
os.path.realpath(os.path.join(
self["PORTAGE_CONFIGROOT"], PROFILE_PATH)):
# Don't show this warning when running repoman and the
# sandbox feature came from a profile that doesn't belong
# to the user.
writemsg(colorize("BAD", _("!!! Problem with sandbox"
" binary. Disabling...\n\n")), noiselevel=-1)
if "fakeroot" in self.features and \
not fakeroot_capable:
writemsg(_("!!! FEATURES=fakeroot is enabled, but the "
"fakeroot binary is not installed.\n"), noiselevel=-1)
if "webrsync-gpg" in self.features:
writemsg(_("!!! FEATURES=webrsync-gpg is deprecated, see the make.conf(5) man page.\n"),
noiselevel=-1)
if os.getuid() == 0 and not hasattr(os, "setgroups"):
warning_shown = False
if "userpriv" in self.features:
writemsg(_("!!! FEATURES=userpriv is enabled, but "
if blocker.satisfied:
self.blocker_style = "PKG_BLOCKER_SATISFIED"
addl = "%s " % (colorize(self.blocker_style, "b"),)
else:
self.blocker_style = "PKG_BLOCKER"
addl = "%s " % (colorize(self.blocker_style, "B"),)
addl += self.empty_space_in_brackets()
self.resolved = dep_expand(
str(blocker.atom).lstrip("!"), mydb=self.vardb,
settings=self.pkgsettings
)
if self.conf.columns and self.conf.quiet:
addl += " " + colorize(self.blocker_style, str(self.resolved))
else:
addl = "[%s %s] %s%s" % \
(colorize(self.blocker_style, "blocks"),
addl, self.indent,
colorize(self.blocker_style, str(self.resolved))
)
block_parents = self.conf.blocker_parents.parent_nodes(blocker)
block_parents = set(str(pnode.cpv) for pnode in block_parents)
block_parents = ", ".join(block_parents)
if blocker.atom.blocker.overlap.forbid:
blocking_desc = "hard blocking"
else:
blocking_desc = "blocking"
if self.resolved != blocker.atom:
addl += colorize(self.blocker_style,
" (\"%s\" is %s %s)" %
(str(blocker.atom).lstrip("!"),
blocking_desc, block_parents))
else:
else:
return colorize("PKG_BINARY_MERGE", pkg_str)
else:
if pkg_info.system:
return colorize("PKG_MERGE_SYSTEM", pkg_str)
elif pkg_info.world:
return colorize("PKG_MERGE_WORLD", pkg_str)
else:
return colorize("PKG_MERGE", pkg_str)
elif pkg_info.operation == "uninstall":
return colorize("PKG_UNINSTALL", pkg_str)
else:
if pkg_info.system:
return colorize("PKG_NOMERGE_SYSTEM", pkg_str)
elif pkg_info.world:
return colorize("PKG_NOMERGE_WORLD", pkg_str)
else:
return colorize("PKG_NOMERGE", pkg_str)
ii = atom_str.find(slot_str)
colored_idx.update(range(ii, ii + len(slot_str)))
if op is not None:
atom_str = atom_str.replace(op, colorize("BAD", op), 1)
if ver is not None:
start = atom_str.rfind(ver)
end = start + len(ver)
atom_str = atom_str[:start] + \
colorize("BAD", ver) + \
atom_str[end:]
if slot_str:
atom_str = atom_str.replace(slot_str, colorize("BAD", slot_str), 1)
elif slot_violated:
slot = atom.slot
sub_slot = atom.sub_slot
slot_operator = atom.slot_operator
slot_str = ""
if slot:
slot_str = ":" + slot
if sub_slot:
slot_str += "/" + sub_slot
if slot_operator:
slot_str += slot_operator
if slot_str:
ii = atom_str.find(slot_str)
def countdown(secs=5, doing='Starting'):
if secs:
print(
'>>> Waiting %s seconds before starting...\n'
'>>> (Control-C to abort)...\n'
'%s in:' % (secs, doing), end='')
for sec in range(secs, 0, -1):
sys.stdout.write(colorize('UNMERGE_WARN', ' %i' % sec))
sys.stdout.flush()
time.sleep(1)
print()
# as these change the indices of the letters.
if op is not None:
colored_idx.update(range(len(op)))
if ver is not None:
start = atom_str.rfind(ver)
end = start + len(ver)
colored_idx.update(range(start, end))
if slot_str:
ii = atom_str.find(slot_str)
colored_idx.update(range(ii, ii + len(slot_str)))
if op is not None:
atom_str = atom_str.replace(op, colorize("BAD", op), 1)
if ver is not None:
start = atom_str.rfind(ver)
end = start + len(ver)
atom_str = atom_str[:start] + \
colorize("BAD", ver) + \
atom_str[end:]
if slot_str:
atom_str = atom_str.replace(slot_str, colorize("BAD", slot_str), 1)
elif slot_violated:
slot = atom.slot
sub_slot = atom.sub_slot
slot_operator = atom.slot_operator