On 04/13/16 11:47, Yonghong Zhu wrote:
> when enable Multiple workspace and there have other option(eg: -I) before
> $(WORKSPACE), handleWsMacro cannot return correct which cause the
> ArmVirtPkg build failure.
> example:
> [BuildOptions]
>   *_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmVirtPkg/Include
> 
> Cc: Liming Gao <liming....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong....@intel.com>
> ---
>  BaseTools/Source/Python/Common/MultipleWorkspace.py | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/BaseTools/Source/Python/Common/MultipleWorkspace.py 
> b/BaseTools/Source/Python/Common/MultipleWorkspace.py
> index feb1f8d..4e4c37a 100644
> --- a/BaseTools/Source/Python/Common/MultipleWorkspace.py
> +++ b/BaseTools/Source/Python/Common/MultipleWorkspace.py
> @@ -2,11 +2,11 @@
>  # manage multiple workspace file.
>  #
>  # This file is required to make Python interpreter treat the directory
>  # as containing package.
>  #
> -# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
>  # This program and the accompanying materials
>  # are licensed and made available under the terms and conditions of the BSD 
> License
>  # which accompanies this distribution.  The full text of the license may be 
> found at
>  # http://opensource.org/licenses/bsd-license.php
>  #
> @@ -126,16 +126,21 @@ class MultipleWorkspace(object):
>      #   @retval PathStr   Path string include the $(WORKSPACE)
>      #
>      @classmethod
>      def handleWsMacro(cls, PathStr):
>          if TAB_WORKSPACE in PathStr:
> -            Path = PathStr.replace(TAB_WORKSPACE, cls.WORKSPACE).strip()
> -            if not os.path.exists(Path):
> -                for Pkg in cls.PACKAGES_PATH:
> -                    Path = PathStr.replace(TAB_WORKSPACE, Pkg).strip()
> -                    if os.path.exists(Path):
> -                        return Path
> +            PathList = PathStr.split()
> +            if PathList:
> +                for i, str in enumerate(PathList):
> +                    if str.find(TAB_WORKSPACE) != -1:
> +                        MacroStartPos = str.find(TAB_WORKSPACE)
> +                        MacroEndPos = str.find(')', MacroStartPos)
> +                        Substr = str[MacroEndPos+1:]
> +                        if Substr.startswith('/') or Substr.startswith('\\'):
> +                            Substr = Substr[1:]
> +                        PathList[i] = str[0:MacroStartPos] + 
> os.path.normpath(cls.join(cls.WORKSPACE, Substr))
> +            PathStr = ' '.join(PathList)
>          return PathStr
>      
>      ## getPkgPath()
>      #
>      #   get all package pathes.
> 

Gerd's CI reported a build failure for OVMF. I've identified this patch (commit 
2b1c08acfceb) as the culprit. When I revert this patch, the build succeeds 
again.

The commands leading up to the error, and the error, are:

"gcc" -E -x assembler-with-cpp -include 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/DEBUG/AutoGen.h 
-IOvmfPkg/ResetVector 
-IBuild/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/DEBUG 
-IMdePkg -IMdePkg/Include -IMdePkg/Include/Ia32 -IUefiCpuPkg 
-IUefiCpuPkg/Include OvmfPkg/ResetVector/ResetVector.nasmb > 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.i

Trim --source-code --convert-hex -o 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii
 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.i

"nasm" -IOvmfPkg/ResetVector/ -l 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.lst
 -f bin -IUefiCpuPkg/ResetVector/Vtf0 -o 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.bin
 
Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii

Build/OvmfIa32/DEBUG_GCC49/IA32/OvmfPkg/ResetVector/ResetVector/OUTPUT/ResetVector.iii:40:
 fatal: unable to open include file `CommonMacros.inc'

Thanks
Laszlo
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to