def _checkRequiredUSE(self, pkg, ebuild): required_use = pkg._metadata["REQUIRED_USE"] if required_use: if not eapi_has_required_use(eapi): self.qatracker.add_error( 'EAPI.incompatible', "%s: REQUIRED_USE" " not supported with EAPI='%s'" % (ebuild.relative_path, eapi,)) try: portage.dep.check_required_use( required_use, (), pkg.iuse.is_valid_flag, eapi=eapi) except portage.exception.InvalidDependString as e: self.qatracker.add_error( "REQUIRED_USE.syntax", "%s: REQUIRED_USE: %s" % (ebuild.relative_path, e)) del e
def _checkRequiredUSE(self, pkg, ebuild): required_use = pkg._metadata["REQUIRED_USE"] if required_use: if not eapi_has_required_use(eapi): self.qatracker.add_error( 'EAPI.incompatible', "%s: REQUIRED_USE" " not supported with EAPI='%s'" % ( ebuild.relative_path, eapi, )) try: portage.dep.check_required_use(required_use, (), pkg.iuse.is_valid_flag, eapi=eapi) except portage.exception.InvalidDependString as e: self.qatracker.add_error( "REQUIRED_USE.syntax", "%s: REQUIRED_USE: %s" % (ebuild.relative_path, e)) del e
def _validate_deps(self): """ Validate deps. This does not trigger USE calculation since that is expensive for ebuilds and therefore we want to avoid doing in unnecessarily (like for masked packages). """ eapi = self.metadata['EAPI'] dep_eapi = eapi dep_valid_flag = self.iuse.is_valid_flag if self.installed: # Ignore EAPI.incompatible and conditionals missing # from IUSE for installed packages since these issues # aren't relevant now (re-evaluate when new EAPIs are # deployed). dep_eapi = None dep_valid_flag = None for k in self._dep_keys: v = self.metadata.get(k) if not v: continue try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag, token_class=Atom) except InvalidDependString as e: self._metadata_exception(k, e) k = 'PROVIDE' v = self.metadata.get(k) if v: try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag, token_class=Atom) except InvalidDependString as e: self._invalid_metadata("PROVIDE.syntax", _unicode_decode("%s: %s") % (k, e)) for k in self._use_conditional_misc_keys: v = self.metadata.get(k) if not v: continue try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag) except InvalidDependString as e: self._metadata_exception(k, e) k = 'REQUIRED_USE' v = self.metadata.get(k) if v: if not eapi_has_required_use(eapi): self._invalid_metadata( 'EAPI.incompatible', "REQUIRED_USE set, but EAPI='%s' doesn't allow it" % eapi) else: try: check_required_use(v, (), self.iuse.is_valid_flag) except InvalidDependString as e: # Force unicode format string for python-2.x safety, # ensuring that PortageException.__unicode__() is used # when necessary. self._invalid_metadata(k + ".syntax", _unicode_decode("%s: %s") % (k, e)) k = 'SRC_URI' v = self.metadata.get(k) if v: try: use_reduce(v, is_src_uri=True, eapi=eapi, matchall=True, is_valid_flag=self.iuse.is_valid_flag) except InvalidDependString as e: if not self.installed: self._metadata_exception(k, e)
def _validate_deps(self): """ Validate deps. This does not trigger USE calculation since that is expensive for ebuilds and therefore we want to avoid doing in unnecessarily (like for masked packages). """ eapi = self.metadata['EAPI'] dep_eapi = eapi dep_valid_flag = self.iuse.is_valid_flag if self.installed: # Ignore EAPI.incompatible and conditionals missing # from IUSE for installed packages since these issues # aren't relevant now (re-evaluate when new EAPIs are # deployed). dep_eapi = None dep_valid_flag = None for k in self._dep_keys: v = self.metadata.get(k) if not v: continue try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag, token_class=Atom) except InvalidDependString as e: self._metadata_exception(k, e) k = 'PROVIDE' v = self.metadata.get(k) if v: try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag, token_class=Atom) except InvalidDependString as e: self._invalid_metadata("PROVIDE.syntax", _unicode_decode("%s: %s") % (k, e)) for k in self._use_conditional_misc_keys: v = self.metadata.get(k) if not v: continue try: use_reduce(v, eapi=dep_eapi, matchall=True, is_valid_flag=dep_valid_flag) except InvalidDependString as e: self._metadata_exception(k, e) k = 'REQUIRED_USE' v = self.metadata.get(k) if v: if not eapi_has_required_use(eapi): self._invalid_metadata('EAPI.incompatible', "REQUIRED_USE set, but EAPI='%s' doesn't allow it" % eapi) else: try: check_required_use(v, (), self.iuse.is_valid_flag) except InvalidDependString as e: # Force unicode format string for python-2.x safety, # ensuring that PortageException.__unicode__() is used # when necessary. self._invalid_metadata(k + ".syntax", _unicode_decode("%s: %s") % (k, e)) k = 'SRC_URI' v = self.metadata.get(k) if v: try: use_reduce(v, is_src_uri=True, eapi=eapi, matchall=True, is_valid_flag=self.iuse.is_valid_flag) except InvalidDependString as e: if not self.installed: self._metadata_exception(k, e)