Exemplo n.º 1
0
 def build_install(self):
     """Searches the package name and version in /tmp to
     install. If find two or more packages e.g. to build
     tag 2 or 3 will fit most.
     """
     slackbuilds = self.dependencies + self.master_packages
     installs, upgraded, = [], []
     if not os.path.exists(self.build_folder):
         os.makedirs(self.build_folder)
     os.chdir(self.build_folder)
     for sbo in slackbuilds:
         pkg = "-".join(sbo.split("-")[:-1])
         ver = sbo.split("-")[-1]
         prgnam = ("{0}-{1}".format(pkg, ver))
         sbo_file = "".join(find_package(prgnam, self.meta.pkg_path))
         src_link = SBoGrep(pkg).source().split()
         if sbo_file:
             Msg().template(78)
             Msg().pkg_found(pkg, split_package(sbo_file)[1])
             Msg().template(78)
         elif self.unst[0] in src_link or self.unst[1] in src_link:
             Msg().template(78)
             print("| Package {0} {1}{2}{3}".format(
                 sbo, self.meta.color["RED"], "".join(src_link),
                 self.meta.color["ENDC"]))
             Msg().template(78)
         else:
             sbo_url = sbo_search_pkg(pkg)
             sbo_link = SBoLink(sbo_url).tar_gz()
             script = sbo_link.split("/")[-1]
             dwn_srcs = sbo_link.split() + src_link
             Download(self.build_folder, dwn_srcs, repo="sbo").start()
             sources = self.filenames(src_link)
             BuildPackage(script, sources, self.build_folder).build()
             binary_list = self.search_in_tmp(prgnam)
             try:
                 binary = (self.meta.output + max(binary_list)).split()
             except ValueError:
                 Msg().build_FAILED(sbo_url, prgnam)
                 sys.exit(0)
             if find_package(pkg + "-", self.meta.pkg_path):
                 print("{0}[ Upgrading ] --> {1}{2}".format(
                     self.meta.color["YELLOW"],
                     self.meta.color["ENDC"], pkg))
                 upgraded.append(prgnam)
             else:
                 print("{0}[ Installing ] --> {1}{2}".format(
                     self.meta.color["GREEN"], self.meta.color["ENDC"], pkg))
                 installs.append(prgnam)
             PackageManager(binary).upgrade(flag="--install-new")
     return installs, upgraded
Exemplo n.º 2
0
 def __init__(self, name):
     self.name = name
     sys.stdout.write("{0}Reading package lists ...{1}".format(GREY, ENDC))
     sys.stdout.flush()
     initialization()
     grep = SBoGrep(self.name)
     self.sbo_url = sbo_search_pkg(self.name)
     self.sbo_desc = grep.description()[len(self.name) + 2:-1]
     self.sbo_req = grep.requires()
     self.source_dwn = grep.source().split()
     self.sbo_dwn = SBoLink(self.sbo_url).tar_gz()
     self.sbo_version = grep.version()
     self.space = ("\n" * 50)
     sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
Exemplo n.º 3
0
def build_install(dependencies, sbo_versions, packages_arch):
    '''
    Searches the package name and version in /tmp to
    install. If find two or more packages e.g. to build
    tag 2 or 3 will fit most
    '''
    installs, upgraded, versions = [], [], []
    create_build_path()
    os.chdir(build_path)
    for pkg, ver, ar in zip(dependencies, sbo_versions, packages_arch):
        prgnam = ("{0}-{1}".format(pkg, ver))
        sbo_file = "".join(find_package(prgnam, pkg_path))
        if sbo_file:
            sbo_file_version = sbo_file[len(pkg) + 1:-len(ar) - 7]
            template(78)
            pkg_found(pkg, sbo_file_version)
            template(78)
        else:
            sbo_url = sbo_search_pkg(pkg)
            sbo_link = SBoLink(sbo_url).tar_gz()
            src_link = SBoGrep(pkg).source().split()
            script = sbo_link.split("/")[-1]
            Download(build_path, sbo_link).start()
            sources = dwn_sources(src_link)
            BuildPackage(script, sources, build_path).build()
            binary_list = search_in_tmp(prgnam)
            try:
                binary = (tmp + max(binary_list)).split()
            except ValueError:
                build_FAILED(sbo_url, prgnam)
                sys.exit()
            if find_package(pkg + sp, pkg_path):
                print("{0}[ Upgrading ] --> {1}{2}".format(GREEN, ENDC, pkg))
                upgraded.append(pkg)
            else:
                print("{0}[ Installing ] --> {1}{2}".format(GREEN, ENDC, pkg))
            PackageManager(binary).upgrade()
            installs.append(pkg)
            versions.append(ver)
    return [installs, upgraded, versions]
