Exemplo n.º 1
0
 def diff(self, n):
     """Print the differences between the two files
     """
     if os.path.isfile(n[:-4]):
         diff1 = Utils().read_file(n[:-4]).splitlines()
     if os.path.isfile(n):
         diff2 = Utils().read_file(n).splitlines()
     lines, l, c = [], 0, 0
     for a, b in itertools.izip_longest(diff1, diff2):
         l += 1
         if a != b:
             for s1, s2 in itertools.izip_longest(str(a), str(b)):
                 c += 1
                 if s1 != s2:
                     break
             print("@@ -{0},{1} +{2},{3} @@\n".format(l, c, l, c))
             for line in lines[-3:]:
                 print("{0}".format(line))
             if a is None:
                 a = ""
             print("{0}{1}{2}{3}".format(self.red, "-", self.endc, a))
             if b is None:
                 b = ""
             print("{0}{1}{2}{3}".format(self.green, "+", self.endc, b))
             lines = []
             c = 0
         else:
             lines.append(a)
Exemplo n.º 2
0
 def find(self):
     """Find installed Slackware packages
     """
     matching = size = 0
     print("\nPackages with matching name [ {0}{1}{2} ]\n".format(
         self.meta.color["CYAN"], ", ".join(self.binary),
         self.meta.color["ENDC"]))
     for pkg in self.binary:
         for match in find_package("", self.meta.pkg_path):
             if pkg in match:
                 matching += 1
                 print("[ {0}installed{1} ] - {2}".format(
                     self.meta.color["GREEN"], self.meta.color["ENDC"],
                     match))
                 data = Utils().read_file(self.meta.pkg_path + match)
                 for line in data.splitlines():
                     if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
                         if "M" in line[26:]:
                             size += float(line[26:-1]) * 1024
                         else:
                             size += float(line[26:-1])
                         break
     if matching == 0:
         message = "Can't find"
         Msg().pkg_not_found("", ", ".join(self.binary), message, "\n")
     else:
         print("\n{0}Total found {1} matching packages.{2}".format(
             self.meta.color["GREY"], matching, self.meta.color["ENDC"]))
         unit = "Kb"
         if size > 1024:
             unit = "Mb"
             size = (size / 1024)
         print("{0}Size of installed packages {1} {2}.{3}\n".format(
             self.meta.color["GREY"], round(size, 2), unit,
             self.meta.color["ENDC"]))
Exemplo n.º 3
0
 def view(self):
     """View slpkg config file
     """
     print("")   # new line at start
     conf_args = [
         "RELEASE",
         "BUILD_PATH",
         "PACKAGES",
         "PATCHES",
         "CHECKMD5",
         "DEL_ALL",
         "DEL_BUILD",
         "SBO_BUILD_LOG",
         "MAKEFLAGS",
         "DEFAULT_ANSWER",
         "REMOVE_DEPS_ANSWER",
         "SKIP_UNST",
         "RSL_DEPS",
         "DEL_DEPS",
         "USE_COLORS",
         "DOWNDER",
         "DOWNDER_OPTIONS",
         "SLACKPKG_LOG",
         "ONLY_INSTALLED",
         "PRG_BAR",
         "EDITOR"
     ]
     read_conf = Utils().read_file(self.config_file)
     for line in read_conf.splitlines():
         if not line.startswith("#") and line.split("=")[0] in conf_args:
             print("{0}".format(line))
         else:
             print("{0}{1}{2}".format(self.meta.color["CYAN"], line,
                                      self.meta.color["ENDC"]))
     print("")   # new line at end
Exemplo n.º 4
0
 def _check_if_used(self, removes):
     """Check package if dependencies for another package
     before removed"""
     if self.extra == "--check-deps":
         print("")
         view = False
         package, dependency = [], []
         for pkg in find_package("", self.dep_path):
             deps = Utils().read_file(self.dep_path + pkg)
             for rmv in removes:
                 if rmv in deps.split():
                     view = True
                     package.append(pkg)
                     dependency.append(rmv)
         if view:
             Msg().template(78)
             print("| {0}{1}{2}".format(
                 self.meta.color["RED"], " " * 30 + "!!! WARNING !!!",
                 self.meta.color["ENDC"]))
             Msg().template(78)
             for p, d in zip(package, dependency):
                 print("| {0}{1}{2} is dependency of the package --> "
                       "{3}{4}{5}".format(self.meta.color["YELLOW"], d,
                                          self.meta.color["ENDC"],
                                          self.meta.color["GREEN"], p,
                                          self.meta.color["ENDC"]))
             Msg().template(78)
             self._skip_remove()
Exemplo n.º 5
0
 def get_deps(self):
     """Grap package requirements from repositories
     """
     if self.repo == "rlw":
         # Robby"s repository dependencies as shown in the central page
         # http://rlworkman.net/pkgs/
         dependencies = {
             "abiword": "wv",
             "claws-mail": "libetpan",
             "inkscape": "gtkmm atkmm pangomm cairomm mm-common libsigc++ "
                         "libwpg lxml gsl numpy BeautifulSoup",
             "texlive": "libsigsegv texi2html",
             "xfburn": "libburn libisofs"
         }
         if self.name in dependencies.keys():
             return dependencies[self.name].split()
         else:
             return ""
     else:
         PACKAGES_TXT = Utils().read_file("{0}{1}_repo/PACKAGES.TXT".format(
             _meta_.lib_path, self.repo))
         for line in PACKAGES_TXT.splitlines():
             if line.startswith("PACKAGE NAME:"):
                 pkg_name = split_package(line[14:].strip())[0]
             if line.startswith("PACKAGE REQUIRED:"):
                 if pkg_name == self.name:
                     if line[18:].strip():
                         return self._req_fix(line)
Exemplo n.º 6
0
 def __init__(self):
     self.meta = _meta_
     self.quit = False
     self.blackfile = "/etc/slpkg/blacklist"
     self.black_conf = ""
     if os.path.isfile(self.blackfile):
         self.black_conf = Utils().read_file(self.blackfile)
Exemplo n.º 7
0
 def clear_masters(self):
     """Clear master slackbuilds if already exist in dependencies
     or if added to install two or more times
     """
     self.master_packages = Utils().remove_dbs(self.master_packages)
     for mas in self.master_packages:
         if mas in self.dependencies:
             self.master_packages.remove(mas)
Exemplo n.º 8
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data_dict = Utils().case_sensitive(self.data)
         for key, value in data_dict.iteritems():
             if key == self.name.lower():
                 self.name = value
Exemplo n.º 9
0
 def run(self):
     """Run tracking dependencies
     """
     self.msg.resolving()
     self.repositories()
     if self.find_pkg:
         self.dependencies_list.reverse()
         self.requires = Utils().dimensional_list(self.dependencies_list)
         self.dependencies = Utils().remove_dbs(self.requires)
         if self.dependencies == []:
             self.dependencies = ["No dependencies"]
         if "--graph=" in self.flag:
             self.deps_tree()
         self.msg.done()
         pkg_len = len(self.name) + 24
         print("")    # new line at start
         self.msg.template(pkg_len)
         print("| Package {0}{1}{2} dependencies :".format(
             self.cyan, self.name, self.endc))
         self.msg.template(pkg_len)
         print("\\")
         print(" +---{0}[ Tree of dependencies ]{1}".format(self.yellow,
                                                            self.endc))
         index = 0
         for pkg in self.dependencies:
             if "--check-deps" in self.flag:
                 used = self.check_used(pkg)
                 self.deps_used(pkg, used)
                 used = "{0} {1}{2}{3}".format(
                     "is dependency -->", self.cyan,
                     ", ".join(used), self.endc)
             else:
                 used = ""
             index += 1
             installed = ""
             if find_package(pkg + self.meta.sp, self.meta.pkg_path):
                 if self.meta.use_colors in ["off", "OFF"]:
                     installed = "* "
                 print(" |")
                 print(" {0}{1}: {2}{3}{4} {5}{6}".format(
                     "+--", index, self.green, pkg,
                     self.endc, installed, used))
             else:
                 print(" |")
                 print(" {0}{1}: {2}{3}{4} {5}".format(
                     "+--", index, self.red, pkg,
                     self.endc, installed))
         if self.meta.use_colors in ["off", "OFF"]:
             print("\n * = Installed\n")
         else:
             print("")    # new line at end
         if "--graph=" in self.flag:
             self.graph()
     else:
         self.msg.done()
         print("\nNo package was found to match\n")
         raise SystemExit(1)
Exemplo n.º 10
0
 def __init__(self):
     self.meta = _meta_
     self.DEFAULT_REPOS_NAMES = self.meta.default_repositories
     self.custom_repo_file = "/etc/slpkg/custom-repositories"
     self.default_repo_file = "/etc/slpkg/default-repositories"
     self.custom_repositories_list = Utils().read_file(self.custom_repo_file)
     self.default_repositories_list = Utils().read_file(
         self.default_repo_file)
     self.default_repository()
Exemplo n.º 11
0
 def __init__(self):
     self.meta = _meta_
     self.DEFAULT_REPOS_NAMES = self.meta.default_repositories
     self.custom_repo_file = "/etc/slpkg/custom-repositories"
     self.default_repo_file = "/etc/slpkg/default-repositories"
     self.custom_repositories_list = Utils().read_file(self.custom_repo_file)
     self.default_repositories_list = Utils().read_file(
         self.default_repo_file)
     self.default_repository()
Exemplo n.º 12
0
 def bin_case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data_dict = Utils().case_sensitive(self.names)
         for key, value in data_dict.iteritems():
             if key == self.name.lower():
                 self.name = value
Exemplo n.º 13
0
 def update_deps(self):
     """Update dependencies dictionary with all package
     """
     onelist, dependencies = [], []
     onelist = Utils().dimensional_list(self.deps)
     dependencies = Utils().remove_dbs(onelist)
     for dep in dependencies:
         deps = Requires(self.flag).sbo(dep)
         self.deps_dict[dep] = self.one_for_all(deps)
Exemplo n.º 14
0
 def sbo_case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase for sbo repository
     """
     if "--case-ins" in self.flag:
         data = SBoGrep(name="").names()
         data_dict = Utils().case_sensitive(data)
         for key, value in data_dict.iteritems():
             if key == self.name.lower():
                 self.name = value
Exemplo n.º 15
0
 def sbo_case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase for sbo repository
     """
     if "--case-ins" in self.flag:
         data = SBoGrep(name="").names()
         data_dict = Utils().case_sensitive(data)
         for key, value in data_dict.iteritems():
             if key == self.name.lower():
                 self.name = value
Exemplo n.º 16
0
 def _sizes(self, package):
     """Package size summary
     """
     data = Utils().read_file(self.meta.pkg_path + package)
     for line in data.splitlines():
         if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
             if "M" in line[26:]:
                 self.size += float(line[26:-1]) * 1024
             else:
                 self.size += float(line[26:-1])
                 break
Exemplo n.º 17
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data_dict = Utils().case_sensitive(self.data)
         for name in self.slackbuilds:
             for key, value in data_dict.iteritems():
                 if key == name.lower():
                     index = self.slackbuilds.index(name)
                     self.slackbuilds[index] = value
Exemplo n.º 18
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data_dict = Utils().case_sensitive(self.data)
         for name in self.slackbuilds:
             index = self.slackbuilds.index(name)
             for key, value in data_dict.iteritems():
                 if key == name.lower():
                     self.slackbuilds[index] = value
Exemplo n.º 19
0
 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 = []
Exemplo n.º 20
0
 def view(self, repo):
     """
     View repository information
     """
     status = "{0}disabled{1}".format(self.meta.color["RED"],
                                      self.meta.color["ENDC"])
     self.form["Status:"] = status
     self.form["Default:"] = "no"
     if repo in self.meta.default_repositories:
         self.form["Default:"] = "yes"
     if (repo in self.meta.repositories
             and os.path.isfile(self.meta.lib_path + "{0}_repo/PACKAGES."
                                "TXT".format(repo))):
         status = "{0}enabled{1}".format(self.meta.color["GREEN"],
                                         self.meta.color["ENDC"])
         if repo != "sbo":
             data = self.repository_data(repo)
             size = units(data[1], data[2])
             self.form["Repo id:"] = repo
             self.form["Repo url:"] = self.all_repos[repo]
             self.form["Total compressed packages:"] = "{0} {1}".format(
                 str(size[1][0]), str(size[0][0]))
             self.form["Total uncompressed packages:"] = "{0} {1}".format(
                 str(size[1][1]), str(size[0][1]))
             self.form["Number of packages:"] = data[0]
             self.form["Status:"] = status
             self.form["Last updated:"] = data[3]
     elif (repo == "sbo"
           and os.path.isfile(self.meta.lib_path + "{0}_repo/"
                              "SLACKBUILDS.TXT".format(repo))):
         status = "{0}enabled{1}".format(self.meta.color["GREEN"],
                                         self.meta.color["ENDC"])
         sum_sbo_pkgs = 0
         for line in (Utils().read_file(self.meta.lib_path +
                                        "sbo_repo/SLACKBUILDS."
                                        "TXT").splitlines()):
             if line.startswith("SLACKBUILD NAME: "):
                 sum_sbo_pkgs += 1
         changelog_txt = Utils().read_file(self.meta.log_path +
                                           "sbo/ChangeLog.txt")
         last_upd = changelog_txt.split("\n", 1)[0]
         self.form["Repo id:"] = repo
         self.form["Repo url:"] = self.all_repos[repo]
         self.form["Total compressed packages:"] = ""
         self.form["Total uncompressed packages:"] = ""
         self.form["Number of packages:"] = sum_sbo_pkgs
         self.form["Status:"] = status
         self.form["Last updated:"] = last_upd
     print("")
     for key, value in sorted(self.form.iteritems()):
         print self.meta.color["GREY"] + key + self.meta.color["ENDC"], value
     print("")
     raise SystemExit()
Exemplo n.º 21
0
 def check_used(self, pkg):
     """Check if dependencies used
     """
     used = []
     dep_path = self.meta.log_path + "dep/"
     logs = find_package("", dep_path)
     for log in logs:
         deps = Utils().read_file(dep_path + log)
         for dep in deps.splitlines():
             if pkg == dep:
                 used.append(log)
     return used
Exemplo n.º 22
0
 def check_used(self, pkg):
     """Check if dependencies used
     """
     used = []
     dep_path = self.meta.log_path + "dep/"
     logs = find_package("", dep_path)
     for log in logs:
         deps = Utils().read_file(dep_path + log)
         for dep in deps.splitlines():
             if pkg == dep:
                 used.append(log)
     return used
Exemplo n.º 23
0
 def view(self, repo):
     """
     View repository information
     """
     status = "{0}disabled{1}".format(self.meta.color["RED"],
                                      self.meta.color["ENDC"])
     self.form["Status:"] = status
     self.form["Default:"] = "no"
     if repo in self.meta.default_repositories:
         self.form["Default:"] = "yes"
     if (repo in self.meta.repositories and
             os.path.isfile(self.meta.lib_path + "{0}_repo/PACKAGES."
                            "TXT".format(repo))):
         status = "{0}enabled{1}".format(self.meta.color["GREEN"],
                                         self.meta.color["ENDC"])
         if repo != "sbo":
             data = self.repository_data(repo)
             size = units(data[1], data[2])
             self.form["Repo id:"] = repo
             self.form["Repo url:"] = self.all_repos[repo]
             self.form["Total compressed packages:"] = "{0} {1}".format(
                 str(size[1][0]), str(size[0][0]))
             self.form["Total uncompressed packages:"] = "{0} {1}".format(
                 str(size[1][1]), str(size[0][1]))
             self.form["Number of packages:"] = data[0]
             self.form["Status:"] = status
             self.form["Last updated:"] = data[3]
     elif (repo == "sbo" and os.path.isfile(self.meta.lib_path + "{0}_repo/"
                                            "SLACKBUILDS.TXT".format(repo))):
         status = "{0}enabled{1}".format(self.meta.color["GREEN"],
                                         self.meta.color["ENDC"])
         sum_sbo_pkgs = 0
         for line in (Utils().read_file(
                 self.meta.lib_path + "sbo_repo/SLACKBUILDS."
                 "TXT").splitlines()):
             if line.startswith("SLACKBUILD NAME: "):
                 sum_sbo_pkgs += 1
         changelog_txt = Utils().read_file(
             self.meta.log_path + "sbo/ChangeLog.txt")
         last_upd = changelog_txt.split("\n", 1)[0]
         self.form["Repo id:"] = repo
         self.form["Repo url:"] = self.all_repos[repo]
         self.form["Total compressed packages:"] = ""
         self.form["Total uncompressed packages:"] = ""
         self.form["Number of packages:"] = sum_sbo_pkgs
         self.form["Status:"] = status
         self.form["Last updated:"] = last_upd
     print("")
     for key, value in sorted(self.form.iteritems()):
         print self.meta.color["GREY"] + key + self.meta.color["ENDC"], value
     print("")
     raise SystemExit()
Exemplo n.º 24
0
 def _sizes(self, package):
     """Package size summary
     """
     data = Utils().read_file(self.meta.pkg_path + package)
     for line in data.splitlines():
         if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
             digit = float((''.join(
                 re.findall("[-+]?\d+[\.]?\d*[eE]?[-+]?\d*", line[26:]))))
             if "M" in line[26:]:
                 self.size += digit * 1024
             else:
                 self.size += digit
                 break
Exemplo n.º 25
0
 def _view_deps(self, path, package):
     """View dependencies for before remove
     """
     dependencies = Utils().read_file(path + package)
     print("")   # new line at start
     Msg().template(78)
     print("| Found dependencies for package {0}:".format(package))
     Msg().template(78)
     for dep in dependencies.splitlines():
         print("| {0}{1}{2}".format(self.meta.color["RED"], dep,
                                    self.meta.color["ENDC"]))
     Msg().template(78)
     return dependencies
Exemplo n.º 26
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data = []
         data = Utils().package_name(self.PACKAGES_TXT)
         data_dict = Utils().case_sensitive(data)
         for pkg in self.packages:
             index = self.packages.index(pkg)
             for key, value in data_dict.iteritems():
                 if key == pkg.lower():
                     self.packages[index] = value
Exemplo n.º 27
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data = []
         data = Utils().package_name(self.PACKAGES_TXT)
         data_dict = Utils().case_sensitive(data)
         for pkg in self.packages:
             index = self.packages.index(pkg)
             for key, value in data_dict.iteritems():
                 if key == pkg.lower():
                     self.packages[index] = value
Exemplo n.º 28
0
 def one_for_all(self, deps):
     """Because there are dependencies that depend on other
     dependencies are created lists into other lists.
     Thus creating this loop create one-dimensional list and
     remove double packages from dependencies.
     """
     requires, dependencies = [], []
     deps.reverse()
     # Inverting the list brings the
     # dependencies in order to be installed.
     requires = Utils().dimensional_list(deps)
     dependencies = Utils().remove_dbs(requires)
     return dependencies
Exemplo n.º 29
0
def search_pkg(name, repo):
    """Search if package exists in PACKAGES.TXT file
    and return the name.
    """
    PACKAGES_TXT = Utils().read_file(_meta_.lib_path + "{0}_repo/"
                                     "PACKAGES.TXT".format(repo))
    names = Utils().package_name(PACKAGES_TXT)
    blacklist = BlackList().packages(pkgs=names, repo=repo)
    for line in PACKAGES_TXT.splitlines():
        status(0)
        if line.startswith("PACKAGE NAME:  ") and len(line) > 16:
            pkg_name = split_package(line[15:])[0].strip()
            if name == pkg_name and name not in blacklist:
                return pkg_name
Exemplo n.º 30
0
def search_pkg(name, repo):
    """Search if package exists in PACKAGES.TXT file
    and return the name.
    """
    PACKAGES_TXT = Utils().read_file(_meta_.lib_path + "{0}_repo/"
                                     "PACKAGES.TXT".format(repo))
    names = Utils().package_name(PACKAGES_TXT)
    blacklist = BlackList().packages(pkgs=names, repo=repo)
    for line in PACKAGES_TXT.splitlines():
        status(0)
        if line.startswith("PACKAGE NAME:  ") and len(line) > 16:
            pkg_name = split_package(line[15:])[0].strip()
            if name == pkg_name and name not in blacklist:
                return pkg_name
Exemplo n.º 31
0
 def case_insensitive(self):
     """Matching packages distinguish between uppercase and
     lowercase
     """
     if "--case-ins" in self.flag:
         data = []
         for name in self.data[0]:
             data.append(split_package(name)[0])
         data_dict = Utils().case_sensitive(data)
         for pkg in self.packages:
             for key, value in data_dict.iteritems():
                 if key == pkg.lower():
                     index = self.packages.index(pkg)
                     self.packages[index] = value
Exemplo n.º 32
0
def sbo_search_pkg(name):
    """Search for package path from SLACKBUILDS.TXT file and
    return url
    """
    repo = Repo().default_repository()["sbo"]
    sbo_url = "{0}{1}/".format(repo, slack_ver())
    SLACKBUILDS_TXT = Utils().read_file(_meta_.lib_path +
                                        "sbo_repo/SLACKBUILDS.TXT")
    for line in SLACKBUILDS_TXT.splitlines():
        if line.startswith("SLACKBUILD LOCATION"):
            sbo_name = (line[23:].split("/")[-1].replace("\n", "")).strip()
            if name == sbo_name:
                return (sbo_url + line[23:].strip() + "/")
    return ""
Exemplo n.º 33
0
 def deps_tree(self):
     """Package dependencies image map file
     """
     dependencies = self.dependencies + [self.name]
     if self.repo == "sbo":
         for dep in dependencies:
             deps = Requires(flag="").sbo(dep)
             if dep not in self.deps_dict.values():
                 self.deps_dict[dep] = Utils().dimensional_list(deps)
     else:
         for dep in dependencies:
             deps = Dependencies(self.repo, self.black).binary(dep, flag="")
             if dep not in self.deps_dict.values():
                 self.deps_dict[dep] = Utils().dimensional_list(deps)
Exemplo n.º 34
0
def sbo_search_pkg(name):
    """Search for package path from SLACKBUILDS.TXT file and
    return url
    """
    repo = Repo().default_repository()["sbo"]
    sbo_url = "{0}{1}/".format(repo, slack_ver())
    SLACKBUILDS_TXT = Utils().read_file(
        _meta_.lib_path + "sbo_repo/SLACKBUILDS.TXT")
    for line in SLACKBUILDS_TXT.splitlines():
        if line.startswith("SLACKBUILD LOCATION"):
            sbo_name = (line[23:].split("/")[-1].replace("\n", "")).strip()
            if name == sbo_name:
                return (sbo_url + line[23:].strip() + "/")
    return ""
Exemplo n.º 35
0
 def _sizes(self, package):
     """Package size summary
     """
     data = Utils().read_file(self.meta.pkg_path + package)
     for line in data.splitlines():
         if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
             digit = float((''.join(re.findall(
                 "[-+]?\d+[\.]?\d*[eE]?[-+]?\d*", line[26:]))))
             self.file_size = line[26:].strip()
             if "M" in line[26:]:
                 self.size += digit * 1024
             else:
                 self.size += digit
                 break
Exemplo n.º 36
0
 def list_lib(self, repo):
     """Return package lists
     """
     packages = ""
     if repo == "sbo":
         if (os.path.isfile(self.meta.lib_path +
                            "{0}_repo/SLACKBUILDS.TXT".format(repo))):
             packages = Utils().read_file(self.meta.lib_path + "{0}_repo/"
                                          "SLACKBUILDS.TXT".format(repo))
     else:
         if (os.path.isfile(self.meta.lib_path +
                            "{0}_repo/PACKAGES.TXT".format(repo))):
             packages = Utils().read_file(self.meta.lib_path + "{0}_repo/"
                                          "PACKAGES.TXT".format(repo))
     return packages
