Пример #1
0
	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
Пример #2
0
 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
Пример #3
0
    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)
Пример #4
0
	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)