Esempio n. 1
0
    def _try_get_current_manager(cls):
        """ Try to detect a package manager used in a current Gentoo system. """
        if utils.get_distro_name().find('gentoo') == -1:
            return None
        if 'PACKAGE_MANAGER' in os.environ:
            pm = os.environ['PACKAGE_MANAGER']
            if pm == 'paludis':
                # Try to import paludis module
                try:
                    import paludis
                    return GentooPackageManager.PALUDIS
                except ImportError:
                    # TODO Environment tells that paludis must be used, but
                    # it seems latter was build w/o USE=python...
                    # Need to report an error!!??
                    return None
            elif pm == 'portage':
                # Fallback to default: portage
                pass
            else:
                # ATTENTION Some unknown package manager?! Which one?
                return None

        # Try to import portage module
        try:
            import portage
            return GentooPackageManager.PORTAGE
        except ImportError:
            pass
Esempio n. 2
0
    def _process_dependency(self, dep_t, dep_l):
        """Add dependencies into self.dependencies, possibly also adding system packages
        that contain non-distro package managers (e.g. if someone wants to install
        dependencies with pip and pip is not present, it will get installed through
        RPM on RPM based systems, etc.

        Skips dependencies that are supposed to be installed by system manager that
        is not native to this system.
        """
        if dep_t not in managers:
            err = 'No package manager for dependency type "{dep_t}"'.format(dep_t=dep_t)
            raise exceptions.NoPackageManagerException(err)
        # try to get list of distros where the dependency type is system type
        distros = settings.SYSTEM_DEPTYPES_SHORTCUTS.get(dep_t, None)
        if not distros:  # non-distro dependency type
            sysdep_t = self.get_system_deptype_shortcut()
            # for now, just take the first manager that can install dep_t and install this manager
            self._process_dependency(sysdep_t,
                                     managers[dep_t][0].get_distro_dependencies(sysdep_t))
        else:
            local_distro = utils.get_distro_name()
            found = False
            for distro in distros:
                if distro in local_distro:
                    found = True
                    break
            if not found:  # distro dependency type, but for another distro
                return
        self.__add_dependencies(dep_t, dep_l)
Esempio n. 3
0
    def _process_dependency(self, dep_t, dep_l):
        """Add dependencies into self.dependencies, possibly also adding system packages
        that contain non-distro package managers (e.g. if someone wants to install
        dependencies with pip and pip is not present, it will get installed through
        RPM on RPM based systems, etc.

        Skips dependencies that are supposed to be installed by system manager that
        is not native to this system.
        """
        if dep_t not in managers:
            err = 'No package manager for dependency type "{dep_t}"'.format(dep_t=dep_t)
            raise exceptions.NoPackageManagerException(err)
        # try to get list of distros where the dependency type is system type
        distros = settings.SYSTEM_DEPTYPES_SHORTCUTS.get(dep_t, None)
        if not distros:  # non-distro dependency type
            sysdep_t = self.get_system_deptype_shortcut()
            # for now, just take the first manager that can install dep_t and install this manager
            self._process_dependency(sysdep_t,
                                     managers[dep_t][0].get_distro_dependencies(sysdep_t))
        else:
            local_distro = utils.get_distro_name()
            found = False
            for distro in distros:
                if distro in local_distro:
                    found = True
                    break
            if not found:  # distro dependency type, but for another distro
                return
        self.__add_dependencies(dep_t, dep_l)
Esempio n. 4
0
    def _try_get_current_manager(cls):
        """ Try to detect a package manager used in a current Gentoo system. """
        if utils.get_distro_name().find('gentoo') == -1:
            return None
        if 'PACKAGE_MANAGER' in os.environ:
            pm = os.environ['PACKAGE_MANAGER']
            if pm == 'paludis':
                # Try to import paludis module
                try:
                    import paludis
                    return GentooPackageManager.PALUDIS
                except ImportError:
                    # TODO Environment tells that paludis must be used, but
                    # it seems latter was build w/o USE=python...
                    # Need to report an error!!??
                    return None
            elif pm == 'portage':
                # Fallback to default: portage
                pass
            else:
                # ATTENTION Some unknown package manager?! Which one?
                return None

        # Try to import portage module
        try:
            import portage
            return GentooPackageManager.PORTAGE
        except ImportError:
            return None
Esempio n. 5
0
    def get_system_deptype_shortcut(self):
        local_distro = utils.get_distro_name()
        for dep_t, distros in settings.SYSTEM_DEPTYPES_SHORTCUTS.items():
            for distro in distros:
                if distro in local_distro:
                    return dep_t

        # just try rpm if unkown (not very nice?)
        return 'rpm'
Esempio n. 6
0
    def get_system_deptype_shortcut(self):
        local_distro = utils.get_distro_name()
        for dep_t, distros in settings.SYSTEM_DEPTYPES_SHORTCUTS.items():
            for distro in distros:
                if distro in local_distro:
                    return dep_t

        # just try rpm if unkown (not very nice?)
        return 'rpm'
Esempio n. 7
0
    def run(self):
        newargs = {}
        newargs['q'] = ' '.join(self.kwargs['query'])
        newargs['noassistants'] = self.kwargs['noassistants']
        newargs['unstable'] = self.kwargs['unstable']
        newargs['notactive'] = self.kwargs['deactivated']
        newargs['minimal_rank'] = self.kwargs['minrank']
        newargs['minimal_rank_count'] = self.kwargs['mincount']
        if not self.kwargs['allplatforms']:
            newargs['platform'] = utils.get_distro_name()

        try:
            dapicli.print_search(**newargs)
        except exceptions.DapiError as e:
            logger.error(utils.exc_as_decoded_string(e))
            raise exceptions.ExecutionException(utils.exc_as_decoded_string(e))
Esempio n. 8
0
    def run(self):
        newargs = {}
        newargs['q'] = ' '.join(self.kwargs['query'])
        newargs['noassistants'] = self.kwargs['noassistants']
        newargs['unstable'] = self.kwargs['unstable']
        newargs['notactive'] = self.kwargs['deactivated']
        newargs['minimal_rank'] = self.kwargs['minrank']
        newargs['minimal_rank_count'] = self.kwargs['mincount']
        if not self.kwargs['allplatforms']:
            newargs['platform'] = utils.get_distro_name()

        try:
            logger.infolines(dapicli.format_search(**newargs))
        except exceptions.DapiError as e:
            logger.error(utils.exc_as_decoded_string(e))
            raise exceptions.ExecutionException(utils.exc_as_decoded_string(e))
Esempio n. 9
0
def _is_supported_here(dap_api_data):
    supported = dap_api_data.get('supported_platforms', [])
    if not supported:
        # assume all platforms are supported
        return True
    return utils.get_distro_name() in supported
Esempio n. 10
0
def _is_supported_here(dap_api_data):
    supported = dap_api_data.get('supported_platforms', [])
    if not supported:
        # assume all platforms are supported
        return True
    return utils.get_distro_name() in supported