Exemplo n.º 37
0
 def resolving_deps(self):
     """Return package dependencies
     """
     requires = []
     if (self.meta.rsl_deps in ["on", "ON"] and
             self.flag != "--resolve-off"):
         self.msg.resolving()
     for dep in self.packages:
         status(0.05)
         dependencies = []
         dependencies = Utils().dimensional_list(Dependencies(
             self.repo, self.blacklist).binary(dep, self.flag))
         requires += self._fix_deps_repos(dependencies)
         self.deps_dict[dep] = Utils().remove_dbs(requires)
     return Utils().remove_dbs(requires)
Exemplo n.º 38
0
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()
Exemplo n.º 39
0
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()
Exemplo n.º 40
0
 def update_deps(self):
     """Update dependencies dictionary with all package
     """
     for dep in self.dependencies:
         deps = Utils().dimensional_list(
             Dependencies(self.repo, self.blacklist).binary(dep, self.flag))
         self.deps_dict[dep] = deps
Exemplo n.º 41
0
 def slack(self):
     """Official slackware repository
     """
     default = "http://mirrors.slackware.com/slackware/"
     if self.meta.arch.startswith("arm"):
         default = "http://ftp.arm.slackware.com/slackwarearm/"
     if os.path.isfile("/etc/slpkg/slackware-mirrors"):
         mirrors = Utils().read_file(
             self.meta.conf_path + "slackware-mirrors")
         for line in mirrors.splitlines():
             line = line.rstrip()
             if not line.startswith("#") and line:
                 default = line.split()[-1]
     if not default.endswith("/"):
         default += "/"
     return default
Exemplo n.º 42
0
 def slack(self):
     """Official slackware repository
     """
     default = "http://mirrors.slackware.com/slackware/"
     if self.meta.arch.startswith("arm"):
         default = "http://ftp.arm.slackware.com/slackwarearm/"
     if os.path.isfile("/etc/slpkg/slackware-mirrors"):
         mirrors = Utils().read_file(
             self.meta.conf_path + "slackware-mirrors")
         for line in mirrors.splitlines():
             line = line.rstrip()
             if not line.startswith("#") and line:
                 default = line.split()[-1]
     if not default.endswith("/"):
         default += "/"
     return default
Exemplo n.º 43
0
 def __init__(self, name):
     self.name = name
     self.meta = _meta_
     arch64 = "x86_64"
     self.line_name = "SLACKBUILD NAME: "
     self.line_files = "SLACKBUILD FILES: "
     self.line_down = "SLACKBUILD DOWNLOAD: "
     self.line_down_64 = "SLACKBUILD DOWNLOAD_{0}: ".format(arch64)
     self.line_req = "SLACKBUILD REQUIRES: "
     self.line_ver = "SLACKBUILD VERSION: "
     self.line_md5 = "SLACKBUILD MD5SUM: "
     self.line_md5_64 = "SLACKBUILD MD5SUM_{0}: ".format(arch64)
     self.line_des = "SLACKBUILD SHORT DESCRIPTION: "
     self.sbo_txt = self.meta.lib_path + "sbo_repo/SLACKBUILDS.TXT"
     self.answer = ["y", "Y"]
     self.unst = ["UNSUPPORTED", "UNTESTED"]
     self.SLACKBUILDS_TXT = Utils().read_file(self.sbo_txt)
Exemplo n.º 44
0
 def clear_masters(self):
     """Clear master slackbuilds if already exist in dependencies
     or if added to install two or more times
     """
     self.master_packages = Utils().remove_dbs(self.master_packages)
     for mas in self.master_packages:
         if mas in self.dependencies:
             self.master_packages.remove(mas)
Exemplo n.º 45
0
 def data(self):
     """Check all installed packages and create
     dictionary database
     """
     for pkg in self.installed:
         if os.path.isfile(self.meta.pkg_path + pkg):
             name = split_package(pkg)[0]
             for log in self.logs:
                 deps = Utils().read_file(self.dep_path + log)
                 for dep in deps.splitlines():
                     if name == dep:
                         if name not in self.dmap.keys():
                             self.dmap[name] = [log]
                             self.count_dep += 1
                         else:
                             self.dmap[name] += [log]
                             self.count_pkg += 1
Exemplo n.º 46
0
def sbo_search_pkg(name):
    """
    Search for package path from SLACKBUILDS.TXT file
    """
    try:
        repo = Repo().sbo()
        sbo_url = "{0}{1}/".format(repo, slack_ver())
        SLACKBUILDS_TXT = Utils().read_file(
            _meta_.lib_path + "sbo_repo/SLACKBUILDS.TXT")
        for line in SLACKBUILDS_TXT.splitlines():
            if line.startswith("SLACKBUILD LOCATION"):
                sbo_name = (line[23:].split("/")[-1].replace("\n", "")).strip()
                if name == sbo_name:
                    return (sbo_url + line[23:].strip() + "/")
        return ""
    except KeyboardInterrupt:
        print("")   # new line at exit
        sys.exit(0)
