Andrew:
  I change the tree layout to the below. It can still pass build. 

Root
-->edk2-BaseTools-win32
-->edk2
----->Nt32Pkg
-->other
----->StdLib
-->Conf
-->Build

set PACKAGES_PATH=Root\edk2;Root\other

Thanks
Liming
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Andrew Fish
> Sent: Monday, May 16, 2016 12:00 PM
> To: Gao, Liming <liming....@intel.com>
> Cc: edk2-devel <edk2-devel@lists.01.org>
> Subject: Re: [edk2] [BaseTools] Does PACKAGES_PATH support !include ?
> 
> 
> > On May 15, 2016, at 7:24 PM, Gao, Liming <liming....@intel.com> wrote:
> >
> > 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
> >
> 
> The DSC file that was including, that failed,  was also in an alternate path.
> 
> So try moving things in parts. Move the Nt32 to one PACKAGE_PATH and the
> StdLib to another.
> 
> Thanks,
> 
> Andrew Fish
> 
> > 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
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to