Andrew:
  If the source module INF is listed in FDF file, it is also required to be 
placed into DSC file. The module in DSC will be built into build output 
directory. The module in FDF will be integrated into FFS, FV. If there is no 
matched build output, GenFds can’t integrate it.

Thanks
Liming
From: [email protected] [mailto:[email protected]]
Sent: Tuesday, May 24, 2016 11:52 AM
To: Gao, Liming <[email protected]>
Cc: edk2-devel <[email protected]>
Subject: Re: [edk2] [BaseTools] PACKAGES_PATH issue?

Liming,

I finally figured out what was causing the issue. It looks like it is a DEFINE 
combined with PACKAGES_PATH seems to cause the issue in the FDF file.

The DSC file is still set to OvmfPkg/AcpiTables/AcpiTables.inf, I'm not sure if 
that is also required. It seems like if the DEFINE is relative to WORKSPACE 
everything works, if it has to be processed with PACKAGES_PATH that seems to 
bring out the issue.

~/work/src/edk2(master)>OvmfPkg/build.sh
...
build.py...
: error 7000: Failed to execute command
GenFds -f /Users/andrewfish/work/src/edk2/OvmfPkg/OvmfPkgX64.fdf 
--conf=/Users/andrewfish/work/src/edk2/Conf -o 
/Users/andrewfish/work/src/edk2/Build/OvmfX64/DEBUG_XCODE5 -t XCODE5 -b DEBUG 
-p /Users/andrewfish/work/src/edk2/OvmfPkg/OvmfPkgX64.dsc -a X64 -D 
"EFI_SOURCE=/Users/andrewfish/work/src/edk2/EdkCompatibilityPkg" -D 
"EDK_SOURCE=/Users/andrewfish/work/src/edk2/EdkCompatibilityPkg" -D 
"TOOL_CHAIN_TAG=XCODE5" -D "TOOLCHAIN=XCODE5" -D "TARGET=DEBUG" -D 
"WORKSPACE=/Users/andrewfish/work/src/edk2" -D 
"EDK_TOOLS_PATH=/Users/andrewfish/work/src/edk2/BaseTools" -D "ARCH=X64" -D 
"ECP_SOURCE=/Users/andrewfish/work/src/edk2/EdkCompatibilityPkg" 
[/Users/andrewfish/work/src/edk2]


~/work/src/edk2(master)>export PACKAGES_PATH="$WORKSPACE/OvmfPkg"
~/work/src/edk2(master)>git diff OvmfPkg/
diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
index 84a40a3..7094648 100644
--- a/OvmfPkg/OvmfPkgX64.fdf
+++ b/OvmfPkg/OvmfPkgX64.fdf
@@ -17,7 +17,7 @@

[Defines]
!include OvmfPkg.fdf.inc
-
+DEFINE ACPI = AcpiTables
#
# Build the variable store and the firmware code as one unified flash device
# image.
@@ -272,7 +272,7 @@ INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf

INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
-INF RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf
+INF RuleOverride=ACPITABLE $(ACPI)/AcpiTables.inf
INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf

Thanks,

Andrew Fish