Exemplo n.º 47
0
 def data(self):
     """Check all installed packages and create
     dictionary database
     """
     for pkg in self.installed:
         if os.path.isfile(self.meta.pkg_path + pkg):
             name = split_package(pkg)[0]
             for log in self.logs:
                 deps = Utils().read_file(self.dep_path + log)
                 for dep in deps.splitlines():
                     if name == dep:
                         if name not in self.dmap.keys():
                             self.dmap[name] = [log]
                             if not self.count_pkg:
                                 self.count_pkg = 1
                         else:
                             self.dmap[name] += [log]
     self.count_packages()
Exemplo n.º 48
0
 def clear_masters(self):
     """Clear master packages if already exist in dependencies
     or if added to install two or more times
     """
     packages = []
     for mas in Utils().remove_dbs(self.packages):
         if mas not in self.dependencies:
             packages.append(mas)
     self.packages = packages
Exemplo n.º 49
0
 def fetch(self):
     if self.repo in self.meta.default_repositories:
         exec("self._init_{0}()".format(self.repo))
     else:
         exec("self._init_custom()")
     self.lib = self.meta.lib_path + "{0}_repo/PACKAGES.TXT".format(
         self.repo)
     PACKAGES_TXT = Utils().read_file(self.lib)
     return PACKAGES_TXT, self.mirror
Exemplo n.º 50
0
 def repositories(self):
     """Get dependencies by repositories
     """
     if self.repo == "sbo":
         self.sbo_case_insensitive()
         self.find_pkg = sbo_search_pkg(self.name)
         if self.find_pkg:
             self.dependencies_list = Requires(self.flag).sbo(self.name)
     else:
         PACKAGES_TXT = Utils().read_file(
             self.meta.lib_path + "{0}_repo/PACKAGES.TXT".format(self.repo))
         self.names = Utils().package_name(PACKAGES_TXT)
         self.bin_case_insensitive()
         self.find_pkg = search_pkg(self.name, self.repo)
         if self.find_pkg:
             self.black = BlackList().packages(self.names, self.repo)
             self.dependencies_list = Dependencies(
                 self.repo, self.black).binary(self.name, self.flag)
Exemplo n.º 51
0
def slack_ver():
    """
    Open file and read Slackware version
    """
    sv = Utils().read_file("/etc/slackware-version")
    version = re.findall(r"\d+", sv)
    if len(sv) > 2:
        return (".".join(version[:2]))
    else:
        return (".".join(version))
Exemplo n.º 52
0
 def merge(self, n):
     """Merge new file into old
     """
     if os.path.isfile(n[:-4]):
         old = Utils().read_file(n[:-4]).splitlines()
     if os.path.isfile(n):
         new = Utils().read_file(n).splitlines()
     with open(n[:-4], "w") as out:
         for l1, l2 in itertools.izip_longest(old, new):
             if l1 is None:
                 l1 = ""
             if l2 is None:
                 l2 = ""
             if l1 != l2:
                 out.write(l2 + "\n")
             else:
                 out.write(l1 + "\n")
         print("The file {0} merged in file {1}".format(
             n.split("/")[-1], n[:-4].split("/")[-1]))
Exemplo n.º 53
0
 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 = []
Exemplo n.º 54
0
 def repository_data(self, repo):
     """
     Grap data packages
     """
     sum_pkgs, size, unsize, last_upd = 0, [], [], ""
     for line in (Utils().read_file(
             self.meta.lib_path + repo + "_repo/PACKAGES.TXT").splitlines()):
         if line.startswith("PACKAGES.TXT;"):
             last_upd = line[14:].strip()
         if line.startswith("PACKAGE NAME:"):
             sum_pkgs += 1
         if line.startswith("PACKAGE SIZE (compressed):  "):
             size.append(line[28:-2].strip())
         if line.startswith("PACKAGE SIZE (uncompressed):  "):
             unsize.append(line[30:-2].strip())
     if repo in ["salix", "slackl"]:
         log = Utils().read_file(
             self.meta.log_path + "{0}/ChangeLog.txt".format(repo))
         last_upd = log.split("\n", 1)[0]
     return [sum_pkgs, size, unsize, last_upd]
