[edk2] [RFC] Edk2 BaseTools Python3 Migration Update

Laszlo Ersek lersek at redhat.com
Sun Dec 30 16:15:50 PST 2018


On 12/29/18 07:07, Gao, Liming wrote:
> Lin:
>    Thanks for your verification.  This issue has been fixed in the
>    latest version of https://github.com/lgao4/edk2/tree/Python3. Could
>    you try again?

At commit 4614985ec223 ("BaseTools:The binary data type is incorrect",
2018-12-29):


(1) I tried to build OVMF as follows (using
python-2.7.5-69.el7_5.x86_64):

  build \
    -a IA32 \
    -p OvmfPkg/OvmfPkgIa32.dsc \
    -D SMM_REQUIRE \
    -D SECURE_BOOT_ENABLE \
    -D TLS_ENABLE \
    -D NETWORK_IP6_ENABLE \
    -t GCC48 \
    -n 4 \
    --report-file=/tmp/build.ovmf.32.report \
    --log=/tmp/build.ovmf.32.log \
    -b NOOPT \
    -D HTTP_BOOT_ENABLE \
    --cmd-len=65536 \
    --hash \
    --genfds-multi-thread

This produced messages like:

> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/FVMAIN_COMPACT.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/PEIFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/DXEFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/SECFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/FVMAIN_COMPACT.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/PEIFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/DXEFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/SECFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/PEIFV.Fv.txt(...): warning: Fail to read report file
> BuildReport.py...
> .../Build/OvmfIa32/NOOPT_GCC48/FV/DXEFV.Fv.txt(...): warning: Fail to read report file

near the end of the build.


(2) After I removed the "--report-file" switch, the warnings
disappeared.

However, neither of the expected output files

- Build/OvmfIa32/NOOPT_GCC48/FV/OVMF.fd
- Build/OvmfIa32/NOOPT_GCC48/FV/OVMF_CODE.fd

existed. To be more precise, none of "OVMF.fd" and "OVMF_CODE.fd"
existed anywhere in the "Build" directory.

Judged from the build log, it seemed that at least some *.efi modules
were compiled and linked, but FVs and FDs were not built. The following
sections of the log were missing:

> Fd File Name:OVMF_VARS (.../Build/OvmfIa32/NOOPT_GCC48/FV/OVMF_VARS.fd)
>
> Generate Region at Offset 0x0
>    Region Size = 0x40000
>    Region Name = DATA
>
> Generate Region at Offset 0x40000
>    Region Size = 0x1000
>    Region Name = None
>
> Generate Region at Offset 0x41000
>    Region Size = 0x1000
>    Region Name = DATA
>
> Generate Region at Offset 0x42000
>    Region Size = 0x42000
>    Region Name = None
>
> Fd File Name:MEMFD (.../Build/OvmfIa32/NOOPT_GCC48/FV/MEMFD.fd)
>
> Generate Region at Offset 0x0
>    Region Size = 0x6000
>    Region Name = None
>
> Generate Region at Offset 0x6000
>    Region Size = 0x1000
>    Region Name = None
>
> Generate Region at Offset 0x7000
>    Region Size = 0x1000
>    Region Name = None
> Padding region starting from offset 0x8000, with size 0x8000
>
> Generate Region at Offset 0x8000
>    Region Size = 0x8000
>    Region Name = None
>
> Generate Region at Offset 0x10000
>    Region Size = 0x10000
>    Region Name = None
>
> Generate Region at Offset 0x20000
>    Region Size = 0xE0000
>    Region Name = FV
>
> Generating PEIFV FV
>
> Generate Region at Offset 0x100000
>    Region Size = 0xB00000
>    Region Name = FV
>
> Generating DXEFV FV
>
> Fd File Name:OVMF (.../Build/OvmfIa32/NOOPT_GCC48/FV/OVMF.fd)
>
> Generate Region at Offset 0x0
>    Region Size = 0x40000
>    Region Name = DATA
>
> Generate Region at Offset 0x40000
>    Region Size = 0x1000
>    Region Name = None
>
> Generate Region at Offset 0x41000
>    Region Size = 0x1000
>    Region Name = DATA
>
> Generate Region at Offset 0x42000
>    Region Size = 0x42000
>    Region Name = None
>
> Generate Region at Offset 0x84000
>    Region Size = 0x348000
>    Region Name = FV
>
> Generating FVMAIN_COMPACT FV
>
> Generate Region at Offset 0x3CC000
>    Region Size = 0x34000
>    Region Name = FV
>
> Generating SECFV FV
>
> Fd File Name:OVMF_CODE (.../Build/OvmfIa32/NOOPT_GCC48/FV/OVMF_CODE.fd)
>
> Generate Region at Offset 0x0
>    Region Size = 0x348000
>    Region Name = FV
>
> Generate Region at Offset 0x348000
>    Region Size = 0x34000
>    Region Name = FV

and

> FV Space Information
> SECFV [19%Full] 212992 total, 42208 used, 170784 free
> FVMAIN_COMPACT [52%Full] 3440640 total, 1820408 used, 1620232 free
> DXEFV [86%Full] 11534336 total, 9928672 used, 1605664 free
> PEIFV [43%Full] 917504 total, 395944 used, 521560 free
> Build report can be found at .../build.ovmf.32.report

Interestingly, the line

> GUID cross reference file can be found at .../Build/OvmfIa32/NOOPT_GCC48/FV/Guid.xref

which is normally printed between the two listings above, was still
printed, but alone.

Thanks,
Laszlo


More information about the edk2-devel mailing list