On 12/07/15 18:14, Jordan Justen wrote:
> On 2015-12-07 05:52:42, Laszlo Ersek wrote:
>> On 12/02/15 09:45, Yonghong Zhu wrote:
>>> By the BUILDRULEORDER feature to process files listed in INF [Sources]
>>> sections in priority order, if a filename is listed with multiple
>>> extensions, the tools will use only the file that matches the first
>>> extension in the space separated list.
>>>
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Yonghong Zhu <[email protected]>
>>> ---
>>>  Source/Python/AutoGen/AutoGen.py | 27 +++++++++++++++++++++++++++
>>>  1 file changed, 27 insertions(+)
>>>
>>> diff --git a/Source/Python/AutoGen/AutoGen.py 
>>> b/Source/Python/AutoGen/AutoGen.py
>>> index fe56574..263224b 100644
>>> --- a/Source/Python/AutoGen/AutoGen.py
>>> +++ b/Source/Python/AutoGen/AutoGen.py
>>> @@ -2711,13 +2711,40 @@ class ModuleAutoGen(AutoGen):
>>>  
>>>                  # add the file path into search path list for file 
>>> including
>>>                  if F.Dir not in self.IncludePathList and 
>>> self.AutoGenVersion >= 0x00010005:
>>>                      self.IncludePathList.insert(0, F.Dir)
>>>                  self._SourceFileList.append(F)
>>> +
>>> +            self._MatchBuildRuleOrder(self._SourceFileList)
>>> +
>>> +            for F in self._SourceFileList:
>>>                  self._ApplyBuildRule(F, TAB_UNKNOWN_FILE)
>>>          return self._SourceFileList
>>>  
>>> +    def _MatchBuildRuleOrder(self, FileList):
>>> +        Order_Dict = {}
>>> +        self._GetModuleBuildOption()
>>> +        for SingleFile in FileList:
>>> +            if self.BuildRuleOrder and SingleFile.Ext in 
>>> self.BuildRuleOrder:
>>> +                key = SingleFile.Path.split(SingleFile.Ext)[0]
>>> +                if key in Order_Dict:
>>> +                    Order_Dict[key].append(SingleFile.Ext)
>>> +                else:
>>> +                    Order_Dict[key] = [SingleFile.Ext]
>>> +
>>> +        RemoveList = []
>>> +        for F in Order_Dict:
>>> +            if len(Order_Dict[F]) > 1:
>>> +                Order_Dict[F].sort(key=lambda i: 
>>> self.BuildRuleOrder.index(i))
>>> +                for Ext in Order_Dict[F][1:]:
>>> +                    RemoveList.append(F + Ext)
>>> +                   
>>> +        for item in RemoveList:
>>> +            FileList.remove(item)
>>> +
>>> +        return FileList
>>> +
>>>      ## Return the list of unicode files
>>>      def _GetUnicodeFileList(self):
>>>          if self._UnicodeFileList == None:
>>>              if TAB_UNICODE_FILE in self.FileTypes:
>>>                  self._UnicodeFileList = self.FileTypes[TAB_UNICODE_FILE]
>>>
>>
>> This patch breaks the OVMF build.
>>
>> $ build \
>>     -a X64 \
>>     -p OvmfPkg/OvmfPkgX64.dsc \
>>     -t GCC48 \
>>     -n 8 \
>>     --report-file=.../build.ovmf.report \
>>     --log=.../build.ovmf.log \
>>     -b DEBUG \
>>     -D HTTP_BOOT_ENABLE
>>
>> The result I get is:
>>
>> Processing meta-data ....
>>
>> build.py...
>>  : error F000: Nothing to build
>>
>> [/home/lacos/src/upstream/edk2-git-svn/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf]
> 
> Yonghong, Liming, can we revert this change until this can be fixed?
> Laszlo investigated, and he thinks BUILDRULEORDER is causing a .asm
> file to be used for the source on GCC builds.

More precisely, I'm fully certain that this patch causes the regression,
because I bisected it. :)

The matter of opinion part is how the problem should be fixed. (And I
tend to agree with your analysis there:)

> But, .asm should always
> be ignored for GCC builds.

Thanks
Laszlo

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to