Exemplo n.º 55
0
 def _check_if_used(self, removes):
     """Check package if dependencies for another package
     before removed"""
     if "--check-deps" in self.extra:
         package, dependency, pkg_dep = [], [], []
         for pkg in find_package("", self.dep_path):
             deps = Utils().read_file(self.dep_path + pkg)
             for rmv in removes:
                 if GetFromInstalled(rmv).name() and rmv in deps.split():
                     pkg_dep.append(
                         "{0} is dependency of the package --> {1}".format(
                             rmv, pkg))
                     package.append(pkg)
                     dependency.append(rmv)
         if package:
             if "--checklist" in self.extra:
                 data = pkg_dep
                 text = ("Press 'spacebar' to choose packages to exception "
                         "remove")
                 title = "!!! WARNING !!!"
                 backtitle = "{0} {1}".format(self.meta.__all__,
                                              self.meta.__version__)
                 status = False
                 choose = DialogUtil(data, text, title, backtitle,
                                     status).checklist()
                 for pkg in choose:
                     self.skip.append(pkg.split()[0])
             else:
                 self.msg.template(78)
                 print("| {0}{1}{2}".format(
                     self.meta.color["RED"], " " * 30 + "!!! WARNING !!!",
                     self.meta.color["ENDC"]))
                 self.msg.template(78)
                 for p, d in zip(package, dependency):
                     print("| {0}{1}{2} is dependency of the package --> "
                           "{3}{4}{5}".format(self.meta.color["YELLOW"], d,
                                              self.meta.color["ENDC"],
                                              self.meta.color["GREEN"], p,
                                              self.meta.color["ENDC"]))
                 self.msg.template(78)
                 self._skip_remove()
Exemplo n.º 56
0
 def view(self):
     """Print package description by repository
     """
     print("")   # new line at start
     description, count = "", 0
     if self.repo == "sbo":
         description = SBoGrep(self.name).description()
     else:
         PACKAGES_TXT = Utils().read_file(self.lib)
         for line in PACKAGES_TXT.splitlines():
             if line.startswith(self.name + ":"):
                 description += line[len(self.name) + 2:] + "\n"
                 count += 1
                 if count == 11:
                     break
     if description:
         print("{0}{1}{2}".format(self.COLOR, description,
                                  self.meta.color["ENDC"]))
     else:
         self.msg.pkg_not_found("", self.name, "No matching", "\n")
     if description and self.repo == "sbo":
         print("")
Exemplo n.º 57
0
def library(repo):
    """Load packages from slpkg library and from local
    """
    pkg_list, packages = [], ""
    if repo == "sbo":
        if (os.path.isfile(
                _meta_.lib_path + "{0}_repo/SLACKBUILDS.TXT".format(repo))):
            packages = Utils().read_file(_meta_.lib_path + "{0}_repo/"
                                         "SLACKBUILDS.TXT".format(repo))
    else:
        if (os.path.isfile(
                _meta_.lib_path + "{0}_repo/PACKAGES.TXT".format(repo))):
            packages = Utils().read_file(_meta_.lib_path + "{0}_repo/"
                                         "PACKAGES.TXT".format(repo))
    for line in packages.splitlines():
        if repo == "sbo":
            if line.startswith("SLACKBUILD NAME: "):
                pkg_list.append(line[17:].strip())
        elif "local" not in repo:
            if line.startswith("PACKAGE NAME: "):
                pkg_list.append(line[15:].strip())
    if repo == "local":
        pkg_list = find_package("", _meta_.pkg_path)
    return pkg_list
Exemplo n.º 58
0
 def __init__(self, name):
     self.name = name
     self.meta = _meta_
     arch64 = "x86_64"
     self.line_name = "SLACKBUILD NAME: "
     self.line_down = "SLACKBUILD DOWNLOAD: "
     self.line_down_64 = "SLACKBUILD DOWNLOAD_{0}: ".format(arch64)
     self.line_req = "SLACKBUILD REQUIRES: "
     self.line_ver = "SLACKBUILD VERSION: "
     self.line_md5 = "SLACKBUILD MD5SUM: "
     self.line_md5_64 = "SLACKBUILD MD5SUM_{0}: ".format(arch64)
     self.line_des = "SLACKBUILD SHORT DESCRIPTION: "
     self.sbo_txt = self.meta.lib_path + "sbo_repo/SLACKBUILDS.TXT"
     self.answer = ["y", "Y"]
     self.unst = ["UNSUPPORTED", "UNTESTED"]
     self.SLACKBUILDS_TXT = Utils().read_file(self.sbo_txt)
Exemplo n.º 59
0
 def __init__(self):
     queue_file = [
         "# In this file you can create a list of\n",
         "# packages you want to build or install.\n",
         "#\n"
     ]
     self.meta = _meta_
     self.quit = False
     self.queue = self.meta.lib_path + "queue/"
     self.queue_list = self.queue + "queue_list"
     if not os.path.exists(self.meta.lib_path):
         os.mkdir(self.meta.lib_path)
     if not os.path.exists(self.queue):
         os.mkdir(self.queue)
     if not os.path.isfile(self.queue_list):
         with open(self.queue_list, "w") as queue:
             for line in queue_file:
                 queue.write(line)
             queue.close()
     self.queued = Utils().read_file(self.queue_list)