> On May 23, 2016, at 8:34 AM, Andrew Fish wrote:
>
>
>> On May 23, 2016, at 5:52 AM, Gao, Liming wrote:
>>
>> Andrew:
>> The buid output path is always in $(WORKSPACE)\Build directory.
>
> You mean the path in $(WORKSPACE)\Build does not match the WORKSPACE relative 
> path of the file? That seems to imply that code from different packages could 
> get mixed together in the $(WORKSPACE)\Build output. That seems very very 
> confusing to the user.
>
>> It is not related to $(PACKAGES_PATH). PACKAGES_PATH is designed to search 
>> source files, doesn’t impact build output directory.
>>
>
> That is not what I was seeing? I'm seeing $(WORKSPACE) relative paths in 
> $(WORKSPACE)\Build and then I'm see logic that is not using the full path to 
> search for files?
>
> I have output that looks like:
> Build/X/DEBUG_XCODE5/X64/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/OUTPUT/
> But I saw the Python searching a location like this for files:
> Build/X/DEBUG_XCODE5/X64/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/OUTPUT/
>
> Thanks,
>
> Andrew Fish
>
>> I try Ovmf platform. Its AcpiTables can be found and be built into FFS.
>>
>> Thanks
>> Liming <>
>> <>From: [email protected]<mailto:[email protected]> [mailto:[email protected] 
>> <mailto:[email protected]%20> ]
>> Sent: Saturday, May 21, 2016 8:21 AM
>> To: Gao, Liming >
>> Cc: edk2-devel >
>> Subject: Re: [edk2] [BaseTools] PACKAGES_PATH issue?
>>
>> Liming,
>>
>> I found one more issues. My ACPI tables are breaking the build. It looks 
>> like the failure is no input files. What I've figured out in GetFileList() 
>> is FfsInf.EfiOutputPath is constructed incorrectly. The path does not 
>> included the prefix from the PACKAGES_PATH and thus the directory does not 
>> exist and no files are found. It looks like the issue is 
>> __GetEFIOutPutPath__() as it is using self.InfFileName and that has not been 
>> adjusted for PACKAGES_PATH?
>>
>> Thanks,
>>
>> Andrew Fish
>>
>>> On May 20, 2016, at 1:34 AM, Gao, Liming wrote:
>>>
>>> Andrew:
>>> Thanks for your point out. It is bug. Your fix is correct. I will send the 
>>> patch for it.
>>>
>>> Thanks
>>> Liming
>>>> -----Original Message-----
>>>> From: [email protected]<mailto:[email protected]> [mailto:[email protected] 
>>>> <mailto:[email protected]%20> ]
>>>> Sent: Friday, May 20, 2016 1:25 PM
>>>> To: Gao, Liming
>>>> Cc: edk2-devel
>>>> Subject: Re: [edk2] [BaseTools] RuleOverride = BINARY code location?
>>>>
>>>>
>>>>> On May 19, 2016, at 8:18 PM, Gao, Liming wrote:
>>>>>
>>>>> Thanks Andrew. I will continue to investigate it.
>>>>>
>>>>
>>>>>>> F = 'FileNoExtention'
>>>>>>> os.path.splitext(F)[1]
>>>> ''
>>>>>>> '' in '.out'
>>>> True
>>>>
>>>> So I think the bug is the `in` it should be `==`
>>>>>>> '' == '.out'
>>>> False
>>>>
>>>> Thanks,
>>>>
>>>> Andrew Fish
>>>>
>>>>
>>>>>> -----Original Message-----
>>>>>> From: [email protected]<mailto:[email protected]> [mailto:[email protected] 
>>>>>> <mailto:[email protected]%20> ]
>>>>>> Sent: Friday, May 20, 2016 10:01 AM
>>>>>> To: Gao, Liming
>>>>>> Cc: edk2-devel
>>>>>> Subject: Re: [edk2] [BaseTools] RuleOverride = BINARY code location?
>>>>>>
>>>>>>
>>>>>>> On May 18, 2016, at 5:44 PM, Andrew Fish wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> On May 18, 2016, at 5:43 PM, Gao, Liming
>>>> wrote:
>>>>>>>>
>>>>>>>> Andrew:
>>>>>>>> |.bin will search the file with the postfix .bin in INF file directory 
>>>>>>>> and its
>>>>>> output directory. So, there may be more than .bin files are found. Please
>>>> see
>>>>>> the code login in GetFileList() from
>>>>>> C:\R9Tip\edk2\BaseTools\Source\Python\GenFds\Section.py.
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> Thanks for the pointer.
>>>>>>
>>>>>> This is the code that adding the OS executables in GetFileList() that is
>>>> adding
>>>>>> the OS executables without the .bin extension.
>>>>>> if os.path.exists(Makefile):
>>>>>> # Update to search files with suffix in all sub-dirs.
>>>>>> Tuple = os.walk(FfsInf.EfiOutputPath)
>>>>>> for Dirpath, Dirnames, Filenames in Tuple:
>>>>>> for F in Filenames:
>>>>>> if os.path.splitext(F)[1] in (Suffix):
>>>>>> FullName = os.path.join(Dirpath, F)
>>>>>> if os.path.getmtime(FullName) >
>>>> os.path.getmtime(Makefile):
>>>>>> FileList.append(FullName)
>>>>>>
>>>>>>
>>>>>> I think the issue is:
>>>>>> if os.path.splitext(F)[1] in (Suffix):
>>>>>>
>>>>>> If the file does not have an extension it matches.
>>>>>>
>>>>>> Sorry might be wrong have to go out to a writers reading with my wife so
>>>>>> have to stop looking right now.
>>>>>>
>>>>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Andrew Fish
>>>>> _______________________________________________
>>>>> edk2-devel mailing list
>>>>> [email protected]<mailto:[email protected]>
>>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>
>
> _______________________________________________
> edk2-devel mailing list
> [email protected]<mailto:[email protected]>
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to