From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 19C951381F3 for ; Thu, 29 Aug 2013 12:36:41 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E9A66E0B72; Thu, 29 Aug 2013 12:36:37 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 5C62EE0B72 for ; Thu, 29 Aug 2013 12:36:37 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 3CAC733ED13 for ; Thu, 29 Aug 2013 12:36:36 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 3BBEAE546D for ; Thu, 29 Aug 2013 12:36:34 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1377779415.6778dcf7eff2adc62e616c8ae998ac9e74298c6f.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/packageinfo.py X-VCS-Directories: roverlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 6778dcf7eff2adc62e616c8ae998ac9e74298c6f X-VCS-Branch: master Date: Thu, 29 Aug 2013 12:36:34 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: c537c32a-1d33-43f2-b027-9b706b9f5e92 X-Archives-Hash: dc42f2186970e31e67a32efdc20a8d3f commit: 6778dcf7eff2adc62e616c8ae998ac9e74298c6f Author: André Erdmann mailerd de> AuthorDate: Thu Aug 29 12:30:15 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Thu Aug 29 12:30:15 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=6778dcf7 packageinfo: parse SRC_URI, get status view object --- roverlay/packageinfo.py | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py index a3be89b..e991ed7 100644 --- a/roverlay/packageinfo.py +++ b/roverlay/packageinfo.py @@ -17,9 +17,12 @@ import re import os.path import logging + import roverlay.digest import roverlay.versiontuple import roverlay.db.distmap +import roverlay.util.objects +import roverlay.util.ebuildparser from roverlay import config, strutil from roverlay.rpackage import descriptionreader @@ -66,7 +69,28 @@ from roverlay.rpackage import descriptionreader LOGGER = logging.getLogger ( 'PackageInfo' ) -class PackageInfo ( object ): + +class PackageInfoStatus ( roverlay.util.objects.ObjectView ): + + def __init__ ( self, package_info ): + super ( PackageInfoStatus, self ).__init__ ( package_info ) + self.has_ebuild_file = False + # --- end of __init__ (...) --- + + def get_name ( self ): + return self.deref_safe().get ( 'name' ) + # --- end of get_name (...) --- + + def update ( self ): + self.has_ebuild_file = bool ( + self.deref_safe().get ( 'ebuild_file', do_fallback=True ) + ) + # --- end of update (...) --- + +# --- end of PackageInfoStatus --- + + +class PackageInfo ( roverlay.util.objects.Referenceable ): """PackageInfo offers easy, subscriptable access to package information, whether stored or calculated. @@ -92,6 +116,8 @@ class PackageInfo ( object ): called. """ + CACHE_REF = True + EBUILDVER_REGEX = re.compile ( '[-]{1,}' ) PKGSUFFIX_REGEX = re.compile ( config.get_or_fail ( 'R_PACKAGE.suffix_regex' ) + '$' @@ -128,6 +154,8 @@ class PackageInfo ( object ): arguments: * **initial_info -- passed to update ( **kw ) """ + super ( PackageInfo, self ).__init__() + self._info = dict() self.readonly = False self.logger = LOGGER @@ -188,6 +216,12 @@ class PackageInfo ( object ): return v # --- end of has_valid_selfdeps (...) --- + def get_status_object ( self ): + obj = PackageInfoStatus ( self ) + obj.update() + return obj + # --- end of get_status_object (...) --- + def attach_lazy_action ( self, lazy_action ): """Attaches a lazy action. Unsafe operation (no locks will be acquired etc.). @@ -684,6 +718,18 @@ class PackageInfo ( object ): self._evars [evar.get_pseudo_hash()] = evar # --- end of add_evar (...) --- + def parse_ebuild_src_uri ( self, category_name ): + return roverlay.util.ebuildparser.SrcUriParser.from_file ( + self._info ['ebuild_file'], self.create_vartable ( category_name ) + ) + # --- end of parse_ebuild_src_uri (...) --- + + def parse_ebuild_distfiles ( self, category_name ): + parser = self.parse_ebuild_src_uri ( category_name ) + for distfile in parser.iter_local_files(): + yield distfile + # --- end of parse_ebuild_distfiles (...) --- + def get_evars ( self ): """Returns all ebuild variables.""" if hasattr ( self, '_evars' ):