diff --git a/client/equo.py b/client/equo.py index 56370a602..566cb7f70 100644 --- a/client/equo.py +++ b/client/equo.py @@ -20,7 +20,7 @@ sys.path.insert(0, '../client') from entropy.exceptions import * from entropy.const import * from entropy.output import * -import entropy.tools as entropyTools +import entropy.tools from entropy.core.settings.base import SystemSettings SysSettings = SystemSettings() try: @@ -58,9 +58,9 @@ etpExitMessages = { if not is_stdout_a_tty(): nocolor() -myopts = [ +help_opts = [ None, - (0, " ~ %s ~ " % (SysSettings['system']['name'],), 1, 'Entropy Package Manager - (C) %s' % (entropyTools.get_year(),) ), + (0, " ~ %s ~ " % (SysSettings['system']['name'],), 1, 'Entropy Package Manager - (C) %s' % (entropy.tools.get_year(),) ), None, (0, _('Basic Options'), 0, None), None, @@ -154,7 +154,7 @@ myopts = [ (2, '--ask', 2, _('ask before making any changes')), (2, '--pretend', 1, _('just show what would be done')), (2, '--nodeps', 1, _('do not pull in any dependency')), - (2, '--deep', 2, _('also pull unused dependencies where depends list is empty')), + (2, '--deep', 2, _('also pull unused dependencies where reverse deps list is empty')), (2, '--configfiles', 1, _('makes configuration files to be removed')), (2, '--resume', 1, _('resume previously interrupted operations')), None, @@ -185,7 +185,7 @@ myopts = [ (1, 'query', 2, _('do misc queries on repository and local databases')), (2, 'belongs', 1, _('search from what package a file belongs')), (2, 'changelog', 1, _('show packages changelog')), - (2, 'depends', 1, _('search what packages depend on the provided atoms')), + (2, 'revdeps', 1, _('search what packages depend on the provided atoms')), (2, 'description', 1, _('search packages by description')), (2, 'files', 2, _('show files owned by the provided atoms')), (2, 'installed', 1, _('search a package into the local database')), @@ -210,12 +210,12 @@ myopts = [ ] -myopts_ext_info = [ +help_opts_ext_info = [ (0, _('!!! Use --verbose to get full help output'), 0, None), None, ] -myopts_extended = [ +help_opts_extended = [ (0, _('Extended Options'), 0, None), None, (1, 'smart', 2, _('handles extended functionalities')), @@ -223,9 +223,9 @@ myopts_extended = [ (2, 'package', 1, _('make a smart package for the provided atoms (multiple packages into one file)')), (2, 'quickpkg', 1, _('recreate an Entropy package from your System')), (3, '--savedir', 1, _('save new packages into the specified directory')), - (2, 'inflate', 2, _('convert provided Gentoo .tbz2s into Entropy packages (Portage needed)')), + (2, 'inflate', 2, _('convert provided Source Package Manager package files into Entropy packages')), (3, '--savedir', 1, _('save new packages into the specified directory')), - (2, 'deflate', 2, _('convert provided Entropy packages into Gentoo ones (Portage needed)')), + (2, 'deflate', 2, _('convert provided Entropy packages into Source Package Manager ones')), (3, '--savedir', 1, _('save new packages into the specified directory')), (2, 'extract', 2, _('extract Entropy metadata from provided .tbz2 packages')), (3, '--savedir', 1, _('save new metadata into the specified directory')), @@ -235,9 +235,9 @@ myopts_extended = [ (2, 'vacuum', 2, _('remove System Database internal indexes to save space')), (2, 'generate', 1, 'generate installed packages database using Portage database (Portage needed)'), (2, 'resurrect', 1, _('generate installed packages database using files on the system [last hope]')), - (2, 'depends', 1, _('regenerate depends caching table')), + (2, 'revdeps', 1, _('regenerate reverse dependencies metadata')), (2, 'counters', 1, _('update/generate counters table (Portage <-> Entropy packages table)')), - (2, 'gentoosync', 1, _('makes Entropy aware of your Portage-updated packages')), + (2, 'spmsync', 1, _('makes Entropy aware of your Source Package Manager updated packages')), (2, 'backup', 2, _('backup the current Entropy installed packages database')), (2, 'restore', 1, _('restore a previously backed up Entropy installed packages database')), None, @@ -306,7 +306,7 @@ myopts_extended = [ (2, 'query', 2, _('do some searches into community repository databases')), (3, 'belongs', 2, _('show from what package the provided files belong')), (3, 'changelog', 2, _('show packages changelog')), - (3, 'depends', 2, _('show what packages depend on the provided atoms')), + (3, 'revdeps', 2, _('show what packages depend on the provided atoms')), (3, 'description', 2, _('search packages by description')), (3, 'eclass', 3, _('search packages using the provided eclasses')), (3, 'files', 3, _('show files owned by the provided atoms')), @@ -343,7 +343,7 @@ myopts_extended = [ (2, 'deptest', 2, _('look for unsatisfied dependencies across community repositories')), (2, 'pkgtest', 2, _('verify the integrity of local package files')), - (2, 'depends', 2, _('regenerate the depends table')), + (2, 'revdeps', 2, _('regenerate the reverse dependencies metadata')), None, (1, 'ugc', 2, _('handles User Generated Content features')), @@ -411,16 +411,14 @@ if options: # print help if (not options) or ("--help" in options): - print_menu(myopts) + print_menu(help_opts) if etpUi['verbose']: - print_menu(myopts_extended) + print_menu(help_opts_extended) else: - print_menu(myopts_ext_info) + print_menu(help_opts_ext_info) if not options: print_error(_("not enough parameters")) raise SystemExit(1) -# sure we don't need this after -del myopts # print version if (options[0] == "--version"): @@ -444,6 +442,19 @@ def do_moo(): sys.stdout.write(t) sys.stdout.flush() +def do_lxnay(): + t = """ _____________ +< I love lxnay! > + --------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\\ + ||----w | + || || +""" + sys.stdout.write(t) + sys.stdout.flush() + def readerrorstatus(): try: f = open(etpConst['errorstatus'], "r") @@ -485,7 +496,7 @@ def load_conf_cache(): except KeyboardInterrupt: continue except: - entropyTools.print_traceback() + entropy.tools.print_traceback() if not etpUi['quiet']: print_info(red(" @@ ")+blue(_("Caching not run."))) Equo.destroy() @@ -519,6 +530,9 @@ def main(): elif options[0] == "moo": do_moo() + elif options[0] == "lxnay": + do_lxnay() + elif options[0] in ("install", "remove", "config", "world", "upgrade", "deptest", "unusedpackages", "libtest", "source", "fetch", "hop"): @@ -569,14 +583,17 @@ def main(): text_ugc.Equo.destroy() elif (options[0] == "community"): + + comm_err_msg = _("You need to install sys-apps/entropy-server. :-) Do it !") etpConst['community']['mode'] = True myopts = options[1:] + if myopts: if myopts[0] == "repos": try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: repos_opts = myopts[1:] @@ -591,7 +608,7 @@ def main(): try: import server_activator except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: mirrors_opts = myopts[1:] @@ -623,7 +640,7 @@ def main(): try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: rc = server_reagent.database(myopts[1:]) @@ -633,7 +650,7 @@ def main(): try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: rc = server_reagent.repositories(myopts[1:]) @@ -653,7 +670,7 @@ def main(): try: import server_query except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: rc = server_query.query(myopts[1:]) @@ -662,7 +679,7 @@ def main(): try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: rc = server_reagent.spm(myopts[1:]) @@ -672,7 +689,7 @@ def main(): try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: server_reagent.Entropy.dependencies_test() @@ -682,24 +699,26 @@ def main(): try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: server_reagent.Entropy.verify_local_packages(["world"], ask = etpUi['ask']) server_reagent.Entropy.close_server_databases() - elif myopts[0] == "depends": + elif myopts[0] == "revdeps": try: import server_reagent except ImportError: - print_error(darkgreen(_("You need to install sys-apps/entropy-server. :-) Do it !"))) + print_error(darkgreen(comm_err_msg)) rc = 1 else: - rc = server_reagent.Entropy.depends_table_initialize() + rc = server_reagent.Entropy.generate_reverse_dependencies_metadata() server_reagent.Entropy.close_server_databases() elif (options[0] == "cleanup"): - entropyTools.cleanup([ etpConst['packagestmpdir'], etpConst['logdir'], etpConst['entropyunpackdir'], etpConst['packagesbindir'] ]) + entropy.tools.cleanup([ etpConst['packagestmpdir'], + etpConst['logdir'], etpConst['entropyunpackdir'], + etpConst['packagesbindir'] ]) rc = 0 else: rc = -10 @@ -714,7 +733,7 @@ def main(): else: writeerrorstatus(0) - entropyTools.kill_threads() + entropy.tools.kill_threads() raise SystemExit(rc) except SystemDatabaseError: @@ -779,7 +798,7 @@ def main(): except OSError as e: if e.errno == 28: - entropyTools.print_exception() + entropy.tools.print_exception() print_error("%s %s. %s." % (darkred(" * "), e, _("Your hard drive is full! Next time remember to have a look at it before starting. I'm sorry, there's nothing I can do for you. It's your fault :-("),)) raise SystemExit(5) @@ -792,7 +811,7 @@ def main(): except: reset_cache() - entropyTools.kill_threads() + entropy.tools.kill_threads() Text = TextInterface() print_error(darkred(_("Hi. My name is Bug Reporter. I am sorry to inform you that Equo crashed. Well, you know, shit happens."))) @@ -800,7 +819,7 @@ def main(): print_error(darkred(_("-- EVEN IF I DON'T WANT YOU TO SUBMIT THE SAME REPORT MULTIPLE TIMES --"))) print_error(darkgreen(_("Now I am showing you what happened. Don't panic, I'm here to help you."))) - entropyTools.print_exception() + entropy.tools.print_exception() import traceback exception_data = "" @@ -811,8 +830,8 @@ def main(): print_error(darkred(_("Oh well, I cannot even write to /tmp. So, please copy the error and mail lxnay@sabayon.org."))) raise SystemExit(1) - exception_stack = entropyTools.get_traceback() - exception_data = entropyTools.print_exception(True) + exception_stack = entropy.tools.get_traceback() + exception_data = entropy.tools.print_exception(True) ferror.write(const_convert_to_rawstring("\nRevision: " + \ etpConst['entropyversion'] + "\n\n")) ferror.write(const_convert_to_rawstring(exception_stack)) @@ -839,10 +858,10 @@ def main(): error_text = ''.join(ferror.readlines()) ferror.close() - from entropy.client.interfaces.qa import UGCErrorReportInterface try: + from entropy.client.interfaces.qa import UGCErrorReportInterface error = UGCErrorReportInterface() - except (IncorrectParameter, OnlineMirrorError, AttributeError,): + except (IncorrectParameter, OnlineMirrorError, AttributeError, ImportError,): error = None result = None diff --git a/client/text_query.py b/client/text_query.py index 48e03a5f5..c3fcfae85 100644 --- a/client/text_query.py +++ b/client/text_query.py @@ -94,8 +94,8 @@ def query(options): elif myopts[0] == "changelog": rc_status = search_changelog(myopts[1:]) - elif myopts[0] == "depends": - rc_status = search_inverse_dependencies(myopts[1:]) + elif myopts[0] == "revdeps": + rc_status = search_reverse_dependencies(myopts[1:]) elif myopts[0] == "files": rc_status = search_files(myopts[1:]) @@ -601,7 +601,7 @@ def search_changelog(atoms, dbconn = None, Equo = None): return 0 -def search_inverse_dependencies(atoms, dbconn = None, Equo = None): +def search_reverse_dependencies(atoms, dbconn = None, Equo = None): if Equo is None: Equo = EquoInterface() diff --git a/client/text_rescue.py b/client/text_rescue.py index d4a5fd5a4..6681e6d54 100644 --- a/client/text_rescue.py +++ b/client/text_rescue.py @@ -14,23 +14,28 @@ #### ## Repositories Tools # - -from entropy.const import * -from entropy.output import * +import os +import sys +from entropy.const import etpConst, ETP_LOGPRI_INFO, ETP_LOGLEVEL_NORMAL, \ + etpSys, etpUi +from entropy.output import red, bold, brown, blue, darkred, darkgreen, purple, \ + print_info, print_warning, print_error +from entropy.exceptions import SystemDatabaseError +import entropy.tools from entropy.client.interfaces import Client -from entropy.exceptions import * -Equo = Client(noclientdb = True) from entropy.i18n import _ # strictly depending on Portage atm from entropy.spm.plugins.interfaces.portage_plugin import xpaktools +Equo = Client(noclientdb = True) + def test_spm(): # test if portage is available try: Spm = Equo.Spm() return Spm except Exception as e: - Equo.entropyTools.print_traceback() + entropy.tools.print_traceback() mytxt = _("Source Package Manager backend not available") print_error(darkred(" * ")+red("%s: %s" % (mytxt, e,))) return None @@ -49,7 +54,7 @@ def database(options): return -10 # check if I am root - if (not Equo.entropyTools.is_root()): + if (not entropy.tools.is_root()): mytxt = _("You are not root") print_error(red(mytxt+".")) return 1 @@ -62,7 +67,7 @@ def database(options): mytxt = "%s: %s." % ( bold(_("ATTENTION")), - red(_("The installed package database will be generated again using Gentoo one")), + red(_("The installed package database will be generated again using Source Package Manager one")), ) print_warning(mytxt) print_warning(red(_("If you dont know what you're doing just, don't do this. Really. I'm not joking."))) @@ -81,20 +86,20 @@ def database(options): import shutil # try to collect current installed revisions if possible - revisionsMatch = {} + revisions_match = {} try: myids = Equo.clientDbconn.listAllIdpackages() for myid in myids: myatom = Equo.clientDbconn.retrieveAtom(myid) myrevision = Equo.clientDbconn.retrieveRevision(myid) - revisionsMatch[myatom] = myrevision + revisions_match[myatom] = myrevision except: pass # ok, he/she knows it... hopefully # if exist, copy old database print_info(red(" @@ ")+blue(_("Creating backup of the previous database, if exists."))+red(" @@")) - newfile = Equo.entropyTools.backup_client_repository() + newfile = entropy.tools.backup_client_repository() if (newfile): print_info(red(" @@ ")+blue(_("Previous database copied to file"))+" "+newfile+red(" @@")) @@ -114,12 +119,12 @@ def database(options): # now collect packages in the system print_info(red(" %s..." % (_("Transductingactioningintactering databases"),) )) - portagePackages = Spm.get_installed_packages() + spm_packages = Spm.get_installed_packages() # do for each database - maxcount = str(len(portagePackages)) + maxcount = str(len(spm_packages)) count = 0 - for portagePackage in portagePackages: + for portagePackage in spm_packages: count += 1 print_info(blue("(")+darkgreen(str(count))+"/"+darkred(maxcount)+blue(")")+red(" atom: ")+brown(portagePackage), back = True) temptbz2 = etpConst['entropyunpackdir']+"/"+portagePackage.split("/")[1]+".tbz2" @@ -137,7 +142,7 @@ def database(options): try: mydata = Spm.extract_package_metadata(temptbz2) except Exception as e: - Equo.entropyTools.print_traceback() + entropy.tools.print_traceback() Equo.clientLog.log( ETP_LOGPRI_INFO, ETP_LOGLEVEL_NORMAL, @@ -154,7 +159,7 @@ def database(options): if mydata['versiontag']: myatom += "#"+mydata['versiontag'] # now see if a revision is available - savedRevision = revisionsMatch.get(myatom) + savedRevision = revisions_match.get(myatom) if savedRevision != None: try: savedRevision = int(savedRevision) # cast to int for security @@ -166,7 +171,7 @@ def database(options): Equo.clientDbconn.storeInstalledPackage(idpk, "spm-db") os.remove(temptbz2) - print_info(red(" %s." % (_("All the Gentoo packages have been injected into Entropy database"),) )) + print_info(red(" %s." % (_("All the Source Package Manager packages have been injected into Entropy database"),) )) print_info(red(" %s..." % (_("Now checking dependency atoms validity"),) )) mydeps = Equo.clientDbconn.listAllDependencies() maxcount = str(len(mydeps)) @@ -179,7 +184,7 @@ def database(options): try: Equo.clientDbconn.atomMatch(atom) except Exception as e: - Equo.entropyTools.print_traceback() + entropy.tools.print_traceback() Equo.clientLog.log( ETP_LOGPRI_INFO, ETP_LOGLEVEL_NORMAL, @@ -200,7 +205,7 @@ def database(options): for myidpackage in found_idpackages: Equo.clientDbconn.removePackage(myidpackage) - print_info(red(" %s..." % (_("Now generating depends caching table"),) )) + print_info(red(" %s..." % (_("Now generating reverse dependencies metadata"),) )) Equo.clientDbconn.generateReverseDependenciesMetadata() print_info(red(" %s...") % (_("Now indexing tables"),) ) Equo.clientDbconn.indexing = True @@ -250,7 +255,7 @@ def database(options): # ok, he/she knows it... hopefully # if exist, copy old database print_info(red(" @@ ")+blue(_("Creating backup of the previous database, if exists."))) - newfile = Equo.entropyTools.backup_client_repository() + newfile = entropy.tools.backup_client_repository() if (newfile): print_info(red(" @@ ")+blue(_("Previous database copied to file"))+" "+newfile) @@ -290,7 +295,7 @@ def database(options): print_error(mytxt) return # spawn process - rnd_num = Equo.entropyTools.get_random_number() + rnd_num = entropy.tools.get_random_number() tmpfile = os.path.join(etpConst['packagestmpdir'], "%s" % (rnd_num,)) if os.path.isfile(tmpfile): os.remove(tmpfile) @@ -358,14 +363,14 @@ def database(options): print_info(" ("+str(cnt)+"/"+count+") "+red("%s: " % (_("Adding"),))+atoms[pkgfound], back = True) Package = Equo.Package() Package.prepare(tuple(pkgfound), "install", {}) - Package._install_package_into_database() + Package.add_installed_package() Package.kill() del Package print_info(red(" %s." % (_("Database resurrected successfully"),))) - print_info(red(" %s..." % (_("Now generating depends caching table"),))) + print_info(red(" %s..." % (_("Now generating reverse dependencies metadata"),))) Equo.clientDbconn.generateReverseDependenciesMetadata() print_info(red(" %s..." % (_("Now indexing tables"),))) Equo.clientDbconn.indexing = True @@ -375,15 +380,15 @@ def database(options): print_warning(red(" %s" % (_("Keep in mind that virtual/meta packages couldn't be matched. They don't own any files."),) )) return 0 - elif (options[0] == "depends"): + elif (options[0] == "revdeps"): rc = test_clientdb() if rc != None: return rc - print_info(red(" %s..." % (_("Regenerating depends caching table"),) )) + print_info(red(" %s..." % (_("Regenerating reverse dependencies metadata"),) )) Equo.clientDbconn.generateReverseDependenciesMetadata() - print_info(red(" %s." % (_("Depends caching table regenerated successfully"),) )) + print_info(red(" %s." % (_("Reverse dependencies metadata regenerated successfully"),) )) return 0 elif (options[0] == "counters"): @@ -401,7 +406,15 @@ def database(options): print_info(red(" %s" % (_("Counters table regenerated. Look above for errors."),) )) return 0 - elif (options[0] == "gentoosync"): + elif (options[0] in ("gentoosync", "spmsync",)): + + if options[0] == "gentoosync": + print_warning("") + print_warning("'%s' %s: '%s'" % ( + purple("equo database gentoosync"), + blue(_("is deprecated, please use")), + darkgreen("equo database spmsync"),)) + print_warning("") Spm = test_spm() if Spm == None: @@ -411,7 +424,7 @@ def database(options): if rc != None: return rc - print_info(red(" %s..." % (_("Scanning Portage and Entropy databases for differences"),))) + print_info(red(" %s..." % (_("Scanning Source Package Manager and Entropy databases for differences"),))) # make it crash Equo.noclientdb = False @@ -424,7 +437,7 @@ def database(options): except: mytxt = "%s %s: %s %s." % ( bold(_("Entropy database")), - red(_("has never been in sync with Portage. So, you can't run this unless you run first")), + red(_("has never been in sync with Source Package Manager. So, you can't run this unless you run first")), bold("equo database generate"), red(_("Sorry")), ) @@ -432,7 +445,7 @@ def database(options): return 1 import shutil - print_info(red(" %s..." % (_("Collecting Portage counters"),) ), back = True) + print_info(red(" %s..." % (_("Collecting Source Package Manager metadata"),) ), back = True) spm_packages = Spm.get_installed_packages() installed_packages = [] for spm_package in spm_packages: @@ -468,7 +481,7 @@ def database(options): atom = Equo.clientDbconn.retrieveAtom(x[1]) add = True if atom: - atomkey = Equo.entropyTools.dep_getkey(atom) + atomkey = entropy.tools.dep_getkey(atom) atomslot = Equo.clientDbconn.retrieveSlot(x[1]) add = True for pkgdata in toBeAdded: @@ -476,7 +489,7 @@ def database(options): addslot = Spm.get_installed_package_metadata(pkgdata[0], "SLOT") except KeyError: continue - addkey = Equo.entropyTools.dep_getkey(pkgdata[0]) + addkey = entropy.tools.dep_getkey(pkgdata[0]) # workaround for ebuilds not having slot if addslot == None: addslot = '0' @@ -595,7 +608,7 @@ def database(options): Equo.clientLog.log( ETP_LOGPRI_INFO, ETP_LOGLEVEL_NORMAL, - "Database gentoosync: Exception caught: %s: %s" % ( + "Database spmsync: Exception caught: %s: %s" % ( str(Exception), str(e), ) @@ -646,8 +659,8 @@ def database(options): mydblist = [] db_data = [] for mydb in dblist: - ts = Equo.entropyTools.get_file_unix_mtime(mydb) - mytime = Equo.entropyTools.convert_unix_time_to_human_time(ts) + ts = entropy.tools.get_file_unix_mtime(mydb) + mytime = entropy.tools.convert_unix_time_to_human_time(ts) mydblist.append("[%s] %s" % (mytime, mydb,)) db_data.append(mydb) @@ -723,18 +736,13 @@ def getinfo(): info['UI Config'] = etpUi # client database info - conn = False - try: - Equo.clientDbconn.listAllIdPackages() - conn = True - except: - pass - info['Installed database'] = conn - if (conn): + cdbconn = Equo.clientDbconn + info['Installed database'] = cdbconn + if cdbconn is not None: # print db info - info['Removal internal protected directories'] = Equo.clientDbconn.listConfigProtectEntries() - info['Removal internal protected directory masks'] = Equo.clientDbconn.listConfigProtectEntries(mask = True) - info['Total installed packages'] = len(Equo.clientDbconn.listAllIdpackages()) + info['Removal internal protected directories'] = cdbconn.listConfigProtectEntries() + info['Removal internal protected directory masks'] = cdbconn.listConfigProtectEntries(mask = True) + info['Total installed packages'] = len(cdbconn.listAllIdpackages()) # repository databases info (if found on the system) info['Repository databases'] = {} diff --git a/client/text_ui.py b/client/text_ui.py index c35510fe1..13d8990a9 100644 --- a/client/text_ui.py +++ b/client/text_ui.py @@ -27,26 +27,26 @@ Equo = Client() def package(options): - if len(options) < 1: + if not options: return 0 # Options available for all the packages submodules myopts = options[1:] - equoRequestDeps = True - equoRequestEmptyDeps = False - equoRequestOnlyFetch = False - equoRequestDeep = False - equoRequestRelaxed = False - equoRequestConfigFiles = False - equoRequestReplay = False - equoRequestResume = False - equoRequestSkipfirst = False - equoRequestListfiles = False - equoRequestChecksum = True - equoRequestSortSize = False - equoRequestSaveHere = False - equoRequestDump = False - equoRequestMultifetch = 1 + e_req_deps = True + e_req_empty_deps = False + e_req_only_fetch = False + e_req_deep = False + e_req_relaxed = False + e_req_config_files = False + e_req_replay = False + e_req_resume = False + e_req_skipfirst = False + e_req_listfiles = False + e_req_checksum = True + e_req_sort_size = False + e_req_save_here = False + e_req_dump = False + e_req_multifetch = 1 rc = 0 _myopts = [] mytbz2paths = [] @@ -60,31 +60,31 @@ def package(options): print_error(red(" %s." % (_("Malformed command"),) )) return -10 if (opt == "--nodeps"): - equoRequestDeps = False + e_req_deps = False elif (opt == "--empty"): - equoRequestEmptyDeps = True + e_req_empty_deps = True elif (opt == "--relaxed"): - equoRequestRelaxed = True + e_req_relaxed = True elif (opt == "--fetch"): - equoRequestOnlyFetch = True + e_req_only_fetch = True elif (opt == "--deep"): - equoRequestDeep = True + e_req_deep = True elif (opt == "--dump"): - equoRequestDump = True + e_req_dump = True elif (opt == "--listfiles"): - equoRequestListfiles = True + e_req_listfiles = True elif (opt == "--configfiles"): - equoRequestConfigFiles = True + e_req_config_files = True elif (opt == "--replay"): - equoRequestReplay = True + e_req_replay = True elif (opt == "--resume"): - equoRequestResume = True + e_req_resume = True elif (opt == "--sortbysize"): - equoRequestSortSize = True + e_req_sort_size = True elif (opt == "--savehere"): - equoRequestSaveHere = True + e_req_save_here = True elif (opt == "--multifetch"): - equoRequestMultifetch = 3 + e_req_multifetch = 3 elif (opt.startswith("--multifetch=")): try: myn = int(opt[len("--multifetch="):]) @@ -92,11 +92,11 @@ def package(options): continue if myn not in list(range(2, 11)): myn = 10 - equoRequestMultifetch = myn + e_req_multifetch = myn elif (opt == "--nochecksum"): - equoRequestChecksum = False + e_req_checksum = False elif (opt == "--skipfirst"): - equoRequestSkipfirst = True + e_req_skipfirst = True elif (opt.startswith("--")): print_error(red(" %s." % (_("Wrong parameters"),) )) return -10 @@ -115,19 +115,19 @@ def package(options): rc, garbage = dependenciesTest() elif (options[0] == "unusedpackages"): - rc, garbage = unusedPackagesTest(do_size_sort = equoRequestSortSize) + rc, garbage = unusedPackagesTest(do_size_sort = e_req_sort_size) elif (options[0] == "libtest"): - rc, garbage = librariesTest(listfiles = equoRequestListfiles, - dump = equoRequestDump) + rc, garbage = librariesTest(listfiles = e_req_listfiles, + dump = e_req_dump) elif (options[0] == "source"): if myopts or mytbz2paths: - status, rc = downloadSources(myopts, deps = equoRequestDeps, - deepdeps = equoRequestDeep, tbz2 = mytbz2paths, - savecwd = equoRequestSaveHere, - relaxed_deps = equoRequestRelaxed) + status, rc = downloadSources(myopts, deps = e_req_deps, + deepdeps = e_req_deep, tbz2 = mytbz2paths, + savecwd = e_req_save_here, + relaxed_deps = e_req_relaxed) else: print_error(red(" %s." % (_("Nothing to do"),) )) rc = 126 @@ -135,26 +135,26 @@ def package(options): elif (options[0] == "fetch"): if myopts or mytbz2paths: - status, rc = downloadPackages(myopts, deps = equoRequestDeps, - deepdeps = equoRequestDeep, - multifetch = equoRequestMultifetch, - dochecksum = equoRequestChecksum, - relaxed_deps = equoRequestRelaxed) + status, rc = downloadPackages(myopts, deps = e_req_deps, + deepdeps = e_req_deep, + multifetch = e_req_multifetch, + dochecksum = e_req_checksum, + relaxed_deps = e_req_relaxed) else: print_error(red(" %s." % (_("Nothing to do"),) )) rc = 126 elif (options[0] == "install"): - if (myopts) or (mytbz2paths) or (equoRequestResume): - rc, garbage = installPackages(myopts, deps = equoRequestDeps, - emptydeps = equoRequestEmptyDeps, - onlyfetch = equoRequestOnlyFetch, deepdeps = equoRequestDeep, - config_files = equoRequestConfigFiles, tbz2 = mytbz2paths, - resume = equoRequestResume, skipfirst = equoRequestSkipfirst, - dochecksum = equoRequestChecksum, - multifetch = equoRequestMultifetch, + if (myopts) or (mytbz2paths) or (e_req_resume): + rc, garbage = installPackages(myopts, deps = e_req_deps, + emptydeps = e_req_empty_deps, + onlyfetch = e_req_only_fetch, deepdeps = e_req_deep, + config_files = e_req_config_files, tbz2 = mytbz2paths, + resume = e_req_resume, skipfirst = e_req_skipfirst, + dochecksum = e_req_checksum, + multifetch = e_req_multifetch, check_critical_updates = True, - relaxed_deps = equoRequestRelaxed) + relaxed_deps = e_req_relaxed) else: print_error(red(" %s." % (_("Nothing to do"),) )) rc = 126 @@ -167,12 +167,12 @@ def package(options): blue(_("is deprecated, please use")), darkgreen("equo upgrade"),)) print_warning("") - status, rc = worldUpdate(onlyfetch = equoRequestOnlyFetch, - replay = (equoRequestReplay or equoRequestEmptyDeps), - resume = equoRequestResume, - skipfirst = equoRequestSkipfirst, human = True, - dochecksum = equoRequestChecksum, - multifetch = equoRequestMultifetch) + status, rc = worldUpdate(onlyfetch = e_req_only_fetch, + replay = (e_req_replay or e_req_empty_deps), + resume = e_req_resume, + skipfirst = e_req_skipfirst, human = True, + dochecksum = e_req_checksum, + multifetch = e_req_multifetch) elif (options[0] == "hop"): if myopts: @@ -182,10 +182,10 @@ def package(options): rc = 126 elif (options[0] == "remove"): - if myopts or equoRequestResume: - status, rc = removePackages(myopts, deps = equoRequestDeps, - deep = equoRequestDeep, configFiles = equoRequestConfigFiles, - resume = equoRequestResume) + if myopts or e_req_resume: + status, rc = removePackages(myopts, deps = e_req_deps, + deep = e_req_deep, configFiles = e_req_config_files, + resume = e_req_resume) else: print_error(red(" %s." % (_("Nothing to do"),) )) rc = 126 @@ -307,7 +307,8 @@ def worldUpdate(onlyfetch = False, replay = False, resume = False, equo_client_settings['collisionprotect'] = oldcollprotect - # verify that client database idpackage still exist, validate here before passing removePackage() wrong info + # verify that client database idpackage still exist, + # validate here before passing removePackage() wrong info remove = [x for x in remove if Equo.clientDbconn.isIdpackageAvailable(x)] if remove and Equo.validRepositories and (not onlyfetch): @@ -554,7 +555,8 @@ def _showPackageInfo(foundAtoms, deps, action_name = None): installedTag = "NoTag" installedRev = "NoRev" installedRepo = _("Not available") - pkginstalled = Equo.clientDbconn.atomMatch(entropy.tools.dep_getkey(pkgatom), matchSlot = pkgslot) + pkginstalled = Equo.clientDbconn.atomMatch( + entropy.tools.dep_getkey(pkgatom), matchSlot = pkgslot) if (pkginstalled[1] == 0): # found idx = pkginstalled[0] @@ -656,7 +658,8 @@ def _generateRunQueue(foundAtoms, deps, emptydeps, deepdeps, relaxeddeps): m_reasons = {} for match in masked_matches[0]: masked, idreason, reason = Equo.get_masked_package_reason(match) - if not masked: continue + if not masked: + continue if (idreason, reason,) not in m_reasons: m_reasons[(idreason, reason,)] = [] m_reasons[(idreason, reason,)].append(match) @@ -732,8 +735,11 @@ def downloadSources(packages = None, deps = True, deepdeps = False, tbz2 = None, Package.prepare(match, "source", metaopts) - xterm_header = "Equo ("+_("sources fetch")+") :: "+str(fetchqueue)+" of "+totalqueue+" ::" - print_info(red(" :: ")+bold("(")+blue(str(fetchqueue))+"/"+red(totalqueue)+bold(") ")+">>> "+darkgreen(Package.pkgmeta['atom'])) + xterm_header = "Equo ("+_("sources fetch")+") :: " + \ + str(fetchqueue)+" of "+totalqueue+" ::" + print_info(red(" :: ")+bold("(")+blue(str(fetchqueue))+"/" + \ + red(totalqueue)+bold(") ")+">>> " + \ + darkgreen(Package.pkgmeta['atom'])) rc = Package.run(xterm_header = xterm_header) if rc != 0: diff --git a/docs/man/equo.pod b/docs/man/equo.pod index a6b0602f3..76ab3688b 100644 --- a/docs/man/equo.pod +++ b/docs/man/equo.pod @@ -384,7 +384,7 @@ do not pull in any dependency =item B<--deep> -also pull unused dependencies where depends list is empty +also pull unused dependencies where reverse deps list is empty =item B<--configfiles> @@ -502,7 +502,7 @@ search from what package a file belongs show packages changelog -=item B +=item B search what packages depend on the provided atoms @@ -635,7 +635,7 @@ save new packages into the specified directory =item B -convert provided Gentoo .tbz2s into Entropy packages (Portage needed) +convert provided Source Package Manager package files into Entropy packages =over @@ -649,7 +649,7 @@ save new packages into the specified directory =item B -convert provided Entropy packages into Gentoo ones (Portage needed) +convert provided Entropy packages into Source Package Manager ones =over @@ -700,17 +700,17 @@ generate installed packages database using Portage database (Portage needed) generate installed packages database using files on the system [last hope] -=item B +=item B -regenerate depends caching table +regenerate reverse dependencies metadata =item B update/generate counters table (Portage <-> Entropy packages table) -=item B +=item B -makes Entropy aware of your Portage-updated packages +makes Entropy aware of your Source Package Manager updated packages =item B @@ -1004,7 +1004,7 @@ show from what package the provided files belong show packages changelog -=item B +=item B show what packages depend on the provided atoms @@ -1144,9 +1144,9 @@ look for unsatisfied dependencies across community repositories verify the integrity of local package files -=item B +=item B -regenerate the depends table +regenerate reverse dependencies metadata =back diff --git a/docs/man/man1/equo.1 b/docs/man/man1/equo.1 index e88adc922..c5f6ca73e 100644 --- a/docs/man/man1/equo.1 +++ b/docs/man/man1/equo.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EQUO 1" -.TH EQUO 1 "2009-12-20" "perl v5.8.8" "Entropy" +.TH EQUO 1 "2009-12-22" "perl v5.8.8" "Entropy" .SH "NAME" \&\fBequo\fR \- Official Sabayon Linux Package Manager Client .SH "SYNOPSIS" @@ -428,7 +428,7 @@ just show what would be done do not pull in any dependency .IP "\fB\-\-deep\fR" 4 .IX Item "--deep" -also pull unused dependencies where depends list is empty +also pull unused dependencies where reverse deps list is empty .IP "\fB\-\-configfiles\fR" 4 .IX Item "--configfiles" makes configuration files to be removed @@ -521,8 +521,8 @@ search from what package a file belongs .IP "\fBchangelog\fR" 4 .IX Item "changelog" show packages changelog -.IP "\fBdepends\fR" 4 -.IX Item "depends" +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" search what packages depend on the provided atoms .IP "\fBdescription\fR" 4 .IX Item "description" @@ -620,7 +620,7 @@ save new packages into the specified directory .RE .IP "\fBinflate\fR" 4 .IX Item "inflate" -convert provided Gentoo .tbz2s into Entropy packages (Portage needed) +convert provided Source Package Manager package files into Entropy packages .RS 4 .IP "\fB\-\-savedir\fR" 4 .IX Item "--savedir" @@ -630,7 +630,7 @@ save new packages into the specified directory .RE .IP "\fBdeflate\fR" 4 .IX Item "deflate" -convert provided Entropy packages into Gentoo ones (Portage needed) +convert provided Entropy packages into Source Package Manager ones .RS 4 .IP "\fB\-\-savedir\fR" 4 .IX Item "--savedir" @@ -667,15 +667,15 @@ generate installed packages database using Portage database (Portage needed) .IP "\fBresurrect\fR" 4 .IX Item "resurrect" generate installed packages database using files on the system [last hope] -.IP "\fBdepends\fR" 4 -.IX Item "depends" -regenerate depends caching table +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" +regenerate reverse dependencies metadata .IP "\fBcounters\fR" 4 .IX Item "counters" update/generate counters table (Portage <\-> Entropy packages table) -.IP "\fBgentoosync\fR" 4 -.IX Item "gentoosync" -makes Entropy aware of your Portage-updated packages +.IP "\fBspmsync\fR" 4 +.IX Item "spmsync" +makes Entropy aware of your Source Package Manager updated packages .IP "\fBbackup\fR" 4 .IX Item "backup" backup the current Entropy installed packages database @@ -887,8 +887,8 @@ show from what package the provided files belong .IP "\fBchangelog\fR" 4 .IX Item "changelog" show packages changelog -.IP "\fBdepends\fR" 4 -.IX Item "depends" +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" show what packages depend on the provided atoms .IP "\fBdescription\fR" 4 .IX Item "description" @@ -991,9 +991,9 @@ look for unsatisfied dependencies across community repositories .IP "\fBpkgtest\fR" 4 .IX Item "pkgtest" verify the integrity of local package files -.IP "\fBdepends\fR" 4 -.IX Item "depends" -regenerate the depends table +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" +regenerate reverse dependencies metadata .RE .RS 4 .RE diff --git a/docs/man/man1/reagent.1 b/docs/man/man1/reagent.1 index c24380e8c..dd66521a6 100644 --- a/docs/man/man1/reagent.1 +++ b/docs/man/man1/reagent.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "REAGENT 1" -.TH REAGENT 1 "2009-12-20" "perl v5.8.8" "Entropy" +.TH REAGENT 1 "2009-12-22" "perl v5.8.8" "Entropy" .SH "NAME" \&\fBreagent\fR \- Official Sabayon Linux Server\-Side Package Management tool .SH "SYNOPSIS" @@ -194,8 +194,8 @@ search packages inside the default repository database .IP "\fBneeded\fR" 4 .IX Item "needed" show runtime libraries needed by the provided atoms -.IP "\fBdepends\fR" 4 -.IX Item "depends" +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" show what packages depend on the provided atoms .IP "\fBtags\fR" 4 .IX Item "tags" @@ -394,9 +394,9 @@ dump results to files .IP "\fBpkgtest\fR" 4 .IX Item "pkgtest" verify the integrity of local package files -.IP "\fBdepends\fR" 4 -.IX Item "depends" -regenerate the depends table +.IP "\fBrevdeps\fR" 4 +.IX Item "revdeps" +regenerate reverse dependencies metadata .IP "\fBlibpaths\fR" 4 .IX Item "libpaths" regenerate the library paths table diff --git a/docs/man/reagent.pod b/docs/man/reagent.pod index d39a655f8..663b553e7 100644 --- a/docs/man/reagent.pod +++ b/docs/man/reagent.pod @@ -89,7 +89,7 @@ search packages inside the default repository database show runtime libraries needed by the provided atoms -=item B +=item B show what packages depend on the provided atoms @@ -355,9 +355,9 @@ dump results to files verify the integrity of local package files -=item B +=item B -regenerate the depends table +regenerate reverse dependencies metadata =item B diff --git a/libraries/entropy/server/interfaces/main.py b/libraries/entropy/server/interfaces/main.py index 2b3c6958c..ea8c5333c 100644 --- a/libraries/entropy/server/interfaces/main.py +++ b/libraries/entropy/server/interfaces/main.py @@ -1673,7 +1673,7 @@ class Server(Singleton, TextInterface): return not_found - def depends_table_initialize(self, repo = None): + def generate_reverse_dependencies_metadata(self, repo = None): dbconn = self.open_server_repository(read_only = False, no_upload = True, repo = repo) dbconn.generateReverseDependenciesMetadata() @@ -2531,7 +2531,7 @@ class Server(Singleton, TextInterface): count = (mycount, maxcount,) ) # reinit depends table - self.depends_table_initialize(repo) + self.generate_reverse_dependencies_metadata(repo) # reinit librarypathsidpackage table if idpackages_added: dbconn = self.open_server_repository(read_only = False, @@ -2555,12 +2555,12 @@ class Server(Singleton, TextInterface): repo = repo) # reinit depends table if missing_deps_taint: - self.depends_table_initialize(repo) + self.generate_reverse_dependencies_metadata(repo) self.close_server_databases() raise # reinit depends table - self.depends_table_initialize(repo) + self.generate_reverse_dependencies_metadata(repo) if idpackages_added: dbconn = self.open_server_repository(read_only = False, @@ -2580,7 +2580,7 @@ class Server(Singleton, TextInterface): # reinit depends table if missing_deps_taint: - self.depends_table_initialize(repo) + self.generate_reverse_dependencies_metadata(repo) # inject database into packages self.inject_database_into_packages(to_be_injected, repo = repo) @@ -3457,7 +3457,7 @@ class Server(Singleton, TextInterface): back = True ) - self.depends_table_initialize(repo) + self.generate_reverse_dependencies_metadata(repo) my_qa = self.QA() diff --git a/libraries/entropy/services/system/commands.py b/libraries/entropy/services/system/commands.py index 0bfbde55b..4f1278611 100644 --- a/libraries/entropy/services/system/commands.py +++ b/libraries/entropy/services/system/commands.py @@ -1219,7 +1219,7 @@ class Repository(SocketCommands): repoid = myargs[0] search_type = myargs[1] search_string = ' '.join(myargs[2:]) - avail_search_types = ['atom', 'needed', 'depends', 'tag', 'file', 'description'] + avail_search_types = ['atom', 'needed', 'revdeps', 'tag', 'file', 'description'] if search_type not in avail_search_types: return False, 'available search types: %s' % (avail_search_types,) @@ -1251,7 +1251,7 @@ class Repository(SocketCommands): search_results['ordered_idpackages'].add(idpackage) search_results['data'][idpackage] = self._get_entropy_pkginfo(dbconn, idpackage, repoid) - elif search_type == "depends": + elif search_type == "revdeps": mysearchlist = search_string.split() excluded_deptypes = [etpConst['dependency_type_ids']['bdepend_id']] diff --git a/server/activator.py b/server/activator.py index 093372dfc..f12c82d98 100644 --- a/server/activator.py +++ b/server/activator.py @@ -19,9 +19,10 @@ sys.path.insert(3, '/usr/lib/entropy/client') sys.path.insert(4, '/usr/lib/entropy/libraries') sys.path.insert(5, '/usr/lib/entropy/server') from entropy.i18n import _ -import entropy.tools as entropyTools -from entropy.output import * -from entropy.const import * +import entropy.tools +from entropy.output import red, is_stdout_a_tty, nocolor, print_generic, \ + etpUi, print_menu, print_error +from entropy.const import etpConst, const_kill_threads from entropy.core.settings.base import SystemSettings SysSettings = SystemSettings() @@ -29,9 +30,10 @@ SysSettings = SystemSettings() if not is_stdout_a_tty(): nocolor() -myopts = [ +help_opts = [ None, - (0, " ~ "+SysSettings['system']['name']+" ~ "+sys.argv[0]+" ~ ", 1, 'Entropy Package Manager - (C) %s' % (entropyTools.get_year(),) ), + (0, " ~ "+SysSettings['system']['name']+" ~ "+sys.argv[0]+" ~ ", 1, + 'Entropy Package Manager - (C) %s' % (entropy.tools.get_year(),) ), None, (0, _('Basic Options'), 0, None), None, @@ -74,7 +76,7 @@ myopts = [ options = sys.argv[1:] # print version -if (' '.join(options).find("--version") != -1) or (' '.join(options).find(" -V") != -1): +if ("--version" in options) or ("-V" in options): print_generic("activator: "+etpConst['entropyversion']) raise SystemExit(0) @@ -104,35 +106,41 @@ for opt in options: options = _options # print help -if len(options) < 1 or ' '.join(options).find("--help") != -1 or ' '.join(options).find(" -h") != -1: - print_menu(myopts) +if not options or ("--help" in options) or ("-h" in options): + print_menu(help_opts) if len(options) < 1: print_error("not enough parameters") raise SystemExit(1) -rc = 1 -if not entropyTools.is_root(): +rc = -10 +if not entropy.tools.is_root(): print_error("you must be root in order to run activator") rc = 2 + elif (options[0] == "sync"): import server_activator rc = server_activator.sync(options[1:]) + elif (options[0] == "tidy"): import server_activator - rc = server_activator.sync(options[1:], justTidy = True) + rc = server_activator.sync(options[1:], just_tidy = True) + elif (options[0] == "database"): import server_activator - server_activator.database(options[1:]) - rc = 0 + rc = server_activator.database(options[1:]) + elif (options[0] == "packages"): import server_activator - server_activator.packages(options[1:]) - rc = 0 + rc = server_activator.packages(options[1:]) + # database tool elif (options[0] == "notice"): import server_activator - server_activator.notice(options[1:]) - rc = 0 + rc = server_activator.notice(options[1:]) + +if rc == -10: + print_menu(help_opts) + print_error(red(" %s." % (_("Wrong parameters"),) )) const_kill_threads() -raise SystemExit(rc) \ No newline at end of file +raise SystemExit(rc) diff --git a/server/reagent.py b/server/reagent.py index aa6eb4b13..abc12505b 100644 --- a/server/reagent.py +++ b/server/reagent.py @@ -10,7 +10,6 @@ B{Entropy Package Manager Server}. """ - import os, sys sys.path.insert(0, '../libraries') sys.path.insert(1, '../client') @@ -19,9 +18,10 @@ sys.path.insert(3, '/usr/lib/entropy/client') sys.path.insert(4, '/usr/lib/entropy/libraries') sys.path.insert(5, '/usr/lib/entropy/server') from entropy.i18n import _ -import entropy.tools as entropyTools -from entropy.output import * -from entropy.const import * +import entropy.tools +from entropy.output import red, print_menu, print_error, print_generic, \ + is_stdout_a_tty, nocolor, etpUi +from entropy.const import etpConst, const_kill_threads from entropy.core.settings.base import SystemSettings SysSettings = SystemSettings() @@ -29,9 +29,10 @@ SysSettings = SystemSettings() if not is_stdout_a_tty(): nocolor() -myopts = [ +help_opts = [ None, - (0, " ~ "+SysSettings['system']['name']+" ~ "+sys.argv[0]+" ~ ", 1, 'Entropy Package Manager - (C) %s' % (entropyTools.get_year(),) ), + (0, " ~ "+SysSettings['system']['name']+" ~ "+sys.argv[0]+" ~ ", 1, + 'Entropy Package Manager - (C) %s' % (entropy.tools.get_year(),) ), None, (0, _('Basic Options'), 0, None), None, @@ -53,7 +54,7 @@ myopts = [ (1, 'query', 3, _('do some searches into repository databases')), (2, 'search', 3, _('search packages inside the default repository database')), (2, 'needed', 3, _('show runtime libraries needed by the provided atoms')), - (2, 'depends', 2, _('show what packages depend on the provided atoms')), + (2, 'revdeps', 2, _('show what packages depend on the provided atoms')), (2, 'tags', 3, _('show packages owning the specified tags')), (2, 'sets', 3, _('search available package sets')), (2, 'files', 3, _('show files owned by the provided atoms')), @@ -111,8 +112,7 @@ myopts = [ (1, 'libtest', 2, _('look for missing libraries')), (2, '--dump', 2, _('dump results to files')), (1, 'pkgtest', 2, _('verify the integrity of local package files')), - (1, 'depends', 2, _('regenerate the depends table')), - (1, 'libpaths', 2, _('regenerate the library paths table')), + (1, 'revdeps', 2, _('regenerate the reverse dependencies metadata')), None, (1, 'cleanup', 2, _('remove downloaded packages and clean temp. directories)')), None, @@ -121,7 +121,7 @@ myopts = [ options = sys.argv[1:] # print version -if (' '.join(options).find("--version") != -1) or (' '.join(options).find(" -V") != -1): +if ("--version" in options) or ("-V" in options): print_generic("reagent: "+etpConst['entropyversion']) raise SystemExit(0) @@ -151,14 +151,14 @@ for opt in options: options = _options # print help -if len(options) < 1 or ' '.join(options).find("--help") != -1 or ' '.join(options).find(" -h") != -1: - print_menu(myopts) +if not options or ("--help" in options) or ("-h" in options): + print_menu(help_opts) if len(options) < 1: print_error("not enough parameters") raise SystemExit(1) -rc = 1 -if not entropyTools.is_root(): +rc = -10 +if not entropy.tools.is_root(): print_error("you must be root in order to run "+sys.argv[0]) elif (options[0] == "update"): @@ -208,19 +208,14 @@ elif (options[0] == "libtest"): dump_results_to_file = dump) x = server_reagent.Entropy.close_server_databases() -elif (options[0] == "depends"): +elif (options[0] == "revdeps"): import server_reagent - rc = server_reagent.Entropy.depends_table_initialize() - server_reagent.Entropy.close_server_databases() - -elif (options[0] == "libpaths"): - import server_reagent - rc = server_reagent.Entropy.library_paths_table_initialize() + rc = server_reagent.Entropy.generate_reverse_dependencies_metadata() server_reagent.Entropy.close_server_databases() # cleanup elif (options[0] == "cleanup"): - rc = entropyTools.cleanup() + rc = entropy.tools.cleanup() # deptest tool elif (options[0] == "spm"): @@ -228,5 +223,9 @@ elif (options[0] == "spm"): rc = server_reagent.spm(options[1:]) server_reagent.Entropy.close_server_databases() +if rc == -10: + print_menu(help_opts) + print_error(red(" %s." % (_("Wrong parameters"),) )) + const_kill_threads() -raise SystemExit(rc) \ No newline at end of file +raise SystemExit(rc) diff --git a/server/server_activator.py b/server/server_activator.py index 2eeaf39ca..a9a0dac3d 100644 --- a/server/server_activator.py +++ b/server/server_activator.py @@ -9,16 +9,24 @@ B{Entropy Package Manager Server}. """ - -from entropy.const import * -from entropy.output import * +import os +import tempfile +import subprocess +from entropy.const import etpConst, etpUi +from entropy.output import red, green, print_info, bold, darkgreen, blue, \ + darkred, brown, print_error, readtext from entropy.server.interfaces import Server from entropy.transceivers import EntropyTransceiver from entropy.i18n import _ Entropy = Server(community_repo = etpConst['community']['mode']) +DEFAULT_REPO_COMMIT_MSG = """ +# This is Entropy Server repository commit message handler. +# Please friggin' enter the commit message for your changes. Lines starting +# with '#' will be ignored. To avoid encoding issue, write stuff in plain ASCII. +""" -def sync(options, justTidy = False): +def sync(options, just_tidy = False): do_noask = False sync_all = False @@ -29,21 +37,23 @@ def sync(options, justTidy = False): elif opt == "--syncall": sync_all = True elif opt.startswith("--"): - print_error(red(" %s." % (_("Wrong parameters"),) )) - return 1 + return -10 else: myopts.append(opt) options = myopts - print_info(green(" * ")+red("%s ..." % (_("Starting to sync data across mirrors (packages/database)"),) )) + print_info(green(" * ")+red("%s ..." % ( + _("Starting to sync data across mirrors (packages/database)"),) )) old_default = Entropy.default_repository repos = [Entropy.default_repository] if sync_all: sys_settings_plugin_id = \ etpConst['system_settings_plugins_ids']['server_plugin'] - repos = sorted(Entropy.SystemSettings[sys_settings_plugin_id]['server']['repositories'].keys()) + srv_data = Entropy.SystemSettings[sys_settings_plugin_id]['server'] + repos = sorted(srv_data['repositories'].keys()) + rc = 0 for repo in repos: # avoid __default__ @@ -54,7 +64,7 @@ def sync(options, justTidy = False): Entropy.switch_default_repository(repo) errors = False - if not justTidy: + if not just_tidy: mirrors_tainted, mirrors_errors, successfull_mirrors, \ broken_mirrors, check_data = Entropy.MirrorsService.sync_packages( @@ -69,10 +79,37 @@ def sync(options, justTidy = False): continue if mirrors_tainted: + if (not do_noask) and etpConst['rss-feed']: - Entropy.rssMessages['commitmessage'] = readtext(">> %s: " % (_("Please insert a commit message"),) ) + tmp_fd, tmp_commit_path = tempfile.mkstemp() + os.close(tmp_fd) + with open(tmp_commit_path, "w") as tmp_f: + tmp_f.write(DEFAULT_REPO_COMMIT_MSG) + if successfull_mirrors: + tmp_f.write("# Changes to be committed:\n") + for sf_mirror in sorted(successfull_mirrors): + tmp_f.write("#\t updated: %s\n" % (sf_mirror,)) + + # spawn editor + editor = os.getenv('EDITOR', '/bin/nano') + cm_msg_rc = subprocess.call([editor, tmp_commit_path]) + if cm_msg_rc: + # wtf?, fallback to old way + Entropy.rssMessages['commitmessage'] = \ + readtext(">> %s: " % ( + _("Please insert a commit message"),) ) + else: + commit_msg = '' + with open(tmp_commit_path, "r") as tmp_f: + for line in tmp_f.readlines(): + if line.strip().startswith("#"): + continue + commit_msg += line + Entropy.rssMessages['commitmessage'] = commit_msg + elif etpConst['rss-feed']: Entropy.rssMessages['commitmessage'] = "Autodriven Update" + errors, fine, broken = sync_remote_databases() if not errors: Entropy.MirrorsService.lock_mirrors(lock = False) @@ -85,12 +122,15 @@ def sync(options, justTidy = False): continue if not errors: - Entropy.MirrorsService.tidy_mirrors(ask = not do_noask, pretend = etpUi['pretend']) + Entropy.MirrorsService.tidy_mirrors(ask = not do_noask, + pretend = etpUi['pretend']) + else: + rc = 1 if old_default != Entropy.default_repository: Entropy.switch_default_repository(old_default) - return 0 + return rc def packages(options): @@ -103,11 +143,10 @@ def packages(options): elif opt == "--syncall": sync_all = True elif opt.startswith("--"): - print_error(red(" %s." % (_("Wrong parameters"),) )) - return + return -10 if not options: - return + return -10 if options[0] == "sync": @@ -115,9 +154,11 @@ def packages(options): if sync_all: sys_settings_plugin_id = \ etpConst['system_settings_plugins_ids']['server_plugin'] - repos = sorted(Entropy.SystemSettings[sys_settings_plugin_id]['server']['repositories'].keys()) + srv_data = Entropy.SystemSettings[sys_settings_plugin_id]['server'] + repos = sorted(srv_data['repositories'].keys()) old_default = Entropy.default_repository + rc = 0 for repo in repos: # avoid __default__ @@ -127,19 +168,26 @@ def packages(options): if repo != Entropy.default_repository: Entropy.switch_default_repository(repo) - Entropy.MirrorsService.sync_packages( ask = etpUi['ask'], - pretend = etpUi['pretend'], - packages_check = do_pkg_check - ) + mirrors_tainted, mirrors_errors, successfull_mirrors, \ + broken_mirrors, check_data = Entropy.MirrorsService.sync_packages( + ask = etpUi['ask'], + pretend = etpUi['pretend'], + packages_check = do_pkg_check) + + if mirrors_errors: + rc = 1 + if old_default != Entropy.default_repository: Entropy.switch_default_repository(old_default) - return 0 + return rc + + return -10 def notice(options): if not options: - return + return -10 def show_notice(key, mydict): @@ -167,7 +215,6 @@ def notice(options): input_params = [('idx', _('Press Enter to continue'), fake_callback, False)] data = Entropy.inputBox('', input_params, cancel_button = True) - return def show_notice_selector(title, mydict): @@ -217,16 +264,17 @@ def notice(options): ] data = Entropy.inputBox(blue("%s") % (_("Repository notice board, new item insertion"),), input_params, cancel_button = True) - if data == None: return 0 + if data is None: + return 0 status = Entropy.MirrorsService.update_notice_board(title = data['title'], notice_text = data['text'], link = data['url']) if status: return 0 return 1 - if options[0] == "read": + elif options[0] == "read": data = Entropy.MirrorsService.read_notice_board() - if data == None: + if data is None: print_error(darkred(" * ")+blue("%s" % (_("Notice board not available"),) )) return 1 items, counter = data @@ -240,10 +288,12 @@ def notice(options): elif sel == -1: return 0 - if options[0] == "remove": + return 0 + + elif options[0] == "remove": data = Entropy.MirrorsService.read_notice_board() - if data == None: + if data is None: print_error(darkred(" * ")+blue("%s" % (_("Notice board not available"),) )) return 1 items, counter = data @@ -270,7 +320,7 @@ def notice(options): return 1 return 0 - return 0 + return -10 def database(options): @@ -280,45 +330,53 @@ def database(options): if opt == "--syncall": sync_all = True elif opt.startswith("--"): - print_error(red(" %s." % (_("Wrong parameters"),) )) - return + return -10 if cmd == "lock": - print_info(green(" * ")+green("%s ..." % (_("Starting to lock mirrors databases"),) )) + print_info(green(" * ")+green("%s ..." % ( + _("Starting to lock mirrors databases"),) )) rc = Entropy.MirrorsService.lock_mirrors(lock = True) if rc: - print_info(green(" * ")+red("%s !" % (_("A problem occured on at least one mirror"),) )) + print_info(green(" * ")+red("%s !" % ( + _("A problem occured on at least one mirror"),) )) else: print_info(green(" * ")+green(_("Databases lock complete"))) return rc elif cmd == "unlock": - print_info(green(" * ")+green("%s ..." % (_("Starting to unlock mirrors databases"),))) + print_info(green(" * ")+green("%s ..." % ( + _("Starting to unlock mirrors databases"),))) rc = Entropy.MirrorsService.lock_mirrors(lock = False) if rc: - print_info(green(" * ")+green("%s !" % (_("A problem occured on at least one mirror"),) )) + print_info(green(" * ")+green("%s !" % ( + _("A problem occured on at least one mirror"),) )) else: - print_info(green(" * ")+green(_("Databases unlock complete"))) + print_info(green(" * ")+green( + _("Databases unlock complete"))) return rc elif cmd == "download-lock": - print_info(green(" * ")+green("%s ..." % (_("Starting to lock download mirrors databases"),) )) + print_info(green(" * ")+green("%s ..." % ( + _("Starting to lock download mirrors databases"),) )) rc = Entropy.MirrorsService.lock_mirrors_for_download(lock = True) if rc: - print_info(green(" * ")+green("%s !" % (_("A problem occured on at least one mirror"),) )) + print_info(green(" * ")+green("%s !" % ( + _("A problem occured on at least one mirror"),) )) else: print_info(green(" * ")+green(_("Download mirrors lock complete"))) return rc elif cmd == "download-unlock": - print_info(green(" * ")+green("%s ..." % (_("Starting to unlock download mirrors databases"),) )) + print_info(green(" * ")+green("%s ..." % ( + _("Starting to unlock download mirrors databases"),) )) rc = Entropy.MirrorsService.lock_mirrors_for_download(lock = False) if rc: - print_info(green(" * ")+green("%s ..." % (_("A problem occured on at least one mirror"),) )) + print_info(green(" * ")+green("%s ..." % ( + _("A problem occured on at least one mirror"),) )) else: print_info(green(" * ")+green(_("Download mirrors unlock complete"))) return rc @@ -337,7 +395,9 @@ def database(options): else: db[2] = green(_("Unlocked")) host = EntropyTransceiver.get_uri_name(db[0]) - print_info(bold("\t"+host+": ")+red("[")+brown("%s: " % (_("DATABASE"),) )+db[1]+red("] [")+brown("%s: " % (_("DOWNLOAD"),) )+db[2]+red("]")) + print_info(bold("\t"+host+": ") + red("[") + \ + brown("%s: " % (_("DATABASE"),) ) + db[1] + red("] [") + \ + brown("%s: " % (_("DOWNLOAD"),) ) + db[2] + red("]")) return 0 elif cmd == "sync": @@ -346,7 +406,8 @@ def database(options): if sync_all: sys_settings_plugin_id = \ etpConst['system_settings_plugins_ids']['server_plugin'] - repos = sorted(Entropy.SystemSettings[sys_settings_plugin_id]['server']['repositories'].keys()) + srv_data = Entropy.SystemSettings[sys_settings_plugin_id]['server'] + repos = sorted(srv_data['repositories'].keys()) old_default = Entropy.default_repository problems = 0 @@ -362,7 +423,8 @@ def database(options): print_info(green(" * ")+red("%s ..." % (_("Syncing databases"),) )) errors, fine, broken = sync_remote_databases() if errors: - print_error(darkred(" !!! ")+green(_("Database sync errors, cannot continue."))) + print_error(darkred(" !!! ") + \ + green(_("Database sync errors, cannot continue."))) problems = 1 if old_default != Entropy.default_repository: @@ -370,29 +432,35 @@ def database(options): return problems + return -10 -def sync_remote_databases(noUpload = False, justStats = False): - remoteDbsStatus = Entropy.MirrorsService.get_remote_databases_status() - print_info(green(" * ")+red("%s:" % (_("Remote Entropy Database Repository Status"),) )) - for dbstat in remoteDbsStatus: +def sync_remote_databases(): + + remote_db_status = Entropy.MirrorsService.get_remote_databases_status() + print_info(green(" * ")+red("%s:" % ( + _("Remote Entropy Database Repository Status"),) )) + + for dbstat in remote_db_status: host = EntropyTransceiver.get_uri_name(dbstat[0]) print_info(green("\t %s:\t" % (_("Host"),) )+bold(host)) - print_info(red("\t * %s: " % (_("Database revision"),) )+blue(str(dbstat[1]))) + print_info(red("\t * %s: " % (_("Database revision"),) ) + \ + blue(str(dbstat[1]))) local_revision = Entropy.get_local_database_revision() - print_info(red("\t * %s: " % (_("Database local revision currently at"),) )+blue(str(local_revision))) - - if justStats: - return 0, set(), set() + print_info(red("\t * %s: " % ( + _("Database local revision currently at"),) ) + \ + blue(str(local_revision))) # do the rest - errors, fine_uris, broken_uris = Entropy.MirrorsService.sync_databases(no_upload = noUpload) + errors, fine_uris, broken_uris = Entropy.MirrorsService.sync_databases() remote_status = Entropy.MirrorsService.get_remote_databases_status() - print_info(darkgreen(" * ")+red("%s:" % (_("Remote Entropy Database Repository Status"),) )) + print_info(darkgreen(" * ")+red("%s:" % ( + _("Remote Entropy Database Repository Status"),) )) for dbstat in remote_status: host = EntropyTransceiver.get_uri_name(dbstat[0]) print_info(darkgreen("\t %s:\t" % (_("Host"),) )+bold(host)) - print_info(red("\t * %s: " % (_("Database revision"),) )+blue(str(dbstat[1]))) + print_info(red("\t * %s: " % (_("Database revision"),) ) + \ + blue(str(dbstat[1]))) return errors, fine_uris, broken_uris diff --git a/server/server_query.py b/server/server_query.py index b39bc56de..fdd02270d 100644 --- a/server/server_query.py +++ b/server/server_query.py @@ -10,8 +10,9 @@ """ -from entropy.output import * -from entropy.const import * +from entropy.output import red, bold, darkred, blue, darkgreen, print_info, \ + print_generic, print_warning +from entropy.const import etpConst, etpUi import text_query from entropy.server.interfaces import Server from entropy.i18n import _ @@ -23,9 +24,9 @@ def query(myopts): cmd = myopts[0] myopts = myopts[1:] if not myopts and cmd not in ["list", "sets"]: - return 10 + return -10 - rc = 0 + rc = -10 Entropy = Server() dbconn = Entropy.open_server_repository(just_reading = True) @@ -62,13 +63,14 @@ def query(myopts): elif cmd == "needed": text_query.search_needed_libraries(myopts, dbconn = dbconn, Equo = Entropy) - elif cmd == "depends": - text_query.search_inverse_dependencies(myopts, dbconn = dbconn, + elif cmd == "revdeps": + text_query.search_reverse_dependencies(myopts, dbconn = dbconn, Equo = Entropy) elif cmd == "eclass": text_query.search_eclass(myopts, dbconn = dbconn, Equo = Entropy) elif cmd == "list": - text_query.search_installed_packages(myopts, dbconn = dbconn, Equo = Entropy) + text_query.search_installed_packages(myopts, dbconn = dbconn, + Equo = Entropy) elif cmd == "changelog": text_query.search_changelog(myopts, dbconn = dbconn, Equo = Entropy) elif cmd == "graph": @@ -103,6 +105,7 @@ def search_tagged_packages(tags, dbconn, entropy): text_query.print_package_info(result[1], dbconn, Equo = entropy) if not etpUi['quiet']: print_info(blue(" %s: " % (_("Keyword"),) )+bold("\t"+tag)) - print_info(blue(" %s: " % (_("Found"),) )+bold("\t"+str(len(results)))+red(" %s" % (_("entries"),) )) + print_info(blue(" %s: " % (_("Found"),) ) + \ + bold("\t"+str(len(results)))+red(" %s" % (_("entries"),) )) - return 0 \ No newline at end of file + return 0 diff --git a/server/server_reagent.py b/server/server_reagent.py index 61d6cfe06..81a590c05 100644 --- a/server/server_reagent.py +++ b/server/server_reagent.py @@ -9,10 +9,11 @@ B{Entropy Package Manager Server}. """ - +import os import subprocess -from entropy.const import * -from entropy.output import * +from entropy.const import etpConst, etpUi +from entropy.output import red, bold, brown, purple, darkgreen, darkred, blue, \ + green, print_info, print_warning, print_error, print_generic from entropy.exceptions import InvalidAtom from entropy.server.interfaces import Server from entropy.i18n import _ @@ -21,20 +22,20 @@ Entropy = Server(community_repo = etpConst['community']['mode']) def inject(options): - mytbz2s = [] + etp_pkg_files = [] for opt in options: opt = os.path.realpath(opt) if not os.path.isfile(opt) or not opt.endswith(etpConst['packagesext']): print_error(darkred(" * ")+bold(opt)+red(" is invalid.")) return 1 - mytbz2s.append(opt) + etp_pkg_files.append(opt) - if not mytbz2s: + if not etp_pkg_files: print_error(red(_("no package specified."))) return 2 - mytbz2s = [(x, True,) for x in mytbz2s] - idpackages = Entropy.add_packages_to_repository(mytbz2s) + etp_pkg_files = [(x, True,) for x in etp_pkg_files] + idpackages = Entropy.add_packages_to_repository(etp_pkg_files) if idpackages: # checking dependencies and print issues Entropy.dependencies_test() @@ -47,8 +48,10 @@ def repositories(options): repoid_dest = None pull_deps = False invalid_repos = False - if not options: cmd = "" - else: cmd = options[0] + if not options: + cmd = "" + else: + cmd = options[0] myopts = [] for opt in options[1:]: if cmd in ["enable", "disable"]: @@ -56,9 +59,9 @@ def repositories(options): invalid_repos = True repoid = opt elif cmd in ["move", "copy"]: - if repoid == None: + if repoid is None: repoid = opt - elif repoid_dest == None: + elif repoid_dest is None: if opt not in valid_repos: invalid_repos = True repoid_dest = opt @@ -67,7 +70,7 @@ def repositories(options): else: myopts.append(opt) elif cmd == "default": - if repoid == None: + if repoid is None: repoid = opt else: myopts.append(opt) @@ -83,33 +86,46 @@ def repositories(options): return 2 if cmd == "enable": - print_info(brown(" @@ ")+red(_("Enabling"))+" "+bold(str(repoid))+red(" %s..." % (_("repository"),) ), back = True) + print_info(brown(" @@ ")+red(_("Enabling"))+" "+bold(str(repoid)) + \ + red(" %s..." % (_("repository"),) ), back = True) rc = Entropy.toggle_repository(repoid, enable = True) if rc: - print_info(brown(" @@ ")+red(_("Enabled"))+" "+bold(str(repoid))+red(" %s." % (_("repository"),) )) + print_info(brown(" @@ ")+red(_("Enabled"))+" "+bold(str(repoid)) + \ + red(" %s." % (_("repository"),) )) return 0 elif rc == False: - print_info(brown(" @@ ")+red(_("Repository"))+" "+bold(str(repoid))+red(" %s." % (_("already enabled"),) )) + print_info(brown(" @@ ")+red(_("Repository"))+" " + \ + bold(str(repoid)) + red(" %s." % (_("already enabled"),) )) return 1 else: - print_info(brown(" @@ ")+red(_("Configuration file"))+" "+bold(etpConst['serverconf'])+red(" %s." % (_("not found"),) )) + print_info(brown(" @@ ")+red(_("Configuration file"))+" " + \ + bold(etpConst['serverconf'])+red(" %s." % (_("not found"),) )) return 127 + elif cmd == "disable": - print_info(brown(" @@ ")+red(_("Disabling"))+" "+bold(str(repoid))+red(" %s..." % (_("repository"),) ), back = True) + print_info(brown(" @@ ")+red(_("Disabling"))+" "+bold(str(repoid)) + \ + red(" %s..." % (_("repository"),) ), back = True) rc = Entropy.toggle_repository(repoid, enable = False) if rc: - print_info(brown(" @@ ")+red(_("Disabled"))+" "+bold(str(repoid))+red(" %s." % (_("repository"),) )) + print_info(brown(" @@ ")+red(_("Disabled"))+" " + \ + bold(str(repoid)) + red(" %s." % (_("repository"),) )) return 0 elif rc == False: - print_info(brown(" @@ ")+red(_("Repository"))+" "+bold(str(repoid))+red(" %s." % (_("already disabled"),) )) + print_info(brown(" @@ ")+red(_("Repository"))+" " + \ + bold(str(repoid))+red(" %s." % (_("already disabled"),) )) return 1 else: - print_info(brown(" @@ ")+red(_("Configuration file"))+" "+bold(etpConst['serverconf'])+red(" %s." % (_("not found"),) )) + print_info(brown(" @@ ")+red(_("Configuration file"))+" " + \ + bold(etpConst['serverconf'])+red(" %s." % (_("not found"),) )) return 127 + elif cmd == "default": Entropy.switch_default_repository(repoid, save = True) + return 0 + elif cmd == "status": return 0 + elif cmd == "package-tag": if len(myopts) < 3: @@ -118,7 +134,8 @@ def repositories(options): sys_settings_plugin_id = \ etpConst['system_settings_plugins_ids']['server_plugin'] - if repo not in Entropy.SystemSettings[sys_settings_plugin_id]['server']['repositories']: + srv_set = Entropy.SystemSettings[sys_settings_plugin_id]['server'] + if repo not in srv_set['repositories']: return 3 tag_string = myopts[1] @@ -126,15 +143,18 @@ def repositories(options): # match idpackages = [] for package in atoms: - match = Entropy.atom_match(package, matchRepo = [repo], matchTag = '') + match = Entropy.atom_match(package, matchRepo = [repo], + matchTag = '') if (match[1] == repo): idpackages.append(match[0]) else: print_warning( brown(" * ") + \ red("%s: " % (_("Cannot match"),) )+bold(package) + \ - red(" %s " % (_("in"),) )+bold(repo)+red(" %s" % (_("repository"),) ) + red(" %s " % (_("in"),) )+bold(repo) + \ + red(" %s" % (_("repository"),) ) ) - if not idpackages: return 2 + if not idpackages: + return 2 status, data = Entropy.tag_packages(tag_string, idpackages, repo = repo) return status @@ -146,7 +166,8 @@ def repositories(options): sys_settings_plugin_id = \ etpConst['system_settings_plugins_ids']['server_plugin'] - if repo not in Entropy.SystemSettings[sys_settings_plugin_id]['server']['repositories']: + srv_set = Entropy.SystemSettings[sys_settings_plugin_id]['server'] + if repo not in srv_set['repositories']: return 3 atoms = myopts[1:] @@ -159,7 +180,8 @@ def repositories(options): else: print_warning( brown(" * ") + \ red("%s: " % (_("Cannot match"),) )+bold(package) + \ - red(" %s " % (_("in"),) )+bold(repo)+red(" %s" % (_("repository"),) ) + red(" %s " % (_("in"),) )+bold(repo) + \ + red(" %s" % (_("repository"),) ) ) if not idpackages: return 2 @@ -176,23 +198,31 @@ def repositories(options): etpConst['dependency_type_ids']['mdepend_id']] atom_manual_deps = [x for x in orig_deps if x not in atom_deps] - print_info(brown(" @@ ")+"%s: %s:" % (blue(atom), darkgreen(_("package dependencies")),)) + print_info(brown(" @@ ")+"%s: %s:" % (blue(atom), + darkgreen(_("package dependencies")),)) for dep_str, dep_id in atom_deps: - print_info("%s [type:%s] %s" % (brown(" # "), darkgreen(str(dep_id)), darkred(dep_str),)) + print_info("%s [type:%s] %s" % (brown(" # "), + darkgreen(str(dep_id)), darkred(dep_str),)) if not atom_deps: print_info("%s %s" % (brown(" # "), _("No dependencies"),)) - print_info(brown(" @@ ")+"%s: %s:" % (blue(atom), darkgreen(_("package manual dependencies")),)) + + print_info(brown(" @@ ")+"%s: %s:" % (blue(atom), + darkgreen(_("package manual dependencies")),)) for dep_str, dep_id in atom_manual_deps: - print_info("%s [type:%s] %s" % (brown(" # "), darkgreen(str(dep_id)), purple(dep_str),)) + print_info("%s [type:%s] %s" % (brown(" # "), + darkgreen(str(dep_id)), purple(dep_str),)) if not atom_manual_deps: print_info("%s %s" % (brown(" # "), _("No dependencies"),)) + print() current_mdeps = sorted([x[0] for x in atom_manual_deps]) input_params = [ - ('new_mdeps', ('list', ('Manual dependencies', current_mdeps),), dep_check_cb, True) + ('new_mdeps', ('list', ('Manual dependencies', current_mdeps),), + dep_check_cb, True) ] data = Entropy.inputBox(_("Manual dependencies editor"), input_params) - if data == None: return 4 + if data is None: + return 4 new_mdeps = sorted(data.get('new_mdeps', [])) if current_mdeps == new_mdeps: @@ -214,7 +244,8 @@ def repositories(options): except (KeyboardInterrupt, SystemExit,): continue break - print_info(brown(" @@ ")+"%s: %s" % (blue(atom), darkgreen(_("manual dependencies added successfully")),)) + print_info(brown(" @@ ")+"%s: %s" % (blue(atom), + darkgreen(_("manual dependencies added successfully")),)) Entropy.close_server_databases() return 0 @@ -238,7 +269,8 @@ def repositories(options): else: print_warning( brown(" * ") + \ red("%s: " % (_("Cannot match"),) )+bold(package) + \ - red(" %s " % (_("in"),) )+bold(repoid)+red(" %s" % (_("repository"),) ) + red(" %s " % (_("in"),) )+bold(repoid) + \ + red(" %s" % (_("repository"),) ) ) if not matches: return 1 @@ -252,86 +284,94 @@ def repositories(options): return 0 return 1 - return 1 + return -10 def update(options): # differential checking - # collect differences between the packages in the database and the ones on the system + # collect differences between the packages in the database + # and the ones on the system - reagentRequestSeekStore = False - reagentRequestRepackage = False - reagentRequestAsk = True - reagentRequestOnlyAtoms = False - reagentRequestInteractive = False - repackageItems = [] - onlyAtoms = [] + r_request_seek_store = False + r_request_repackage = False + r_request_ask = True + r_request_only_atoms = False + r_request_interactive = False + + repackage_items = [] + only_atoms = [] _options = [] for opt in options: if opt == "--seekstore": - reagentRequestSeekStore = True + r_request_seek_store = True elif opt == "--repackage": - reagentRequestRepackage = True + r_request_repackage = True elif opt == "--atoms": - reagentRequestOnlyAtoms = True + r_request_only_atoms = True elif opt == "--noask": - reagentRequestAsk = False + r_request_ask = False elif opt == "--interactive": - reagentRequestInteractive = True + r_request_interactive = True else: - if reagentRequestRepackage and (not opt.startswith("--")): - if not opt in repackageItems: - repackageItems.append(opt) + if r_request_repackage and (not opt.startswith("--")): + if not opt in repackage_items: + repackage_items.append(opt) continue - elif reagentRequestOnlyAtoms and (not opt.startswith("--")): - if not opt in onlyAtoms: - onlyAtoms.append(opt) + elif r_request_only_atoms and (not opt.startswith("--")): + if not opt in only_atoms: + only_atoms.append(opt) continue _options.append(opt) options = _options - toBeAdded = set() - toBeRemoved = set() - toBeInjected = set() + to_be_added = set() + to_be_removed = set() + to_be_injected = set() - if not reagentRequestSeekStore: + if not r_request_seek_store: - if repackageItems: + if repackage_items: packages = [] - dbconn = Entropy.open_server_repository(read_only = True, no_upload = True) + dbconn = Entropy.open_server_repository(read_only = True, + no_upload = True) - for item in repackageItems: + spm = Entropy.Spm() + for item in repackage_items: match = dbconn.atomMatch(item) if match[0] == -1: - print_warning(darkred(" !!! ")+red(_("Cannot match"))+" "+bold(item)) + print_warning(darkred(" !!! ") + \ + red(_("Cannot match"))+" "+bold(item)) else: cat = dbconn.retrieveCategory(match[0]) name = dbconn.retrieveName(match[0]) version = dbconn.retrieveVersion(match[0]) spm_pkg = os.path.join(cat, name + "-" + version) - spm_build = Entropy.Spm().get_installed_package_build_script_path(spm_pkg) + spm_build = spm.get_installed_package_build_script_path( + spm_pkg) spm_pkg_dir = os.path.dirname(spm_build) if os.path.isdir(spm_pkg_dir): packages.append((spm_pkg, 0)) if packages: - toBeAdded |= set(packages) + to_be_added |= set(packages) else: - print_info(brown(" * ")+red(_("No valid packages to repackage."))) + print_info(brown(" * ") + \ + red(_("No valid packages to repackage."))) # normal scanning - print_info(brown(" * ")+red("%s..." % (_("Scanning database for differences"),) )) - myadded, toBeRemoved, toBeInjected = Entropy.scan_package_changes() - toBeAdded |= myadded + print_info(brown(" * ") + \ + red("%s..." % (_("Scanning database for differences"),) )) + myadded, to_be_removed, to_be_injected = Entropy.scan_package_changes() + to_be_added |= myadded - if onlyAtoms: - toBeRemoved.clear() - toBeInjected.clear() - tba = dict(((x[0], x,) for x in toBeAdded)) + if only_atoms: + to_be_removed.clear() + to_be_injected.clear() + tba = dict(((x[0], x,) for x in to_be_added)) tb_added_new = set() - for myatom in onlyAtoms: + for myatom in only_atoms: if myatom in tba: tb_added_new.add(tba.get(myatom)) continue @@ -342,24 +382,24 @@ def update(options): continue if inst_myatom in tba: tb_added_new.add(tba.get(inst_myatom)) - toBeAdded = tb_added_new + to_be_added = tb_added_new - if not (len(toBeRemoved)+len(toBeAdded)+len(toBeInjected)): + if not (len(to_be_removed)+len(to_be_added)+len(to_be_injected)): print_info(brown(" * ")+red("%s." % (_("Zarro thinggz totoo"),) )) return 0 - if toBeInjected: + if to_be_injected: print_info(brown(" @@ ")+blue("%s:" % (_("These are the packages that would be changed to injected status"),) )) - for idpackage, repoid in toBeInjected: + for idpackage, repoid in to_be_injected: dbconn = Entropy.open_server_repository(read_only = True, no_upload = True, repo = repoid) atom = dbconn.retrieveAtom(idpackage) print_info(brown(" # ")+"["+blue(repoid)+"] "+red(atom)) - if reagentRequestAsk: + if r_request_ask: rc = Entropy.askQuestion(">> %s" % (_("Would you like to transform them now ?"),) ) else: rc = _("Yes") if rc == _("Yes"): - for idpackage, repoid in toBeInjected: + for idpackage, repoid in to_be_injected: dbconn = Entropy.open_server_repository(read_only = True, no_upload = True, repo = repoid) atom = dbconn.retrieveAtom(idpackage) print_info(brown(" <> ")+blue("%s: " % (_("Transforming from database"),) )+red(atom)) @@ -376,49 +416,49 @@ def update(options): exp_string = "|%s" % (purple(_("expired")),) print_info(brown(" # ")+"["+blue(repoid)+exp_string+"] "+red(atom)) - if reagentRequestInteractive and toBeRemoved: + if r_request_interactive and to_be_removed: print_info(brown(" @@ ")+blue(_("So sweetheart, what packages do you want to remove ?"))) - new_toBeRemoved = set() - for idpackage, repoid in toBeRemoved: + new_to_be_removed = set() + for idpackage, repoid in to_be_removed: show_rm(idpackage, repoid) rc = Entropy.askQuestion(">> %s" % (_("Remove this package?"),)) if rc == _("Yes"): - new_toBeRemoved.add((idpackage, repoid,)) - toBeRemoved = new_toBeRemoved + new_to_be_removed.add((idpackage, repoid,)) + to_be_removed = new_to_be_removed - if toBeRemoved: + if to_be_removed: print_info(brown(" @@ ")+blue("%s:" % (_("These are the packages that would be removed from the database"),) )) - for idpackage, repoid in toBeRemoved: + for idpackage, repoid in to_be_removed: show_rm(idpackage, repoid) - if reagentRequestAsk: + if r_request_ask: rc = Entropy.askQuestion(">> %s" % (_("Would you like to remove them now ?"),) ) else: rc = _("Yes") if rc == _("Yes"): remdata = {} - for idpackage, repoid in toBeRemoved: + for idpackage, repoid in to_be_removed: if repoid not in remdata: remdata[repoid] = set() remdata[repoid].add(idpackage) for repoid in remdata: Entropy.remove_packages(remdata[repoid], repo = repoid) - if reagentRequestInteractive and toBeAdded: + if r_request_interactive and to_be_added: print_info(brown(" @@ ")+blue(_("So sweetheart, what packages do you want to add ?"))) - new_toBeAdded = set() - for tb_atom, tb_counter in toBeAdded: + new_to_be_added = set() + for tb_atom, tb_counter in to_be_added: print_info(brown(" # ")+red(tb_atom)) rc = Entropy.askQuestion(">> %s" % (_("Add this package?"),)) if rc == _("Yes"): - new_toBeAdded.add((tb_atom, tb_counter,)) - toBeAdded = new_toBeAdded + new_to_be_added.add((tb_atom, tb_counter,)) + to_be_added = new_to_be_added - if toBeAdded: + if to_be_added: print_info(brown(" @@ ")+blue("%s:" % (_("These are the packages that would be added/updated to the add list"),) )) - items = sorted([x[0] for x in toBeAdded]) + items = sorted([x[0] for x in to_be_added]) for item in items: item_txt = purple(item) @@ -453,7 +493,7 @@ def update(options): print_info(brown(" # ")+item_txt) - if reagentRequestAsk: + if r_request_ask: rc = Entropy.askQuestion(">> %s (%s %s)" % ( _("Would you like to package them now ?"), _("inside"), @@ -469,23 +509,24 @@ def update(options): # package them print_info(brown(" @@ ")+blue("%s..." % (_("Compressing packages"),) )) - for x in toBeAdded: + for x in to_be_added: print_info(brown(" # ")+red(x[0]+"...")) try: Entropy.Spm().generate_package(x[0], Entropy.get_local_store_directory()) except OSError: entropy.tools.print_traceback() - print_info(brown(" !!! ")+bold("%s..." % (_("Ignoring broken Spm entry, please recompile it"),) )) + print_info(brown(" !!! ")+bold("%s..." % ( + _("Ignoring broken Spm entry, please recompile it"),) )) - tbz2files = os.listdir(Entropy.get_local_store_directory()) - if not tbz2files: + etp_pkg_files = os.listdir(Entropy.get_local_store_directory()) + if not etp_pkg_files: print_info(brown(" * ")+red(_("Nothing to do, check later."))) # then exit gracefully return 0 - tbz2files = [(os.path.join(Entropy.get_local_store_directory(), x), False,) for x in tbz2files] - idpackages = Entropy.add_packages_to_repository(tbz2files) + etp_pkg_files = [(os.path.join(Entropy.get_local_store_directory(), x), False,) for x in etp_pkg_files] + idpackages = Entropy.add_packages_to_repository(etp_pkg_files) if idpackages: # checking dependencies and print issues @@ -497,21 +538,21 @@ def update(options): def database(options): - databaseRequestNoAsk = False - databaseRequestSync = False - databaseRequestEmpty = False + d_request_noask = False + d_request_sync = False + d_request_empty = False repo = None _options = [] for opt in options: if opt.startswith("--noask"): - databaseRequestNoAsk = True + d_request_noask = True elif opt.startswith("--sync"): - databaseRequestSync = True + d_request_sync = True elif opt.startswith("--empty"): - databaseRequestEmpty = True + d_request_empty = True elif opt.startswith("--repo=") and len(opt.split("=")) == 2: repo = opt.split("=")[1] - databaseRequestEmpty = True + d_request_empty = True else: _options.append(opt) options = _options @@ -522,7 +563,7 @@ def database(options): if (options[0] == "--initialize"): - rc = Entropy.initialize_server_database(empty = databaseRequestEmpty, repo = repo) + rc = Entropy.initialize_server_database(empty = d_request_empty, repo = repo) if rc == 0: print_info(darkgreen(" * ")+red(_("Entropy database has been reinitialized using binary packages available"))) @@ -572,7 +613,7 @@ def database(options): status = Entropy.switch_packages_branch(from_branch, to_branch, repo = repoid) - if status == None: + if status is None: return 1 switched, already_switched, ignored, not_found, no_checksum = status @@ -680,14 +721,14 @@ def database(options): elif (options[0] == "md5remote"): mypackages = options[1:] - return Entropy.verify_remote_packages(mypackages, ask = not databaseRequestNoAsk) + return Entropy.verify_remote_packages(mypackages, ask = not d_request_noask) # bump tool elif (options[0] == "bump"): print_info(green(" * ")+red("%s..." % (_("Bumping Repository database"),) )) Entropy.bump_database() - if databaseRequestSync: + if d_request_sync: errors, fine, broken = Entropy.MirrorsService.sync_databases() elif (options[0] == "backup"): @@ -726,7 +767,7 @@ def database(options): while True: data = Entropy.inputBox(red(_("Entropy installed packages database restore tool")), input_params, cancel_button = True) - if data == None: + if data is None: return 1 myid, dbx = data['db'] print(dbx) @@ -786,6 +827,7 @@ def spm(options): not_found = Entropy.orphaned_spm_packages_test() return 0 + return -10 def spm_compile_categories(options, do_list = False):