from Common.MultipleWorkspace import MultipleWorkspace as mws\r
import uuid\r
from CommonDataClass.Exceptions import BadExpression\r
+from Common.caching import cached_property\r
import subprocess\r
## Regular expression used to find out place holders in string template\r
gPlaceholderPattern = re.compile("\$\{([^$()\s]+)\}", re.MULTILINE | re.UNICODE)\r
self.ToolCode = ToolCode\r
self.ToolChainFamily = ToolChainFamily\r
\r
- self._Key = None\r
-\r
## Convert the object of this class to a string\r
#\r
# Convert member Path of the class to a string\r
def __hash__(self):\r
return hash(self.Path)\r
\r
- def _GetFileKey(self):\r
- if self._Key is None:\r
- self._Key = self.Path.upper() # + self.ToolChainFamily + self.TagName + self.ToolCode + self.Target\r
- return self._Key\r
+ @cached_property\r
+ def Key(self):\r
+ return self.Path.upper()\r
\r
- def _GetTimeStamp(self):\r
+ @property\r
+ def TimeStamp(self):\r
return os.stat(self.Path)[8]\r
\r
def Validate(self, Type='', CaseSensitive=True):\r
self.Path = os.path.join(RealRoot, RealFile)\r
return ErrorCode, ErrorInfo\r
\r
- Key = property(_GetFileKey)\r
- TimeStamp = property(_GetTimeStamp)\r
-\r
## Parse PE image to get the required PE informaion.\r
#\r
class PeImageClass():\r
for sid, name in self.DefaultStores.values():\r
if sid == minid:\r
return name\r
-class SkuClass():\r
\r
+class SkuClass():\r
DEFAULT = 0\r
SINGLE = 1\r
MULTIPLE =2\r
self.SkuIdSet = []\r
self.SkuIdNumberSet = []\r
self.SkuData = SkuIds\r
- self.__SkuInherit = {}\r
- self.__SkuIdentifier = SkuIdentifier\r
+ self._SkuInherit = {}\r
+ self._SkuIdentifier = SkuIdentifier\r
if SkuIdentifier == '' or SkuIdentifier is None:\r
self.SkuIdSet = ['DEFAULT']\r
self.SkuIdNumberSet = ['0U']\r
EdkLogger.error("build", PARAMETER_INVALID,\r
ExtraData="SKU-ID [%s] is not supported by the platform. [Valid SKU-ID: %s]"\r
% (each, " | ".join(SkuIds.keys())))\r
- if self.SkuUsageType != self.SINGLE:\r
+ if self.SkuUsageType != SkuClass.SINGLE:\r
self.AvailableSkuIds.update({'DEFAULT':0, 'COMMON':0})\r
if self.SkuIdSet:\r
GlobalData.gSkuids = (self.SkuIdSet)\r
GlobalData.gSkuids.sort()\r
\r
def GetNextSkuId(self, skuname):\r
- if not self.__SkuInherit:\r
- self.__SkuInherit = {}\r
+ if not self._SkuInherit:\r
+ self._SkuInherit = {}\r
for item in self.SkuData.values():\r
- self.__SkuInherit[item[1]]=item[2] if item[2] else "DEFAULT"\r
- return self.__SkuInherit.get(skuname, "DEFAULT")\r
+ self._SkuInherit[item[1]]=item[2] if item[2] else "DEFAULT"\r
+ return self._SkuInherit.get(skuname, "DEFAULT")\r
\r
def GetSkuChain(self, sku):\r
if sku == "DEFAULT":\r
\r
return skuorder\r
\r
- def __SkuUsageType(self):\r
-\r
- if self.__SkuIdentifier.upper() == "ALL":\r
+ @property\r
+ def SkuUsageType(self):\r
+ if self._SkuIdentifier.upper() == "ALL":\r
return SkuClass.MULTIPLE\r
\r
if len(self.SkuIdSet) == 1:\r
if self.SkuIdSet[0] == 'DEFAULT':\r
return SkuClass.DEFAULT\r
- else:\r
- return SkuClass.SINGLE\r
- elif len(self.SkuIdSet) == 2:\r
- if 'DEFAULT' in self.SkuIdSet:\r
- return SkuClass.SINGLE\r
- else:\r
- return SkuClass.MULTIPLE\r
- else:\r
- return SkuClass.MULTIPLE\r
- def DumpSkuIdArrary(self):\r
+ return SkuClass.SINGLE\r
+ if len(self.SkuIdSet) == 2 and 'DEFAULT' in self.SkuIdSet:\r
+ return SkuClass.SINGLE\r
+ return SkuClass.MULTIPLE\r
\r
- ArrayStrList = []\r
+ def DumpSkuIdArrary(self):\r
if self.SkuUsageType == SkuClass.SINGLE:\r
- ArrayStr = "{0x0}"\r
- else:\r
- for skuname in self.AvailableSkuIds:\r
- if skuname == "COMMON":\r
- continue\r
- while skuname != "DEFAULT":\r
- ArrayStrList.append(hex(int(self.AvailableSkuIds[skuname])))\r
- skuname = self.GetNextSkuId(skuname)\r
- ArrayStrList.append("0x0")\r
- ArrayStr = "{" + ",".join(ArrayStrList) + "}"\r
- return ArrayStr\r
- def __GetAvailableSkuIds(self):\r
+ return "{0x0}"\r
+ ArrayStrList = []\r
+ for skuname in self.AvailableSkuIds:\r
+ if skuname == "COMMON":\r
+ continue\r
+ while skuname != "DEFAULT":\r
+ ArrayStrList.append(hex(int(self.AvailableSkuIds[skuname])))\r
+ skuname = self.GetNextSkuId(skuname)\r
+ ArrayStrList.append("0x0")\r
+ return "{{{myList}}}".format(myList=",".join(ArrayStrList))\r
+\r
+ @property\r
+ def AvailableSkuIdSet(self):\r
return self.AvailableSkuIds\r
\r
- def __GetSystemSkuID(self):\r
- if self.__SkuUsageType() == SkuClass.SINGLE:\r
+ @property\r
+ def SystemSkuId(self):\r
+ if self.SkuUsageType == SkuClass.SINGLE:\r
if len(self.SkuIdSet) == 1:\r
return self.SkuIdSet[0]\r
else:\r
return self.SkuIdSet[0] if self.SkuIdSet[0] != 'DEFAULT' else self.SkuIdSet[1]\r
else:\r
return 'DEFAULT'\r
- def __GetAvailableSkuIdNumber(self):\r
- return self.SkuIdNumberSet\r
- SystemSkuId = property(__GetSystemSkuID)\r
- AvailableSkuIdSet = property(__GetAvailableSkuIds)\r
- SkuUsageType = property(__SkuUsageType)\r
- AvailableSkuIdNumSet = property(__GetAvailableSkuIdNumber)\r
\r
#\r
# Pack a registry format GUID\r