Esempio n. 1
0
    def _collect(self):
        self._non_private_cp_to_atoms = defaultdict(list)
        self._private_cp_to_atoms = defaultdict(list)
        self._total_count = 0
        self._private_count = 0
        for location in self._locations():
            for x in portage.grabfile_package(os.path.join(
                    location, self._section),
                                              recursive=1):
                self._total_count = self._total_count + 1
                if x.startswith('-'):
                    print '  no proper support for "-cat/pkg" style entry "%s" yet, sorry.' % x.strip(
                    )
                    continue
                cp = get_cp(x)
                if self._privacy_filter and is_private_package_atom(cp):
                    self._private_count = self._private_count + 1
                    dict_ref = self._private_cp_to_atoms
                else:
                    dict_ref = self._non_private_cp_to_atoms

                merge_with = set([x])
                if cp in dict_ref:
                    dict_ref[cp] = dict_ref[cp].union(merge_with)
                else:
                    dict_ref[cp] = merge_with
Esempio n. 2
0
 def _collect(self):
     config_root = portage.settings["PORTAGE_CONFIGROOT"]
     world_file = os.path.join(config_root, WORLD_FILE)
     file = open(world_file, 'r')
     self._all_cps = [line.rstrip("\r\n") for line in file]
     self._total_count = len(self._all_cps)
     self._known_cps = set([e for e in self._all_cps if \
         not is_private_package_atom(e)])
     self._private_count = self._total_count - len(self._known_cps)
     file.close()
Esempio n. 3
0
 def _collect(self):
     config_root = portage.settings["PORTAGE_CONFIGROOT"]
     world_file = os.path.join(config_root, WORLD_FILE)
     file = open(world_file, 'r')
     self._all_cps = [line.rstrip("\r\n") for line in file]
     self._total_count = len(self._all_cps)
     self._known_cps = set([e for e in self._all_cps if \
         not is_private_package_atom(e)])
     self._private_count = self._total_count - len(self._known_cps)
     file.close()
Esempio n. 4
0
    def _collect(self):
        self._non_private_cp_to_atoms = defaultdict(list)
        self._private_cp_to_atoms = defaultdict(list)
        self._total_count = 0
        self._private_count = 0
        for location in self._locations():
            for x in portage.grabfile_package(
                    os.path.join(location, self._section), recursive = 1):
                self._total_count = self._total_count + 1
                if x.startswith('-'):
                    print '  no proper support for "-cat/pkg" style entry "%s" yet, sorry.' % x.strip()
                    continue
                cp = get_cp(x)
                if self._privacy_filter and is_private_package_atom(cp):
                    self._private_count = self._private_count + 1
                    dict_ref = self._private_cp_to_atoms
                else:
                    dict_ref = self._non_private_cp_to_atoms

                merge_with = set([x])
                if cp in dict_ref:
                    dict_ref[cp] = dict_ref[cp].union(merge_with)
                else:
                    dict_ref[cp] = merge_with
Esempio n. 5
0
    def _process(self, var_tree, cpv, debug=False):
        cat, pkg, ver, rev = catpkgsplit(cpv)
        package_name = "%s/%s" % (cat, pkg)
        if rev == 'r0':
            version_revision = ver
        else:
            version_revision = "%s-%s" % (ver, rev)

        SLOT, KEYWORDS, repo, IUSE, USE = \
            var_tree.dbapi.aux_get(cpv, ['SLOT', 'KEYWORDS', 'repository',
            'IUSE', 'USE'])

        # Perform privacy check and filtering
        installed_from = [repo, ]
        if is_private_package_atom('=' + cpv, installed_from=installed_from,
                debug=debug):
            return None
        repo = installed_from[0]

        ACCEPT_KEYWORDS = portage.settings['ACCEPT_KEYWORDS']
        ARCH = portage.settings['ARCH']
        keyword_status = self._keyword_status(ARCH, ACCEPT_KEYWORDS, KEYWORDS)

        unmasked = PackageUnmask().hits(cpv)
        # A package that is (1) installed and (2) not unmasked
        # cannot be masked so we skip the next line's checks
        masked = unmasked and (PackageMask().hits(cpv) or \
            ProfilePackageMask().hits(cpv))

        # World set test
        if SLOT != '0':
            world_set_test = '%s/%s:%s' % (cat, pkg, SLOT)
        else:
            world_set_test = '%s/%s' % (cat, pkg)
        is_in_world = world_set_test in WorldSet().get()

        # Use flags
        if self._publish_installed_packages_use_flags:
            iuse_list = tuple(x.lstrip("+-") for x in IUSE.split())
            count_all = len(set(iuse_list))

            package_use_set = set(filter(self.is_known_use_flag, USE.split()))
            package_iuse_set = set(filter(self.is_known_use_flag, iuse_list))
            enabled_flags = package_use_set & package_iuse_set
            disabled_flags = package_iuse_set - package_use_set
            package_flags = sorted(enabled_flags) + ['-' + e for e in sorted(disabled_flags)]

            count_non_private = len(package_flags)
            count_private = count_all - count_non_private

            self._private_use_flags = self._private_use_flags + count_private
            self._non_private_use_flags = self._non_private_use_flags + count_non_private
        else:
            package_flags = tuple()

        if not self._publish_repos:
            repo = 'WITHHELD'

        entry = [package_name, version_revision, SLOT, keyword_status,
            masked, unmasked, is_in_world, repo, package_flags]
        return entry