for stru_pcd in S_pcd_set.values():\r
if stru_pcd.Type not in DynamicPcdType:\r
continue\r
+ for skuid in SkuIds:\r
+ if skuid in stru_pcd.SkuOverrideValues:\r
+ continue\r
+ nextskuid = self.SkuIdMgr.GetNextSkuId(skuid)\r
+ NoDefault = False\r
+ while nextskuid not in stru_pcd.SkuOverrideValues:\r
+ if nextskuid == "DEFAULT":\r
+ NoDefault = True\r
+ break\r
+ nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
+ stru_pcd.SkuOverrideValues[skuid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid]) if not NoDefault else copy.deepcopy({defaultstorename: stru_pcd.DefaultValues for defaultstorename in DefaultStores} if DefaultStores else {'STANDARD':stru_pcd.DefaultValues})\r
if stru_pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
for skuid in SkuIds:\r
nextskuid = skuid\r
NoDefault = True\r
break\r
nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
- stru_pcd.SkuOverrideValues[skuid] = {}\r
if NoDefault:\r
continue\r
PcdDefaultStoreSet = set([defaultstorename for defaultstorename in stru_pcd.SkuOverrideValues[nextskuid]])\r
for defaultstoreid in DefaultStores:\r
if defaultstoreid not in stru_pcd.SkuOverrideValues[skuid]:\r
stru_pcd.SkuOverrideValues[skuid][defaultstoreid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid][mindefaultstorename])\r
- for skuid in SkuIds:\r
- if skuid in stru_pcd.SkuOverrideValues:\r
- continue\r
- nextskuid = self.SkuIdMgr.GetNextSkuId(skuid)\r
- NoDefault = False\r
- while nextskuid not in stru_pcd.SkuOverrideValues:\r
- if nextskuid == "DEFAULT":\r
- NoDefault = True\r
- break\r
- nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
- stru_pcd.SkuOverrideValues[skuid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid]) if not NoDefault else copy.deepcopy({defaultstorename: stru_pcd.DefaultValues for defaultstorename in DefaultStores})\r
\r
Str_Pcd_Values = self.GenerateByteArrayValue(S_pcd_set)\r
if Str_Pcd_Values:\r
for (skuname,StoreName,PcdGuid,PcdName,PcdValue) in Str_Pcd_Values:\r
str_pcd_obj = S_pcd_set.get((PcdName, PcdGuid))\r
if str_pcd_obj is None:\r
+ print PcdName, PcdGuid\r
raise\r
if str_pcd_obj.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII],\r
self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
CApp = CApp + '{\n'\r
CApp = CApp + ' UINT32 Size;\n'\r
CApp = CApp + ' UINT32 FieldSize;\n'\r
- CApp = CApp + ' UINT8 *Value;\n'\r
+ CApp = CApp + ' CHAR8 *Value;\n'\r
CApp = CApp + ' UINT32 OriginalSize;\n'\r
CApp = CApp + ' VOID *OriginalPcd;\n'\r
CApp = CApp + ' %s *Pcd;\n' % (Pcd.DatumType)\r
else:\r
MakeApp = MakeApp + PcdGccMakefile\r
MakeApp = MakeApp + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s/%s.o\n' % (self.OutputPath, PcdValueInitName) + \\r
- 'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'BUILD_CFLAGS += -Wno-error\n' + 'INCLUDE +='\r
+ 'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'BUILD_CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable\n' + 'INCLUDE +='\r
\r
PlatformInc = {}\r
for Cache in self._Bdb._CACHE_.values():\r
File.write(InitByteValue)\r
File.close()\r
\r
+ Messages = ''\r
if sys.platform == "win32":\r
StdOut, StdErr = self.ExecuteCommand ('nmake clean & nmake -f %s' % (MakeFileName))\r
+ Messages = StdOut\r
else:\r
StdOut, StdErr = self.ExecuteCommand ('make clean & make -f %s' % (MakeFileName))\r
- Messages = StdOut.split('\r')\r
+ Messages = StdErr\r
+ Messages = Messages.split('\n')\r
+ for Message in Messages:\r
+ if " error" in Message:\r
+ FileInfo = Message.strip().split('(')\r
+ if len (FileInfo) > 1:\r
+ FileName = FileInfo [0]\r
+ FileLine = FileInfo [1].split (')')[0]\r
+ else:\r
+ FileInfo = Message.strip().split(':')\r
+ FileName = FileInfo [0]\r
+ FileLine = FileInfo [1]\r
+\r
+ File = open (FileName, 'r')\r
+ FileData = File.readlines()\r
+ File.close()\r
+ error_line = FileData[int (FileLine) - 1]\r
+ if r"//" in error_line:\r
+ c_line,dsc_line = error_line.split(r"//")\r
+ else:\r
+ dsc_line = error_line\r
+\r
+ message_itmes = Message.split(":")\r
+ Index = 0\r
+ for item in message_itmes:\r
+ if "PcdValueInit.c" in item:\r
+ Index = message_itmes.index(item)\r
+ message_itmes[Index] = dsc_line.strip()\r
+ break\r
+\r
+ EdkLogger.error("build", PCD_STRUCTURE_PCD_ERROR, ":".join(message_itmes[Index:]))\r
\r
PcdValueInitExe = PcdValueInitName\r
if not sys.platform == "win32":\r