* [gentoo-commits] proj/R_overlay:master commit in: roverlay/ebuild/, roverlay/
@ 2012-08-02 15:14 André Erdmann
0 siblings, 0 replies; only message in thread
From: André Erdmann @ 2012-08-02 15:14 UTC (permalink / raw
To: gentoo-commits
commit: 46c518b8349bccf3a3532d2091776f59f8ae651a
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Aug 2 15:03:26 2012 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Aug 2 15:03:26 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=46c518b8
read description data in PackageInfo
---
roverlay/ebuild/creation.py | 61 +++++++++++++-----------------------------
roverlay/packageinfo.py | 47 ++++++++++++++++++++++++---------
2 files changed, 53 insertions(+), 55 deletions(-)
diff --git a/roverlay/ebuild/creation.py b/roverlay/ebuild/creation.py
index 778f93a..89e0323 100644
--- a/roverlay/ebuild/creation.py
+++ b/roverlay/ebuild/creation.py
@@ -4,8 +4,7 @@
import logging
-from roverlay.ebuild import depres, ebuilder, evars
-from roverlay.rpackage.descriptionreader import DescriptionReader
+from roverlay.ebuild import depres, ebuilder, evars
LOGGER = logging.getLogger ( 'EbuildCreation' )
@@ -55,9 +54,7 @@ class EbuildCreation ( object ):
raise Exception ( "Cannot run again." )
try:
- self._lazyimport_desc_data()
-
- self.package_info.set_readonly()
+ self.package_info.update_now ( make_desc_data=True )
if self._make_ebuild():
self.logger.debug ( "Ebuild is ready." )
@@ -72,26 +69,6 @@ class EbuildCreation ( object ):
raise
# --- end of run (...) ---
- def _lazyimport_desc_data ( self ):
- """Reads R package description data."""
- # TODO/FIXME: read this somewhere else?
- if self.package_info.get ( 'desc_data',
- fallback_value=None, do_fallback=True ) is None:
-
- logging.debug ( 'Reading description data now.' )
- reader = DescriptionReader (
- self.package_info,
- logger=self.logger,
- read_now=True
- )
-
- self.package_info.update_now (
- desc_data=reader.get_desc ( run_if_unset=False )
- )
- del reader
-
- # --- end of _lazyimport_desc_data (...) ---
-
def _get_ebuild_description ( self ):
"""Creates a DESCRIPTION variable."""
desc = self.package_info ['desc_data']
@@ -138,30 +115,30 @@ class EbuildCreation ( object ):
depres_channel_spawner=self.depres_channel_spawner,
err_queue=self.err_queue
)
- if not _dep_resolution.success():
- # log here? (FIXME)
- return False
+ if _dep_resolution.success():
+ dep_result = _dep_resolution.get_result()
- dep_result = _dep_resolution.get_result()
+ ebuild = ebuilder.Ebuilder()
- ebuild = ebuilder.Ebuilder()
+ # add *DEPEND, IUSE to the ebuild
+ ebuild.use ( *dep_result [1] )
- # add *DEPEND, IUSE to the ebuild
- ebuild.use ( *dep_result [1] )
+ # DESCRIPTION
+ ebuild.use ( self._get_ebuild_description() )
- # DESCRIPTION
- ebuild.use ( self._get_ebuild_description() )
+ # SRC_URI
+ ebuild.use ( evars.SRC_URI ( self.package_info ['SRC_URI'] ) )
- # SRC_URI
- ebuild.use ( evars.SRC_URI ( self.package_info ['SRC_URI'] ) )
+ ebuild_text = ebuild.to_str()
- ebuild_text = ebuild.to_str()
+ self.package_info.update_now (
+ ebuild=ebuild_text,
+ depres_result=dep_result
+ )
- self.package_info.update_now (
- ebuild=ebuild_text,
- depres_result=dep_result
- )
+ return True
- return True
+ else:
+ return False
# --- end of _make_ebuild (...) ---
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
index 4514d4f..82233bf 100644
--- a/roverlay/packageinfo.py
+++ b/roverlay/packageinfo.py
@@ -7,7 +7,8 @@ import os.path
import logging
import threading
-from roverlay import config, util
+from roverlay import config, strutil
+from roverlay.rpackage import descriptionreader
#
# PackageInfo keys known to be used (read) in the roverlay modules:
@@ -21,13 +22,12 @@ from roverlay import config, util
# * package_file in rpackage/descriptionreader
# * package_name in rpackage/descriptionreader
# * package_url in ebuild/creation
+# * physical_only in overlay/pacakge
# * version in ebuild/package (as tuple)
#
LOGGER = logging.getLogger ( 'PackageInfo' )
-
-
class PackageInfo ( object ):
"""PackageInfo offers easy, subscriptable (['sth']) access to package
information, whether stored or calculated.
@@ -49,6 +49,7 @@ class PackageInfo ( object ):
self.readonly = False
self._update_lock = threading.RLock()
self.overlay_package_ref = None
+ self.logger = LOGGER
self.update ( **initial_info )
# --- end of __init__ (...) ---
@@ -216,6 +217,18 @@ class PackageInfo ( object ):
raise KeyError ( key )
# --- end of get (...) ---
+ def get_desc_data ( self ):
+ if 'desc_data' in self._info:
+ return self._info ['desc_data']
+
+ self._writelock_acquire()
+ if 'desc_data' not in self._info:
+ self._info ['desc_data'] = descriptionreader.read ( self )
+
+ self._update_lock.release()
+ return self._info ['desc_data']
+ # --- end of get_desc_data (...) ---
+
def __getitem__ ( self, key ):
return self.get ( key, do_fallback=False )
# --- end of __getitem__ (...) ---
@@ -262,7 +275,6 @@ class PackageInfo ( object ):
simple_keys = frozenset ((
'origin',
- 'desc_data',
'ebuild',
'ebuild_file',
'physical_only',
@@ -305,8 +317,14 @@ class PackageInfo ( object ):
elif key == 'remove_auto':
self._remove_auto ( value )
+ elif key == 'make_desc_data':
+ if value:
+ self.get_desc_data()
+
else:
- LOGGER.error ( "in update(): unknown info key {}!".format ( key ) )
+ self.logger.error (
+ "in update(): unknown info key {}!".format ( key )
+ )
self._update_lock.release()
# --- end of update (**kw) ---
@@ -322,14 +340,16 @@ class PackageInfo ( object ):
# remove .tar.gz .tar.bz2 etc.
filename = PackageInfo.PKGSUFFIX_REGEX.sub ( '', filename_with_ext )
+ self.logger = logging.getLogger ( filename )
+
package_name, sepa, package_version = filename.partition (
config.get ( 'R_PACKAGE.name_ver_separator', '_' )
)
if not sepa:
# file name unexpected, tarball extraction will (probably) fail
- LOGGER.error ( "unexpected file name {!r}.".format ( filename ) )
- raise Exception ( "cannot use file {!r}.".format ( filename ) )
+ self.logger.error ( "unexpected file name {!r}.".format ( filename ) )
+ raise Exception ( "cannot use file {!r}.".format ( filename ) )
return
version_str = PackageInfo.EBUILDVER_REGEX.sub ( '.', package_version )
@@ -338,9 +358,8 @@ class PackageInfo ( object ):
version = tuple ( int ( z ) for z in version_str.split ( '.' ) )
self ['version'] = version
except ValueError as ve:
- # version string is malformed
- # TODO: discard or continue with bad version?
- logging.error (
+ # version string is malformed, cannot use it
+ self.logger.error (
"Cannot parse version string {!r} for {!r}".format (
_filename, version_str
)
@@ -351,7 +370,7 @@ class PackageInfo ( object ):
# using pkg_version for the ebuild version
# removing illegal chars from the package_name
- ebuild_name = util.fix_ebuild_name ( package_name )
+ ebuild_name = strutil.fix_ebuild_name ( package_name )
if ebuild_name != package_name:
self ['name'] = ebuild_name
@@ -388,7 +407,9 @@ class PackageInfo ( object ):
# needs python >= 2.7
info_new = { k : self.get ( k ) for k in to_keep }
- # also add an ebuild stub to the new dict (workaround, FIXME)
+ # also add an ebuild stub to the new dict to indicate
+ # that this PackageInfo instance has been created from been
+ # created from an R package in this script run
info_new ['ebuild'] = True
if 'physical_only' in self._info:
@@ -407,7 +428,7 @@ class PackageInfo ( object ):
arguments:
* _filepath --
"""
- LOGGER.warn (
+ self.logger.warn (
'Please note that _use_filepath is only meant for testing.'
)
filepath = os.path.abspath ( _filepath )
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-08-02 15:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-02 15:14 [gentoo-commits] proj/R_overlay:master commit in: roverlay/ebuild/, roverlay/ André Erdmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox