public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/package_backends/
Date: Tue,  3 Jul 2012 21:08:11 +0000 (UTC)	[thread overview]
Message-ID: <1341321881.3b7a2bbd26ad71e907244095d35f2ba173eca70b.bacher09@gentoo> (raw)

commit:     3b7a2bbd26ad71e907244095d35f2ba173eca70b
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul  3 13:17:50 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul  3 13:24:41 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=3b7a2bbd

Code refactoring

---
 gpackages/apps/packages/models.py                  |    9 +++++-
 .../libs/package_info/package_backends/pkgcore.py  |   24 +++++++++++++++----
 .../libs/package_info/package_backends/portage.py  |   11 ++++++--
 3 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 98abc79..064add4 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -494,11 +494,16 @@ class EbuildModel(AbstractDateTimeModel):
 
     @property
     def fullversion(self):
-        return '%s%s' %  (self.version, ('-'+ self.revision_str if self.revision else ''))
+        rev_p = '-'+ self.revision_str if self.revision else ''
+        return '%s%s' %  (self.version, rev_p)
 
     def get_keywords(self, arch_list):
         keywords_dict = self.get_keywords_dict(arch_list)
-        return (KeywordRepr(arch, keywords_dict[arch], self.is_hard_masked) for arch in arch_list)
+        l = []
+        for arch in arch_list:
+            l.append(
+                KeywordRepr(arch, keywords_dict[arch], self.is_hard_masked))
+        return l
 
     def get_keywords_dict(self, arch_list):
         arch_set = set(arch_list)

diff --git a/gpackages/libs/package_info/package_backends/pkgcore.py b/gpackages/libs/package_info/package_backends/pkgcore.py
index 5b053aa..9a17208 100644
--- a/gpackages/libs/package_info/package_backends/pkgcore.py
+++ b/gpackages/libs/package_info/package_backends/pkgcore.py
@@ -4,6 +4,7 @@ from pkgcore.config import load_config
 from pkgcore.ebuild.repository import UnconfiguredTree, SlavedTree
 from pkgcore.util.repo_utils import get_raw_repos, get_virtual_repos
 from pkgcore.ebuild.atom import atom
+from pkgcore.ebuild.domain import generate_unmasking_restrict
 
 #Mixins
 from ..mixins import PortageMixin, PortTreeMixin, CategoryMixin, PackageMixin, \
@@ -27,6 +28,7 @@ class Portage(PortageMixin):
             raise ValueError("Bad domain name - '%s'" % domain_name)
         finally:
             self._domain = domain
+            self._mask = generate_unmasking_restrict(domain.profile.masks)
 
     def _get_repos(self):
         repo_dict = {}
@@ -42,7 +44,7 @@ class Portage(PortageMixin):
 
     def iter_trees(self):
         for tree in self.repo_list:
-            yield PortTree(tree)
+            yield PortTree(tree, self)
 
     def get_tree_by_name(self, tree_name):
         if tree_name in self.repo_dict:
@@ -50,15 +52,19 @@ class Portage(PortageMixin):
         else:
             raise ValueError
 
+    def is_masked(self, ebuild):
+        return self._mask.match(ebuild)
+
     def __unicode__(self):
         return u'pkgcore'
         
 class PortTree(PortTreeMixin):
 
-    def __init__(self, repo_obj):
+    def __init__(self, repo_obj, porttree):
         self._repo_obj = repo_obj
         self.name = repo_obj.repo_id
         self.categories = sorted(repo_obj.categories)
+        self.porttree = porttree
 
     def iter_categories(self):
         for category in self.categories:
@@ -95,7 +101,7 @@ class Category(CategoryMixin):
     @property
     def category_path(self):
         "Full path to category"
-        return os.path.join(self._repo_obj.porttree_path, self.name)
+        return os.path.join(self.porttree_path, self.name)
 
     def _get_packages_names(self):
         return self._repo_obj._packages[self.name]
@@ -103,6 +109,14 @@ class Category(CategoryMixin):
     def _get_ebuilds_names_by_name(self, package_name):
         return self._repo_obj._versions[(self.name, package_name)]
 
+    @property
+    def porttree_name(self):
+        return self._repo_obj.name
+
+    @property
+    def porttree_path(self):
+        return self._repo_obj.porttree_path
+
 class Package(PackageMixin):
 
     __slots__ = ('name', 'category_obj')
@@ -177,7 +191,7 @@ class Ebuild(EbuildMixin):
 
     cpv = ebuild_prop('cpvstr')
 
-    # Need changes !!!
     @property
     def is_hard_masked(self):
-        return False
+        return self.package_obj.category_obj._repo_obj. \
+            porttree.is_masked(self._ebuild)

diff --git a/gpackages/libs/package_info/package_backends/portage.py b/gpackages/libs/package_info/package_backends/portage.py
index d821e9e..4721d19 100644
--- a/gpackages/libs/package_info/package_backends/portage.py
+++ b/gpackages/libs/package_info/package_backends/portage.py
@@ -107,6 +107,10 @@ class Category(CategoryMixin):
     def porttree_path(self):
         return self.porttree.porttree
 
+    @property
+    def porttree_name(self):
+        return self.porttree.name
+
 class Package(PackageMixin):
     "Represent package as object"
 
@@ -127,7 +131,7 @@ class Package(PackageMixin):
 
     @property
     def package_path(self):
-        return os.path.join(self.category.porttree.porttree_path, self.package)
+        return os.path.join(self.category.porttree_path, self.package)
 
     @property
     def cp(self):
@@ -141,7 +145,8 @@ class Package(PackageMixin):
 class Ebuild(EbuildMixin):
     "Represent ebuild as object"
 
-    __slots__ = ('package', 'ebuild', 'cpv_object', '_cache', '_env', '_is_valid')
+    __slots__ = ('package', 'ebuild', 'cpv_object', '_cache', '_env',
+                 '_is_valid')
     ENV_VARS = PORTDB._aux_cache_keys
 
     def __init__(self, package, ebuild):
@@ -230,7 +235,7 @@ class Ebuild(EbuildMixin):
         reas, in_file = portage.getmaskingreason(self.cpv,
                                                  metadata = self._env,
                                                  return_location=True,
-                                                 myrepo = self.package.category.porttree.name)
+                                 myrepo = self.package.category.porttree_name)
         if in_file is None:
             return None
         elif in_file.startswith('/etc/portage/'):



             reply	other threads:[~2012-07-03 21:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-03 21:08 Slava Bacherikov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-07-05 23:27 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/package_backends/ Slava Bacherikov
2012-07-03 21:08 Slava Bacherikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1341321881.3b7a2bbd26ad71e907244095d35f2ba173eca70b.bacher09@gentoo \
    --to=slava@bacherikov.org.ua \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox