try:
contents = open(file, "r")
except IOError as e:
- print >> sys.stderr, 'archive-conf: Unable to open %s: %s' % (file, e)
+ print('archive-conf: Unable to open %s: %s' % (file, e), file=sys.stderr)
sys.exit(1)
lines = contents.readlines()
for line in lines:
if len(sys.argv) > 1:
archive_conf()
else:
- print >> sys.stderr, 'Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]'
+ print('Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]', file=sys.stderr)
pointer_linenum = int(m.group(2))
if (last_implicit_filename == pointer_filename
and last_implicit_linenum == pointer_linenum):
- print "Function `%s' implicitly converted to pointer at " \
+ print(("Function `%s' implicitly converted to pointer at " \
"%s:%d" % (last_implicit_func, last_implicit_filename,
- last_implicit_linenum)
+ last_implicit_linenum)))
if not sys.argv[1:] or "--help" in sys.argv or "-h" in sys.argv:
import portage
- print
- print "You must specify directories with hardlink-locks to clean."
- print "You may optionally specify --force, which will remove all"
- print "of the locks, even if we can't establish if they are in use."
- print "Please attempt cleaning without force first."
- print
- print "%s %s/.locks" % (sys.argv[0], portage.settings["DISTDIR"])
- print "%s --force %s/.locks" % (sys.argv[0], portage.settings["DISTDIR"])
- print
+ print()
+ print("You must specify directories with hardlink-locks to clean.")
+ print("You may optionally specify --force, which will remove all")
+ print("of the locks, even if we can't establish if they are in use.")
+ print("Please attempt cleaning without force first.")
+ print()
+ print("%s %s/.locks" % (sys.argv[0], portage.settings["DISTDIR"]))
+ print("%s --force %s/.locks" % (sys.argv[0], portage.settings["DISTDIR"]))
+ print()
sys.exit(1)
force = False
continue
try:
for y in portage.locks.hardlock_cleanup(x, remove_all_locks=force):
- print y
- print
+ print(y)
+ print()
except OSError as e:
if e.errno in (errno.ENOENT, errno.ENOTDIR):
- print "!!! %s is not a directory or does not exist" % x
+ print("!!! %s is not a directory or does not exist" % x)
else:
raise
sys.exit(e.errno)
if self.options['use-rcs'] == 'yes':
for rcs_util in ("rcs", "ci", "co", "rcsmerge"):
if not find_binary(rcs_util):
- print >> sys.stderr, \
- 'dispatch-conf: Error finding all RCS utils and " + \
- "use-rcs=yes in config; fatal'
+ print('dispatch-conf: Error finding all RCS utils and " + \
+ "use-rcs=yes in config; fatal', file=sys.stderr)
return False
cmd = self.options['diff'] % (conf['current'], newconf)
spawn_shell(cmd)
- print
- print '>> (%i of %i) -- %s' % (count, len(confs), conf ['current'])
- print '>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ',
+ print()
+ print('>> (%i of %i) -- %s' % (count, len(confs), conf ['current']))
+ print('>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ', end=' ')
# In some cases getch() will return some spurious characters
# that do not represent valid input. If we don't validate the
break
elif c == 'm':
merged = SCRATCH_DIR+"/"+os.path.basename(conf['current'])
- print
+ print()
ret = os.system (self.options['merge'] % (merged, conf ['current'], newconf))
if ret:
- print "Failure running 'merge' command"
+ print("Failure running 'merge' command")
continue
shutil.copyfile(merged, mrgconf)
os.remove(merged)
raise AssertionError("Invalid Input: %s" % c)
if auto_zapped:
- print
- print " One or more updates are frozen and have been automatically zapped:"
- print
+ print()
+ print(" One or more updates are frozen and have been automatically zapped:")
+ print()
for frozen in auto_zapped:
- print " * '%s'" % frozen
- print
+ print(" * '%s'" % frozen)
+ print()
def replace (self, newconf, curconf):
"""Replace current config with the new/merged version. Also logs
try:
os.rename(newconf, curconf)
except (IOError, os.error) as why:
- print >> sys.stderr, 'dispatch-conf: Error renaming %s to %s: %s; fatal' % \
- (newconf, curconf, str(why))
+ print('dispatch-conf: Error renaming %s to %s: %s; fatal' % \
+ (newconf, curconf, str(why)), file=sys.stderr)
def post_process(self, curconf):
def do_help (self):
- print; print
-
- print ' u -- update current config with new config and continue'
- print ' z -- zap (delete) new config and continue'
- print ' n -- skip to next config, leave all intact'
- print ' e -- edit new config'
- print ' m -- interactively merge current and new configs'
- print ' l -- look at diff between pre-merged and merged configs'
- print ' t -- toggle new config between merged and pre-merged state'
- print ' h -- this screen'
- print ' q -- quit'
-
- print; print 'press any key to return to diff...',
+ print(); print
+
+ print(' u -- update current config with new config and continue')
+ print(' z -- zap (delete) new config and continue')
+ print(' n -- skip to next config, leave all intact')
+ print(' e -- edit new config')
+ print(' m -- interactively merge current and new configs')
+ print(' l -- look at diff between pre-merged and merged configs')
+ print(' t -- toggle new config between merged and pre-merged state')
+ print(' h -- this screen')
+ print(' q -- quit')
+
+ print(); print('press any key to return to diff...', end=' ')
getch ()
parser.error("missing required args")
if "merge" in pargs:
- print "Disabling noauto in features... merge disables it. (qmerge doesn't)"
+ print("Disabling noauto in features... merge disables it. (qmerge doesn't)")
os.environ["FEATURES"] = os.environ.get("FEATURES", "") + " -noauto"
os.environ["PORTAGE_CALLER"]="ebuild"
if ebuild_portdir not in portage.portdb.porttrees:
os.environ["PORTDIR_OVERLAY"] = \
os.environ.get("PORTDIR_OVERLAY","") + " " + ebuild_portdir
- print "Appending %s to PORTDIR_OVERLAY..." % ebuild_portdir
+ print("Appending %s to PORTDIR_OVERLAY..." % ebuild_portdir)
portage.close_portdbapi_caches()
reload(portage)
del portage.portdb.porttrees[1:]
portage.portdb.porttrees.append(ebuild_portdir)
if not os.path.exists(ebuild):
- print "'%s' does not exist." % ebuild
+ print("'%s' does not exist." % ebuild)
sys.exit(1)
ebuild_split = ebuild.split("/")
cpv = "%s/%s" % (ebuild_split[-3], pf)
if not portage.catpkgsplit(cpv):
- print "!!! %s does not follow correct package syntax." % (cpv)
+ print("!!! %s does not follow correct package syntax." % (cpv))
sys.exit(1)
if ebuild.startswith(os.path.join(portage.root, portage.const.VDB_PATH)):
portage_ebuild = portage.db[portage.root][mytree].dbapi.findname(cpv)
if os.path.realpath(portage_ebuild) != ebuild:
- print "!!! Portage seems to think that %s is at %s" % (cpv, portage_ebuild)
+ print("!!! Portage seems to think that %s is at %s" % (cpv, portage_ebuild))
sys.exit(1)
else:
portage_ebuild = portage.portdb.findname(cpv)
if not portage_ebuild or portage_ebuild != ebuild:
- print "!!! %s does not seem to have a valid PORTDIR structure." % ebuild
+ print("!!! %s does not seem to have a valid PORTDIR structure." % ebuild)
sys.exit(1)
if len(pargs) > 1 and "config" in pargs:
- print "config must be called on it's own, not combined with any other phase"
+ print("config must be called on it's own, not combined with any other phase")
sys.exit(1)
def discard_digests(myebuild, mysettings, mydbapi):
a = portage.doebuild(ebuild, arg, portage.root, tmpsettings,
debug=debug, tree=mytree)
except KeyboardInterrupt:
- print "Interrupted."
+ print("Interrupted.")
a = 1
except KeyError:
# aux_get error
portage.writemsg("!!! Permission Denied: %s\n" % (e,), noiselevel=-1)
a = 1
if a == None:
- print "Could not run the required binary?"
+ print("Could not run the required binary?")
a = 127
if a:
sys.exit(a)
def print_help():
opts = OptionsClass()
- print "dohtml [-a .foo,.bar] [-A .foo,.bar] [-f foo,bar] [-x foo,bar]"
- print " [-r] [-V] <file> [file ...]"
- print
- print " -a Set the list of allowed to those that are specified."
- print " Default:", ",".join(opts.allowed_exts)
- print " -A Extend the list of allowed file types."
- print " -f Set list of allowed extensionless file names."
- print " -x Set directories to be excluded from recursion."
- print " Default:", ",".join(opts.disallowed_dirs)
- print " -p Set a document prefix for installed files (empty by default)."
- print " -r Install files and directories recursively."
- print " -V Be verbose."
- print
+ print("dohtml [-a .foo,.bar] [-A .foo,.bar] [-f foo,bar] [-x foo,bar]")
+ print(" [-r] [-V] <file> [file ...]")
+ print()
+ print(" -a Set the list of allowed to those that are specified.")
+ print(" Default:", ",".join(opts.allowed_exts))
+ print(" -A Extend the list of allowed file types.")
+ print(" -f Set list of allowed extensionless file names.")
+ print(" -x Set directories to be excluded from recursion.")
+ print(" Default:", ",".join(opts.disallowed_dirs))
+ print(" -p Set a document prefix for installed files (empty by default).")
+ print(" -r Install files and directories recursively.")
+ print(" -V Be verbose.")
+ print()
def parse_args():
options = OptionsClass()
(options, args) = parse_args()
if options.verbose:
- print "Allowed extensions:", options.allowed_exts
- print "Document prefix : '" + options.doc_prefix + "'"
- print "Allowed files :", options.allowed_files
+ print("Allowed extensions:", options.allowed_exts)
+ print("Document prefix : '" + options.doc_prefix + "'")
+ print("Allowed files :", options.allowed_files)
success = False
if parser.action:
action = parser.action
else:
- print "Defaulting to --check"
+ print("Defaulting to --check")
action = "-c/--check"
if args[0] == "all":
isatty = sys.stdout.isatty()
for task in tasks:
- print status % task.name()
+ print(status % task.name())
inst = task()
onProgress = None
if isatty:
if isatty:
# make sure the final progress is displayed
progressHandler.display()
- print
+ print()
signal.signal(signal.SIGWINCH, signal.SIG_DFL)
if result:
- print
- print "\n".join(result)
- print "\n"
+ print()
+ print("\n".join(result))
+ print("\n")
- print "Finished"
+ print("Finished")
if __name__ == "__main__":
emaint_main(sys.argv[1:])
import sys, errno
def usage(status):
- print "Usage: env-update [--no-ldconfig]"
- print ""
- print "See the env-update(1) man page for more info"
+ print("Usage: env-update [--no-ldconfig]")
+ print("")
+ print("See the env-update(1) man page for more info")
sys.exit(status)
if "-h" in sys.argv or "--help" in sys.argv:
sys.argv.pop(sys.argv.index("--no-ldconfig"))
if len(sys.argv) > 1:
- print "!!! Invalid command line options!\n"
+ print("!!! Invalid command line options!\n")
usage(1)
try:
portage.env_update(makelinks)
except IOError as e:
if e.errno == errno.EACCES:
- print "env-update: Need superuser access"
+ print("env-update: Need superuser access")
sys.exit(1)
else:
raise
portage._global_updates(mytrees, mtimedb["updates"])
-print
-print "Done."
-print
+print()
+print("Done.")
+print()
Return code 0 if it's available, 1 otherwise.
"""
if (len(argv) < 2):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
if atom_validate_strict and not portage.isvalidatom(argv[1]):
portage.writemsg("ERROR: Invalid atom: '%s'\n" % argv[1],
Returns category/package-version (without .ebuild).
"""
if (len(argv) < 2):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
if atom_validate_strict and not portage.isvalidatom(argv[1]):
portage.writemsg("ERROR: Invalid atom: '%s'\n" % argv[1],
return 2
try:
mylist=portage.db[argv[0]]["vartree"].dbapi.match(argv[1])
- print portage.best(mylist)
+ print(portage.best(mylist))
except KeyError:
sys.exit(1)
best_version.uses_root = True
Returns category/package-version (without .ebuild).
"""
if (len(argv) < 2):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
try:
for pack in argv[1:]:
mylist=portage.db[argv[0]]["vartree"].dbapi.match(pack)
- print pack+":"+portage.best(mylist)
+ print(pack+":"+portage.best(mylist))
except KeyError:
sys.exit(1)
mass_best_version.uses_root = True
Returns metadata values for the specified package.
"""
if (len(argv) < 4):
- print >> sys.stderr, "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!", file=sys.stderr)
sys.exit(2)
root, pkgtype, pkgspec = argv[0:3]
"binary":"bintree",
"installed":"vartree"}
if pkgtype not in type_map:
- print >> sys.stderr, "Unrecognized package type: '%s'" % pkgtype
+ print("Unrecognized package type: '%s'" % pkgtype, file=sys.stderr)
sys.exit(1)
trees = portage.db
if os.path.realpath(root) == os.path.realpath(portage.settings["ROOT"]):
pkgspec, metakeys)
writemsg_stdout(''.join('%s\n' % x for x in values), noiselevel=-1)
except KeyError:
- print >> sys.stderr, "Package not found: '%s'" % pkgspec
+ print("Package not found: '%s'" % pkgspec, file=sys.stderr)
sys.exit(1)
metadata.uses_root = True
<root>.
"""
if len(argv) != 2:
- print "ERROR: expected 2 parameters, got %d!" % len(argv)
+ print("ERROR: expected 2 parameters, got %d!" % len(argv))
return 2
root, cpv = argv
Returns category/package-version (without .ebuild).
"""
if (len(argv) < 2):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
try:
mylist=portage.db[argv[0]]["porttree"].dbapi.match(argv[1])
visible=portage.best(mylist)
if visible:
- print visible
+ print(visible)
sys.exit(0)
else:
sys.exit(1)
Returns category/package-version (without .ebuild).
"""
if (len(argv) < 2):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
try:
for pack in argv[1:]:
mylist=portage.db[argv[0]]["porttree"].dbapi.match(pack)
- print pack+":"+portage.best(mylist)
+ print(pack+":"+portage.best(mylist))
except KeyError:
sys.exit(1)
mass_best_visible.uses_root = True
Returns all best_visible packages (without .ebuild).
"""
if (len(argv) < 1):
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
#print portage.db[argv[0]]["porttree"].dbapi.cp_all()
for pkg in portage.db[argv[0]]["porttree"].dbapi.cp_all():
mybest=portage.best(portage.db[argv[0]]["porttree"].dbapi.match(pkg))
if mybest:
- print mybest
+ print(mybest)
all_best_visible.uses_root = True
be listed.
"""
if len(argv) != 2:
- print "ERROR: expected 2 parameters, got %d!" % len(argv)
+ print("ERROR: expected 2 parameters, got %d!" % len(argv))
sys.exit(2)
root, atom = argv
if atom:
results = portage.db[root]["vartree"].dbapi.cpv_all()
results.sort()
for cpv in results:
- print cpv
+ print(cpv)
match.uses_root = True
"""
Returns the mirrors set to use in the portage configuration.
"""
- print portage.settings["GENTOO_MIRRORS"]
+ print(portage.settings["GENTOO_MIRRORS"])
def portdir(argv):
"""
Returns the PORTDIR path.
"""
- print portage.settings["PORTDIR"]
+ print(portage.settings["PORTDIR"])
def config_protect(argv):
"""
Returns the CONFIG_PROTECT paths.
"""
- print portage.settings["CONFIG_PROTECT"]
+ print(portage.settings["CONFIG_PROTECT"])
def config_protect_mask(argv):
"""
Returns the CONFIG_PROTECT_MASK paths.
"""
- print portage.settings["CONFIG_PROTECT_MASK"]
+ print(portage.settings["CONFIG_PROTECT_MASK"])
def portdir_overlay(argv):
"""
Returns the PORTDIR_OVERLAY path.
"""
- print portage.settings["PORTDIR_OVERLAY"]
+ print(portage.settings["PORTDIR_OVERLAY"])
def pkgdir(argv):
"""
Returns the PKGDIR path.
"""
- print portage.settings["PKGDIR"]
+ print(portage.settings["PKGDIR"])
def distdir(argv):
"""
Returns the DISTDIR path.
"""
- print portage.settings["DISTDIR"]
+ print(portage.settings["DISTDIR"])
def envvar(argv):
argv.pop(argv.index("-v"))
if len(argv) == 0:
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
for arg in argv:
if verbose:
- print arg +"='"+ portage.settings[arg] +"'"
+ print(arg +"='"+ portage.settings[arg] +"'")
else:
- print portage.settings[arg]
+ print(portage.settings[arg])
def get_repos(argv):
"""<root>
Returns all repos with names (repo_name file) argv[0] = $ROOT
"""
if len(argv) < 1:
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
- print " ".join(portage.db[argv[0]]["porttree"].dbapi.getRepositories())
+ print(" ".join(portage.db[argv[0]]["porttree"].dbapi.getRepositories()))
def get_repo_path(argv):
"""<root> <repo_id>+
Returns the path to the repo named argv[1], argv[0] = $ROOT
"""
if len(argv) < 2:
- print "ERROR: insufficient parameters!"
+ print("ERROR: insufficient parameters!")
sys.exit(2)
for arg in argv[1:]:
- print portage.db[argv[0]]["porttree"].dbapi.getRepositoryPath(arg)
+ print(portage.db[argv[0]]["porttree"].dbapi.getRepositoryPath(arg))
def list_preserved_libs(argv):
"""<root>
"""
if len(argv) != 1:
- print "ERROR: wrong number of arguments"
+ print("ERROR: wrong number of arguments")
sys.exit(2)
mylibs = portage.db[argv[0]]["vartree"].dbapi.plib_registry.getPreservedLibs()
rValue = 0
#
def usage(argv):
- print ">>> Portage information query tool"
- print ">>> $Id$"
- print ">>> Usage: portageq <command> [<option> ...]"
- print ""
- print "Available commands:"
+ print(">>> Portage information query tool")
+ print(">>> $Id$")
+ print(">>> Usage: portageq <command> [<option> ...]")
+ print("")
+ print("Available commands:")
#
# Show our commands -- we do this by scanning the functions in this
doc = obj.__doc__
if (doc == None):
- print " "+name
- print " MISSING DOCUMENTATION!"
- print ""
+ print(" "+name)
+ print(" MISSING DOCUMENTATION!")
+ print("")
continue
lines = doc.split("\n")
- print " "+name+" "+lines[0].strip()
+ print(" "+name+" "+lines[0].strip())
if (len(sys.argv) > 1):
if ("--help" not in sys.argv):
lines = lines[:-1]
for line in lines[1:]:
- print " "+line.strip()
+ print(" "+line.strip())
if (len(sys.argv) == 1):
- print "\nRun portageq with --help for info"
+ print("\nRun portageq with --help for info")
atom_validate_strict = "EBUILD_PHASE" in os.environ
if not successes:
eout.eerror("No packages found")
return 1
- print
+ print()
eout.einfo("Packages now in '%s':" % bintree.pkgdir)
import math
units = {10:'K', 20:'M', 30:'G', 40:'T',
size_str = str(size)
eout.einfo("%s: %s" % (cpv, size_str))
if config_files_excluded:
- print
+ print()
eout.ewarn("Excluded config files: %d" % config_files_excluded)
eout.ewarn("See --help if you would like to include config files.")
if missing:
- print
+ print()
eout.ewarn("The following packages could not be found:")
eout.ewarn(" ".join(missing))
return 2
# show a little description if we have arguments
if len(sys.argv) >= 2 and sys.argv[1] in ["-h", "--help"]:
- print "This script regenerates the portage world file by checking the portage"
- print "logfile for all actions that you've done in the past. It ignores any"
- print "arguments except --help. It is recommended that you make a backup of"
- print "your existing world file (%s) before using this tool." % world_file
+ print("This script regenerates the portage world file by checking the portage")
+ print("logfile for all actions that you've done in the past. It ignores any")
+ print("arguments except --help. It is recommended that you make a backup of")
+ print("your existing world file (%s) before using this tool." % world_file)
sys.exit(0)
worldlist = portage.grabfile(os.path.join("/", portage.WORLD_FILE))
mylist=portage.db["/"]["vartree"].dbapi.match(mykey)
except (portage.exception.InvalidAtom, KeyError):
if "--debug" in sys.argv:
- print "* ignoring broken log entry for %s (likely injected)" % mykey
+ print("* ignoring broken log entry for %s (likely injected)" % mykey)
except ValueError as e:
- print "* %s is an ambigous package name, candidates are:\n%s" % (mykey, e)
+ print("* %s is an ambigous package name, candidates are:\n%s" % (mykey, e))
continue
if mylist:
#print "mylist:",mylist
myfavkey=portage.cpv_getkey(mylist[0])
if (myfavkey not in realsyslist) and (myfavkey not in worldlist):
- print "add to world:",myfavkey
+ print("add to world:",myfavkey)
worldlist.append(myfavkey)
portage.write_atomic(os.path.join("/", portage.WORLD_FILE),
nocolor()
def warn(txt):
- print "repoman: " + txt
+ print("repoman: " + txt)
def err(txt):
warn(txt)
options, arguments = ParseArgs(sys.argv, qahelp)
if options.version:
- print "Portage", portage.VERSION
+ print("Portage", portage.VERSION)
sys.exit(0)
# Set this to False when an extraordinary issue (generally
prefix = bad(" * ")
from textwrap import wrap
for line in wrap(msg, 70):
- print prefix + line
+ print(prefix + line)
sys.exit(1)
del repo_lines
# Reason for this is if they're trying to commit in just $FILESDIR/*, the Manifest needs updating.
# this check ensures that repoman knows where it is, and the manifest recommit is at least possible.
if options.mode == 'commit' and repolevel not in [1,2,3]:
- print red("***")+" Commit attempts *must* be from within a vcs co, category, or package directory."
- print red("***")+" Attempting to commit from a packages files directory will be blocked for instance."
- print red("***")+" This is intended behaviour, to ensure the manifest is recommited for a package."
- print red("***")
+ print(red("***")+" Commit attempts *must* be from within a vcs co, category, or package directory.")
+ print(red("***")+" Attempting to commit from a packages files directory will be blocked for instance.")
+ print(red("***")+" This is intended behaviour, to ensure the manifest is recommited for a package.")
+ print(red("***"))
err("Unable to identify level we're commiting from for %s" % '/'.join(reposplit))
startdir = normalize_path(mydir)
if x[0] == "~":
continue
if x not in profiles:
- print red("\""+x+"\" doesn't have a valid profile listed in profiles.desc.")
- print red("You need to either \"cvs update\" your profiles dir or follow this")
- print red("up with the "+x+" team.")
- print
+ print(red("\""+x+"\" doesn't have a valid profile listed in profiles.desc."))
+ print(red("You need to either \"cvs update\" your profiles dir or follow this"))
+ print(red("up with the "+x+" team."))
+ print()
if not liclist:
logging.fatal("Couldn't find licenses?")
if options.mode == "manifest":
pass
elif not find_binary('xmllint'):
- print red("!!! xmllint not found. Can't check metadata.xml.\n")
+ print(red("!!! xmllint not found. Can't check metadata.xml.\n"))
if options.xml_parse or repolevel==3:
- print red("!!!")+" sorry, xmllint is needed. failing\n"
+ print(red("!!!")+" sorry, xmllint is needed. failing\n")
sys.exit(1)
else:
#hardcoded paths/urls suck. :-/
except (OSError,IOError) as e:
if e.errno != 2:
- print red("!!!")+" caught exception '%s' for %s/metadata.dtd, bailing" % (str(e), portage.CACHE_PATH)
+ print(red("!!!")+" caught exception '%s' for %s/metadata.dtd, bailing" % (str(e), portage.CACHE_PATH))
sys.exit(1)
if must_fetch:
- print
- print green("***")+" the local copy of metadata.dtd needs to be refetched, doing that now"
- print
+ print()
+ print(green("***")+" the local copy of metadata.dtd needs to be refetched, doing that now")
+ print()
val = 0
try:
try:
except SystemExit as e:
raise # Need to propogate this
except Exception as e:
- print
- print red("!!!")+" attempting to fetch 'http://www.gentoo.org/dtd/metadata.dtd', caught"
- print red("!!!")+" exception '%s' though." % str(e)
+ print()
+ print(red("!!!")+" attempting to fetch 'http://www.gentoo.org/dtd/metadata.dtd', caught")
+ print(red("!!!")+" exception '%s' though." % str(e))
val=0
if not val:
- print red("!!!")+" fetching new metadata.dtd failed, aborting"
+ print(red("!!!")+" fetching new metadata.dtd failed, aborting")
sys.exit(1)
#this can be problematic if xmllint changes their output
xmllint_capable=True
if options.mode == "manifest":
pass
elif options.pretend:
- print green("\nRepoMan does a once-over of the neighborhood...")
+ print(green("\nRepoMan does a once-over of the neighborhood..."))
else:
- print green("\nRepoMan scours the neighborhood...")
+ print(green("\nRepoMan scours the neighborhood..."))
new_ebuilds = set()
modified_changelogs = set()
repoman_settings["O"] = checkdir
if not portage.digestgen([], repoman_settings, myportdb=portdb):
- print "Unable to generate manifest."
+ print("Unable to generate manifest.")
dofail = 1
if options.mode == "manifest":
if not dofail and options.force and auto_assumed and \
"xmllint --nonet --noout --dtdvalid '%s' '%s'" % \
(metadata_dtd, os.path.join(checkdir, "metadata.xml")))
if st != os.EX_OK:
- print red("!!!") + " metadata.xml is invalid:"
+ print(red("!!!") + " metadata.xml is invalid:")
for z in out.splitlines():
- print red("!!! ")+z
+ print(red("!!! ")+z)
stats["metadata.bad"]+=1
fails["metadata.bad"].append(x+"/metadata.xml")
fails["ebuild.invalidname"].append(x+"/"+y+".ebuild")
continue
elif myesplit[0]!=pkgdir:
- print pkgdir,myesplit[0]
+ print(pkgdir,myesplit[0])
stats["ebuild.namenomatch"]=stats["ebuild.namenomatch"]+1
fails["ebuild.namenomatch"].append(x+"/"+y+".ebuild")
continue
suggest_include_dev = True
if suggest_ignore_masked or suggest_include_dev:
- print
+ print()
if suggest_ignore_masked:
- print bold("Note: use --without-mask to check " + \
- "KEYWORDS on dependencies of masked packages")
+ print(bold("Note: use --without-mask to check " + \
+ "KEYWORDS on dependencies of masked packages"))
if suggest_include_dev:
- print bold("Note: use --include-dev (-d) to check " + \
- "dependencies for 'dev' profiles")
- print
+ print(bold("Note: use --include-dev (-d) to check " + \
+ "dependencies for 'dev' profiles"))
+ print()
if options.mode != 'commit':
if dofull:
- print bold("Note: type \"repoman full\" for a complete listing.")
+ print(bold("Note: type \"repoman full\" for a complete listing."))
if dowarn and not dofail:
- print green("RepoMan sez:"),"\"You're only giving me a partial QA payment?\n I'll take it this time, but I'm not happy.\""
+ print(green("RepoMan sez:"),"\"You're only giving me a partial QA payment?\n I'll take it this time, but I'm not happy.\"")
elif not dofail:
- print green("RepoMan sez:"),"\"If everyone were like you, I'd be out of business!\""
+ print(green("RepoMan sez:"),"\"If everyone were like you, I'd be out of business!\"")
elif dofail:
- print turquoise("Please fix these important QA issues first.")
- print green("RepoMan sez:"),"\"Make your QA payment on time and you'll never see the likes of me.\"\n"
+ print(turquoise("Please fix these important QA issues first."))
+ print(green("RepoMan sez:"),"\"Make your QA payment on time and you'll never see the likes of me.\"\n")
sys.exit(1)
else:
if dofail and can_force and options.force and not options.pretend:
- print green("RepoMan sez:") + \
+ print(green("RepoMan sez:") + \
" \"You want to commit even with these QA issues?\n" + \
- " I'll take it this time, but I'm not happy.\"\n"
+ " I'll take it this time, but I'm not happy.\"\n")
elif dofail:
if options.force and not can_force:
- print bad("The --force option has been disabled due to extraordinary issues.")
- print turquoise("Please fix these important QA issues first.")
- print green("RepoMan sez:"),"\"Make your QA payment on time and you'll never see the likes of me.\"\n"
+ print(bad("The --force option has been disabled due to extraordinary issues."))
+ print(turquoise("Please fix these important QA issues first."))
+ print(green("RepoMan sez:"),"\"Make your QA payment on time and you'll never see the likes of me.\"\n")
sys.exit(1)
if options.pretend:
- print green("RepoMan sez:"), "\"So, you want to play it safe. Good call.\"\n"
+ print(green("RepoMan sez:"), "\"So, you want to play it safe. Good call.\"\n")
myunadded = []
if vcs == "cvs":
for x in range(len(myunadded)-1,-1,-1):
xs=myunadded[x].split("/")
if xs[-1]=="files":
- print "!!! files dir is not added! Please correct this."
+ print("!!! files dir is not added! Please correct this.")
sys.exit(-1)
elif xs[-1]=="Manifest":
# It's a manifest... auto add
del myunadded[x]
if myautoadd:
- print ">>> Auto-Adding missing Manifest(s)..."
+ print(">>> Auto-Adding missing Manifest(s)...")
if options.pretend:
if vcs == "cvs":
- print "(cvs add "+" ".join(myautoadd)+")"
+ print("(cvs add "+" ".join(myautoadd)+")")
if vcs == "svn":
- print "(svn add "+" ".join(myautoadd)+")"
+ print("(svn add "+" ".join(myautoadd)+")")
elif vcs == "git":
- print "(git add "+" ".join(myautoadd)+")"
+ print("(git add "+" ".join(myautoadd)+")")
retval=0
else:
if vcs == "cvs":
sys.exit(retval)
if myunadded:
- print red("!!! The following files are in your local tree but are not added to the master")
- print red("!!! tree. Please remove them from the local tree or add them to the master tree.")
+ print(red("!!! The following files are in your local tree but are not added to the master"))
+ print(red("!!! tree. Please remove them from the local tree or add them to the master tree."))
for x in myunadded:
- print " ",x
- print
- print
+ print(" ",x)
+ print()
+ print()
sys.exit(1)
if vcs == "cvs":
if vcs:
if not (mychanged or mynew or myremoved):
- print green("RepoMan sez:"), "\"Doing nothing is not always good for QA.\""
- print
- print "(Didn't find any changed files...)"
- print
+ print(green("RepoMan sez:"), "\"Doing nothing is not always good for QA.\"")
+ print()
+ print("(Didn't find any changed files...)")
+ print()
sys.exit(1)
# Manifests need to be regenerated after all other commits, so don't commit
if myout[0] == 0:
myheaders.append(myfile)
- print "* %s files being committed..." % green(str(len(myupdates))),
+ print("* %s files being committed..." % green(str(len(myupdates))), end=' ')
if vcs == 'git':
# With git, there's never any keyword expansion, so there's
# no need to regenerate manifests and all files will be
# committed in one big commit at the end.
- print
+ print()
else:
- print "%s have headers that will change." % green(str(len(myheaders)))
- print "* Files with headers will cause the " + \
- "manifests to be made and recommited."
+ print("%s have headers that will change." % green(str(len(myheaders))))
+ print("* Files with headers will cause the " + \
+ "manifests to be made and recommited.")
logging.info("myupdates: %s", myupdates)
logging.info("myheaders: %s", myheaders)
except KeyboardInterrupt:
exithandler()
if not commitmessage or not commitmessage.strip():
- print "* no commit message? aborting commit."
+ print("* no commit message? aborting commit.")
sys.exit(1)
commitmessage = commitmessage.rstrip()
portage_version = getattr(portage, "VERSION", None)
mymsg.write(commitmessage)
mymsg.close()
- print
- print green("Using commit message:")
- print green("------------------------------------------------------------------------------")
- print commitmessage
- print green("------------------------------------------------------------------------------")
- print
+ print()
+ print(green("Using commit message:"))
+ print(green("------------------------------------------------------------------------------"))
+ print(commitmessage)
+ print(green("------------------------------------------------------------------------------"))
+ print()
# Having a leading ./ prefix on file paths can trigger a bug in
# the cvs server when committing files to multiple directories,
try:
if options.pretend:
- print "(%s)" % (" ".join(commit_cmd),)
+ print("(%s)" % (" ".join(commit_cmd),))
else:
retval = spawn(commit_cmd, env=os.environ)
if retval != os.EX_OK:
if "PORTAGE_GPG_DIR" in repoman_settings:
gpgcmd += " --homedir "+repoman_settings["PORTAGE_GPG_DIR"]
if options.pretend:
- print "("+gpgcmd+" "+filename+")"
+ print("("+gpgcmd+" "+filename+")")
else:
rValue = os.system(gpgcmd+" "+filename)
if rValue == os.EX_OK:
portage.digestgen([], repoman_settings, manifestonly=1,
myportdb=portdb)
elif repolevel==1: # repo-cvsroot
- print green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n"
+ print(green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n")
for x in myfiles:
xs=x.split("/")
if len(xs) < 4-repolevel:
portage.digestgen([], repoman_settings, manifestonly=1,
myportdb=portdb)
else:
- print red("I'm confused... I don't know where I am!")
+ print(red("I'm confused... I don't know where I am!"))
sys.exit(1)
# Force an unsigned commit when more than one Manifest needs to be signed.
try:
if options.pretend:
- print "(%s)" % (" ".join(commit_cmd),)
+ print("(%s)" % (" ".join(commit_cmd),))
else:
retval = spawn(commit_cmd, env=os.environ)
if retval:
continue
gpgsign(os.path.join(repoman_settings["O"], "Manifest"))
elif repolevel==1: # repo-cvsroot
- print green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n"
+ print(green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n")
mydone=[]
for x in myfiles:
xs=x.split("/")
update_index_cmd = ["git", "update-index"]
update_index_cmd.extend(f.lstrip("./") for f in myfiles)
if options.pretend:
- print "(%s)" % (" ".join(update_index_cmd),)
+ print("(%s)" % (" ".join(update_index_cmd),))
else:
retval = spawn(update_index_cmd, env=os.environ)
if retval != os.EX_OK:
try:
if options.pretend:
- print "(%s)" % (" ".join(commit_cmd),)
+ print("(%s)" % (" ".join(commit_cmd),))
else:
retval = spawn(commit_cmd, env=os.environ)
if retval != os.EX_OK:
except OSError:
pass
- print
+ print()
if vcs:
- print "Commit complete."
+ print("Commit complete.")
else:
- print "repoman was too scared by not seeing any familiar version control file that he forgot to commit anything"
- print green("RepoMan sez:"), "\"If everyone were like you, I'd be out of business!\"\n"
+ print("repoman was too scared by not seeing any familiar version control file that he forgot to commit anything")
+ print(green("RepoMan sez:"), "\"If everyone were like you, I'd be out of business!\"\n")
sys.exit(0)
root_msg = ""
if mysettings["ROOT"] != "/":
root_msg = " merged to %s" % mysettings["ROOT"]
- print
+ print()
printer.einfo("Error messages for package %s%s:" % \
(colorize("INFORM", key), root_msg))
- print
+ print()
for phase in portage.const.EBUILD_PHASES:
if phase not in logentries:
continue
@rtype: bool
@returns: True if successful, False otherwise.
"""
- print colorize("GOOD", "*** Resuming merge...")
+ print(colorize("GOOD", "*** Resuming merge..."))
if self._show_list():
if "--tree" in self.myopts:
"--nodeps" not in self.myopts
if show_spinner:
- print "Calculating dependencies ",
+ print("Calculating dependencies ", end=' ')
myparams = create_depgraph_params(self.myopts, None)
success = False
dropped_tasks = set()
if show_spinner:
- print "\b\b... done!"
+ print("\b\b... done!")
if e is not None:
def unsatisfied_resume_dep_msg():
else:
action = "merged"
if "--tree" in myopts and action != "fetched": # Tree doesn't work with fetching
- print
- print darkgreen("These are the packages that would be %s, in reverse order:") % action
- print
+ print()
+ print(darkgreen("These are the packages that would be %s, in reverse order:") % action)
+ print()
else:
- print
- print darkgreen("These are the packages that would be %s, in order:") % action
- print
+ print()
+ print(darkgreen("These are the packages that would be %s, in order:") % action)
+ print()
show_spinner = "--quiet" not in myopts and "--nodeps" not in myopts
if not show_spinner:
favorites = []
if show_spinner:
- print "Calculating dependencies ",
+ print("Calculating dependencies ", end=' ')
myparams = create_depgraph_params(myopts, myaction)
resume_data = mtimedb["resume"]
if isinstance(e, depgraph.UnsatisfiedResumeDep):
mydepgraph = e.depgraph
if show_spinner:
- print
+ print()
from textwrap import wrap
from portage.output import EOutput
out = EOutput()
out.eerror(line)
else:
if show_spinner:
- print "\b\b... done!"
+ print("\b\b... done!")
if success:
if dropped_tasks:
return 1
else:
if ("--resume" in myopts):
- print darkgreen("emerge: It seems we have nothing to resume...")
+ print(darkgreen("emerge: It seems we have nothing to resume..."))
return os.EX_OK
if "--quiet" not in myopts and "--nodeps" not in myopts:
- print "Calculating dependencies ",
+ print("Calculating dependencies ", end=' ')
sys.stdout.flush()
myparams = create_depgraph_params(myopts, myaction)
settings, trees, myopts, myparams, myaction, myfiles, spinner)
except portage.exception.PackageSetNotFound as e:
if show_spinner:
- print "\b\b... done!"
+ print("\b\b... done!")
root_config = trees[settings["ROOT"]]["root_config"]
display_missing_pkg_set(root_config, e.value)
return 1
if show_spinner:
- print "\b\b... done!"
+ print("\b\b... done!")
if not success:
mydepgraph.display_problems()
if "--resume" in myopts:
mymergelist = mydepgraph.altlist()
if len(mymergelist) == 0:
- print colorize("INFORM", "emerge: It seems we have nothing to resume...")
+ print(colorize("INFORM", "emerge: It seems we have nothing to resume..."))
return os.EX_OK
favorites = mtimedb["resume"]["favorites"]
retval = mydepgraph.display(
not sets[x[1:]].world_candidate)]
if "--noreplace" in myopts and \
not oneshot and world_candidates:
- print
+ print()
for x in world_candidates:
- print " %s %s" % (good("*"), x)
+ print(" %s %s" % (good("*"), x))
prompt="Would you like to add these packages to your world favorites?"
elif settings["AUTOCLEAN"] and "yes"==settings["AUTOCLEAN"]:
prompt="Nothing to merge; would you like to auto-clean packages?"
else:
- print
- print "Nothing to merge; quitting."
- print
+ print()
+ print("Nothing to merge; quitting.")
+ print()
return os.EX_OK
elif "--fetchonly" in myopts or "--fetch-all-uri" in myopts:
prompt="Would you like to fetch the source files for these packages?"
else:
prompt="Would you like to merge these packages?"
- print
+ print()
if "--ask" in myopts and userquery(prompt) == "No":
- print
- print "Quitting."
- print
+ print()
+ print("Quitting.")
+ print()
return os.EX_OK
# Don't ask again (e.g. when auto-cleaning packages after merge)
myopts.pop("--ask", None)
if ("--resume" in myopts):
mymergelist = mydepgraph.altlist()
if len(mymergelist) == 0:
- print colorize("INFORM", "emerge: It seems we have nothing to resume...")
+ print(colorize("INFORM", "emerge: It seems we have nothing to resume..."))
return os.EX_OK
favorites = mtimedb["resume"]["favorites"]
retval = mydepgraph.display(
graph_copy.difference_update(removed_nodes)
if not graph_copy.hasallzeros(ignore_priority = \
DepPrioritySatisfiedRange.ignore_medium):
- print "\n!!! --buildpkgonly requires all dependencies to be merged."
- print "!!! You have to merge the dependencies before you can build this package.\n"
+ print("\n!!! --buildpkgonly requires all dependencies to be merged.")
+ print("!!! You have to merge the dependencies before you can build this package.\n")
return 1
else:
if "--buildpkgonly" in myopts:
graph_copy.difference_update(removed_nodes)
if not graph_copy.hasallzeros(ignore_priority = \
DepPrioritySatisfiedRange.ignore_medium):
- print "\n!!! --buildpkgonly requires all dependencies to be merged."
- print "!!! Cannot merge requested packages. Merge deps and try again.\n"
+ print("\n!!! --buildpkgonly requires all dependencies to be merged.")
+ print("!!! Cannot merge requested packages. Merge deps and try again.\n")
return 1
if ("--resume" in myopts):
def action_config(settings, trees, myopts, myfiles):
if len(myfiles) != 1:
- print red("!!! config can only take a single package atom at this time\n")
+ print(red("!!! config can only take a single package atom at this time\n"))
sys.exit(1)
if not is_valid_package_atom(myfiles[0]):
portage.writemsg("!!! '%s' is not a valid package atom.\n" % myfiles[0],
portage.writemsg("!!! Please check ebuild(5) for full details.\n")
portage.writemsg("!!! (Did you specify a version but forget to prefix with '='?)\n")
sys.exit(1)
- print
+ print()
try:
pkgs = trees[settings["ROOT"]]["vartree"].dbapi.match(myfiles[0])
except portage.exception.AmbiguousPackageName as e:
# Multiple matches thrown from cpv_expand
pkgs = e.args[0]
if len(pkgs) == 0:
- print "No packages found.\n"
+ print("No packages found.\n")
sys.exit(0)
elif len(pkgs) > 1:
if "--ask" in myopts:
options = []
- print "Please select a package to configure:"
+ print("Please select a package to configure:")
idx = 0
for pkg in pkgs:
idx += 1
options.append(str(idx))
- print options[-1]+") "+pkg
- print "X) Cancel"
+ print(options[-1]+") "+pkg)
+ print("X) Cancel")
options.append("X")
idx = userquery("Selection?", options)
if idx == "X":
sys.exit(0)
pkg = pkgs[int(idx)-1]
else:
- print "The following packages available:"
+ print("The following packages available:")
for pkg in pkgs:
- print "* "+pkg
- print "\nPlease use a specific atom or the --ask option."
+ print("* "+pkg)
+ print("\nPlease use a specific atom or the --ask option.")
sys.exit(1)
else:
pkg = pkgs[0]
- print
+ print()
if "--ask" in myopts:
if userquery("Ready to configure "+pkg+"?") == "No":
sys.exit(0)
else:
- print "Configuring pkg..."
- print
+ print("Configuring pkg...")
+ print()
ebuildpath = trees[settings["ROOT"]]["vartree"].dbapi.findname(pkg)
mysettings = portage.config(clone=settings)
vardb = trees[mysettings["ROOT"]]["vartree"].dbapi
if retval == os.EX_OK:
portage.doebuild(ebuildpath, "clean", mysettings["ROOT"],
mysettings, debug=debug, mydbapi=vardb, tree="vartree")
- print
+ print()
def action_depclean(settings, trees, ldpath_mtimes,
myopts, action, myfiles, spinner):
if not cleanlist and "--quiet" in myopts:
return
- print "Packages installed: " + str(len(vardb.cpv_all()))
- print "Packages in world: " + \
- str(len(root_config.sets["world"].getAtoms()))
- print "Packages in system: " + \
- str(len(root_config.sets["system"].getAtoms()))
- print "Required packages: "+str(req_pkg_count)
+ print("Packages installed: " + str(len(vardb.cpv_all())))
+ print("Packages in world: " + \
+ str(len(root_config.sets["world"].getAtoms())))
+ print("Packages in system: " + \
+ str(len(root_config.sets["system"].getAtoms())))
+ print("Required packages: "+str(req_pkg_count))
if "--pretend" in myopts:
- print "Number to remove: "+str(len(cleanlist))
+ print("Number to remove: "+str(len(cleanlist)))
else:
- print "Number removed: "+str(len(cleanlist))
+ print("Number removed: "+str(len(cleanlist)))
def calc_depclean(settings, trees, ldpath_mtimes,
myopts, action, args_set, spinner):
break
if discard_atoms:
for atom in sorted(discard_atoms):
- print ">>> Removing %s from \"world\" favorites file..." % \
- colorize("INFORM", str(atom))
+ print(">>> Removing %s from \"world\" favorites file..." % \
+ colorize("INFORM", str(atom)))
if '--ask' in opts:
prompt = "Would you like to remove these " + \
if not pretend:
world_set.replace(remaining)
else:
- print ">>> No matching atoms found in \"world\" favorites file..."
+ print(">>> No matching atoms found in \"world\" favorites file...")
finally:
if locked:
world_set.unlock()
return os.EX_OK
def action_info(settings, trees, myopts, myfiles):
- print getportageversion(settings["PORTDIR"], settings["ROOT"],
+ print(getportageversion(settings["PORTDIR"], settings["ROOT"],
settings.profile_path, settings["CHOST"],
- trees[settings["ROOT"]]["vartree"].dbapi)
+ trees[settings["ROOT"]]["vartree"].dbapi))
header_width = 65
header_title = "System Settings"
if myfiles:
- print header_width * "="
- print header_title.rjust(int(header_width/2 + len(header_title)/2))
- print header_width * "="
- print "System uname: "+platform.platform(aliased=1)
+ print(header_width * "=")
+ print(header_title.rjust(int(header_width/2 + len(header_title)/2)))
+ print(header_width * "=")
+ print("System uname: "+platform.platform(aliased=1))
lastSync = portage.grabfile(os.path.join(
settings["PORTDIR"], "metadata", "timestamp.chk"))
- print "Timestamp of tree:",
+ print("Timestamp of tree:", end=' ')
if lastSync:
- print lastSync[0]
+ print(lastSync[0])
else:
- print "Unknown"
+ print("Unknown")
output=commands.getstatusoutput("distcc --version")
if not output[0]:
- print str(output[1].split("\n",1)[0]),
+ print(str(output[1].split("\n",1)[0]), end=' ')
if "distcc" in settings.features:
- print "[enabled]"
+ print("[enabled]")
else:
- print "[disabled]"
+ print("[disabled]")
output=commands.getstatusoutput("ccache -V")
if not output[0]:
- print str(output[1].split("\n",1)[0]),
+ print(str(output[1].split("\n",1)[0]), end=' ')
if "ccache" in settings.features:
- print "[enabled]"
+ print("[enabled]")
else:
- print "[disabled]"
+ print("[disabled]")
myvars = ["sys-devel/autoconf", "sys-devel/automake", "virtual/os-headers",
"sys-devel/binutils", "sys-devel/libtool", "dev-lang/python"]
pkgs.append(ver)
if pkgs:
pkgs = ", ".join(pkgs)
- print "%-20s %s" % (x+":", pkgs)
+ print("%-20s %s" % (x+":", pkgs))
else:
- print "%-20s %s" % (x+":", "[NOT VALID]")
+ print("%-20s %s" % (x+":", "[NOT VALID]"))
libtool_vers = ",".join(trees["/"]["vartree"].dbapi.match("sys-devel/libtool"))
for x in myvars:
if x in settings:
if x != "USE":
- print '%s="%s"' % (x, settings[x])
+ print('%s="%s"' % (x, settings[x]))
else:
use = set(settings["USE"].split())
for varname in use_expand:
use.remove(f)
use = list(use)
use.sort()
- print 'USE="%s"' % " ".join(use),
+ print('USE="%s"' % " ".join(use), end=' ')
for varname in use_expand:
myval = settings.get(varname)
if myval:
- print '%s="%s"' % (varname, myval),
- print
+ print('%s="%s"' % (varname, myval), end=' ')
+ print()
else:
unset_vars.append(x)
if unset_vars:
- print "Unset: "+", ".join(unset_vars)
- print
+ print("Unset: "+", ".join(unset_vars))
+ print()
if "--debug" in myopts:
for x in dir(portage):
module = getattr(portage, x)
if "cvs_id_string" in dir(module):
- print "%s: %s" % (str(x), str(module.cvs_id_string))
+ print("%s: %s" % (str(x), str(module.cvs_id_string)))
# See if we can find any packages installed matching the strings
# passed on the command line
# Loop through each package
# Only print settings if they differ from global settings
header_title = "Package Settings"
- print header_width * "="
- print header_title.rjust(int(header_width/2 + len(header_title)/2))
- print header_width * "="
+ print(header_width * "=")
+ print(header_title.rjust(int(header_width/2 + len(header_title)/2)))
+ print(header_width * "=")
from portage.output import EOutput
out = EOutput()
for cpv in mypkgs:
(metadata.get(x, '') for x in Package.metadata_keys)),
root_config=root_config, type_name='installed')
- print "\n%s was built with the following:" % \
- colorize("INFORM", str(pkg.cpv))
+ print("\n%s was built with the following:" % \
+ colorize("INFORM", str(pkg.cpv)))
pkgsettings.setcpv(pkg)
forced_flags = set(chain(pkgsettings.useforce,
flags.sort(key=UseFlagDisplay.sort_combined)
else:
flags.sort(key=UseFlagDisplay.sort_separated)
- print '%s="%s"' % (varname, ' '.join(str(f) for f in flags)),
- print
+ print('%s="%s"' % (varname, ' '.join(str(f) for f in flags)), end=' ')
+ print()
for myvar in mydesiredvars:
if metadata[myvar].split() != settings.get(myvar, '').split():
- print "%s=\"%s\"" % (myvar, metadata[myvar])
- print
+ print("%s=\"%s\"" % (myvar, metadata[myvar]))
+ print()
if metadata['DEFINED_PHASES']:
if 'info' not in metadata['DEFINED_PHASES'].split():
continue
- print ">>> Attempting to run pkg_info() for '%s'" % pkg.cpv
+ print(">>> Attempting to run pkg_info() for '%s'" % pkg.cpv)
ebuildpath = vardb.findname(pkg.cpv)
if not ebuildpath or not os.path.exists(ebuildpath):
out.ewarn("No ebuild found for '%s'" % pkg.cpv)
if cachedir in ["/", "/bin", "/dev", "/etc", "/home",
"/lib", "/opt", "/proc", "/root", "/sbin",
"/sys", "/tmp", "/usr", "/var"]:
- print >> sys.stderr, "!!! PORTAGE_DEPCACHEDIR IS SET TO A PRIMARY " + \
- "ROOT DIRECTORY ON YOUR SYSTEM."
- print >> sys.stderr, \
- "!!! This is ALMOST CERTAINLY NOT what you want: '%s'" % cachedir
+ print("!!! PORTAGE_DEPCACHEDIR IS SET TO A PRIMARY " + \
+ "ROOT DIRECTORY ON YOUR SYSTEM.", file=sys.stderr)
+ print("!!! This is ALMOST CERTAINLY NOT what you want: '%s'" % cachedir, file=sys.stderr)
sys.exit(73)
if not os.path.exists(cachedir):
os.makedirs(cachedir)
if not quiet:
# make sure the final progress is displayed
progressHandler.display()
- print
+ print()
signal.signal(signal.SIGWINCH, signal.SIG_DFL)
sys.stdout.flush()
def action_search(root_config, myopts, myfiles, spinner):
if not myfiles:
- print "emerge: no search terms provided."
+ print("emerge: no search terms provided.")
else:
searchinstance = search(root_config,
spinner, "--searchdesc" in myopts,
try:
searchinstance.execute(mysearch)
except re.error as comment:
- print "\n!!! Regular expression error in \"%s\": %s" % ( mysearch, comment )
+ print("\n!!! Regular expression error in \"%s\": %s" % ( mysearch, comment ))
sys.exit(1)
searchinstance.output()
except OSError:
st = None
if st is None:
- print ">>>",myportdir,"not found, creating it."
+ print(">>>",myportdir,"not found, creating it.")
os.makedirs(myportdir,0755)
st = os.stat(myportdir)
dosyncuri = syncuri
updatecache_flg = False
if myaction == "metadata":
- print "skipping sync"
+ print("skipping sync")
updatecache_flg = True
elif ".git" in vcs_dirs:
# Update existing git repository, and ignore the syncuri. We are
(myportdir, vcs_dir), level=logging.ERROR, noiselevel=-1)
return 1
if not os.path.exists("/usr/bin/rsync"):
- print "!!! /usr/bin/rsync does not exist, so rsync support is disabled."
- print "!!! Type \"emerge net-misc/rsync\" to enable rsync support."
+ print("!!! /usr/bin/rsync does not exist, so rsync support is disabled.")
+ print("!!! Type \"emerge net-misc/rsync\" to enable rsync support.")
sys.exit(1)
mytimeout=180
except SystemExit as e:
raise # Needed else can't exit
except Exception as e:
- print "Notice:",str(e)
+ print("Notice:",str(e))
dosyncuri=syncuri
if ips:
except SystemExit as e:
raise # Needed else can't exit
except Exception as e:
- print "Notice:",str(e)
+ print("Notice:",str(e))
dosyncuri=syncuri
if (retries==0):
if "--ask" in myopts:
if userquery("Do you want to sync your Portage tree with the mirror at\n" + blue(dosyncuri) + bold("?"))=="No":
- print
- print "Quitting."
- print
+ print()
+ print("Quitting.")
+ print()
sys.exit(0)
emergelog(xterm_titles, ">>> Starting rsync with " + dosyncuri)
if "--quiet" not in myopts:
- print ">>> Starting rsync with "+dosyncuri+"..."
+ print(">>> Starting rsync with "+dosyncuri+"...")
else:
emergelog(xterm_titles,
">>> Starting retry %d of %d with %s" % \
(retries,maxretries,dosyncuri))
- print "\n\n>>> Starting retry %d of %d with %s" % (retries,maxretries,dosyncuri)
+ print("\n\n>>> Starting retry %d of %d with %s" % (retries,maxretries,dosyncuri))
if mytimestamp != 0 and "--quiet" not in myopts:
- print ">>> Checking server timestamp ..."
+ print(">>> Checking server timestamp ...")
rsynccommand = ["/usr/bin/rsync"] + rsync_opts + extra_rsync_opts
if "--debug" in myopts:
- print rsynccommand
+ print(rsynccommand)
exitcode = os.EX_OK
servertimestamp = 0
pass
except portage.exception.PortageException as e:
# timed out
- print e
+ print(e)
del e
if mypids and os.waitpid(mypids[0], os.WNOHANG) == (0,0):
os.kill(mypids[0], signal.SIGTERM)
if (servertimestamp != 0) and (servertimestamp == mytimestamp):
emergelog(xterm_titles,
">>> Cancelling sync -- Already current.")
- print
- print ">>>"
- print ">>> Timestamps on the server and in the local repository are the same."
- print ">>> Cancelling all further sync action. You are already up to date."
- print ">>>"
- print ">>> In order to force sync, remove '%s'." % servertimestampfile
- print ">>>"
- print
+ print()
+ print(">>>")
+ print(">>> Timestamps on the server and in the local repository are the same.")
+ print(">>> Cancelling all further sync action. You are already up to date.")
+ print(">>>")
+ print(">>> In order to force sync, remove '%s'." % servertimestampfile)
+ print(">>>")
+ print()
sys.exit(0)
elif (servertimestamp != 0) and (servertimestamp < mytimestamp):
emergelog(xterm_titles,
">>> Server out of date: %s" % dosyncuri)
- print
- print ">>>"
- print ">>> SERVER OUT OF DATE: %s" % dosyncuri
- print ">>>"
- print ">>> In order to force sync, remove '%s'." % servertimestampfile
- print ">>>"
- print
+ print()
+ print(">>>")
+ print(">>> SERVER OUT OF DATE: %s" % dosyncuri)
+ print(">>>")
+ print(">>> In order to force sync, remove '%s'." % servertimestampfile)
+ print(">>>")
+ print()
exitcode = SERVER_OUT_OF_DATE
elif (servertimestamp == 0) or (servertimestamp > mytimestamp):
# actual sync
retries=retries+1
if retries<=maxretries:
- print ">>> Retrying..."
+ print(">>> Retrying...")
time.sleep(11)
else:
# over retries
sys.exit(exitcode)
elif syncuri[:6]=="cvs://":
if not os.path.exists("/usr/bin/cvs"):
- print "!!! /usr/bin/cvs does not exist, so CVS support is disabled."
- print "!!! Type \"emerge dev-util/cvs\" to enable CVS support."
+ print("!!! /usr/bin/cvs does not exist, so CVS support is disabled.")
+ print("!!! Type \"emerge dev-util/cvs\" to enable CVS support.")
sys.exit(1)
cvsroot=syncuri[6:]
cvsdir=os.path.dirname(myportdir)
if not os.path.exists(myportdir+"/CVS"):
#initial checkout
- print ">>> Starting initial cvs checkout with "+syncuri+"..."
+ print(">>> Starting initial cvs checkout with "+syncuri+"...")
if os.path.exists(cvsdir+"/gentoo-x86"):
- print "!!! existing",cvsdir+"/gentoo-x86 directory; exiting."
+ print("!!! existing",cvsdir+"/gentoo-x86 directory; exiting.")
sys.exit(1)
try:
os.rmdir(myportdir)
sys.exit(1)
del e
if portage.spawn("cd "+cvsdir+"; cvs -z0 -d "+cvsroot+" co -P gentoo-x86",settings,free=1):
- print "!!! cvs checkout error; exiting."
+ print("!!! cvs checkout error; exiting.")
sys.exit(1)
os.rename(os.path.join(cvsdir, "gentoo-x86"), myportdir)
else:
#cvs update
- print ">>> Starting cvs update with "+syncuri+"..."
+ print(">>> Starting cvs update with "+syncuri+"...")
retval = portage.process.spawn_bash(
"cd %s; cvs -z0 -q update -dP" % \
(portage._shell_quote(myportdir),), **spawn_kwargs)
retval = portage.process.spawn(
[postsync, dosyncuri], env=settings.environ())
if retval != os.EX_OK:
- print red(" * ") + bold("spawn failed of " + postsync)
+ print(red(" * ") + bold("spawn failed of " + postsync))
if(mybestpv != mypvs) and not "--quiet" in myopts:
- print
- print red(" * ")+bold("An update to portage is available.")+" It is _highly_ recommended"
- print red(" * ")+"that you update portage now, before any other packages are updated."
- print
- print red(" * ")+"To update portage, run 'emerge portage' now."
- print
+ print()
+ print(red(" * ")+bold("An update to portage is available.")+" It is _highly_ recommended")
+ print(red(" * ")+"that you update portage now, before any other packages are updated.")
+ print()
+ print(red(" * ")+"To update portage, run 'emerge portage' now.")
+ print()
display_news_notification(root_config, myopts)
return os.EX_OK
portage.util.find_updated_config_files(target_root, config_protect))
for x in result:
- print "\n"+colorize("WARN", " * IMPORTANT:"),
+ print("\n"+colorize("WARN", " * IMPORTANT:"), end=' ')
if not x[1]: # it's a protected file
- print "config file '%s' needs updating." % x[0]
+ print("config file '%s' needs updating." % x[0])
else: # it's a protected dir
- print "%d config files in '%s' need updating." % (len(x[1]), x[0])
+ print("%d config files in '%s' need updating." % (len(x[1]), x[0]))
if result:
- print " "+yellow("*")+" See the "+colorize("INFORM","CONFIGURATION FILES")\
- + " section of the " + bold("emerge")
- print " "+yellow("*")+" man page to learn how to update config files."
+ print(" "+yellow("*")+" See the "+colorize("INFORM","CONFIGURATION FILES")\
+ + " section of the " + bold("emerge"))
+ print(" "+yellow("*")+" man page to learn how to update config files.")
def display_news_notification(root_config, myopts):
target_root = root_config.root
if unreadItems:
if not newsReaderDisplay:
newsReaderDisplay = True
- print
- print colorize("WARN", " * IMPORTANT:"),
- print "%s news items need reading for repository '%s'." % (unreadItems, repo)
+ print()
+ print(colorize("WARN", " * IMPORTANT:"), end=' ')
+ print("%s news items need reading for repository '%s'." % (unreadItems, repo))
if newsReaderDisplay:
- print colorize("WARN", " *"),
- print "Use " + colorize("GOOD", "eselect news") + " to read news items."
- print
+ print(colorize("WARN", " *"), end=' ')
+ print("Use " + colorize("GOOD", "eselect news") + " to read news items.")
+ print()
def getgccversion(chost):
"""
def countdown(secs=5, doing="Starting"):
if secs:
- print ">>> Waiting",secs,"seconds before starting..."
- print ">>> (Control-C to abort)...\n"+doing+" in: ",
+ print(">>> Waiting",secs,"seconds before starting...")
+ print(">>> (Control-C to abort)...\n"+doing+" in: ", end=' ')
ticks=range(secs)
ticks.reverse()
for sec in ticks:
sys.stdout.write(colorize("UNMERGE_WARN", str(sec+1)+" "))
sys.stdout.flush()
time.sleep(1)
- print
+ print()
if not dep_string:
continue
if debug:
- print
- print "Parent: ", jbigkey
- print "Depstring:", dep_string
- print "Priority:", dep_priority
+ print()
+ print("Parent: ", jbigkey)
+ print("Depstring:", dep_string)
+ print("Priority:", dep_priority)
try:
strict = pkg.type_name != "installed"
if debug:
- print
- print "Parent: ", pkg
- print "Depstring:", dep_string
- print "Priority:", dep_priority
+ print()
+ print("Parent: ", pkg)
+ print("Depstring:", dep_string)
+ print("Priority:", dep_priority)
try:
selected_atoms = self._select_atoms(dep_root,
return 0
if debug:
- print "Candidates:", selected_atoms
+ print("Candidates:", selected_atoms)
vardb = self._frozen_config.roots[dep_root].trees["vartree"].dbapi
return 0
if debug:
- print "Exiting...", pkg
+ print("Exiting...", pkg)
return 1
os.path.join(pkgsettings["PKGDIR"], x)):
x = os.path.join(pkgsettings["PKGDIR"], x)
else:
- print "\n\n!!! Binary package '"+str(x)+"' does not exist."
- print "!!! Please ensure the tbz2 exists as specified.\n"
+ print("\n\n!!! Binary package '"+str(x)+"' does not exist.")
+ print("!!! Please ensure the tbz2 exists as specified.\n")
return 0, myfavorites
mytbz2=portage.xpak.tbz2(x)
mykey=mytbz2.getelements("CATEGORY")[0]+"/"+os.path.splitext(os.path.basename(x))[0]
if os.path.realpath(x) != \
os.path.realpath(self._frozen_config.trees[myroot]["bintree"].getname(mykey)):
- print colorize("BAD", "\n*** You need to adjust PKGDIR to emerge this package.\n")
+ print(colorize("BAD", "\n*** You need to adjust PKGDIR to emerge this package.\n"))
return 0, myfavorites
pkg = self._pkg(mykey, "binary", root_config,
if ebuild_path:
if ebuild_path != os.path.join(os.path.realpath(tree_root),
cp, os.path.basename(ebuild_path)):
- print colorize("BAD", "\n*** You need to adjust PORTDIR or PORTDIR_OVERLAY to emerge this package.\n")
+ print(colorize("BAD", "\n*** You need to adjust PORTDIR or PORTDIR_OVERLAY to emerge this package.\n"))
return 0, myfavorites
if mykey not in portdb.xmatch(
"match-visible", portage.dep_getkey(mykey)):
- print colorize("BAD", "\n*** You are emerging a masked package. It is MUCH better to use")
- print colorize("BAD", "*** /etc/portage/package.* to accomplish this. See portage(5) man")
- print colorize("BAD", "*** page for details.")
+ print(colorize("BAD", "\n*** You are emerging a masked package. It is MUCH better to use"))
+ print(colorize("BAD", "*** /etc/portage/package.* to accomplish this. See portage(5) man"))
+ print(colorize("BAD", "*** page for details."))
countdown(int(self._frozen_config.settings["EMERGE_WARNING_DELAY"]),
"Continuing...")
else:
if portage.dep_getkey(atom) == installed_cp]
if len(expanded_atoms) > 1:
- print
- print
+ print()
+ print()
ambiguous_package_name(x, expanded_atoms, root_config,
self._frozen_config.spinner, self._frozen_config.myopts)
return False, myfavorites
except SystemExit as e:
raise # Needed else can't exit
except Exception as e:
- print >> sys.stderr, "\n\n!!! Problem in '%s' dependencies." % atom
- print >> sys.stderr, "!!!", str(e), getattr(e, "__module__", None)
+ print("\n\n!!! Problem in '%s' dependencies." % atom, file=sys.stderr)
+ print("!!!", str(e), getattr(e, "__module__", None), file=sys.stderr)
raise
# Now that the root packages have been added to the graph,
continue
if len(xs) >= 4 and xs[0] != "binary" and xs[3] == "merge":
if missing == 0:
- print
+ print()
missing += 1
- print "Missing binary for:",xs[2]
+ print("Missing binary for:",xs[2])
try:
self.altlist()
show_missing_use = unmasked_iuse_reasons
if show_missing_use:
- print "\nemerge: there are no ebuilds built with USE flags to satisfy "+green(xinfo)+"."
- print "!!! One of the following packages is required to complete your request:"
+ print("\nemerge: there are no ebuilds built with USE flags to satisfy "+green(xinfo)+".")
+ print("!!! One of the following packages is required to complete your request:")
for pkg, mreasons in show_missing_use:
- print "- "+pkg.cpv+" ("+", ".join(mreasons)+")"
+ print("- "+pkg.cpv+" ("+", ".join(mreasons)+")")
elif masked_packages:
- print "\n!!! " + \
+ print("\n!!! " + \
colorize("BAD", "All ebuilds that could satisfy ") + \
colorize("INFORM", xinfo) + \
- colorize("BAD", " have been masked.")
- print "!!! One of the following masked packages is required to complete your request:"
+ colorize("BAD", " have been masked."))
+ print("!!! One of the following masked packages is required to complete your request:")
have_eapi_mask = show_masked_packages(masked_packages)
if have_eapi_mask:
- print
+ print()
msg = ("The current version of portage supports " + \
"EAPI '%s'. You must upgrade to a newer version" + \
" of portage before EAPI masked packages can" + \
" be installed.") % portage.const.EAPI
from textwrap import wrap
for line in wrap(msg, 75):
- print line
- print
+ print(line)
+ print()
show_mask_docs()
else:
- print "\nemerge: there are no ebuilds to satisfy "+green(xinfo)+"."
+ print("\nemerge: there are no ebuilds to satisfy "+green(xinfo)+".")
# Show parent nodes and the argument that pulled them in.
traversed_nodes = set()
selected_parent = parent
node = selected_parent
for line in msg:
- print line
+ print(line)
- print
+ print()
def _iter_match_pkgs(self, root_config, pkg_type, atom, onlydeps=False):
"""
out.write("%s\n" % (myprint,))
for x in blockers:
- print x
+ print(x)
if verbosity == 3:
- print
- print counters
+ print()
+ print(counters)
if show_repos:
# In python-2.x, str() can trigger a UnicodeEncodeError here,
# so call __str__() directly.
" The following installed packages are masked:\n")
show_masked_packages(masked_packages)
show_mask_docs()
- print
+ print()
def saveNomergeFavorites(self):
"""Find atoms in favorites that are not in the mergelist and add them
all_added.extend(added_favorites)
all_added.sort()
for a in all_added:
- print ">>> Recording %s in \"world\" favorites file..." % \
- colorize("INFORM", str(a))
+ print(">>> Recording %s in \"world\" favorites file..." % \
+ colorize("INFORM", str(a)))
if all_added:
world_set.update(all_added)
def ambiguous_package_name(arg, atoms, root_config, spinner, myopts):
if "--quiet" in myopts:
- print "!!! The short ebuild name \"%s\" is ambiguous. Please specify" % arg
- print "!!! one of the following fully-qualified ebuild names instead:\n"
+ print("!!! The short ebuild name \"%s\" is ambiguous. Please specify" % arg)
+ print("!!! one of the following fully-qualified ebuild names instead:\n")
for cp in sorted(set(portage.dep_getkey(atom) for atom in atoms)):
- print " " + colorize("INFORM", cp)
+ print(" " + colorize("INFORM", cp))
return
s = search(root_config, spinner, "--searchdesc" in myopts,
for cp in sorted(set(portage.dep_getkey(atom) for atom in atoms)):
s.addCP(cp)
s.output()
- print "!!! The short ebuild name \"%s\" is ambiguous. Please specify" % arg
- print "!!! one of the above fully-qualified ebuild names instead.\n"
+ print("!!! The short ebuild name \"%s\" is ambiguous. Please specify" % arg)
+ print("!!! one of the above fully-qualified ebuild names instead.\n")
def insert_category_into_atom(atom, category):
alphanum = re.search(r'\w', atom)
# above via mreasons.
pass
- print "- "+cpv+" (masked by: "+", ".join(mreasons)+")"
+ print("- "+cpv+" (masked by: "+", ".join(mreasons)+")")
if comment and comment not in shown_comments:
writemsg_stdout(filename + ":\n" + comment + "\n",
continue
msg = ("A copy of the '%s' license" + \
" is located at '%s'.") % (l, l_path)
- print msg
- print
+ print(msg)
+ print()
shown_licenses.add(l)
return have_eapi_mask
def show_mask_docs():
- print "For more information, see the MASKED PACKAGES section in the emerge"
- print "man page or refer to the Gentoo Handbook."
+ print("For more information, see the MASKED PACKAGES section in the emerge")
+ print("man page or refer to the Gentoo Handbook.")
def filter_iuse_defaults(iuse):
for flag in iuse:
yield flag
def show_blocker_docs_link():
- print
- print "For more information about " + bad("Blocked Packages") + ", please refer to the following"
- print "section of the Gentoo Linux x86 Handbook (architecture is irrelevant):"
- print
- print "http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked"
- print
+ print()
+ print("For more information about " + bad("Blocked Packages") + ", please refer to the following")
+ print("section of the Gentoo Linux x86 Handbook (architecture is irrelevant):")
+ print()
+ print("http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked")
+ print()
def get_masking_status(pkg, pkgsettings, root_config):
mylogfile.close()
except (IOError,OSError,portage.exception.PortageException) as e:
if secpass >= 1:
- print >> sys.stderr, "emergelog():",e
+ print("emergelog():",e, file=sys.stderr)
from portage.output import bold, turquoise, green
def shorthelp():
- print bold("emerge:")+" the other white meat (command-line interface to the Portage system)"
- print bold("Usage:")
- print " "+turquoise("emerge")+" [ "+green("options")+" ] [ "+green("action")+" ] [ "+turquoise("ebuild")+" | "+turquoise("tbz2")+" | "+turquoise("file")+" | "+turquoise("@set")+" | "+turquoise("atom")+" ] [ ... ]"
- print " "+turquoise("emerge")+" [ "+green("options")+" ] [ "+green("action")+" ] < "+turquoise("system")+" | "+turquoise("world")+" >"
- print " "+turquoise("emerge")+" < "+turquoise("--sync")+" | "+turquoise("--metadata")+" | "+turquoise("--info")+" >"
- print " "+turquoise("emerge")+" "+turquoise("--resume")+" [ "+green("--pretend")+" | "+green("--ask")+" | "+green("--skipfirst")+" ]"
- print " "+turquoise("emerge")+" "+turquoise("--help")+" [ "+green("--verbose")+" ] "
- print bold("Options:")+" "+green("-")+"["+green("abBcCdDefgGhjkKlnNoOpqPsStuvV")+"]"
- print " [ " + green("--color")+" < " + turquoise("y") + " | "+ turquoise("n")+" > ] [ "+green("--columns")+" ]"
- print " [ "+green("--complete-graph")+" ] [ "+green("--deep")+" ]"
- print " [ "+green("--jobs") + " " + turquoise("JOBS")+" ] [ "+green("--keep-going")+" ] [ " + green("--load-average")+" " + turquoise("LOAD") + " ]"
- print " [ "+green("--newuse")+" ] [ "+green("--noconfmem")+" ] [ "+green("--nospinner")+" ]"
- print " [ "+green("--oneshot")+" ] [ "+green("--onlydeps")+" ]"
- print " [ "+green("--reinstall ")+turquoise("changed-use")+" ] [ " + green("--with-bdeps")+" < " + turquoise("y") + " | "+ turquoise("n")+" > ]"
- print bold("Actions:")+" [ "+green("--depclean")+" | "+green("--list-sets")+" | "+green("--search")+" | "+green("--sync")+" | "+green("--version")+" ]"
+ print(bold("emerge:")+" the other white meat (command-line interface to the Portage system)")
+ print(bold("Usage:"))
+ print(" "+turquoise("emerge")+" [ "+green("options")+" ] [ "+green("action")+" ] [ "+turquoise("ebuild")+" | "+turquoise("tbz2")+" | "+turquoise("file")+" | "+turquoise("@set")+" | "+turquoise("atom")+" ] [ ... ]")
+ print(" "+turquoise("emerge")+" [ "+green("options")+" ] [ "+green("action")+" ] < "+turquoise("system")+" | "+turquoise("world")+" >")
+ print(" "+turquoise("emerge")+" < "+turquoise("--sync")+" | "+turquoise("--metadata")+" | "+turquoise("--info")+" >")
+ print(" "+turquoise("emerge")+" "+turquoise("--resume")+" [ "+green("--pretend")+" | "+green("--ask")+" | "+green("--skipfirst")+" ]")
+ print(" "+turquoise("emerge")+" "+turquoise("--help")+" [ "+green("--verbose")+" ] ")
+ print(bold("Options:")+" "+green("-")+"["+green("abBcCdDefgGhjkKlnNoOpqPsStuvV")+"]")
+ print(" [ " + green("--color")+" < " + turquoise("y") + " | "+ turquoise("n")+" > ] [ "+green("--columns")+" ]")
+ print(" [ "+green("--complete-graph")+" ] [ "+green("--deep")+" ]")
+ print(" [ "+green("--jobs") + " " + turquoise("JOBS")+" ] [ "+green("--keep-going")+" ] [ " + green("--load-average")+" " + turquoise("LOAD") + " ]")
+ print(" [ "+green("--newuse")+" ] [ "+green("--noconfmem")+" ] [ "+green("--nospinner")+" ]")
+ print(" [ "+green("--oneshot")+" ] [ "+green("--onlydeps")+" ]")
+ print(" [ "+green("--reinstall ")+turquoise("changed-use")+" ] [ " + green("--with-bdeps")+" < " + turquoise("y") + " | "+ turquoise("n")+" > ]")
+ print(bold("Actions:")+" [ "+green("--depclean")+" | "+green("--list-sets")+" | "+green("--search")+" | "+green("--sync")+" | "+green("--version")+" ]")
def help(myopts, havecolor=1):
# TODO: Implement a wrap() that accounts for console color escape codes.
desc_width = 80 - desc_left_margin - 5
if "--verbose" not in myopts:
shorthelp()
- print
- print " For more help try 'emerge --help --verbose' or consult the man page."
+ print()
+ print(" For more help try 'emerge --help --verbose' or consult the man page.")
else:
shorthelp()
- print
- print turquoise("Help (this screen):")
- print " "+green("--help")+" ("+green("-h")+" short option)"
- print " Displays this help; an additional argument (see above) will tell"
- print " emerge to display detailed help."
- print
- print turquoise("Actions:")
- print " "+green("--clean")+" ("+green("-c")+" short option)"
- print " Cleans the system by removing outdated packages which will not"
- print " remove functionalities or prevent your system from working."
- print " The arguments can be in several different formats :"
- print " * world "
- print " * system or"
- print " * 'dependency specification' (in single quotes is best.)"
- print " Here are a few examples of the dependency specification format:"
- print " "+bold("binutils")+" matches"
- print " binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1"
- print " "+bold("sys-devel/binutils")+" matches"
- print " binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1"
- print " "+bold(">sys-devel/binutils-2.11.90.0.7")+" matches"
- print " binutils-2.11.92.0.12.3-r1"
- print " "+bold(">=sys-devel/binutils-2.11.90.0.7")+" matches"
- print " binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1"
- print " "+bold("<=sys-devel/binutils-2.11.92.0.12.3-r1")+" matches"
- print " binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1"
- print
- print " "+green("--config")
- print " Runs package-specific operations that must be executed after an"
- print " emerge process has completed. This usually entails configuration"
- print " file setup or other similar setups that the user may wish to run."
- print
- print " "+green("--depclean")
+ print()
+ print(turquoise("Help (this screen):"))
+ print(" "+green("--help")+" ("+green("-h")+" short option)")
+ print(" Displays this help; an additional argument (see above) will tell")
+ print(" emerge to display detailed help.")
+ print()
+ print(turquoise("Actions:"))
+ print(" "+green("--clean")+" ("+green("-c")+" short option)")
+ print(" Cleans the system by removing outdated packages which will not")
+ print(" remove functionalities or prevent your system from working.")
+ print(" The arguments can be in several different formats :")
+ print(" * world ")
+ print(" * system or")
+ print(" * 'dependency specification' (in single quotes is best.)")
+ print(" Here are a few examples of the dependency specification format:")
+ print(" "+bold("binutils")+" matches")
+ print(" binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1")
+ print(" "+bold("sys-devel/binutils")+" matches")
+ print(" binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1")
+ print(" "+bold(">sys-devel/binutils-2.11.90.0.7")+" matches")
+ print(" binutils-2.11.92.0.12.3-r1")
+ print(" "+bold(">=sys-devel/binutils-2.11.90.0.7")+" matches")
+ print(" binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1")
+ print(" "+bold("<=sys-devel/binutils-2.11.92.0.12.3-r1")+" matches")
+ print(" binutils-2.11.90.0.7 and binutils-2.11.92.0.12.3-r1")
+ print()
+ print(" "+green("--config"))
+ print(" Runs package-specific operations that must be executed after an")
+ print(" emerge process has completed. This usually entails configuration")
+ print(" file setup or other similar setups that the user may wish to run.")
+ print()
+ print(" "+green("--depclean"))
paragraph = "Cleans the system by removing packages that are " + \
"not associated with explicitly merged packages. Depclean works " + \
"prior to depclean."
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
+ print(desc_indent + line)
+ print()
paragraph = "WARNING: Inexperienced users are advised to use " + \
"--pretend with this option in order to see a preview of which " + \
"depclean, even if they are part of the world set."
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
+ print(desc_indent + line)
+ print()
paragraph = "Depclean serves as a dependency aware version of " + \
"--unmerge. When given one or more atoms, it will unmerge " + \
"--depclean together with --verbose to show reverse dependencies."
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
- print " " + green("--deselect") + "[=%s]" % turquoise("n")
+ print(desc_indent + line)
+ print()
+ print(" " + green("--deselect") + "[=%s]" % turquoise("n"))
paragraph = \
"Remove atoms from the world file. This action is implied " + \
"atoms from the world file."
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
- print " "+green("--info")
- print " Displays important portage variables that will be exported to"
- print " ebuild.sh when performing merges. This information is useful"
- print " for bug reports and verification of settings. All settings in"
- print " make.{conf,globals,defaults} and the environment show up if"
- print " run with the '--verbose' flag."
- print
- print " " + green("--list-sets")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--info"))
+ print(" Displays important portage variables that will be exported to")
+ print(" ebuild.sh when performing merges. This information is useful")
+ print(" for bug reports and verification of settings. All settings in")
+ print(" make.{conf,globals,defaults} and the environment show up if")
+ print(" run with the '--verbose' flag.")
+ print()
+ print(" " + green("--list-sets"))
paragraph = "Displays a list of available package sets."
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
- print " "+green("--metadata")
- print " Transfers metadata cache from ${PORTDIR}/metadata/cache/ to"
- print " /var/cache/edb/dep/ as is normally done on the tail end of an"
- print " rsync update using " + bold("emerge --sync") + ". This process populates the"
- print " cache database that portage uses for pre-parsed lookups of"
- print " package data. It does not populate cache for the overlays"
- print " listed in PORTDIR_OVERLAY. In order to generate cache for"
- print " overlays, use " + bold("--regen") + "."
- print
- print " "+green("--prune")+" ("+green("-P")+" short option)"
- print " "+turquoise("WARNING: This action can remove important packages!")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--metadata"))
+ print(" Transfers metadata cache from ${PORTDIR}/metadata/cache/ to")
+ print(" /var/cache/edb/dep/ as is normally done on the tail end of an")
+ print(" rsync update using " + bold("emerge --sync") + ". This process populates the")
+ print(" cache database that portage uses for pre-parsed lookups of")
+ print(" package data. It does not populate cache for the overlays")
+ print(" listed in PORTDIR_OVERLAY. In order to generate cache for")
+ print(" overlays, use " + bold("--regen") + ".")
+ print()
+ print(" "+green("--prune")+" ("+green("-P")+" short option)")
+ print(" "+turquoise("WARNING: This action can remove important packages!"))
paragraph = "Removes all but the highest installed version of a " + \
"package from your system. Use --prune together with " + \
"--verbose to show reverse dependencies or with --nodeps " + \
"to ignore all dependencies. "
for line in wrap(paragraph, desc_width):
- print desc_indent + line
- print
- print " "+green("--regen")
- print " Causes portage to check and update the dependency cache of all"
- print " ebuilds in the portage tree. This is not recommended for rsync"
- print " users as rsync updates the cache using server-side caches."
- print " Rsync users should simply 'emerge --sync' to regenerate."
+ print(desc_indent + line)
+ print()
+ print(" "+green("--regen"))
+ print(" Causes portage to check and update the dependency cache of all")
+ print(" ebuilds in the portage tree. This is not recommended for rsync")
+ print(" users as rsync updates the cache using server-side caches.")
+ print(" Rsync users should simply 'emerge --sync' to regenerate.")
desc = "In order to specify parallel --regen behavior, use "+ \
"the ---jobs and --load-average options. If you would like to " + \
"generate and distribute cache for use by others, use egencache(1)."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--resume")
- print " Resumes the most recent merge list that has been aborted due to an"
- print " error. Please note that this operation will only return an error"
- print " on failure. If there is nothing for portage to do, then portage"
- print " will exit with a message and a success condition. A resume list"
- print " will persist until it has been completed in entirety or until"
- print " another aborted merge list replaces it. The resume history is"
- print " capable of storing two merge lists. After one resume list"
- print " completes, it is possible to invoke --resume once again in order"
- print " to resume an older list."
- print
- print " "+green("--search")+" ("+green("-s")+" short option)"
- print " Searches for matches of the supplied string in the current local"
- print " portage tree. By default emerge uses a case-insensitive simple "
- print " search, but you can enable a regular expression search by "
- print " prefixing the search string with %."
- print " Prepending the expression with a '@' will cause the category to"
- print " be included in the search."
- print " A few examples:"
- print " "+bold("emerge --search libc")
- print " list all packages that contain libc in their name"
- print " "+bold("emerge --search '%^kde'")
- print " list all packages starting with kde"
- print " "+bold("emerge --search '%gcc$'")
- print " list all packages ending with gcc"
- print " "+bold("emerge --search '%@^dev-java.*jdk'")
- print " list all available Java JDKs"
- print
- print " "+green("--searchdesc")+" ("+green("-S")+" short option)"
- print " Matches the search string against the description field as well"
- print " the package's name. Take caution as the descriptions are also"
- print " matched as regular expressions."
- print " emerge -S html"
- print " emerge -S applet"
- print " emerge -S 'perl.*module'"
- print
- print " "+green("--sync")
- print " Tells emerge to update the Portage tree as specified in"
- print " The SYNC variable found in /etc/make.conf. By default, SYNC instructs"
- print " emerge to perform an rsync-style update with rsync.gentoo.org."
- print
- print " 'emerge-webrsync' exists as a helper app to emerge --sync, providing a"
- print " method to receive the entire portage tree as a tarball that can be"
- print " extracted and used. First time syncs would benefit greatly from this."
- print
- print " "+turquoise("WARNING:")
- print " If using our rsync server, emerge will clean out all files that do not"
- print " exist on it, including ones that you may have created. The exceptions"
- print " to this are the distfiles, local and packages directories."
- print
- print " "+green("--unmerge")+" ("+green("-C")+" short option)"
- print " "+turquoise("WARNING: This action can remove important packages!")
- print " Removes all matching packages. This does no checking of"
- print " dependencies, so it may remove packages necessary for the proper"
- print " operation of your system. Its arguments can be atoms or"
- print " ebuilds. For a dependency aware version of --unmerge, use"
- print " --depclean or --prune."
- print
- print " "+green("--update")+" ("+green("-u")+" short option)"
- print " Updates packages to the best version available, which may not"
- print " always be the highest version number due to masking for testing"
- print " and development. Package atoms specified on the command"
- print " line are greedy, meaning that unspecific atoms may match multiple"
- print " installed versions of slotted packages."
- print
- print " "+green("--version")+" ("+green("-V")+" short option)"
- print " Displays the currently installed version of portage along with"
- print " other information useful for quick reference on a system. See"
- print " "+bold("emerge info")+" for more advanced information."
- print
- print turquoise("Options:")
- print " "+green("--alphabetical")
- print " When displaying USE and other flag output, combines the enabled"
- print " and disabled flags into a single list and sorts it alphabetically."
- print " With this option, output such as USE=\"dar -bar -foo\" will instead"
- print " be displayed as USE=\"-bar dar -foo\""
- print
- print " "+green("--ask")+" ("+green("-a")+" short option)"
- print " before performing the merge, display what ebuilds and tbz2s will"
- print " be installed, in the same format as when using --pretend; then"
- print " ask whether to continue with the merge or abort. Using --ask is"
- print " more efficient than using --pretend and then executing the same"
- print " command without --pretend, as dependencies will only need to be"
- print " calculated once. WARNING: If the \"Enter\" key is pressed at the"
- print " prompt (with no other input), it is interpreted as acceptance of"
- print " the first choice. Note that the input buffer is not cleared prior"
- print " to the prompt, so an accidental press of the \"Enter\" key at any"
- print " time prior to the prompt will be interpreted as a choice!"
- print
- print " " + green("--binpkg-respect-use") + \
- " < " + turquoise("y") + " | " + turquoise("n") + " >"
+ print(desc_indent + line)
+ print()
+ print(" "+green("--resume"))
+ print(" Resumes the most recent merge list that has been aborted due to an")
+ print(" error. Please note that this operation will only return an error")
+ print(" on failure. If there is nothing for portage to do, then portage")
+ print(" will exit with a message and a success condition. A resume list")
+ print(" will persist until it has been completed in entirety or until")
+ print(" another aborted merge list replaces it. The resume history is")
+ print(" capable of storing two merge lists. After one resume list")
+ print(" completes, it is possible to invoke --resume once again in order")
+ print(" to resume an older list.")
+ print()
+ print(" "+green("--search")+" ("+green("-s")+" short option)")
+ print(" Searches for matches of the supplied string in the current local")
+ print(" portage tree. By default emerge uses a case-insensitive simple ")
+ print(" search, but you can enable a regular expression search by ")
+ print(" prefixing the search string with %.")
+ print(" Prepending the expression with a '@' will cause the category to")
+ print(" be included in the search.")
+ print(" A few examples:")
+ print(" "+bold("emerge --search libc"))
+ print(" list all packages that contain libc in their name")
+ print(" "+bold("emerge --search '%^kde'"))
+ print(" list all packages starting with kde")
+ print(" "+bold("emerge --search '%gcc$'"))
+ print(" list all packages ending with gcc")
+ print(" "+bold("emerge --search '%@^dev-java.*jdk'"))
+ print(" list all available Java JDKs")
+ print()
+ print(" "+green("--searchdesc")+" ("+green("-S")+" short option)")
+ print(" Matches the search string against the description field as well")
+ print(" the package's name. Take caution as the descriptions are also")
+ print(" matched as regular expressions.")
+ print(" emerge -S html")
+ print(" emerge -S applet")
+ print(" emerge -S 'perl.*module'")
+ print()
+ print(" "+green("--sync"))
+ print(" Tells emerge to update the Portage tree as specified in")
+ print(" The SYNC variable found in /etc/make.conf. By default, SYNC instructs")
+ print(" emerge to perform an rsync-style update with rsync.gentoo.org.")
+ print()
+ print(" 'emerge-webrsync' exists as a helper app to emerge --sync, providing a")
+ print(" method to receive the entire portage tree as a tarball that can be")
+ print(" extracted and used. First time syncs would benefit greatly from this.")
+ print()
+ print(" "+turquoise("WARNING:"))
+ print(" If using our rsync server, emerge will clean out all files that do not")
+ print(" exist on it, including ones that you may have created. The exceptions")
+ print(" to this are the distfiles, local and packages directories.")
+ print()
+ print(" "+green("--unmerge")+" ("+green("-C")+" short option)")
+ print(" "+turquoise("WARNING: This action can remove important packages!"))
+ print(" Removes all matching packages. This does no checking of")
+ print(" dependencies, so it may remove packages necessary for the proper")
+ print(" operation of your system. Its arguments can be atoms or")
+ print(" ebuilds. For a dependency aware version of --unmerge, use")
+ print(" --depclean or --prune.")
+ print()
+ print(" "+green("--update")+" ("+green("-u")+" short option)")
+ print(" Updates packages to the best version available, which may not")
+ print(" always be the highest version number due to masking for testing")
+ print(" and development. Package atoms specified on the command")
+ print(" line are greedy, meaning that unspecific atoms may match multiple")
+ print(" installed versions of slotted packages.")
+ print()
+ print(" "+green("--version")+" ("+green("-V")+" short option)")
+ print(" Displays the currently installed version of portage along with")
+ print(" other information useful for quick reference on a system. See")
+ print(" "+bold("emerge info")+" for more advanced information.")
+ print()
+ print(turquoise("Options:"))
+ print(" "+green("--alphabetical"))
+ print(" When displaying USE and other flag output, combines the enabled")
+ print(" and disabled flags into a single list and sorts it alphabetically.")
+ print(" With this option, output such as USE=\"dar -bar -foo\" will instead")
+ print(" be displayed as USE=\"-bar dar -foo\"")
+ print()
+ print(" "+green("--ask")+" ("+green("-a")+" short option)")
+ print(" before performing the merge, display what ebuilds and tbz2s will")
+ print(" be installed, in the same format as when using --pretend; then")
+ print(" ask whether to continue with the merge or abort. Using --ask is")
+ print(" more efficient than using --pretend and then executing the same")
+ print(" command without --pretend, as dependencies will only need to be")
+ print(" calculated once. WARNING: If the \"Enter\" key is pressed at the")
+ print(" prompt (with no other input), it is interpreted as acceptance of")
+ print(" the first choice. Note that the input buffer is not cleared prior")
+ print(" to the prompt, so an accidental press of the \"Enter\" key at any")
+ print(" time prior to the prompt will be interpreted as a choice!")
+ print()
+ print(" " + green("--binpkg-respect-use") + \
+ " < " + turquoise("y") + " | " + turquoise("n") + " >")
desc = "Tells emerge to ignore binary packages if their use flags" + \
" don't match the current configuration. (default: 'n')"
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--buildpkg")+" ("+green("-b")+" short option)"
+ print(desc_indent + line)
+ print()
+ print(" "+green("--buildpkg")+" ("+green("-b")+" short option)")
desc = "Tells emerge to build binary packages for all ebuilds processed in" + \
" addition to actually merging the packages. Useful for maintainers" + \
" or if you administrate multiple Gentoo Linux systems (build once," + \
" packages is to use quickpkg(1) which creates a tbz2 from the" + \
" live filesystem."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--buildpkgonly")+" ("+green("-B")+" short option)"
- print " Creates a binary package, but does not merge it to the"
- print " system. This has the restriction that unsatisfied dependencies"
- print " must not exist for the desired package as they cannot be used if"
- print " they do not exist on the system."
- print
- print " "+green("--changelog")+" ("+green("-l")+" short option)"
- print " When pretending, also display the ChangeLog entries for packages"
- print " that will be upgraded."
- print
- print " "+green("--color") + " < " + turquoise("y") + " | "+ turquoise("n")+" >"
- print " Enable or disable color output. This option will override NOCOLOR"
- print " (see make.conf(5)) and may also be used to force color output when"
- print " stdout is not a tty (by default, color is disabled unless stdout"
- print " is a tty)."
- print
- print " "+green("--columns")
- print " Display the pretend output in a tabular form. Versions are"
- print " aligned vertically."
- print
- print " "+green("--complete-graph") + "[=%s]" % turquoise("n")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--buildpkgonly")+" ("+green("-B")+" short option)")
+ print(" Creates a binary package, but does not merge it to the")
+ print(" system. This has the restriction that unsatisfied dependencies")
+ print(" must not exist for the desired package as they cannot be used if")
+ print(" they do not exist on the system.")
+ print()
+ print(" "+green("--changelog")+" ("+green("-l")+" short option)")
+ print(" When pretending, also display the ChangeLog entries for packages")
+ print(" that will be upgraded.")
+ print()
+ print(" "+green("--color") + " < " + turquoise("y") + " | "+ turquoise("n")+" >")
+ print(" Enable or disable color output. This option will override NOCOLOR")
+ print(" (see make.conf(5)) and may also be used to force color output when")
+ print(" stdout is not a tty (by default, color is disabled unless stdout")
+ print(" is a tty).")
+ print()
+ print(" "+green("--columns"))
+ print(" Display the pretend output in a tabular form. Versions are")
+ print(" aligned vertically.")
+ print()
+ print(" "+green("--complete-graph") + "[=%s]" % turquoise("n"))
desc = "This causes emerge to consider the deep dependencies of all" + \
" packages from the system and world sets. With this option enabled," + \
" emerge will bail out if it determines that the given operation will" + \
" --complete-graph option does not cause any more packages to" + \
" be updated than would have otherwise been updated with the option disabled."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--config-root=DIR")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--config-root=DIR"))
desc = "Set the PORTAGE_CONFIGROOT environment variable " + \
"which is documented in the emerge(1) man page."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--debug")+" ("+green("-d")+" short option)"
- print " Tell emerge to run the ebuild command in --debug mode. In this"
- print " mode, the bash build environment will run with the -x option,"
- print " causing it to output verbose debug information print to stdout."
- print " --debug is great for finding bash syntax errors as providing"
- print " very verbose information about the dependency and build process."
- print
- print " "+green("--deep") + " " + turquoise("[DEPTH]") + \
- " (" + green("-D") + " short option)"
- print " This flag forces emerge to consider the entire dependency tree of"
- print " packages, instead of checking only the immediate dependencies of"
- print " the packages. As an example, this catches updates in libraries"
- print " that are not directly listed in the dependencies of a package."
- print " Also see --with-bdeps for behavior with respect to build time"
- print " dependencies that are not strictly required."
- print
- print " "+green("--emptytree")+" ("+green("-e")+" short option)"
- print " Virtually tweaks the tree of installed packages to contain"
- print " nothing. This is great to use together with --pretend. This makes"
- print " it possible for developers to get a complete overview of the"
- print " complete dependency tree of a certain package."
- print
- print " "+green("--fetchonly")+" ("+green("-f")+" short option)"
- print " Instead of doing any package building, just perform fetches for"
- print " all packages (main package as well as all dependencies.) When"
- print " used in combination with --pretend all the SRC_URIs will be"
- print " displayed multiple mirrors per line, one line per file."
- print
- print " "+green("--fetch-all-uri")+" ("+green("-F")+" short option)"
- print " Same as --fetchonly except that all package files, including those"
- print " not required to build the package, will be processed."
- print
- print " "+green("--getbinpkg")+ "[=%s]" % turquoise("n") + " ("+green("-g")+" short option)"
- print " Using the server and location defined in PORTAGE_BINHOST, portage"
- print " will download the information from each binary file there and it"
- print " will use that information to help build the dependency list. This"
- print " option implies '-k'. (Use -gK for binary-only merging.)"
- print
- print " "+green("--getbinpkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-G")+" short option)"
- print " This option is identical to -g, as above, except it will not use"
- print " ANY information from the local machine. All binaries will be"
- print " downloaded from the remote server without consulting packages"
- print " existing in the packages directory."
- print
- print " " + green("--jobs") + " " + turquoise("[JOBS]") + " ("+green("-j")+" short option)"
+ print(desc_indent + line)
+ print()
+ print(" "+green("--debug")+" ("+green("-d")+" short option)")
+ print(" Tell emerge to run the ebuild command in --debug mode. In this")
+ print(" mode, the bash build environment will run with the -x option,")
+ print(" causing it to output verbose debug information print to stdout.")
+ print(" --debug is great for finding bash syntax errors as providing")
+ print(" very verbose information about the dependency and build process.")
+ print()
+ print(" "+green("--deep") + " " + turquoise("[DEPTH]") + \
+ " (" + green("-D") + " short option)")
+ print(" This flag forces emerge to consider the entire dependency tree of")
+ print(" packages, instead of checking only the immediate dependencies of")
+ print(" the packages. As an example, this catches updates in libraries")
+ print(" that are not directly listed in the dependencies of a package.")
+ print(" Also see --with-bdeps for behavior with respect to build time")
+ print(" dependencies that are not strictly required.")
+ print()
+ print(" "+green("--emptytree")+" ("+green("-e")+" short option)")
+ print(" Virtually tweaks the tree of installed packages to contain")
+ print(" nothing. This is great to use together with --pretend. This makes")
+ print(" it possible for developers to get a complete overview of the")
+ print(" complete dependency tree of a certain package.")
+ print()
+ print(" "+green("--fetchonly")+" ("+green("-f")+" short option)")
+ print(" Instead of doing any package building, just perform fetches for")
+ print(" all packages (main package as well as all dependencies.) When")
+ print(" used in combination with --pretend all the SRC_URIs will be")
+ print(" displayed multiple mirrors per line, one line per file.")
+ print()
+ print(" "+green("--fetch-all-uri")+" ("+green("-F")+" short option)")
+ print(" Same as --fetchonly except that all package files, including those")
+ print(" not required to build the package, will be processed.")
+ print()
+ print(" "+green("--getbinpkg")+ "[=%s]" % turquoise("n") + " ("+green("-g")+" short option)")
+ print(" Using the server and location defined in PORTAGE_BINHOST, portage")
+ print(" will download the information from each binary file there and it")
+ print(" will use that information to help build the dependency list. This")
+ print(" option implies '-k'. (Use -gK for binary-only merging.)")
+ print()
+ print(" "+green("--getbinpkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-G")+" short option)")
+ print(" This option is identical to -g, as above, except it will not use")
+ print(" ANY information from the local machine. All binaries will be")
+ print(" downloaded from the remote server without consulting packages")
+ print(" existing in the packages directory.")
+ print()
+ print(" " + green("--jobs") + " " + turquoise("[JOBS]") + " ("+green("-j")+" short option)")
desc = "Specifies the number of packages " + \
"to build simultaneously. If this option is " + \
"given without an argument, emerge will not " + \
"can run simultaneously. Also see " + \
"the related --load-average option."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " " + green("--keep-going") + "[=%s]" % turquoise("n")
+ print(desc_indent + line)
+ print()
+ print(" " + green("--keep-going") + "[=%s]" % turquoise("n"))
desc = "Continue as much as possible after " + \
"an error. When an error occurs, " + \
"dependencies are recalculated for " + \
"automatically dropped. Also see " + \
"the related --skipfirst option."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " " + green("--load-average") + " " + turquoise("LOAD")
+ print(desc_indent + line)
+ print()
+ print(" " + green("--load-average") + " " + turquoise("LOAD"))
desc = "Specifies that no new builds should " + \
"be started if there are other builds " + \
"running and the load average is at " + \
"configured via MAKEOPTS in " + \
"make.conf(5)."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--newuse")+" ("+green("-N")+" short option)"
- print " Tells emerge to include installed packages where USE flags have "
- print " changed since installation."
- print
- print " "+green("--noconfmem")
- print " Portage keeps track of files that have been placed into"
- print " CONFIG_PROTECT directories, and normally it will not merge the"
- print " same file more than once, as that would become annoying. This"
- print " can lead to problems when the user wants the file in the case"
- print " of accidental deletion. With this option, files will always be"
- print " merged to the live fs instead of silently dropped."
- print
- print " "+green("--nodeps")+" ("+green("-O")+" short option)"
- print " Merge specified packages, but don't merge any dependencies."
- print " Note that the build may fail if deps aren't satisfied."
- print
- print " "+green("--noreplace")+" ("+green("-n")+" short option)"
- print " Skip the packages specified on the command-line that have"
- print " already been installed. Without this option, any packages,"
- print " ebuilds, or deps you specify on the command-line *will* cause"
- print " Portage to remerge the package, even if it is already installed."
- print " Note that Portage won't remerge dependencies by default."
+ print(desc_indent + line)
+ print()
+ print(" "+green("--newuse")+" ("+green("-N")+" short option)")
+ print(" Tells emerge to include installed packages where USE flags have ")
+ print(" changed since installation.")
+ print()
+ print(" "+green("--noconfmem"))
+ print(" Portage keeps track of files that have been placed into")
+ print(" CONFIG_PROTECT directories, and normally it will not merge the")
+ print(" same file more than once, as that would become annoying. This")
+ print(" can lead to problems when the user wants the file in the case")
+ print(" of accidental deletion. With this option, files will always be")
+ print(" merged to the live fs instead of silently dropped.")
+ print()
+ print(" "+green("--nodeps")+" ("+green("-O")+" short option)")
+ print(" Merge specified packages, but don't merge any dependencies.")
+ print(" Note that the build may fail if deps aren't satisfied.")
+ print()
+ print(" "+green("--noreplace")+" ("+green("-n")+" short option)")
+ print(" Skip the packages specified on the command-line that have")
+ print(" already been installed. Without this option, any packages,")
+ print(" ebuilds, or deps you specify on the command-line *will* cause")
+ print(" Portage to remerge the package, even if it is already installed.")
+ print(" Note that Portage won't remerge dependencies by default.")
desc = "Also note that this option takes " + \
"precedence over options such as --newuse, preventing a package " + \
"from being reinstalled even though the corresponding USE flag settings " + \
"may have changed."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--nospinner")
- print " Disables the spinner regardless of terminal type."
- print
- print " "+green("--oneshot")+" ("+green("-1")+" short option)"
- print " Emerge as normal, but don't add packages to the world profile."
- print " This package will only be updated if it is depended upon by"
- print " another package."
- print
- print " "+green("--onlydeps")+" ("+green("-o")+" short option)"
- print " Only merge (or pretend to merge) the dependencies of the"
- print " specified packages, not the packages themselves."
- print
- print " "+green("--pretend")+" ("+green("-p")+" short option)"
- print " Instead of actually performing the merge, simply display what"
- print " ebuilds and tbz2s *would* have been installed if --pretend"
- print " weren't used. Using --pretend is strongly recommended before"
- print " installing an unfamiliar package. In the printout, N = new,"
- print " U = updating, R = replacing, F = fetch restricted, B = blocked"
- print " by an already installed package, D = possible downgrading,"
- print " S = slotted install. --verbose causes affecting use flags to be"
- print " printed out accompanied by a '+' for enabled and a '-' for"
- print " disabled USE flags."
- print
- print " "+green("--quiet")+" ("+green("-q")+" short option)"
- print " Effects vary, but the general outcome is a reduced or condensed"
- print " output from portage's displays."
- print
- print " "+green("--reinstall ") + turquoise("changed-use")
- print " Tells emerge to include installed packages where USE flags have"
- print " changed since installation. Unlike --newuse, this option does"
- print " not trigger reinstallation when flags that the user has not"
- print " enabled are added or removed."
- print
- print " "+green("--root=DIR")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--nospinner"))
+ print(" Disables the spinner regardless of terminal type.")
+ print()
+ print(" "+green("--oneshot")+" ("+green("-1")+" short option)")
+ print(" Emerge as normal, but don't add packages to the world profile.")
+ print(" This package will only be updated if it is depended upon by")
+ print(" another package.")
+ print()
+ print(" "+green("--onlydeps")+" ("+green("-o")+" short option)")
+ print(" Only merge (or pretend to merge) the dependencies of the")
+ print(" specified packages, not the packages themselves.")
+ print()
+ print(" "+green("--pretend")+" ("+green("-p")+" short option)")
+ print(" Instead of actually performing the merge, simply display what")
+ print(" ebuilds and tbz2s *would* have been installed if --pretend")
+ print(" weren't used. Using --pretend is strongly recommended before")
+ print(" installing an unfamiliar package. In the printout, N = new,")
+ print(" U = updating, R = replacing, F = fetch restricted, B = blocked")
+ print(" by an already installed package, D = possible downgrading,")
+ print(" S = slotted install. --verbose causes affecting use flags to be")
+ print(" printed out accompanied by a '+' for enabled and a '-' for")
+ print(" disabled USE flags.")
+ print()
+ print(" "+green("--quiet")+" ("+green("-q")+" short option)")
+ print(" Effects vary, but the general outcome is a reduced or condensed")
+ print(" output from portage's displays.")
+ print()
+ print(" "+green("--reinstall ") + turquoise("changed-use"))
+ print(" Tells emerge to include installed packages where USE flags have")
+ print(" changed since installation. Unlike --newuse, this option does")
+ print(" not trigger reinstallation when flags that the user has not")
+ print(" enabled are added or removed.")
+ print()
+ print(" "+green("--root=DIR"))
desc = "Set the ROOT environment variable " + \
"which is documented in the emerge(1) man page."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--root-deps[=rdeps]")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--root-deps[=rdeps]"))
desc = "If no argument is given then build-time dependencies of packages for " + \
"ROOT are installed to " + \
"ROOT instead of /. If the rdeps argument is given then discard " + \
"DEPEND variable. However, behavior may change for new " + \
"EAPIs when related extensions are added in the future."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " " + green("--selective") + "[=%s]" % turquoise("n")
+ print(desc_indent + line)
+ print()
+ print(" " + green("--selective") + "[=%s]" % turquoise("n"))
desc = "This is similar to the --noreplace option, except that it " + \
"does not take precedence over options such as --newuse. " + \
"Some options, such as --update, imply --selective. " + \
"Use --selective=n if you want to forcefully disable " + \
"--selective, regardless of options like --update."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--skipfirst")
+ print(desc_indent + line)
+ print()
+ print(" "+green("--skipfirst"))
desc = "This option is only valid when " + \
"used with --resume. It removes the " + \
"first package in the resume list. " + \
"Also see the related " + \
"--keep-going option."
for line in wrap(desc, desc_width):
- print desc_indent + line
- print
- print " "+green("--tree")+" ("+green("-t")+" short option)"
- print " Shows the dependency tree using indentation for dependencies."
- print " The packages are also listed in reverse merge order so that"
- print " a package's dependencies follow the package. Only really useful"
- print " in combination with --emptytree, --update or --deep."
- print
- print " "+green("--usepkg")+ "[=%s]" % turquoise("n") + " ("+green("-k")+" short option)"
- print " Tell emerge to use binary packages (from $PKGDIR) if they are"
- print " available, thus possibly avoiding some time-consuming compiles."
- print " This option is useful for CD installs; you can export"
- print " PKGDIR=/mnt/cdrom/packages and then use this option to have"
- print " emerge \"pull\" binary packages from the CD in order to satisfy"
- print " dependencies."
- print
- print " "+green("--usepkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-K")+" short option)"
- print " Like --usepkg above, except this only allows the use of binary"
- print " packages, and it will abort the emerge if the package is not"
- print " available at the time of dependency calculation."
- print
- print " "+green("--verbose")+" ("+green("-v")+" short option)"
- print " Effects vary, but the general outcome is an increased or expanded"
- print " display of content in portage's displays."
- print
- print " "+green("--with-bdeps")+" < " + turquoise("y") + " | "+ turquoise("n")+" >"
- print " In dependency calculations, pull in build time dependencies that"
- print " are not strictly required. This defaults to 'n' for installation"
- print " actions and 'y' for the --depclean action. This setting can be"
- print " added to EMERGE_DEFAULT_OPTS (see make.conf(5)) and later"
- print " overridden via the command line."
- print
+ print(desc_indent + line)
+ print()
+ print(" "+green("--tree")+" ("+green("-t")+" short option)")
+ print(" Shows the dependency tree using indentation for dependencies.")
+ print(" The packages are also listed in reverse merge order so that")
+ print(" a package's dependencies follow the package. Only really useful")
+ print(" in combination with --emptytree, --update or --deep.")
+ print()
+ print(" "+green("--usepkg")+ "[=%s]" % turquoise("n") + " ("+green("-k")+" short option)")
+ print(" Tell emerge to use binary packages (from $PKGDIR) if they are")
+ print(" available, thus possibly avoiding some time-consuming compiles.")
+ print(" This option is useful for CD installs; you can export")
+ print(" PKGDIR=/mnt/cdrom/packages and then use this option to have")
+ print(" emerge \"pull\" binary packages from the CD in order to satisfy")
+ print(" dependencies.")
+ print()
+ print(" "+green("--usepkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-K")+" short option)")
+ print(" Like --usepkg above, except this only allows the use of binary")
+ print(" packages, and it will abort the emerge if the package is not")
+ print(" available at the time of dependency calculation.")
+ print()
+ print(" "+green("--verbose")+" ("+green("-v")+" short option)")
+ print(" Effects vary, but the general outcome is an increased or expanded")
+ print(" display of content in portage's displays.")
+ print()
+ print(" "+green("--with-bdeps")+" < " + turquoise("y") + " | "+ turquoise("n")+" >")
+ print(" In dependency calculations, pull in build time dependencies that")
+ print(" are not strictly required. This defaults to 'n' for installation")
+ print(" actions and 'y' for the --depclean action. This setting can be")
+ print(" added to EMERGE_DEFAULT_OPTS (see make.conf(5)) and later")
+ print(" overridden via the command line.")
+ print()
if vardbapi.plib_registry.hasEntries():
if "--quiet" in myopts:
- print
- print colorize("WARN", "!!!") + " existing preserved libs found"
+ print()
+ print(colorize("WARN", "!!!") + " existing preserved libs found")
return
else:
- print
- print colorize("WARN", "!!!") + " existing preserved libs:"
+ print()
+ print(colorize("WARN", "!!!") + " existing preserved libs:")
plibdata = vardbapi.plib_registry.getPreservedLibs()
linkmap = vardbapi.linkmap
owners = vardbapi._owners.getFileOwnerMap(search_for_owners)
for cpv in plibdata:
- print colorize("WARN", ">>>") + " package: %s" % cpv
+ print(colorize("WARN", ">>>") + " package: %s" % cpv)
samefile_map = {}
for f in plibdata[cpv]:
obj_key = linkmap._obj_key(f)
for alt_paths in samefile_map.itervalues():
alt_paths = sorted(alt_paths)
for p in alt_paths:
- print colorize("WARN", " * ") + " - %s" % (p,)
+ print(colorize("WARN", " * ") + " - %s" % (p,))
f = alt_paths[0]
consumers = consumer_map.get(f, [])
for c in consumers[:MAX_DISPLAY]:
- print colorize("WARN", " * ") + " used by %s (%s)" % \
- (c, ", ".join(x.mycpv for x in owners.get(c, [])))
+ print(colorize("WARN", " * ") + " used by %s (%s)" % \
+ (c, ", ".join(x.mycpv for x in owners.get(c, []))))
if len(consumers) == MAX_DISPLAY + 1:
- print colorize("WARN", " * ") + " used by %s (%s)" % \
+ print(colorize("WARN", " * ") + " used by %s (%s)" % \
(consumers[MAX_DISPLAY], ", ".join(x.mycpv \
- for x in owners.get(consumers[MAX_DISPLAY], [])))
+ for x in owners.get(consumers[MAX_DISPLAY], []))))
elif len(consumers) > MAX_DISPLAY:
- print colorize("WARN", " * ") + " used by %d other files" % (len(consumers) - MAX_DISPLAY)
- print "Use " + colorize("GOOD", "emerge @preserved-rebuild") + " to rebuild packages using these libraries"
+ print(colorize("WARN", " * ") + " used by %d other files" % (len(consumers) - MAX_DISPLAY))
+ print("Use " + colorize("GOOD", "emerge @preserved-rebuild") + " to rebuild packages using these libraries")
def post_emerge(root_config, myopts, mtimedb, retval):
"""
# display errors that occured while loading the SetConfig instance
for e in setconfig.errors:
- print colorize("BAD", "Error during set creation: %s" % e)
+ print(colorize("BAD", "Error during set creation: %s" % e))
# emerge relies on the existance of sets with names "world" and "system"
required_sets = ("world", "system")
"not support unmerge operations\n")
retval = 1
elif not set_atoms:
- print "emerge: '%s' is an empty set" % s
+ print("emerge: '%s' is an empty set" % s)
elif myaction not in do_not_expand:
newargs.extend(set_atoms)
else:
newargs.append(SETPREFIX+s)
for e in sets[s].errors:
- print e
+ print(e)
else:
newargs.append(a)
return (newargs, retval)
del mytrees, mydb
if "moo" in myfiles:
- print """
+ print("""
Larry loves Gentoo (""" + platform.system() + """)
||----w |
|| ||
-"""
+""")
for x in myfiles:
ext = os.path.splitext(x)[1]
if (ext == ".ebuild" or ext == ".tbz2") and os.path.exists(os.path.abspath(x)):
- print colorize("BAD", "\n*** emerging by path is broken and may not always work!!!\n")
+ print(colorize("BAD", "\n*** emerging by path is broken and may not always work!!!\n"))
break
root_config = trees[settings["ROOT"]]["root_config"]
# Need to handle empty sets specially, otherwise emerge will react
# with the help message for empty argument lists
if oldargs and not myfiles:
- print "emerge: no targets left after set expansion"
+ print("emerge: no targets left after set expansion")
return 0
if ("--tree" in myopts) and ("--columns" in myopts):
- print "emerge: can't specify both of \"--tree\" and \"--columns\"."
+ print("emerge: can't specify both of \"--tree\" and \"--columns\".")
return 1
if '--emptytree' in myopts and '--noreplace' in myopts:
spinner.update = spinner.update_basic
if myaction == 'version':
- print getportageversion(settings["PORTDIR"], settings["ROOT"],
+ print(getportageversion(settings["PORTDIR"], settings["ROOT"],
settings.profile_path, settings["CHOST"],
- trees[settings["ROOT"]]["vartree"].dbapi)
+ trees[settings["ROOT"]]["vartree"].dbapi))
return 0
elif myaction == "help":
_emerge.help.help(myopts, portage.output.havecolor)
return 0
if "--debug" in myopts:
- print "myaction", myaction
- print "myopts", myopts
+ print("myaction", myaction)
+ print("myopts", myopts)
if not myaction and not myfiles and "--resume" not in myopts:
_emerge.help.help(myopts, portage.output.havecolor)
if "--ask" in myopts:
myopts["--pretend"] = True
del myopts["--ask"]
- print ("%s access is required... " + \
- "adding --pretend to options\n") % access_desc
+ print(("%s access is required... " + \
+ "adding --pretend to options\n") % access_desc)
if portage.secpass < 1 and not need_superuser:
portage_group_warning()
else:
else:
self.searchdesc=0
self.matches = {"pkg":[], "set":[]}
- print "Searching... ",
+ print("Searching... ", end=' ')
regexsearch = False
if self.searchkey.startswith('%'):
full_desc = self.portdb.aux_get(
full_package, ["DESCRIPTION"])[0]
except KeyError:
- print "emerge: search: aux_get() failed, skipping"
+ print("emerge: search: aux_get() failed, skipping")
continue
if self.searchre.search(full_desc):
self.matches["desc"].append([full_package,masked])
def output(self):
"""Outputs the results of the search."""
- print "\b\b \n[ Results for search key : "+white(self.searchkey)+" ]"
- print "[ Applications found : "+white(str(self.mlen))+" ]"
- print " "
+ print("\b\b \n[ Results for search key : "+white(self.searchkey)+" ]")
+ print("[ Applications found : "+white(str(self.mlen))+" ]")
+ print(" ")
vardb = self.vartree.dbapi
for mtype in self.matches:
for match,masked in self.matches[mtype]:
desc, homepage, license = self.portdb.aux_get(
full_package, ["DESCRIPTION","HOMEPAGE","LICENSE"])
except KeyError:
- print "emerge: search: aux_get() failed, skipping"
+ print("emerge: search: aux_get() failed, skipping")
continue
if masked:
- print green("*")+" "+white(match)+" "+red("[ Masked ]")
+ print(green("*")+" "+white(match)+" "+red("[ Masked ]"))
else:
- print green("*")+" "+white(match)
+ print(green("*")+" "+white(match))
myversion = self.getVersion(full_package, search.VERSION_RELEASE)
mysum = [0,0]
if self.verbose:
msg = []
if available:
- print " ", darkgreen("Latest version available:"),myversion
- print " ", self.getInstallationStatus(mycat+'/'+mypkg)
+ print(" ", darkgreen("Latest version available:"),myversion)
+ print(" ", self.getInstallationStatus(mycat+'/'+mypkg))
if myebuild:
- print " %s %s" % \
- (darkgreen("Size of files:"), file_size_str)
+ print(" %s %s" % \
+ (darkgreen("Size of files:"), file_size_str))
msg.append(" " + darkgreen("Homepage:") + \
" " + homepage + "\n")
msg.append(" " + darkgreen("Description:") \
if not unmerge_files:
if unmerge_action == "unmerge":
- print
- print bold("emerge unmerge") + " can only be used with specific package names"
- print
+ print()
+ print(bold("emerge unmerge") + " can only be used with specific package names")
+ print()
return 0
else:
global_unmerge = 1
else:
#we've got command-line arguments
if not unmerge_files:
- print "\nNo packages to unmerge have been provided.\n"
+ print("\nNo packages to unmerge have been provided.\n")
return 0
for x in unmerge_files:
arg_parts = x.split('/')
#possible cat/pkg or dep; treat as such
candidate_catpkgs.append(x)
elif unmerge_action in ["prune","clean"]:
- print "\n!!! Prune and clean do not accept individual" + \
- " ebuilds as arguments;\n skipping.\n"
+ print("\n!!! Prune and clean do not accept individual" + \
+ " ebuilds as arguments;\n skipping.\n")
continue
else:
# it appears that the user is specifying an installed
# ebuild and we're in "unmerge" mode, so it's ok.
if not os.path.exists(x):
- print "\n!!! The path '"+x+"' doesn't exist.\n"
+ print("\n!!! The path '"+x+"' doesn't exist.\n")
return 0
absx = os.path.abspath(x)
sp_vdb_len = len(sp_vdb)
if not os.path.exists(absx+"/CONTENTS"):
- print "!!! Not a valid db dir: "+str(absx)
+ print("!!! Not a valid db dir: "+str(absx))
return 0
if sp_absx_len <= sp_vdb_len:
# The Path is shorter... so it can't be inside the vdb.
- print sp_absx
- print absx
- print "\n!!!",x,"cannot be inside "+ \
- vdb_path+"; aborting.\n"
+ print(sp_absx)
+ print(absx)
+ print("\n!!!",x,"cannot be inside "+ \
+ vdb_path+"; aborting.\n")
return 0
for idx in range(0,sp_vdb_len):
if idx >= sp_absx_len or sp_vdb[idx] != sp_absx[idx]:
- print sp_absx
- print absx
- print "\n!!!", x, "is not inside "+\
- vdb_path+"; aborting.\n"
+ print(sp_absx)
+ print(absx)
+ print("\n!!!", x, "is not inside "+\
+ vdb_path+"; aborting.\n")
return 0
- print "="+"/".join(sp_absx[sp_vdb_len:])
+ print("="+"/".join(sp_absx[sp_vdb_len:]))
candidate_catpkgs.append(
"="+"/".join(sp_absx[sp_vdb_len:]))
try:
mymatch = vartree.dbapi.match(x)
except portage.exception.AmbiguousPackageName as errpkgs:
- print "\n\n!!! The short ebuild name \"" + \
- x + "\" is ambiguous. Please specify"
- print "!!! one of the following fully-qualified " + \
- "ebuild names instead:\n"
+ print("\n\n!!! The short ebuild name \"" + \
+ x + "\" is ambiguous. Please specify")
+ print("!!! one of the following fully-qualified " + \
+ "ebuild names instead:\n")
for i in errpkgs[0]:
- print " " + green(i)
- print
+ print(" " + green(i))
+ print()
sys.exit(1)
if not mymatch and x[0] not in "<>=~":
#print colorize("WARN", "Package %s is going to be unmerged," % cpv)
#print colorize("WARN", "but still listed in the following package sets:")
#print " %s\n" % ", ".join(parents)
- print colorize("WARN", "Not unmerging package %s as it is" % cpv)
- print colorize("WARN", "still referenced by the following package sets:")
- print " %s\n" % ", ".join(parents)
+ print(colorize("WARN", "Not unmerging package %s as it is" % cpv))
+ print(colorize("WARN", "still referenced by the following package sets:"))
+ print(" %s\n" % ", ".join(parents))
# adjust pkgmap so the display output is correct
pkgmap[cp]["selected"].remove(cpv)
all_selected.remove(cpv)
if userquery("Would you like to unmerge these packages?")=="No":
# enter pretend mode for correct formatting of results
myopts["--pretend"] = True
- print
- print "Quitting."
- print
+ print()
+ print("Quitting.")
+ print()
return 0
#the real unmerging begins, after a short delay....
if clean_delay and not autoclean:
elif colours is None:
colours=[bold]
colours=(colours*len(responses))[:len(responses)]
- print bold(prompt),
+ print(bold(prompt), end=' ')
try:
while True:
response=raw_input("["+"/".join([colours[i](responses[i]) for i in range(len(responses))])+"] ")
# An empty response will match the first value in responses.
if response.upper()==key[:len(response)].upper():
return key
- print "Sorry, response '%s' not understood." % response,
+ print("Sorry, response '%s' not understood." % response, end=' ')
except (EOFError, KeyboardInterrupt):
- print "Interrupted."
+ print("Interrupted.")
sys.exit(1)
if ("mirror" in features) and ("lmirror" not in features):
# lmirror should allow you to bypass mirror restrictions.
# XXX: This is not a good thing, and is temporary at best.
- print _(">>> \"mirror\" mode desired and \"mirror\" restriction found; skipping fetch.")
+ print(_(">>> \"mirror\" mode desired and \"mirror\" restriction found; skipping fetch."))
return 1
# Generally, downloading the same file repeatedly from
# from another mirror...
verified_ok,reason = portage.checksum.verify_all(mysettings["DISTDIR"]+"/"+myfile, mydigests[myfile])
if not verified_ok:
- print reason
+ print(reason)
writemsg(_("!!! Fetched file: %s VERIFY FAILED!\n") % myfile,
noiselevel=-1)
writemsg(_("!!! Reason: %s\n") % reason[0],
myebuild=mysettings["EBUILD"], mytree=tree, mydbapi=mydbapi,
vartree=vartree, prev_mtimes=prev_mtimes)
else:
- print _("!!! Unknown mydo: %s") % mydo
+ print(_("!!! Unknown mydo: %s") % mydo)
return 1
return retval
except SystemExit as e:
raise
except Exception as e:
- print _("!!! Stating source file failed... movefile()")
- print "!!!",e
+ print(_("!!! Stating source file failed... movefile()"))
+ print("!!!",e)
return None
destexists=1
except SystemExit as e:
raise
except Exception as e:
- print _("!!! failed to properly create symlink:")
- print "!!!",dest,"->",target
- print "!!!",e
+ print(_("!!! failed to properly create symlink:"))
+ print("!!!",dest,"->",target)
+ print("!!!",e)
return None
hardlinked = False
except Exception as e:
if e[0]!=errno.EXDEV:
# Some random error.
- print _("!!! Failed to move %(src)s to %(dest)s") % {"src": src, "dest": dest}
- print "!!!",e
+ print(_("!!! Failed to move %(src)s to %(dest)s") % {"src": src, "dest": dest})
+ print("!!!",e)
return None
# Invalid cross-device-link 'bind' mounted or actually Cross-Device
if renamefailed:
except SystemExit as e:
raise
except Exception as e:
- print _('!!! copy %(src)s -> %(dest)s failed.') % {"src": src, "dest": dest}
- print "!!!",e
+ print(_('!!! copy %(src)s -> %(dest)s failed.') % {"src": src, "dest": dest})
+ print("!!!",e)
return None
else:
#we don't yet handle special, so we need to fall back to /bin/mv
except SystemExit as e:
raise
except Exception as e:
- print _("!!! Failed to chown/chmod/unlink in movefile()")
- print "!!!",dest
- print "!!!",e
+ print(_("!!! Failed to chown/chmod/unlink in movefile()"))
+ print("!!!",dest)
+ print("!!!",e)
return None
try:
if vartree is None:
vartree = db[myroot]["vartree"]
if mytbz2[-5:]!=".tbz2":
- print _("!!! Not a .tbz2 file")
+ print(_("!!! Not a .tbz2 file"))
return 1
tbz2_lock = None
# Update progress above is indicated by characters written to stdout so
# we print a couple new lines here to separate the progress output from
# what follows.
- print
- print
+ print()
+ print()
if do_upgrade_packagesmessage and bindb and \
bindb.cpv_all():
else:
query = ''
- print "query = SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % (self.label, query)
+ print("query = SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % (self.label, query))
try:
self.con.execute("SELECT cpv from package_cache natural join values_cache WHERE label=%s %s" % \
(self.label, query))
class non_quiet_mirroring(quiet_mirroring):
call_update_min=1
- def update(self,key,*arg): print "processed",key
- def exception(self, key, *arg): print "exec",key,arg
- def missing(self,key): print "key %s is missing", key
- def corruption(self,key,*arg): print "corrupt %s:" % key,arg
- def eclass_stale(self,key,*arg):print "stale %s:"%key,arg
+ def update(self,key,*arg): print("processed",key)
+ def exception(self, key, *arg): print("exec",key,arg)
+ def missing(self,key): print("key %s is missing", key)
+ def corruption(self,key,*arg): print("corrupt %s:" % key,arg)
+ def eclass_stale(self,key,*arg):print("stale %s:"%key,arg)
break
mysplit=line.split("/")
if len(mysplit)!=6:
- print "Confused:",mysplit
+ print("Confused:",mysplit)
continue
if mysplit[0]=="D":
entries["dirs"][mysplit[1]]={"dirs":{},"files":{},"status":[]}
if file=="CVS":
continue
if file=="digest-framerd-2.4.3":
- print mydir,file
+ print(mydir,file)
if os.path.isdir(mydir+"/"+file):
if file not in entries["dirs"]:
# It's normal for a directory to be unlisted in Entries
entries["dirs"][file]["status"]=["exists"]
elif os.path.isfile(mydir+"/"+file):
if file=="digest-framerd-2.4.3":
- print "isfile"
+ print("isfile")
if file not in entries["files"]:
entries["files"][file]={"revision":"","date":"","flags":"","tags":""}
if "status" in entries["files"][file]:
if file=="digest-framerd-2.4.3":
- print "has status"
+ print("has status")
if "exists" not in entries["files"][file]["status"]:
if file=="digest-framerd-2.4.3":
- print "no exists in status"
+ print("no exists in status")
entries["files"][file]["status"]+=["exists"]
else:
if file=="digest-framerd-2.4.3":
- print "no status"
+ print("no status")
entries["files"][file]["status"]=["exists"]
try:
if file=="digest-framerd-2.4.3":
- print "stat'ing"
+ print("stat'ing")
mystat=os.stat(mydir+"/"+file)
mytime = time.asctime(time.gmtime(long(mystat.st_mtime)))
if "status" not in entries["files"][file]:
if file=="digest-framerd-2.4.3":
- print "status not set"
+ print("status not set")
entries["files"][file]["status"]=[]
if file=="digest-framerd-2.4.3":
- print "date:",entries["files"][file]["date"]
- print "sdate:",mytime
+ print("date:",entries["files"][file]["date"])
+ print("sdate:",mytime)
if mytime==entries["files"][file]["date"]:
entries["files"][file]["status"]+=["current"]
if file=="digest-framerd-2.4.3":
- print "stat done"
+ print("stat done")
del mystat
except SystemExit as e:
raise
except Exception as e:
- print "failed to stat",file
- print e
+ print("failed to stat",file)
+ print(e)
return
else:
- print
- print "File of unknown type:",mydir+"/"+file
- print
+ print()
+ print("File of unknown type:",mydir+"/"+file)
+ print()
return entries
#class cvstree:
def gettbz2(self, pkgname):
"""Fetches the package from a remote site, if necessary. Attempts to
resume if the file appears to be partially downloaded."""
- print "Fetching '"+str(pkgname)+"'"
+ print("Fetching '"+str(pkgname)+"'")
tbz2_path = self.getname(pkgname)
tbz2name = os.path.basename(tbz2_path)
resume = False
checksums = mf.getDigests()
if not checksums:
if debug:
- print "[empty/missing/bad digest]: "+mypkg
+ print("[empty/missing/bad digest]: "+mypkg)
return None
filesdict={}
myfiles = self.getFetchMap(mypkg, useflags=useflags)
else:
myval = list(self._iter_match(mydep, self.cp_list(mykey)))
else:
- print "ERROR: xmatch doesn't handle", level, "query!"
+ print("ERROR: xmatch doesn't handle", level, "query!")
raise KeyError
if self.frozen and (level not in ["match-list", "bestmatch-list"]):
# XXX This is most often due to soname symlinks not in
# a library's directory. We could catalog symlinks in
# LinkageMap to avoid checking for this edge case here.
- print _("Found provider outside of findProviders:"), \
+ print(_("Found provider outside of findProviders:"), \
os.path.join(directory, soname), "->", \
- self._obj_properties[cachedKey][4], libraries
+ self._obj_properties[cachedKey][4], libraries)
# A valid library has been found, so there is no need to
# continue.
break
if debug and cachedArch == arch and \
cachedKey in self._obj_properties:
- print _("Broken symlink or missing/bad soname: %(dir_soname)s -> %(cachedKey)s "
+ print(_("Broken symlink or missing/bad soname: %(dir_soname)s -> %(cachedKey)s "
"with soname %(cachedSoname)s but expecting %(soname)s") % \
{"dir_soname":os.path.join(directory, soname),
"cachedKey": self._obj_properties[cachedKey],
- "cachedSoname": cachedSoname, "soname":soname}
+ "cachedSoname": cachedSoname, "soname":soname})
# This conditional checks if there are no libraries to satisfy the
# soname (empty set).
if not validLibraries:
rValue.setdefault(lib, set()).add(soname)
if debug:
if not os.path.isfile(lib):
- print _("Missing library:"), lib
+ print(_("Missing library:"), lib)
else:
- print _("Possibly missing symlink:"), \
- os.path.join(os.path.dirname(lib), soname)
+ print(_("Possibly missing symlink:"), \
+ os.path.join(os.path.dirname(lib), soname))
return rValue
def listProviders(self):
'/etc/dispatch-conf.conf', None)
opts, errors = loader.load()
if not opts:
- print >> sys.stderr, _('dispatch-conf: Error reading /etc/dispatch-conf.conf; fatal')
+ print(_('dispatch-conf: Error reading /etc/dispatch-conf.conf; fatal'), file=sys.stderr)
sys.exit(1)
# Handle quote removal here, since KeyValuePairFileLoader doesn't do that.
if key == "merge":
opts["merge"] = "sdiff --suppress-common-lines --output='%s' '%s' '%s'"
else:
- print >> sys.stderr, _('dispatch-conf: Missing option "%s" in /etc/dispatch-conf.conf; fatal') % (key,)
+ print(_('dispatch-conf: Missing option "%s" in /etc/dispatch-conf.conf; fatal') % (key,), file=sys.stderr)
if not os.path.exists(opts['archive-dir']):
os.mkdir(opts['archive-dir'])
elif not os.path.isdir(opts['archive-dir']):
- print >> sys.stderr, _('dispatch-conf: Config archive dir [%s] must exist; fatal') % (opts['archive-dir'],)
+ print(_('dispatch-conf: Config archive dir [%s] must exist; fatal') % (opts['archive-dir'],), file=sys.stderr)
sys.exit(1)
return opts
try:
shutil.copy2(curconf, archive)
except(IOError, os.error) as why:
- print >> sys.stderr, _('dispatch-conf: Error copying %(curconf)s to %(archive)s: %(reason)s; fatal') % \
- {"curconf": curconf, "archive": archive, "reason": str(why)}
+ print(_('dispatch-conf: Error copying %(curconf)s to %(archive)s: %(reason)s; fatal') % \
+ {"curconf": curconf, "archive": archive, "reason": str(why)}, file=sys.stderr)
if os.path.exists(archive + ',v'):
os.system(RCS_LOCK + ' ' + archive)
os.system(RCS_PUT + ' ' + archive)
try:
shutil.copy2(newconf, archive)
except(IOError, os.error) as why:
- print >> sys.stderr, _('dispatch-conf: Error copying %(newconf)s to %(archive)s: %(reason)s; fatal') % \
- {"newconf": newconf, "archive": archive, "reason": str(why)}
+ print(_('dispatch-conf: Error copying %(newconf)s to %(archive)s: %(reason)s; fatal') % \
+ {"newconf": newconf, "archive": archive, "reason": str(why)}, file=sys.stderr)
if has_branch:
if mrgconf != '':
try:
shutil.copy2(curconf, archive)
except(IOError, os.error) as why:
- print >> sys.stderr, _('dispatch-conf: Error copying %(curconf)s to %(archive)s: %(reason)s; fatal') % \
- {"curconf": curconf, "archive": archive, "reason": str(why)}
+ print(_('dispatch-conf: Error copying %(curconf)s to %(archive)s: %(reason)s; fatal') % \
+ {"curconf": curconf, "archive": archive, "reason": str(why)}, file=sys.stderr)
if newconf != '':
# Save off new config file in the archive dir with .dist.new suffix
try:
shutil.copy2(newconf, archive + '.dist.new')
except(IOError, os.error) as why:
- print >> sys.stderr, _('dispatch-conf: Error copying %(newconf)s to %(archive)s: %(reason)s; fatal') % \
- {"newconf": newconf, "archive": archive + '.dist.new', "reason": str(why)}
+ print(_('dispatch-conf: Error copying %(newconf)s to %(archive)s: %(reason)s; fatal') % \
+ {"newconf": newconf, "archive": archive + '.dist.new', "reason": str(why)}, file=sys.stderr)
ret = 0
if mrgconf != '' and os.path.exists(archive + '.dist'):
def close_caches(self):
import traceback
traceback.print_stack()
- print "%s close_cache is deprecated" % self.__class__
+ print("%s close_cache is deprecated" % self.__class__)
self.eclasses.clear()
def flush_cache(self):
import traceback
traceback.print_stack()
- print "%s flush_cache is deprecated" % self.__class__
+ print("%s flush_cache is deprecated" % self.__class__)
self.update_eclasses()
global _items
printer = EOutput()
for root, key, logentries in _items:
- print
+ print()
if root == "/":
printer.einfo(_("Messages for package %s:") %
colorize("INFORM", key))
else:
printer.einfo(_("Messages for package %(pkg)s merged to %(root)s:") %
{"pkg": colorize("INFORM", key), "root": root})
- print
+ print()
for phase in EBUILD_PHASES:
if phase not in logentries:
continue
def localization_example():
# Dict references allow translators to rearrange word order.
- print _("You can use this string for translating.")
- print _("Strings can be formatted with %(mystr)s like this.") % {"mystr": "VALUES"}
+ print(_("You can use this string for translating."))
+ print(_("Strings can be formatted with %(mystr)s like this.") % {"mystr": "VALUES"})
a_value = "value.of.a"
b_value = 123
c_value = [1,2,3,4]
- print _("A: %(a)s -- B: %(b)s -- C: %(c)s") % {"a":a_value,"b":b_value,"c":c_value}
+ print(_("A: %(a)s -- B: %(b)s -- C: %(c)s") % {"a":a_value,"b":b_value,"c":c_value})
try:
mymailuser,mymailpasswd = myauthdata.split(":")
except ValueError:
- print _("!!! invalid SMTP AUTH configuration, trying unauthenticated ...")
+ print(_("!!! invalid SMTP AUTH configuration, trying unauthenticated ..."))
else:
myconndata = mymailuri
if ":" in myconndata:
sc = load_default_config(portage.settings, portage.db["/"])
l, e = sc.getSets()
for x in l:
- print x+":"
- print "DESCRIPTION = %s" % l[x].getMetadata("Description")
+ print(x+":")
+ print("DESCRIPTION = %s" % l[x].getMetadata("Description"))
for n in sorted(l[x].getAtoms()):
- print "- "+n
- print
+ print("- "+n)
+ print()
for libs in plib_dict.itervalues():
for lib in libs:
if self.debug:
- print lib
+ print(lib)
for x in sorted(self.dbapi.linkmap.findConsumers(lib)):
- print " ", x
- print "-"*40
+ print(" ", x)
+ print("-"*40)
consumers.update(self.dbapi.linkmap.findConsumers(lib))
# Don't rebuild packages just because they contain preserved
# libs that happen to be consumers of other preserved libs.
return 1
else:
if not silent:
- print _("!!! syntax error in version: %s") % myver
+ print(_("!!! syntax error in version: %s") % myver)
return 0
vercmp_cache = {}
# checking that the versions are valid
if not match1 or not match1.groups():
if not silent:
- print _("!!! syntax error in version: %s") % ver1
+ print(_("!!! syntax error in version: %s") % ver1)
return None
if not match2 or not match2.groups():
if not silent:
- print _("!!! syntax error in version: %s") % ver2
+ print(_("!!! syntax error in version: %s") % ver2)
return None
# shortcut for cvs ebuilds (new style)
if len(myparts)<2:
if not silent:
- print _("!!! Name error in %s: missing a version or name part.") % mypkg
+ print(_("!!! Name error in %s: missing a version or name part.") % mypkg)
pkgcache[mypkg]=None
return None
def listindex(myindex):
"""Print to the terminal the filenames listed in the indexglob passed in."""
for x in getindex_mem(myindex):
- print x
+ print(x)
def getindex_mem(myindex):
"""Returns the filenames listed in the indexglob passed in."""
@rtype: string or None
@returns: A string on success or None if an error occurs.
"""
- print "Please enter a commit message. Use Ctrl-d to finish or Ctrl-c to abort."
+ print("Please enter a commit message. Use Ctrl-d to finish or Ctrl-c to abort.")
commitmessage = []
while True:
commitmessage.append(sys.stdin.readline())