Exemplo n.º 4
0
def build_install(dependencies, sbo_versions, packages_arch):
    '''
    Searches the package name and version in /tmp to
    install. If find two or more packages e.g. to build
    tag 2 or 3 will fit most
    '''
    installs, upgraded, versions = [], [], []
    create_build_path()
    os.chdir(build_path)
    for pkg, ver, ar in zip(dependencies, sbo_versions, packages_arch):
        prgnam = ("{0}-{1}".format(pkg, ver))
        sbo_file = "".join(find_package(prgnam, pkg_path))
        if sbo_file:
            sbo_file_version = sbo_file[len(pkg) + 1:-len(ar) - 7]
            template(78)
            pkg_found(pkg, sbo_file_version)
            template(78)
        else:
            sbo_url = sbo_search_pkg(pkg)
            sbo_link = SBoLink(sbo_url).tar_gz()
            src_link = SBoGrep(pkg).source().split()
            script = sbo_link.split("/")[-1]
            Download(build_path, sbo_link).start()
            sources = dwn_sources(src_link)
            BuildPackage(script, sources, build_path).build()
            binary_list = search_in_tmp(prgnam)
            try:
                binary = (tmp + max(binary_list)).split()
            except ValueError:
                build_FAILED(sbo_url, prgnam)
                sys.exit()
            if find_package(pkg + sp, pkg_path):
                print("{0}[ Upgrading ] --> {1}{2}".format(GREEN, ENDC, pkg))
                upgraded.append(pkg)
            else:
                print("{0}[ Installing ] --> {1}{2}".format(GREEN, ENDC, pkg))
            PackageManager(binary).upgrade()
            installs.append(pkg)
            versions.append(ver)
    return [installs, upgraded, versions]
Exemplo n.º 5
0
 def __init__(self, name):
     self.name = name
     sys.stdout.write("{0}Reading package lists ...{1}".format(GREY, ENDC))
     sys.stdout.flush()
     initialization()
     grep = SBoGrep(self.name)
     self.sbo_url = sbo_search_pkg(self.name)
     self.sbo_desc = grep.description()[len(self.name) + 2:-1]
     self.sbo_req = grep.requires()
     self.source_dwn = grep.source().split()
     self.sbo_dwn = SBoLink(self.sbo_url).tar_gz()
     self.sbo_version = grep.version()
     self.space = ("\n" * 50)
     sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
Exemplo n.º 6
0
 def __init__(self, name):
     self.name = name
     self.meta = _meta_
     self.build_folder = self.meta.build_path
     Msg().reading()
     grep = SBoGrep(self.name)
     self.data = SBoGrep(name="").names()
     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
     self.space = ("\n" * 50)
     Msg().done()
Exemplo n.º 7
0
class SBoNetwork(object):
    def __init__(self, name):
        self.name = name
        sys.stdout.write("{0}Reading package lists ...{1}".format(GREY, ENDC))
        sys.stdout.flush()
        initialization()
        grep = SBoGrep(self.name)
        self.sbo_url = sbo_search_pkg(self.name)
        self.sbo_desc = grep.description()[len(self.name) + 2:-1]
        self.sbo_req = grep.requires()
        self.source_dwn = grep.source().split()
        self.sbo_dwn = SBoLink(self.sbo_url).tar_gz()
        self.sbo_version = grep.version()
        self.space = ("\n" * 50)
        sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))

    def view(self):
        '''
        View SlackBuild package, read or install them
        from slackbuilds.org
        '''
        if self.sbo_url:
            prgnam = ("{0}-{1}".format(self.name, self.sbo_version))
            view_sbo(
                self.name, self.sbo_url, self.sbo_desc,
                self.sbo_dwn.split("/")[-1],
                ", ".join([src.split("/")[-1] for src in self.source_dwn]),
                self.sbo_req)
            FAULT = error_uns(self.source_dwn)
            while True:
                choice = read_choice()
                if choice in ["D", "d"]:
                    download("", self.sbo_dwn, self.source_dwn)
                    break
                elif choice in ["R", "r"]:
                    README = Read(self.sbo_url).readme("README")
                    fill = fill_pager(README)
                    pydoc.pager(README + fill)
                elif choice in ["F", "f"]:
                    info = Read(self.sbo_url).info(self.name, ".info")
                    fill = fill_pager(info)
                    pydoc.pager(info + fill)
                elif choice in ["S", "s"]:
                    SlackBuild = Read(self.sbo_url).slackbuild(
                        self.name, ".SlackBuild")
                    fill = fill_pager(SlackBuild)
                    pydoc.pager(SlackBuild + fill)
                elif choice in ["B", "b"]:
                    build(self.sbo_dwn, self.source_dwn, FAULT)
                    break
                elif choice in ["I", "i"]:
                    if not find_package(prgnam + sp, pkg_path):
                        build(self.sbo_dwn, self.source_dwn, FAULT)
                        install(self.name, prgnam, self.sbo_url)
                        break
                    else:
                        template(78)
                        pkg_found(self.name, self.sbo_version)
                        template(78)
                        break
                else:
                    break
        else:
            pkg_not_found("\n", self.name, "Can't view", "\n")
Exemplo n.º 8
0
 def start(self):
     '''
     Upgrade all slackbuilds packages from slackbuilds.org
     repository.
     NOTE: This functions check packages by version not by build
     tag because build tag not reported the SLACKBUILDS.TXT file,
     but install the package with maximum build tag if find the
     some version in /tmp directory.
     '''
     try:
         if sbo_list():
             upg_name = exists(self.index, self.toolbar_width)
             sys.stdout.write(self.done)
             data = []
             if upg_name:
                 sys.stdout.write("{0}Resolving dependencies ...{1}".format(
                                  GREY, ENDC))
                 sys.stdout.flush()
                 dependencies = deps(upg_name)
                 requires = one_for_all(dependencies)
                 dependencies_list = order_list(upg_name,
                                                remove_dbs(requires))
                 # upgrade name = data[0]
                 # package for upgrade = data[1]
                 # upgrade version = data[2]
                 # upgrade arch = data[3]
                 data = store(dependencies_list)
                 sys.stdout.write(self.done)
             if data:
                 # count installed = count[0]
                 # count upgraded = count[1]
                 # message install = msg[0]
                 # message upgrade = msg[1]
                 count, msg = view_packages(data[1], data[2], data[3])
                 read = raw_input("Would you like to upgrade [Y/n]? ")
                 if read == "Y" or read == "y":
                     create_build_path()
                     os.chdir(build_path)
                     for name, version in zip(data[0], data[2]):
                         prgnam = ("{0}-{1}".format(name, version))
                         sbo_url = sbo_search_pkg(name)
                         sbo_dwn = SBoLink(sbo_url).tar_gz()
                         src_dwn = SBoGrep(name).source().split()
                         script = sbo_dwn.split("/")[-1]
                         Download(build_path, sbo_dwn).start()
                         sources = dwn_sources(src_dwn)
                         BuildPackage(script, sources, build_path).build()
                         # Searches the package name and version in /tmp to
                         # install.If find two or more packages e.g. to build
                         # tag 2 or 3 will fit most.
                         binary_list = search_in_tmp(prgnam)
                         try:
                             binary = (tmp + max(binary_list)).split()
                         except ValueError:
                             build_FAILED(sbo_url, prgnam)
                             sys.exit()
                         if find_package(name + sp, pkg_path):
                             print("[ {0}Upgrading{1} ] --> {2}".format(
                                 YELLOW, ENDC, name))
                         else:
                             print("[ {0}Installing{1} ] --> {2}".format(
                                 GREEN, ENDC, name))
                             # Use this list to pick out what
                             # packages will be installed
                             self.installed.append(name)
                         PackageManager(binary).upgrade()
                     reference(data[0], data[1], data[2], count[0], count[1],
                               msg[0], msg[1], self.installed)
             else:
                 print("\nTotal {0} SBo packages are up to date\n".format(
                     len(sbo_list())))
         else:
             sys.stdout.write(self.done)
             print("\nNo SBo packages found\n")
     except KeyboardInterrupt:
         print   # new line at exit
         sys.exit()
