def get_convenient_slot(self, packages, slot): if slot is not None and slot.endswith("*"): slots = [ package.slot for package in packages ] selected_slots = [ item for item in slots if item.startswith(slot.replace("*", ".")) ] if not selected_slots: out.error("%s is invalid slot for %s/%s" % (slot, category, name)) return False else: return utils.best_version(selected_slots) return slot
def select_pkgs(self): for pkg in self.instdb.get_all_packages(): self.repo, self.category, self.name, self.version, self.slot = pkg # catch packages which are from the outside if not self.repodb.find_package(package_name=self.name, \ package_category=self.category): if not (self.category, self.name) in self.notfound_pkg: self.notfound_pkg.append((self.category, self.name)) # get version data from repository database repository_items = self.repodb.find_package(package_name=self.name, \ package_category=self.category) if not repository_items: # if the installed package could not found in the repository database # add the item to not-founds list self.notfound_pkg.append((self.category, self.name)) continue # collect available package version by slot value available_versions = {} for item in repository_items: if item.slot in available_versions: available_versions[item.slot].append(item.version) else: available_versions[item.slot] = [item.version] # comparise versions for item in repository_items: if item.slot == self.slot: best_version = utils.best_version( available_versions[item.slot]) result = utils.vercmp(best_version, self.version) if result != 0: self.packages.append( os.path.join(self.category, self.name) + ":" + self.slot) break if self.notfound_pkg: out.write( "%s: the following packages were installed but they could not be found in the database:\n\n" % out.color("WARNING", "brightyellow")) for no_category, no_name, in self.notfound_pkg: out.notify("%s/%s" % (no_category, no_name)) out.write("\n")
def select_pkgs(self): for pkg in self.instdb.get_all_packages(): self.repo, self.category, self.name, self.version, self.slot = pkg # catch packages which are from the outside if not self.repodb.find_package(package_name=self.name, \ package_category=self.category): if not (self.category, self.name) in self.notfound_pkg: self.notfound_pkg.append((self.category, self.name)) # get version data from repository database repository_items = self.repodb.find_package(package_name=self.name, \ package_category=self.category) if not repository_items: # if the installed package could not found in the repository database # add the item to not-founds list self.notfound_pkg.append((self.category, self.name)) continue # collect available package version by slot value available_versions = {} for item in repository_items: if item.slot in available_versions: available_versions[item.slot].append(item.version) else: available_versions[item.slot] = [item.version] # comparise versions for item in repository_items: if item.slot == self.slot: best_version = utils.best_version(available_versions[item.slot]) result = utils.vercmp(best_version, self.version) if result != 0: self.packages.append(os.path.join(self.category, self.name)+":"+self.slot) break if self.notfound_pkg: out.write("%s: the following packages were installed but they could not be found in the database:\n\n" % out.color("WARNING", "brightyellow")) for no_category, no_name, in self.notfound_pkg: out.notify("%s/%s" % (no_category, no_name)) out.write("\n")