Example #1
0
    def _scan(self):
        """
        Internal scan method, executes the actual scan and retuns
        a raw list of AntiMatterPackage objects.
        """
        vardb, portdb = self._get_dbs()
        result = []

        vardb.lock()
        try:
            cpv_all = vardb.cpv_all()
            cpv_all.sort()
            for count, package in enumerate(cpv_all):

                count_str = "[%s of %s]" % (
                    count,
                    len(cpv_all),
                )

                try:
                    slot, repo = vardb.aux_get(package, ["SLOT", "repository"])
                except KeyError:
                    # package vanished, can still
                    # happen even if locked?
                    continue

                atom = portage.dep.Atom("=%s:%s::%s" % (package, slot, repo),
                                        allow_wildcard=True,
                                        allow_repo=True)

                if self._nsargs.verbose:
                    print_warning("%s :: %s" % (count_str, atom), back=True)

                key_slot = "%s:%s" % (atom.cp, atom.slot)

                best_visible = portage.best(portdb.match(key_slot))

                if not best_visible:
                    # dropped upstream
                    pkg = AntiMatterPackage(vardb, portdb, atom, None, -1)
                    result.append(pkg)
                    if self._nsargs.verbose:
                        print_error("  %s no longer upstream or masked" %
                                    (key_slot, ))
                    continue

                cmp_res = portage.versions.pkgcmp(
                    portage.versions.pkgsplit(best_visible),
                    portage.versions.pkgsplit(package))

                pkg = AntiMatterPackage(vardb, portdb, atom, best_visible,
                                        cmp_res)
                result.append(pkg)
        finally:
            vardb.unlock()

        if cpv_all and self._nsargs.verbose:
            print_generic("")

        return result
Example #2
0
def _show_kernel_warnings(kernel_atom):
    print_info("%s %s" % (purple(kernel_atom), teal(_("has been installed."))))
    print_warning(
        "%s: %s" %
        (red(_("Attention")),
         brown(
             _("some external drivers cannot work across multiple kernels."))))
    print_warning(darkgreen(_("Please reboot your computer now !")))
Example #3
0
    def _get_installed_kernels(self, installed_repository):
        """
        Return a set of kernel packages that are installed on the system.
        """
        installed_package_ids = set()
        # Resolve the target kernel using the installed packages repository.
        # First, locate the virtual kernel package (if new virtuals are in
        # use.)
        latest_kernel, _k_rc = installed_repository.atomMatch(
            KERNEL_BINARY_VIRTUAL)
        if latest_kernel == -1:
            # Virtual package is not installed.
            # This happens when kernel packages have been moved to the new
            # virtual and PROVIDE is broken or no longer supported (EAPI=7?).
            print_warning("%s: %s %s" % (
                red(_("Attention")), KERNEL_BINARY_VIRTUAL,
                brown(
                    _("is not installed. Unable to resolve kernel "
                      "packages correctly. Please use --from-running or install"
                      "the package. Is your system up-to-date?"))))
            return installed_package_ids

        # If we have resolved the package to the virtual, we need to go
        # one level deep and retrieve the list of available kernel packages.
        # Do not assume that we hit only one kernel package when scanning, we
        # may have different packages in the dependency list.
        virtual_key = entropy.dep.dep_getkey(KERNEL_BINARY_VIRTUAL)
        latest_key_slot = installed_repository.retrieveKeySlot(latest_kernel)
        if latest_key_slot:
            latest_key, _unused = latest_key_slot
        else:
            # Cannot find installed package, give up.
            print_warning("%s: %s" % (
                red(_("Attention")),
                brown(
                    _("Unable to resolve the latest kernel metadata. Try again later."
                      ))))
            return installed_package_ids

        if virtual_key == latest_key:
            print_info("%s: %s" % (
                red(_("Resolving virtual kernel package")),
                KERNEL_BINARY_VIRTUAL,
            ))
            # New virtual package support.
            virtual_deps = installed_repository.retrieveRuntimeDependencies(
                latest_kernel)
            for virtual_dep in virtual_deps:
                virtual_pkg_id, _v_rc = installed_repository.atomMatch(
                    virtual_dep)
                if virtual_pkg_id != -1:
                    installed_package_ids.add(virtual_pkg_id)
        else:
            # Old virtual package detected (pre EAPI=7). Assume it's a kernel
            # binary.
            installed_package_ids.add(latest_kernel)

        return installed_package_ids
Example #4
0
    def _get_installed_kernels(self, installed_repository):
        """
        Return a set of kernel packages that are installed on the system.
        """
        installed_package_ids = set()
        # Resolve the target kernel using the installed packages repository.
        # First, locate the virtual kernel package (if new virtuals are in
        # use.)
        latest_kernel, _k_rc = installed_repository.atomMatch(KERNEL_BINARY_VIRTUAL)
        if latest_kernel == -1:
            # Virtual package is not installed.
            # This happens when kernel packages have been moved to the new
            # virtual and PROVIDE is broken or no longer supported (EAPI=7?).
            print_warning("%s: %s %s" % (
                red(_("Attention")),
                KERNEL_BINARY_VIRTUAL,
                brown(_("is not installed. Unable to resolve kernel "
                        "packages correctly. Please use --from-running or install"
                        "the package. Is your system up-to-date?"))))
            return installed_package_ids

        # If we have resolved the package to the virtual, we need to go
        # one level deep and retrieve the list of available kernel packages.
        # Do not assume that we hit only one kernel package when scanning, we
        # may have different packages in the dependency list.
        virtual_key = entropy.dep.dep_getkey(KERNEL_BINARY_VIRTUAL)
        latest_key_slot = installed_repository.retrieveKeySlot(latest_kernel)
        if latest_key_slot:
            latest_key, _unused = latest_key_slot
        else:
            # Cannot find installed package, give up.
            print_warning("%s: %s" % (
                red(_("Attention")),
                brown(_("Unable to resolve the latest kernel metadata. Try again later."))
            ))
            return installed_package_ids

        if virtual_key == latest_key:
            print_info("%s: %s" % (
                red(_("Resolving virtual kernel package")),
                KERNEL_BINARY_VIRTUAL,
            ))
            # New virtual package support.
            virtual_deps = installed_repository.retrieveRuntimeDependencies(
                latest_kernel)
            for virtual_dep in virtual_deps:
                virtual_pkg_id, _v_rc = installed_repository.atomMatch(virtual_dep)
                if virtual_pkg_id != -1:
                    installed_package_ids.add(virtual_pkg_id)
        else:
            # Old virtual package detected (pre EAPI=7). Assume it's a kernel
            # binary.
            installed_package_ids.add(latest_kernel)

        return installed_package_ids
Example #5
0
def warn_live_system():
    print_warning("")
    print_warning(purple(_("Entropy is running off a Live System")))
    print_warning(
        teal(_("Performance and stability could get"
               " severely compromised")))
    print_warning("")
Example #6
0
def warn_live_system():
    print_warning("")
    print_warning(
        purple(_("Entropy is running off a Live System")))
    print_warning(
        teal(_("Performance and stability could get"
             " severely compromised")))
    print_warning("")
Example #7
0
def warn_version_mismatch():
    equo_ver = read_client_release()
    entropy_ver = etpConst['entropyversion']
    if equo_ver != entropy_ver:
        print_warning("")
        print_warning("%s: %s" % (
            bold(_("Entropy/Equo version mismatch")),
            purple(_("it could make your system explode!")),))
        print_warning("(%s [equo] & %s [entropy])" % (
            blue(equo_ver),
            blue(entropy_ver),))
        print_warning("")
Example #8
0
def warn_version_mismatch():
    equo_ver = read_client_release()
    entropy_ver = etpConst['entropyversion']
    if equo_ver != entropy_ver:
        print_warning("")
        print_warning("%s: %s" % (
            bold(_("Entropy/Equo version mismatch")),
            purple(_("it could make your system explode!")),
        ))
        print_warning("(%s [equo] & %s [entropy])" % (
            blue(equo_ver),
            blue(entropy_ver),
        ))
        print_warning("")
Example #9
0
    def _new_scan(self):
        """
        Internal scan method, executes the actual scan and retuns
        a raw list of AntiMatterPackage objects.
        """
        vardb, portdb = self._get_dbs()
        new_days_old_secs = self._nsargs.new_days_old * 3600 * 24
        not_installed = self._nsargs.not_installed
        result = []

        cp_all = portdb.cp_all()
        cp_all.sort()
        root = portdb.porttree_root
        for count, package in enumerate(cp_all):

            count_str = "[%s of %s]" % (
                count,
                len(cp_all),
            )

            if self._nsargs.verbose:
                print_warning("%s :: %s" % (count_str, package), back=True)

            if not not_installed:
                cp_dir = os.path.join(root, package)
                try:
                    mtime = os.path.getmtime(cp_dir)
                except (OSError, IOError):
                    mtime = 0.0

                if abs(time.time() - mtime) >= new_days_old_secs:
                    # not new enough
                    continue

            best_installed = portage.best(vardb.match(package))
            if best_installed:
                # package key is already installed, ignore
                continue

            best_visible = portage.best(portdb.match(package))
            if not best_visible:
                # wtf? package masked?
                continue

            try:
                slot, repo = portdb.aux_get(best_visible,
                                            ["SLOT", "repository"])
            except KeyError:
                # portage is scrappy
                continue

            atom = portage.dep.Atom("=%s:%s::%s" % (best_visible, slot, repo),
                                    allow_wildcard=True,
                                    allow_repo=True)

            pkg = AntiMatterPackage(vardb, portdb, None, atom, 1)
            result.append(pkg)

        if cp_all and self._nsargs.verbose:
            print_generic("")

        return result
