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:10 +0000 (UTC) [thread overview]
Message-ID: <1341310180.91ce510fc19933e558e0160e3400ff32719fbe36.bacher09@gentoo> (raw)
commit: 91ce510fc19933e558e0160e3400ff32719fbe36
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jul 3 10:09:40 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jul 3 10:09:40 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=91ce510f
Changes in portage backend
---
gpackages/apps/packages/admin.py | 4 +-
gpackages/apps/packages/models.py | 4 +-
.../libs/package_info/package_backends/pkgcore.py | 2 +-
.../libs/package_info/package_backends/portage.py | 89 ++++++++++++--------
4 files changed, 60 insertions(+), 39 deletions(-)
diff --git a/gpackages/apps/packages/admin.py b/gpackages/apps/packages/admin.py
index 4daf96e..04a269e 100644
--- a/gpackages/apps/packages/admin.py
+++ b/gpackages/apps/packages/admin.py
@@ -33,8 +33,8 @@ class ArchesAdmin(admin.ModelAdmin):
search_fields = ('name',)
class EbuildAdmin(admin.ModelAdmin):
- list_display = ('__unicode__', 'is_masked', )
- list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_masked')
+ list_display = ('__unicode__', 'is_hard_masked', )
+ list_filter = ('created_datetime','updated_datetime', 'licenses', 'is_hard_masked')
filter_horizontal = ('licenses', 'use_flags', 'homepages')
date_hierarchy = 'updated_datetime'
list_select_related = True
diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/models.py
index 21d8c0c..5ce8919 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -396,7 +396,7 @@ class EbuildModel(AbstractDateTimeModel):
ebuild_hash = models.CharField(max_length = 128)
ebuild_mtime = models.DateTimeField(blank = True, null = True)
is_deleted = models.BooleanField(default = False)
- is_masked = models.BooleanField(default = False)
+ is_hard_masked = models.BooleanField(default = False)
homepages = models.ManyToManyField(HomepageModel, blank = True)
description = models.TextField(blank = True, null = True)
@@ -421,7 +421,7 @@ class EbuildModel(AbstractDateTimeModel):
self.update_by_ebuild(ebuild)
def update_by_ebuild(self, ebuild):
- self.is_masked = ebuild.is_masked
+ self.is_hard_masked = ebuild.is_hard_masked
self.version = ebuild.version
self.revision = ebuild.revision_as_int
self.license = ebuild.license
diff --git a/gpackages/libs/package_info/package_backends/pkgcore.py b/gpackages/libs/package_info/package_backends/pkgcore.py
index 6f83df6..5b053aa 100644
--- a/gpackages/libs/package_info/package_backends/pkgcore.py
+++ b/gpackages/libs/package_info/package_backends/pkgcore.py
@@ -179,5 +179,5 @@ class Ebuild(EbuildMixin):
# Need changes !!!
@property
- def is_masked(self):
+ def is_hard_masked(self):
return False
diff --git a/gpackages/libs/package_info/package_backends/portage.py b/gpackages/libs/package_info/package_backends/portage.py
index 581680b..d821e9e 100644
--- a/gpackages/libs/package_info/package_backends/portage.py
+++ b/gpackages/libs/package_info/package_backends/portage.py
@@ -5,8 +5,7 @@ from portage.dep import Atom
from portage.exception import PortageException, FileNotFound, InvalidAtom, \
InvalidDependString, InvalidPackageName
-from gentoolkit.package import Package as PackageInfo
-from gentoolkit import errors
+from gentoolkit.cpv import CPV
from ..generic import cached_property
import os.path
#Mixins
@@ -22,7 +21,7 @@ VARDB = portage.db[portage.root]["vartree"].dbapi
ARCHES = PORTDB.settings["PORTAGE_ARCHLIST"].split()
def _ebuild_environment(name):
- return lambda self: self.package_object.environment(name)
+ return lambda self: self._env.get(name, '')
class Portage(PortageMixin):
@@ -142,74 +141,96 @@ class Package(PackageMixin):
class Ebuild(EbuildMixin):
"Represent ebuild as object"
- __slots__ = ('package', 'ebuild', 'package_object', '_cache')
+ __slots__ = ('package', 'ebuild', 'cpv_object', '_cache', '_env', '_is_valid')
+ ENV_VARS = PORTDB._aux_cache_keys
def __init__(self, package, ebuild):
self.package = package
self.ebuild = ebuild
- self.package_object = PackageInfo(ebuild)
+ self.cpv_object = CPV(ebuild)
self._cache = {}
+ self._env = None
+ # Maybe this should be lazy ?
+ self._set_env()
+
+ def _set_env(self):
+ try:
+ env_t = PORTDB.aux_get(self.cpv, self.ENV_VARS,
+ mytree = self.package.category.porttree_path)
+ except KeyError:
+ env_t = ()
+ self._is_valid = False
+ else:
+ self._is_valid = True
+ env = {}
+
+ if self._is_valid:
+ env = dict(zip(self.ENV_VARS, env_t))
+
+ self._env = env
@property
def keywords_env(self):
- return self.package_object.environment("KEYWORDS", prefer_vdb = False)
+ return self._env.get("KEYWORDS")
@property
def is_valid(self):
"Check if ebuild is valid"
- try:
- self.eapi
- except errors.GentoolkitFatalError:
- return False
- else:
- return True
+ return self._is_valid
- #Could be faster
@cached_property
- def is_masked(self):
- return self.package_object.is_masked()
+ def is_hard_masked(self):
+ if self.mask_reason:
+ return True
+ else:
+ return False
@property
def version(self):
"Ebuild version"
- return self.package_object.version
+ return self.cpv_object.version
@property
def revision(self):
"Ebuild revision"
- return self.package_object.revision
+ return self.cpv_object.revision
@property
def fullversion(self):
"Version with revision"
- return self.package_object.fullversion
+ return self.cpv_object.fullversion
- @property
+ @cached_property
def ebuild_path(self):
"Full path to ebuild"
- return self.package_object.ebuild_path()
+ return os.path.join(self.package.package_path, self.ebuild_file)
+
+ @property
+ def name(self):
+ return self.cpv_object.name
- homepage_env = cached_property(_ebuild_environment('HOMEPAGE'),
- name = 'homepage_env')
- license = cached_property(_ebuild_environment('LICENSE'),
- name = 'license')
- description = cached_property(_ebuild_environment('DESCRIPTION'),
- name = 'description')
- eapi = cached_property(_ebuild_environment('EAPI'),
- name = 'eapi')
- slot = cached_property(_ebuild_environment('SLOT'),
- name = 'slot')
+ @property
+ def ebuild_file(self):
+ return '%s-%s.ebuild' % (self.name, self.fullversion)
- iuse_env = cached_property(_ebuild_environment('IUSE'),
- name = 'iuse')
+ homepage_env = property(_ebuild_environment('HOMEPAGE'))
+ license = property(_ebuild_environment('LICENSE'))
+ description = property(_ebuild_environment('DESCRIPTION'))
+ eapi = property(_ebuild_environment('EAPI'))
+ slot = property(_ebuild_environment('SLOT'))
+
+ iuse_env = property(_ebuild_environment('IUSE'))
@property
def cpv(self):
- return self.package
+ return self.cpv_object.cpv
@cached_property
def mask_reason(self):
- reas, in_file = self.package_object.get_mask_reason()
+ reas, in_file = portage.getmaskingreason(self.cpv,
+ metadata = self._env,
+ return_location=True,
+ myrepo = self.package.category.porttree.name)
if in_file is None:
return None
elif in_file.startswith('/etc/portage/'):
next 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-03 21:08 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/libs/package_info/package_backends/ Slava Bacherikov
2012-07-05 23:27 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=1341310180.91ce510fc19933e558e0160e3400ff32719fbe36.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