Exemplo n.º 9
0
class SBoNetwork(object):

    def __init__(self, name):
        self.name = name
        sys.stdout.write("{0}Reading package lists ...{1}".format(GREY, ENDC))
        sys.stdout.flush()
        initialization()
        grep = SBoGrep(self.name)
        self.sbo_url = sbo_search_pkg(self.name)
        self.sbo_desc = grep.description()[len(self.name) + 2:-1]
        self.sbo_req = grep.requires()
        self.source_dwn = grep.source().split()
        self.sbo_dwn = SBoLink(self.sbo_url).tar_gz()
        self.sbo_version = grep.version()
        self.space = ("\n" * 50)
        sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))

    def view(self):
        '''
        View SlackBuild package, read or install them
        from slackbuilds.org
        '''
        if self.sbo_url:
            prgnam = ("{0}-{1}".format(self.name, self.sbo_version))
            view_sbo(self.name, self.sbo_url, self.sbo_desc,
                     self.sbo_dwn.split("/")[-1],
                     ", ".join([src.split("/")[-1] for src in self.source_dwn]),
                     self.sbo_req)
            FAULT = error_uns(self.source_dwn)
            while True:
                choice = read_choice()
                if choice in ["D", "d"]:
                    download("", self.sbo_dwn, self.source_dwn)
                    break
                elif choice in ["R", "r"]:
                    README = Read(self.sbo_url).readme("README")
                    fill = fill_pager(README)
                    pydoc.pager(README + fill)
                elif choice in ["F", "f"]:
                    info = Read(self.sbo_url).info(self.name, ".info")
                    fill = fill_pager(info)
                    pydoc.pager(info + fill)
                elif choice in ["S", "s"]:
                    SlackBuild = Read(self.sbo_url).slackbuild(self.name,
                                                               ".SlackBuild")
                    fill = fill_pager(SlackBuild)
                    pydoc.pager(SlackBuild + fill)
                elif choice in ["B", "b"]:
                    build(self.sbo_dwn, self.source_dwn, FAULT)
                    break
                elif choice in ["I", "i"]:
                    if not find_package(prgnam + sp, pkg_path):
                        build(self.sbo_dwn, self.source_dwn, FAULT)
                        install(self.name, prgnam, self.sbo_url)
                        break
                    else:
                        template(78)
                        pkg_found(self.name, self.sbo_version)
                        template(78)
                        break
                else:
                    break
        else:
            pkg_not_found("\n", self.name, "Can't view", "\n")
