def update_ents(self, updates, onProgress=None, onUpdate=None): """ Update metadata of all packages for package moves. @param updates: A list of move commands @type updates: List @param onProgress: A progress callback function @type onProgress: a callable that takes 2 integer arguments: maxval and curval @param onUpdate: A progress callback function called only for packages that are modified by updates. @type onUpdate: a callable that takes 2 integer arguments: maxval and curval """ cpv_all = self.cpv_all() cpv_all.sort() maxval = len(cpv_all) aux_get = self.aux_get aux_update = self.aux_update update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] from portage.update import update_dbentries if onUpdate: onUpdate(maxval, 0) if onProgress: onProgress(maxval, 0) for i, cpv in enumerate(cpv_all): metadata = dict(zip(update_keys, aux_get(cpv, update_keys))) metadata_updates = update_dbentries(updates, metadata) if metadata_updates: aux_update(cpv, metadata_updates) if onUpdate: onUpdate(maxval, i + 1) if onProgress: onProgress(maxval, i + 1)
def update_ents(self, updates, onProgress=None, onUpdate=None): """ Update metadata of all packages for package moves. @param updates: A list of move commands @type updates: List @param onProgress: A progress callback function @type onProgress: a callable that takes 2 integer arguments: maxval and curval @param onUpdate: A progress callback function called only for packages that are modified by updates. @type onUpdate: a callable that takes 2 integer arguments: maxval and curval """ cpv_all = self.cpv_all() cpv_all.sort() maxval = len(cpv_all) aux_get = self.aux_get aux_update = self.aux_update update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] from portage.update import update_dbentries if onUpdate: onUpdate(maxval, 0) if onProgress: onProgress(maxval, 0) for i, cpv in enumerate(cpv_all): metadata = dict(zip(update_keys, aux_get(cpv, update_keys))) metadata_updates = update_dbentries(updates, metadata) if metadata_updates: aux_update(cpv, metadata_updates) if onUpdate: onUpdate(maxval, i+1) if onProgress: onProgress(maxval, i+1)
def perform_global_updates(mycpv, mydb, mycommands): from portage.update import update_dbentries aux_keys = ["DEPEND", "RDEPEND", "PDEPEND"] aux_dict = dict(zip(aux_keys, mydb.aux_get(mycpv, aux_keys))) updates = update_dbentries(mycommands, aux_dict) if updates: mydb.aux_update(mycpv, updates)
def update_ents(self, updates, onProgress=None, onUpdate=None): """ Update metadata of all packages for package moves. @param updates: A list of move commands, or dict of {repo_name: list} @type updates: list or dict @param onProgress: A progress callback function @type onProgress: a callable that takes 2 integer arguments: maxval and curval @param onUpdate: A progress callback function called only for packages that are modified by updates. @type onUpdate: a callable that takes 2 integer arguments: maxval and curval """ cpv_all = self.cpv_all() cpv_all.sort() maxval = len(cpv_all) aux_get = self.aux_get aux_update = self.aux_update meta_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE", 'repository'] repo_dict = None if isinstance(updates, dict): repo_dict = updates from portage.update import update_dbentries if onUpdate: onUpdate(maxval, 0) if onProgress: onProgress(maxval, 0) for i, cpv in enumerate(cpv_all): metadata = dict(zip(meta_keys, aux_get(cpv, meta_keys))) repo = metadata.pop('repository') if repo_dict is None: updates_list = updates else: try: updates_list = repo_dict[repo] except KeyError: try: updates_list = repo_dict['DEFAULT'] except KeyError: continue if not updates_list: continue metadata_updates = update_dbentries(updates_list, metadata) if metadata_updates: aux_update(cpv, metadata_updates) if onUpdate: onUpdate(maxval, i+1) if onProgress: onProgress(maxval, i+1)
def perform_global_updates(mycpv, mydb, myupdates): aux_keys = ["DEPEND", "RDEPEND", "PDEPEND", 'repository'] aux_dict = dict(zip(aux_keys, mydb.aux_get(mycpv, aux_keys))) repository = aux_dict.pop('repository') try: mycommands = myupdates[repository] except KeyError: try: mycommands = myupdates['DEFAULT'] except KeyError: return if not mycommands: return updates = update_dbentries(mycommands, aux_dict) if updates: mydb.aux_update(mycpv, updates)
def perform_global_updates(mycpv, mydb, myupdates): aux_keys = Package._dep_keys + ("EAPI", 'repository') aux_dict = dict(zip(aux_keys, mydb.aux_get(mycpv, aux_keys))) eapi = aux_dict.pop('EAPI') repository = aux_dict.pop('repository') try: mycommands = myupdates[repository] except KeyError: try: mycommands = myupdates['DEFAULT'] except KeyError: return if not mycommands: return updates = update_dbentries(mycommands, aux_dict, eapi=eapi) if updates: mydb.aux_update(mycpv, updates)
def perform_global_updates(mycpv, aux_dict, mydb, myupdates): try: pkg = _pkg_str(mycpv, metadata=aux_dict, settings=mydb.settings) except InvalidData: return aux_dict = dict((k, aux_dict[k]) for k in Package._dep_keys) try: mycommands = myupdates[pkg.repo] except KeyError: try: mycommands = myupdates['DEFAULT'] except KeyError: return if not mycommands: return updates = update_dbentries(mycommands, aux_dict, parent=pkg) if updates: mydb.aux_update(mycpv, updates)