def _dt_register_deps(self, info): """ register dependencies given in info in dt @param info: """ if info.Depends: for clause in info.Depends: # iterates over all dependencies required by cartridge dtentry = DependencyTableInfo() # prepare dt entry pr = None # select providing version for expr in clause: # iterate over any alternative versions cname = expr.Name pred = expr.Predicate # check if cname exists in package db, with required version pkg = self.lookup(cname, pred) # TODO: proper version selection, currently the first found # version is selected. if pkg is not None: # pr = {KEY_DT_NAME : pkg.Name, KEY_DT_VERS : pkg.Version, KEY_DT_PROV_SF : cname} pr = ProvidesInfo(pkg.Name, pkg.Version, "") pr._SelectedFeature = cname dtentry.setProvider(pr) break # update dt dtentry.addFeature(clause) self.update_dependency_table(info.Name, dtentry)
def _dt_reregister_deps(self, dt_db, reregister_list): """ set new provider for each element in reregister_list @param dt_db: @param reregister_list: """ for pkg in reregister_list: te = dt_db[pkg] for entry in te: entry_index = dt_db[pkg].index(entry) for expr in entry.Feature: # check all possible features cname = expr.Name pred = expr.Predicate or None new_prov = self.lookup(cname, pred) if new_prov is not None: # pr = {KEY_DT_NAME : new_prov.Name, KEY_DT_VERS : new_prov.Name, KEY_DT_PROV_SF : cname} pr = ProvidesInfo(new_prov.Name, new_prov.Version, "") pr._SelectedFeature = cname dt_db[pkg][entry_index].Provider = pr