summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/EbuildMetadataPhase.py13
-rw-r--r--pym/_emerge/MetadataRegen.py14
-rw-r--r--pym/_emerge/actions.py10
3 files changed, 19 insertions, 18 deletions
diff --git a/pym/_emerge/EbuildMetadataPhase.py b/pym/_emerge/EbuildMetadataPhase.py
index e53298bae..aeff2f0e8 100644
--- a/pym/_emerge/EbuildMetadataPhase.py
+++ b/pym/_emerge/EbuildMetadataPhase.py
@@ -20,8 +20,8 @@ class EbuildMetadataPhase(SubProcess):
used to extract metadata from the ebuild.
"""
- __slots__ = ("cpv", "ebuild_path", "fd_pipes", "metadata_callback",
- "ebuild_mtime", "metadata", "portdb", "repo_path", "settings") + \
+ __slots__ = ("cpv", "ebuild_hash", "fd_pipes", "metadata_callback",
+ "metadata", "portdb", "repo_path", "settings") + \
("_raw_metadata",)
_file_names = ("ebuild",)
@@ -31,7 +31,7 @@ class EbuildMetadataPhase(SubProcess):
def _start(self):
settings = self.settings
settings.setcpv(self.cpv)
- ebuild_path = self.ebuild_path
+ ebuild_path = self.ebuild_hash.location
eapi = None
if eapi is None and \
@@ -44,8 +44,8 @@ class EbuildMetadataPhase(SubProcess):
if eapi is not None:
if not portage.eapi_is_supported(eapi):
- self.metadata_callback(self.cpv, self.ebuild_path,
- self.repo_path, {'EAPI' : eapi}, self.ebuild_mtime)
+ self.metadata_callback(self.cpv, ebuild_path,
+ self.repo_path, {'EAPI' : eapi}, self.ebuild_hash.mtime)
self._set_returncode((self.pid, os.EX_OK << 8))
self.wait()
return
@@ -128,6 +128,5 @@ class EbuildMetadataPhase(SubProcess):
else:
metadata = zip(portage.auxdbkeys, metadata_lines)
self.metadata = self.metadata_callback(self.cpv,
- self.ebuild_path, self.repo_path, metadata,
- self.ebuild_mtime)
+ self.repo_path, metadata, self.ebuild_hash)
diff --git a/pym/_emerge/MetadataRegen.py b/pym/_emerge/MetadataRegen.py
index 810317533..b3380562b 100644
--- a/pym/_emerge/MetadataRegen.py
+++ b/pym/_emerge/MetadataRegen.py
@@ -3,6 +3,7 @@
import portage
from portage import os
+from portage.eclass_cache import hashed_path
from _emerge.EbuildMetadataPhase import EbuildMetadataPhase
from _emerge.PollScheduler import PollScheduler
@@ -68,16 +69,15 @@ class MetadataRegen(PollScheduler):
ebuild_path, repo_path = portdb.findname2(cpv)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % cpv)
- metadata, st, emtime = portdb._pull_valid_cache(
+ metadata, ebuild_hash = portdb._pull_valid_cache(
cpv, ebuild_path, repo_path)
if metadata is not None:
if consumer is not None:
- consumer(cpv, ebuild_path,
- repo_path, metadata)
+ consumer(cpv, repo_path, metadata, ebuild_hash)
continue
- yield EbuildMetadataPhase(cpv=cpv, ebuild_path=ebuild_path,
- ebuild_mtime=emtime,
+ yield EbuildMetadataPhase(cpv=cpv,
+ ebuild_hash=ebuild_hash,
metadata_callback=portdb._metadata_callback,
portdb=portdb, repo_path=repo_path,
settings=portdb.doebuild_settings)
@@ -176,9 +176,9 @@ class MetadataRegen(PollScheduler):
# On failure, still notify the consumer (in this case the metadata
# argument is None).
self._consumer(metadata_process.cpv,
- metadata_process.ebuild_path,
metadata_process.repo_path,
- metadata_process.metadata)
+ metadata_process.metadata,
+ metadata_process.ebuild_hash)
self._schedule()
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index 844cf28ed..c449b5874 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -1737,8 +1737,9 @@ def action_metadata(settings, portdb, myopts, porttrees=None):
if dest is not None:
if not (dest['_mtime_'] == src['_mtime_'] and \
- tree_data.eclass_db.is_eclass_data_valid(
- dest['_eclasses_']) and \
+ tree_data.eclass_db.validate_and_rewrite_cache(
+ dest['_eclasses_'], tree_data.dest_db.validation_chf,
+ tree_data.dest_db.store_eclass_paths) and \
set(dest['_eclasses_']) == set(src['_eclasses_'])):
dest = None
else:
@@ -1763,8 +1764,9 @@ def action_metadata(settings, portdb, myopts, porttrees=None):
continue
if eclasses is not None:
- if not tree_data.eclass_db.is_eclass_data_valid(
- src['_eclasses_']):
+ if not tree_data.eclass_db.validate_and_rewrite_cache(
+ src['_eclasses_'], tree_data.src_db.validation_chf,
+ tree_data.src_db.store_eclass_paths):
continue
inherited = eclasses
else: