Andrew:
  I add the case to !include StdLib/StdLib.inc in Nt32Pkg.dsc, and I configure 
PACKAGES_PATH. It can build pass. There is no error. Here is my tree layout. 
Could you share your tree layout that expose this issue?

Root
-->edk2-BaseTools-win32
-->edk2
-->Conf
-->Build

set WORKSPACE=ROOT
set PACKAGES_PATH=Root\edk2
set edk-tools-bin=Root\edk2-BaseTools-win32

edksetup.bat --nt32
build -p Nt32Pkg\Nt32Pkg.dsc -a IA32 -t VS2015x86

Thanks
Liming
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Andrew Fish
> Sent: Saturday, May 14, 2016 6:42 AM
> To: edk2-devel <edk2-devel@lists.01.org>
> Subject: [edk2] [BaseTools] Does PACKAGES_PATH support !include ?
> 
> I was looking into using PACKAGES_PATH in our Tree and it seems to fail on
> a !include statement in DSC files that depend on PACKAGES_PATH.
> 
> I'm not sure how to fix it as the error is coming from PathClass::Validate in
> code that is using that as a probe to try the workspace.
> 
> BaseTools/Source/Python/Workspace/MetaFileParser.py
>             IncludedFile = NormPath(ReplaceMacro(self._ValueList[1],
> __IncludeMacros, RaiseError=True))
>             #
>             # First search the include file under the same directory as DSC 
> file
>             #
>             IncludedFile1 = PathClass(IncludedFile, self.MetaFile.Dir)
>             ErrorCode, ErrorInfo1 = IncludedFile1.Validate()
>             if ErrorCode != 0:
>                 #
>                 # Also search file under the WORKSPACE directory
>                 #
>                 IncludedFile1 = PathClass(IncludedFile, GlobalData.gWorkspace)
>                 ErrorCode, ErrorInfo2 = IncludedFile1.Validate()
>                 if ErrorCode != 0:
>                     EdkLogger.error('parser', ErrorCode, 
> File=self._FileWithError,
>                                     Line=self._LineIndex + 1, 
> ExtraData=ErrorInfo1 + "\n" +
> ErrorInfo2)
> 
> Should invoking PathClass() abstract the PACKAGES_PATH? I see it calling
> mws.getWs()?
> 
> It looks like the PathClass() is invoked like (FYI /Volumes/Case/edk2-
> git/edk2/StdLib/StdLib.inc):
> PathClass self.Root = /Volumes/Case/edk2-git/Vendor/X/XPkg self.File =
> StdLib/StdLib.inc
> 
> getWs() Ws=/Volumes/Case/Janus/Vendor/X/XPkg Path=StdLib/StdLib.inc
> getWs() /Volumes/Case/edk2-git/Vendor/X/XPkg
> 
> For a test case you can shift to an edk2/ and then try to include StdLib.inc.
> !include StdLib/StdLib.inc
> 
> Thanks,
> 
> Andrew Fish
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to