def pkg_upgrade(repo, skip, flag): """Checking packages for upgrade """ Msg().checking() PACKAGES_TXT = RepoInit(repo).fetch()[0] pkgs_for_upgrade = [] # name = data[0] # location = data[1] # size = data[2] # unsize = data[3] data = repo_data(PACKAGES_TXT, repo, flag="") for pkg in installed(): status(0.0005) inst_pkg = split_package(pkg) for name in data[0]: if name: # this tips because some pkg_name is empty repo_pkg = split_package(name[:-4]) if (repo_pkg[0] == inst_pkg[0] and LooseVersion(repo_pkg[1]) > LooseVersion(inst_pkg[1]) and repo_pkg[3] >= inst_pkg[3] and inst_pkg[0] not in skip and repo_pkg[1] != "blacklist"): pkgs_for_upgrade.append(repo_pkg[0]) Msg().done() if "--checklist" in flag: pkgs_for_upgrade = choose_upg(pkgs_for_upgrade) return pkgs_for_upgrade
def find(self, pkg, flag): """Start to find packages and print """ print("\nPackages with name matching [ {0}{1}{2} ]\n".format( self.cyan, ", ".join(pkg), self.endc)) Msg().template(78) print("| {0} {1}{2}{3}".format("Repository", "Package", " " * 54, "Size")) Msg().template(78) for repo in _meta_.repositories: PACKAGES_TXT = PackageManager(pkg).list_lib(repo) packages, sizes = PackageManager(pkg).list_greps( repo, PACKAGES_TXT) for find, size in zip(packages, sizes): for p in pkg: if "--case-ins" in flag: self.p_cache = p.lower() self.find_cache = find.lower() else: self.p_cache = p self.find_cache = find if self.p_cache in self.find_cache: if self.cache != repo: self.count_repo += 1 self.cache = repo self.count_pkg += 1 ver = self.sbo_version(repo, find) print(" {0}{1}{2}{3}{4} {5}{6:>11}".format( self.cyan, repo, self.endc, " " * (12 - len(repo)), find + ver, " " * (53 - len(find + ver)), size)) print("\nFound summary") print("=" * 79) print("{0}Total found {1} packages in {2} repositories.{3}\n".format( self.grey, self.count_pkg, self.count_repo, self.endc))
def pkg_security(pkgs): """Check packages before install or upgrade for security reasons. Configuration file in the /etc/slpkg/pkg_security""" security_packages = Utils().read_file("/etc/slpkg/pkg_security") packages = [] for read in security_packages.splitlines(): read = read.lstrip() if not read.startswith("#"): packages.append(read.replace("\n", "")) for p in pkgs: for pkg in packages: if p == pkg: Msg().security_pkg(p) if not Msg().answer() in ["y", "Y"]: raise SystemExit()
def __init__(self, name, flag): self.name = name self.flag = flag self.meta = _meta_ self.msg = Msg() self.arch = SBoArch().get() self.comp_tar = ".tar.gz" self.choice = "" self.FAULT = "" self.green = self.meta.color["GREEN"] self.red = self.meta.color["RED"] self.yellow = self.meta.color["YELLOW"] self.cyan = self.meta.color["CYAN"] self.grey = self.meta.color["GREY"] self.endc = self.meta.color["ENDC"] self.build_folder = self.meta.build_path self._SOURCES = self.meta.SBo_SOURCES self.msg.reading() self.data = SBoGrep(name="").names() self.case_insensitive() if "--checklist" in self.flag: self.with_checklist() grep = SBoGrep(self.name) self.sbo_files = grep.files() self.blacklist = BlackList().packages(pkgs=self.data, repo="sbo") self.sbo_url = sbo_search_pkg(self.name) if self.sbo_url: self.sbo_desc = grep.description()[len(self.name) + 2:-1] self.source_dwn = grep.source().split() self.sbo_req = grep.requires() self.sbo_dwn = SBoLink(self.sbo_url).tar_gz() self.sbo_version = grep.version() self.dwn_srcs = self.sbo_dwn.split() + self.source_dwn if "--checklist" not in self.flag or not self.sbo_url and self.name: self.msg.done()
def __init__(self, slackbuilds, flag): self.slackbuilds = slackbuilds pkg_security(self.slackbuilds) self.flag = flag self.meta = _meta_ self.msg = Msg() self.arch = SBoArch().get() self.build_folder = self.meta.build_path self._SOURCES = self.meta.SBo_SOURCES for fl in self.flag: if fl.startswith("--directory-prefix="): self.build_folder = fl.split("=")[1] if not self.build_folder.endswith("/"): self.build_folder += "/" self.unst = ["UNSUPPORTED", "UNTESTED"] self.master_packages = [] self.deps = [] self.dependencies = [] self.package_not_found = [] self.package_found = [] self.deps_dict = {} self.answer = "" self.match = False self.count_ins = 0 self.count_upg = 0 self.count_uni = 0 self.msg.reading() self.data = SBoGrep(name="").names() self.blacklist = BlackList().packages(pkgs=self.data, repo="sbo")
def __init__(self, mode): self.mode = mode self.meta = _meta_ self.msg = Msg() self.pkg_path = _meta_.pkg_path self.installed = [] self.cn = 0
def __init__(self, repo): self.repo = repo self.meta = _meta_ self.msg = Msg() self.check = 2 self.st = "" self.count_repo = 0 self.count_news = 0 self._init = Initialization(True) self.all_repos = { "slack": self._init.slack, "sbo": self._init.sbo, "rlw": self._init.rlw, "alien": self._init.alien, "slacky": self._init.slacky, "conrad": self._init.conrad, "slonly": self._init.slonly, "ktown": self._init.ktown, "multi": self._init.multi, "slacke": self._init.slacke, "salix": self._init.salix, "slackl": self._init.slackl, "rested": self._init.rested, "msb": self._init.msb, "csb": self._init.csb, "connos": self._init.msb, "mles": self._init.mles }
def __init__(self, packages, repo, flag): self.packages = packages pkg_security(packages) self.repo = repo self.flag = flag self.meta = _meta_ self.msg = Msg() self.version = self.meta.slack_rel self.tmp_path = self.meta.slpkg_tmp_packages for fl in self.flag: if fl.startswith("--directory-prefix="): self.tmp_path = fl.split("=")[1] if not self.tmp_path.endswith("/"): self.tmp_path += "/" self.dwn, self.dep_dwn = [], [] self.install, self.dep_install = [], [] self.comp_sum, self.dep_comp_sum = [], [] self.uncomp_sum, self.dep_uncomp_sum = [], [] self.dependencies = [] self.deps_dict = {} self.answer = "" self.msg.reading() self.PACKAGES_TXT, self.mirror = RepoInit(self.repo).fetch() self.data = repo_data(self.PACKAGES_TXT, self.repo, self.flag) self.repo_pkg_names = [] for name in self.data[0]: self.repo_pkg_names.append(split_package(name)[0]) self.blacklist = BlackList().packages(self.data[0], self.repo) self.matching = False
def __init__(self, binary): self.binary = binary self.meta = _meta_ self.msg = Msg() self.skip = [] self.size = 0 self.unit = "Kb"
def __init__(self, packages): self.packages = packages self.meta = _meta_ self.msg = Msg() self.commands = { "i": "installpkg", "u": "upgradepkg --install-new", "r": "upgradepkg --reinstall" }
def __init__(self, path, url, repo): self.path = path self.url = url self.repo = repo self.file_name = "" self.meta = _meta_ self.msg = Msg() self.dir_prefix = "" self.downder = self.meta.downder self.downder_options = self.meta.downder_options
def __init__(self): self.meta = _meta_ self.msg = Msg() self.red = self.meta.color["RED"] self.green = self.meta.color["GREEN"] self.endc = self.meta.color["ENDC"] self.br = "" if self.meta.use_colors in ["off", "OFF"]: self.br = ")" self.etc = "/etc/" self.news = []
def sbo_upgrade(skip, flag): """Return packages for upgrade """ Msg().checking() upgrade_names = [] data = SBoGrep(name="").names() blacklist = BlackList().packages(pkgs=data, repo="sbo") for pkg in sbo_list(): status(0.02) name = split_package(pkg)[0] ver = split_package(pkg)[1] if (name in data and name not in skip and name not in blacklist): sbo_package = ("{0}-{1}".format(name, SBoGrep(name).version())) package = ("{0}-{1}".format(name, ver)) if LooseVersion(sbo_package) > LooseVersion(package): upgrade_names.append(name) Msg().done() if "--checklist" in flag: upgrade_names = choose_upg(upgrade_names) return upgrade_names
def __init__(self): self.meta = _meta_ self.msg = Msg() self.tag = "[REPOSITORIES]" self.tag_line = False self.repositories_conf = "repositories.conf" self.conf = Utils().read_file( self.meta.conf_path + self.repositories_conf) self.enabled = [] self.disabled = [] self.selected = []
def check_md5(pkg_md5, src_file): """MD5 Checksum """ if _meta_.checkmd5 in ["on", "ON"]: print("") md5s = md5(src_file) if pkg_md5 != md5s: Msg().template(78) print("| MD5SUM check for {0} [ {1}FAILED{2} ]".format( src_file.split("/")[-1], _meta_.color["RED"], _meta_.color["ENDC"])) Msg().template(78) print("| Expected: {0}".format(pkg_md5)) print("| Found: {0}".format(md5s)) Msg().template(78) print("") if not Msg().answer() in ["y", "Y"]: raise SystemExit() else: Msg().template(78) print("| MD5SUM check for {0} [ {1}PASSED{2} ]".format( src_file.split("/")[-1], _meta_.color["GREEN"], _meta_.color["ENDC"])) Msg().template(78) print("") # new line after pass checksum
def __init__(self, image): self.image = image self.meta = _meta_ self.msg = Msg() self.grey = self.meta.color["GREY"] self.green = self.meta.color["GREEN"] self.endc = self.meta.color["ENDC"] self.dmap = {} self.count_pkg = 0 self.count_dep = 0 self.dep_path = self.meta.log_path + "dep/" self.logs = find_package("", self.dep_path) if not self.logs: self.no_logs() self.installed = find_package("", self.meta.pkg_path)
def slack_package(prgnam): """Return maximum binary Slackware package from output directory """ binaries, cache, binary = [], "0", "" for pkg in find_package(prgnam, _meta_.output): if pkg.startswith(prgnam) and pkg[:-4].endswith("_SBo"): binaries.append(pkg) for bins in binaries: if LooseVersion(bins) > LooseVersion(cache): binary = bins cache = binary if not binary: Msg().build_FAILED(prgnam) raise SystemExit(1) return ["".join(_meta_.output + binary)]
def __init__(self, name, repo, flag): self.name = name self.repo = repo self.flag = flag self.meta = _meta_ self.msg = Msg() self.green = self.meta.color["GREEN"] self.yellow = self.meta.color["YELLOW"] self.cyan = self.meta.color["CYAN"] self.red = self.meta.color["RED"] self.endc = self.meta.color["ENDC"] self.requires = [] self.dependencies = [] self.dependencies_list = [] self.deps_dict = {} for i in range(0, len(self.flag)): if self.flag[i].startswith("--graph="): self.image = self.flag[i].split("=")[1] self.flag[i] = "--graph="
def __init__(self, script, sources, path, auto): self.script = script self.sources = sources self.path = path self.auto = auto self.meta = _meta_ self.msg = Msg() self._SOURCES = self.meta.SBo_SOURCES self.prgnam = self.script[:-7] self.log_file = "build_{0}_log".format(self.prgnam) self.sbo_logs = self.meta.log_path + "sbo/" self.build_logs = self.sbo_logs + "build_logs/" self.start_log_time = time.strftime("%H:%M:%S") self.start_time = time.time() if not os.path.exists(self.meta.log_path): os.mkdir(self.meta.log_path) if not os.path.exists(self.sbo_logs): os.mkdir(self.sbo_logs) if not os.path.exists(self.build_logs): os.mkdir(self.build_logs)
def __init__(self, name, repo, paint): self.name = name self.repo = repo self.paint = paint self.meta = _meta_ self.msg = Msg() self.COLOR = "" self.lib = "" color_text = { "red": self.meta.color["RED"], "green": self.meta.color["GREEN"], "yellow": self.meta.color["YELLOW"], "cyan": self.meta.color["CYAN"], "grey": self.meta.color["GREY"], "": "" } self.COLOR = color_text[self.paint] if self.repo in self.meta.repositories and self.repo != "sbo": self.lib = self.meta.lib_path + "{0}_repo/PACKAGES.TXT".format( self.repo)
def __init__(self, skip, flag): self.skip = skip self.flag = flag self.meta = _meta_ self.msg = Msg() self.version = self.meta.slack_rel self.patch_path = self.meta.slpkg_tmp_patches self.pkg_for_upgrade = [] self.dwn_links = [] self.upgrade_all = [] self.count_added = 0 self.count_upg = 0 self.upgraded = [] self.installed = [] self.comp_sum = [] self.uncomp_sum = [] self.utils = Utils() self.msg.checking() if self.version == "stable": self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT", "patches/")).reading() else: self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT", "")).reading()
def __init__(self, args): self.args = args self.meta = _meta_ self.msg = Msg() self.commands = [ "update", "upgrade", "repo-add", "repo-remove", "repo-enable", "repo-list", "repo-info", "update-slpkg", "health", "deps-status", "new-config" ] # checking if repositories exists enabled_repos = _meta_.repositories if len(self.args) > 1: repo = check_exists_repositories(args[1]) if len(self.args) > 1 and self.args[0] in [ "-c", "--check", "-l", "--list", "-c", "--check", "-s", "--sync", "-t", "--tracking", "-p", "--desc", "-F", "--FIND", "-f", "--find" ] and self.args[1] == repo and repo in enabled_repos: print("\n Please update packages lists. Run 'slpkg update'.\n" + " This command should be used to synchronize packages\n" + " lists from the repositories are enabled.\n") raise SystemExit()
def __init__(self): self.meta = _meta_ self.msg = Msg() self.all_repos = Repo().default_repository() self.all_repos["slack"] = Repo().slack() self.all_repos.update(Repo().custom_repository())