sbsv2/raptor/python/raptor_data.py
branchfix
changeset 192 76300483f6fd
parent 191 3bfc260b6d61
child 196 c0d1d904d868
equal deleted inserted replaced
191:3bfc260b6d61 192:76300483f6fd
   882 		for m in self.modifiers:
   882 		for m in self.modifiers:
   883 			name = name + "." + m.name
   883 			name = name + "." + m.name
   884 			vars.append(m)
   884 			vars.append(m)
   885 		return [ BuildUnit(name=name, variants=vars) ]
   885 		return [ BuildUnit(name=name, variants=vars) ]
   886 
   886 
   887 	def isChildOf(self, progenitor, cache):
   887 	def isDerivedFrom(self, progenitor, cache):
   888 		r = False
   888 		if self.name == progenitor:
       
   889 			return True
       
   890 
   889 		pname = self.extends
   891 		pname = self.extends
   890 		while pname is not None and pname is not '':
   892 		while pname is not None and pname is not '':
   891 			parent = cache.FindNamedVariant(pname)
   893 			parent = cache.FindNamedVariant(pname)
   892 			if parent is None:
   894 			if parent is None:
   893 				break
   895 				break
   894 			if parent.name == progenitor:
   896 			if parent.name == progenitor:
   895 				r = True
   897 				return True
   896 				break
       
   897 			pname = parent.extends
   898 			pname = parent.extends
   898 
   899 
   899 		return r
   900 		return False
   900 
   901 
   901 	def __str__(self):
   902 	def __str__(self):
   902 		s = "<var name='%s' extends='%s'>\n" % (self.name, self.extends)
   903 		s = "<var name='%s' extends='%s'>\n" % (self.name, self.extends)
   903 		for op in self.ops:
   904 		for op in self.ops:
   904 			s +=  str(op) + '\n'
   905 			s +=  str(op) + '\n'
   948 			raise InvalidPropertyError()
   949 			raise InvalidPropertyError()
   949 
   950 
   950 	def Valid(self):
   951 	def Valid(self):
   951 		return self.name and self.meaning
   952 		return self.name and self.meaning
   952 
   953 
   953 	def GenerateBuildUnits(self, cache):
   954 	def Resolve(self, cache):
   954 		if not self.variants:
   955 		if not self.variants:
   955 			missing_variants = []
   956 			missing_variants = []
   956 			for r in self.varRefs:
   957 			for r in self.varRefs:
   957 				try:
   958 				try:
   958 					self.variants.append( r.Resolve(cache=cache) )
   959 					self.variants.append( r.Resolve(cache=cache) )
   960 					missing_variants.append(r.ref)
   961 					missing_variants.append(r.ref)
   961 				
   962 				
   962 			if len(missing_variants) > 0:
   963 			if len(missing_variants) > 0:
   963 				raise MissingVariantException("Missing variants '%s'", " ".join(missing_variants))
   964 				raise MissingVariantException("Missing variants '%s'", " ".join(missing_variants))
   964 
   965 
       
   966 	def GenerateBuildUnits(self, cache):
       
   967 		self.Resolve(cache)
       
   968 
   965 		name = self.name
   969 		name = self.name
   966 
   970 
   967 		for v in self.modifiers:
   971 		for v in self.modifiers:
   968 			name = name + "." + v.name
   972 			name = name + "." + v.name
   969 
   973 
   970 		return [ BuildUnit(name=name, variants=self.variants + self.modifiers) ]
   974 		return [ BuildUnit(name=name, variants=self.variants + self.modifiers) ]
   971 
   975 
       
   976 	def isDerivedFrom(self, progenitor, cache):
       
   977 		self.Resolve(cache)
       
   978 		if len(self.variants) == 1:
       
   979 			return self.variants[0].isDerivedFrom(progenitor,cache)
       
   980 		else:
       
   981 			return False
   972 
   982 
   973 class AliasRef(Reference):
   983 class AliasRef(Reference):
   974 
   984 
   975 	def __init__(self, ref=None):
   985 	def __init__(self, ref=None):
   976 		Reference.__init__(self, ref)
   986 		Reference.__init__(self, ref)