def _update_metadata(self, pkg, ebp=None): parsed_eapi = pkg.eapi if not parsed_eapi.is_supported: return {'EAPI': str(parsed_eapi)} with processor.reuse_or_request(ebp) as my_proc: try: mydata = my_proc.get_keys(pkg, self._ecache) except processor.ProcessorError as e: raise metadata_errors.MetadataException( pkg, 'data', 'failed sourcing ebuild', e) inherited = mydata.pop("INHERITED", None) # Rewrite defined_phases as needed, since we now know the EAPI. eapi = get_eapi(mydata["EAPI"]) if parsed_eapi != eapi: raise metadata_errors.MetadataException( pkg, 'eapi', f"parsed EAPI '{parsed_eapi}' doesn't match sourced EAPI '{eapi}'" ) wipes = set(mydata) wipes.difference_update(eapi.metadata_keys) if mydata["DEFINED_PHASES"] != '-': phases = mydata["DEFINED_PHASES"].split() d = eapi.phases_rev phases = set(d.get(x) for x in phases) # Discard is required should we have gotten # a phase that isn't actually in this EAPI. phases.discard(None) mydata["DEFINED_PHASES"] = ' '.join(sorted(phases)) if inherited: mydata["_eclasses_"] = self._ecache.get_eclass_data( inherited.split()) mydata['_chf_'] = chksum.LazilyHashedPath(pkg.path) for x in wipes: del mydata[x] if self._cache is not None: for cache in self._cache: if not cache.readonly: try: cache[pkg.cpvstr] = mydata except cache_errors.CacheError as e: logger.warning("caught cache error: %s", e) del e continue break return mydata
def _update_metadata(self, pkg, ebp=None): parsed_eapi = pkg.eapi if not parsed_eapi.is_supported: return {'EAPI': str(parsed_eapi)} with processor.reuse_or_request(ebp) as my_proc: try: mydata = my_proc.get_keys(pkg, self._ecache) except processor.ProcessorError as e: raise metadata_errors.MetadataException( pkg, 'data', 'failed sourcing ebuild', e) inherited = mydata.pop("INHERITED", None) # Rewrite defined_phases as needed, since we now know the EAPI. eapi = get_eapi(mydata["EAPI"]) if parsed_eapi != eapi: raise metadata_errors.MetadataException( pkg, 'eapi', f"parsed EAPI '{parsed_eapi}' doesn't match sourced EAPI '{eapi}'") wipes = set(mydata) wipes.difference_update(eapi.metadata_keys) if mydata["DEFINED_PHASES"] != '-': phases = mydata["DEFINED_PHASES"].split() d = eapi.phases_rev phases = set(d.get(x) for x in phases) # Discard is required should we have gotten # a phase that isn't actually in this EAPI. phases.discard(None) mydata["DEFINED_PHASES"] = ' '.join(sorted(phases)) if inherited: mydata["_eclasses_"] = self._ecache.get_eclass_data( inherited.split()) mydata['_chf_'] = chksum.LazilyHashedPath(pkg.path) for x in wipes: del mydata[x] if self._cache is not None: for cache in self._cache: if not cache.readonly: try: cache[pkg.cpvstr] = mydata except cache_errors.CacheError as e: logger.warning("caught cache error: %s", e) del e continue break return mydata
def _update_metadata(self, pkg, ebp=None): parsed_eapi = pkg.eapi_obj if not parsed_eapi.is_supported: return {"EAPI": parsed_eapi.magic} with processor.reuse_or_request(ebp) as my_proc: mydata = my_proc.get_keys(pkg, self._ecache) inherited = mydata.pop("INHERITED", None) # rewrite defined_phases as needed, since we now know the eapi. eapi = get_eapi(mydata["EAPI"]) if parsed_eapi != eapi: raise metadata_errors.MetadataException(pkg, "eapi", "parsed eapi doesn't match sourced eapi") wipes = set(mydata) wipes.difference_update(eapi.metadata_keys) if mydata["DEFINED_PHASES"] != "-": phases = mydata["DEFINED_PHASES"].split() d = eapi.phases_rev phases = set(d.get(x) for x in phases) # discard is required should we have gotten # a phase that isn't actually in this eapi phases.discard(None) mydata["DEFINED_PHASES"] = " ".join(sorted(phases)) if inherited: mydata["_eclasses_"] = self._ecache.get_eclass_data(inherited.split()) else: mydata["_eclasses_"] = {} mydata["_chf_"] = chksum.LazilyHashedPath(pkg.path) for x in wipes: del mydata[x] if self._cache is not None: for cache in self._cache: if not cache.readonly: try: cache[pkg.cpvstr] = mydata except cache_errors.CacheError as ce: logger.warning("caught cache error: %s" % ce) del ce continue break return mydata
def _get_ebuild_environment(self, ebp=None): with processor.reuse_or_request(ebp) as ebp: return ebp.get_ebuild_environment(self, self.repo.eclass_cache)