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

Reply via email to