Example #10
0
def _show_kernel_warnings(kernel_atom):
    print_info("%s %s" % (purple(kernel_atom), teal(_("has been installed."))))
    print_warning("%s: %s" % (red(_("Attention")),
        brown(_("some external drivers cannot work across multiple kernels."))))
    print_warning(darkgreen(_("Please reboot your computer now !")))
Example #11
0
    def _scan(self):
        """
        Internal scan method, executes the actual scan and retuns
        a raw list of AntiMatterPackage objects.
        """
        vardb, portdb = self._get_dbs()
        result = []

        vardb.lock()
        try:
            cpv_all = vardb.cpv_all()
            cpv_all.sort()
            for count, package in enumerate(cpv_all):

                count_str = "[%s of %s]" % (
                    count, len(cpv_all),)

                try:
                    slot, repo = vardb.aux_get(
                        package, ["SLOT", "repository"])
                except KeyError:
                    # package vanished, can still
                    # happen even if locked?
                    continue

                atom = portage.dep.Atom(
                    "=%s:%s::%s" % (package, slot, repo),
                    allow_wildcard=True,
                    allow_repo=True)

                if self._nsargs.verbose:
                    print_warning("%s :: %s" % (count_str, atom),
                                  back=True)

                key_slot = "%s:%s" % (atom.cp, atom.slot)

                best_visible = portage.best(portdb.match(key_slot))

                if not best_visible:
                    # dropped upstream
                    pkg = AntiMatterPackage(
                        vardb, portdb, atom, None, -1)
                    result.append(pkg)
                    if self._nsargs.verbose:
                        print_error(
                            "  %s no longer upstream or masked" % (key_slot,))
                    continue

                cmp_res = portage.versions.pkgcmp(
                    portage.versions.pkgsplit(best_visible),
                    portage.versions.pkgsplit(package))

                pkg = AntiMatterPackage(
                    vardb, portdb, atom,
                    best_visible, cmp_res)
                result.append(pkg)
        finally:
            vardb.unlock()


        if cpv_all and self._nsargs.verbose:
            print_generic("")

        return result
Example #12
0
    def _new_scan(self):
        """
        Internal scan method, executes the actual scan and retuns
        a raw list of AntiMatterPackage objects.
        """
        vardb, portdb = self._get_dbs()
        new_days_old_secs = self._nsargs.new_days_old * 3600 * 24
        not_installed = self._nsargs.not_installed
        result = []

        cp_all = portdb.cp_all()
        cp_all.sort()
        root = portdb.porttree_root
        for count, package in enumerate(cp_all):

            count_str = "[%s of %s]" % (
                count, len(cp_all),)

            if self._nsargs.verbose:
                print_warning("%s :: %s" % (count_str, package),
                              back=True)

            if not not_installed:
                cp_dir = os.path.join(root, package)
                try:
                    mtime = os.path.getmtime(cp_dir)
                except (OSError, IOError):
                    mtime = 0.0

                if abs(time.time() - mtime) >= new_days_old_secs:
                    # not new enough
                    continue

            best_installed = portage.best(vardb.match(package))
            if best_installed:
                # package key is already installed, ignore
                continue

            best_visible = portage.best(portdb.match(package))
            if not best_visible:
                # wtf? package masked?
                continue

            try:
                slot, repo = portdb.aux_get(
                    best_visible, ["SLOT", "repository"])
            except KeyError:
                # portage is scrappy
                continue

            atom = portage.dep.Atom(
                "=%s:%s::%s" % (best_visible, slot, repo),
                allow_wildcard=True,
                allow_repo=True)

            pkg = AntiMatterPackage(
                vardb, portdb, None, atom, 1)
            result.append(pkg)

        if cp_all and self._nsargs.verbose:
            print_generic("")

        return result