Exemplo n.º 10
0
class SBoNetwork(object):

    def __init__(self, name):
        self.name = name
        self.meta = _meta_
        self.build_folder = self.meta.build_path
        Msg().reading()
        grep = SBoGrep(self.name)
        self.data = SBoGrep(name="").names()
        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
        self.space = ("\n" * 50)
        Msg().done()

    def view(self):
        """
        View SlackBuild package, read or install them
        from slackbuilds.org
        """
        if self.sbo_url and self.name not in self.blacklist:
            prgnam = ("{0}-{1}".format(self.name, self.sbo_version))
            self.view_sbo(
                self.name, self.sbo_url, self.sbo_desc,
                self.sbo_dwn.split("/")[-1],
                ", ".join([src.split("/")[-1] for src in self.source_dwn]),
                self.sbo_req)
            FAULT = self.error_uns()
            while True:
                choice = self.read_choice()
                if choice in ["D", "d"]:
                    Download(path="", url=self.dwn_srcs, repo="sbo").start()
                    break
                elif choice in ["R", "r"]:
                    README = Read(self.sbo_url).readme("README")
                    fill = self.fill_pager(README)
                    pydoc.pager(README + fill)
                elif choice in ["F", "f"]:
                    info = Read(self.sbo_url).info(self.name, ".info")
                    fill = self.fill_pager(info)
                    pydoc.pager(info + fill)
                elif choice in ["S", "s"]:
                    SlackBuild = Read(self.sbo_url).slackbuild(self.name,
                                                               ".SlackBuild")
                    fill = self.fill_pager(SlackBuild)
                    pydoc.pager(SlackBuild + fill)
                elif choice in ["B", "b"]:
                    self.build(FAULT)
                    delete(self.build_folder)
                    break
                elif choice in ["I", "i"]:
                    if not find_package(prgnam + self.meta.sp,
                                        self.meta.pkg_path):
                        self.build(FAULT)
                        self.install(prgnam)
                        delete(self.build_folder)
                        break
                    else:
                        Msg().template(78)
                        Msg().pkg_found(self.name, self.sbo_version)
                        Msg().template(78)
                        break
                else:
                    break
        else:
            Msg().pkg_not_found("\n", self.name, "Can't view", "\n")

    @staticmethod
    def view_sbo(*args):
        """
        View slackbuild.org
        """
        br1, br2, fix_sp = "", "", " "
        if _meta_.use_colors in ["off", "OFF"]:
            br1 = "("
            br2 = ")"
            fix_sp = ""
        color = _meta_.color
        print("")   # new line at start
        Msg().template(78)
        print("| {0}Package {1}{2}{3} --> {4}".format(color["GREEN"],
                                                      color["CYAN"], args[0],
                                                      color["GREEN"],
                                                      color["ENDC"] + args[1]))
        Msg().template(78)
        print("| {0}Description : {1}{2}".format(color["GREEN"],
                                                 color["ENDC"], args[2]))
        print("| {0}SlackBuild : {1}{2}".format(color["GREEN"], color["ENDC"],
                                                args[3]))
        print("| {0}Sources : {1}{2}".format(color["GREEN"], color["ENDC"],
                                             args[4]))
        print("| {0}Requirements : {1}{2}".format(color["YELLOW"],
                                                  color["ENDC"],
                                                  ", ".join(args[5])))
        Msg().template(78)
        print("| {0}R{1}{2}EADME               View the README file".format(
            color["RED"], color["ENDC"], br2))
        print("| {0}S{1}{2}lackBuild           View the SlackBuild file".format(
            color["RED"], color["ENDC"], br2))
        print("| In{0}{1}f{2}{3}o{4}                View the Info file".format(
            br1, color["RED"], color["ENDC"], br2, fix_sp))
        print("| {0}D{1}{2}ownload             Download this package".format(
            color["RED"], color["ENDC"], br2))
        print("| {0}B{1}{2}uild                Download and build".format(
            color["RED"], color["ENDC"], br2))
        print("| {0}I{1}{2}nstall              Download/Build/Install".format(
            color["RED"], color["ENDC"], br2))
        print("| {0}Q{1}{2}uit                 Quit".format(color["RED"],
                                                            color["ENDC"], br2))

        Msg().template(78)

    @staticmethod
    def fill_pager(page):
        """
        Fix pager spaces
        """
        tty_size = os.popen("stty size", "r").read().split()
        rows = int(tty_size[0]) - 1
        lines = sum(1 for line in page.splitlines())
        diff = rows - lines
        fill = "\n" * diff
        if diff > 0:
            return fill
        else:
            return ""

    def read_choice(self):
        """
        Return choice
        """
        try:
            choice = raw_input("{0}  Choose an option > {1}".format(
                _meta_.color["GREY"], _meta_.color["ENDC"]))
        except KeyboardInterrupt:
            print("")   # new line at exit
            sys.exit(0)
        return choice

    def error_uns(self):
        """
        Check if package supported by arch
        before proceed to install
        """
        UNST = ["UNSUPPORTED", "UNTESTED"]
        if "".join(self.source_dwn) in UNST:
            return "".join(self.source_dwn)

    def build(self, FAULT):
        """
        Only build and create Slackware package
        """
        if FAULT:
            print("\n{0}The package {1} {2}\n".format(_meta_.color["RED"],
                                                      FAULT,
                                                      _meta_.color["ENDC"]))
            sys.exit(0)
        sources = []
        if not os.path.exists(_meta_.build_path):
            os.makedirs(_meta_.build_path)
        os.chdir(_meta_.build_path)
        Download(_meta_.build_path, self.dwn_srcs, repo="sbo").start()
        script = self.sbo_dwn.split("/")[-1]
        for src in self.source_dwn:
            sources.append(src.split("/")[-1])
        BuildPackage(script, sources, _meta_.build_path).build()

    def install(self, prgnam):
        """
        Install Slackware package found in /tmp
        directory.
        """
        binary_list = []
        for search in find_package(prgnam, _meta_.output):
            if "_SBo" in search:
                binary_list.append(search)
            try:
                binary = (_meta_.output + max(binary_list)).split()
            except ValueError:
                Msg().build_FAILED(self.sbo_url, prgnam)
                sys.exit(0)
            print("[ {0}Installing{1} ] --> {2}".format(_meta_.color["GREEN"],
                                                        _meta_.color["ENDC"],
                                                        self.name))
            PackageManager(binary).upgrade(flag="--install-new")