Hi all,

OK, so I have now updated both edk2-non-osi and edk2-platforms
(devel-OpenPlatformPkg branches) with package renaming, and updating
.dsc/.fdf files to . 

It appears the problems I'm facing are mainly caused by the GenFds
stage not seeing a view consistent with the actual compilation stage.

To demonstrate, I build the Juno platform:
$ . edksetup.sh
$ make -C BaseTools
$ PACKAGES_PATH=/work/git/edk2-platforms/Platform/ARM \
   GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -n 9 -a AARCH64 \
   -t GCC5 -p JunoPkg/ArmJuno.dsc -b RELEASE

This build fails with:
---
Fd File Name:BL33_AP_UEFI

Generate Region at Offset 0x0
   Region Size = 0xF8000
      Region Name = FV

Generating FVMAIN_COMPACT FV
####
Generating FVMAIN FV


GenFds.py...
 : error F003: Output file for RAW section could not be found for
 JunoPkg/AcpiTables/AcpiTables.inf



build.py...
 : error 7000: Failed to execute command
   GenFds -f /work/git/edk2-platforms/Platform/ARM/JunoPkg/ArmJuno.fdf
   --conf=/work/git/edk2/Conf -o
   /work/git/edk2/Build/ArmJuno/RELEASE_GCC5 -t GCC5 -b RELEASE -p
   /work/git/edk2-platforms/Platform/ARM/JunoPkg/ArmJuno.dsc -a
   AARCH64 -D "EFI_SOURCE=/work/git/edk2/EdkCompatibilityPkg" -D
   "EDK_SOURCE=/work/git/edk2/EdkCompatibilityPkg" -D
   "TOOL_CHAIN_TAG=GCC5" -D "TOOLCHAIN=GCC5" -D "TARGET=RELEASE" -D
   "FAMILY=GCC" -D "WORKSPACE=/work/git/edk2" -D
   "EDK_TOOLS_PATH=/work/git/edk2/BaseTools" -D "ARCH=AARCH64" -D
   "ECP_SOURCE=/work/git/edk2/EdkCompatibilityPkg" [/work/git/edk2]

- Failed -
---
, but if I add the symlink
ln -s edk2-platforms/Platform/ARM/JunoPkg/ Build/ArmJuno/RELEASE_GCC5/AARCH64/
it completes successfully on the next pass.

Same when building VExpressPkg/ArmVExpress-FVP-AArch64.dsc
ln -s edk2-platforms/Platform/ARM/VExpressPkg \
 Build/ArmVExpress-FVP-AArch64/RELEASE_GCC5/AARCH64/
resolves the build error.


Similarly, when I build the Overdrive/Overdrive.dsc, using:
$ 
PACKAGES_PATH=/work/git/edk2-platforms/Platform/AMD:/work/git/edk2-platforms/Silicon/AMD:/work/git/edk2-non-osi/Silicon/AMD/Styx:/work/git/edk2-non-osi/Platform/AMD
 \
 GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -n 9 -a AARCH64 -t GCC5
 -p OverdriveBoard/OverdriveBoard.dsc -b RELEASE
this fails with
---
Fd File Name:STYX_ROM

Generate Region at Offset 0x0
   Region Size = 0x200000
      Region File Name =
      
/work/git/edk2/../edk2-non-osi/Platform/AMD/OverdriveBoard/PreUefiFirmware.bin

Generate Region at Offset 0x200000
   Region Size = 0x260000
      Region Name = FV

Generating STYX_EFI FV
################Return Value = 2
GenFw: ERROR 0001: Error opening file

  
/work/git/edk2/Build/Overdrive/RELEASE_GCC5/AARCH64/StyxPkg/Drivers/PlatInitPei/PlatInitPei/OUTPUT/PlatInitPei.efi



GenFds.py...
### ['GenFw', '-t', '-o',
### 
'/work/git/edk2/Build/Overdrive/RELEASE_GCC5/FV/Ffs/769694a4-2572-4f29-a5bb-33d7df7be001PlatInitPei/769694a4-2572-4f29-a5bb-33d7df7be001Te.raw',
### 
'/work/git/edk2/Build/Overdrive/RELEASE_GCC5/AARCH64/StyxPkg/Drivers/PlatInitPei/PlatInitPei/OUTPUT/PlatInitPei.efi']
 : error 7000: Failed to generate firmware image



build.py...
 : error 7000: Failed to execute command
   GenFds -f
   /work/git/edk2-platforms/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf
   --conf=/work/git/edk2/Conf -o
   /work/git/edk2/Build/Overdrive/RELEASE_GCC5 -t GCC5 -b RELEASE -p
   /work/git/edk2-platforms/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc
   -a AARCH64 -D "EFI_SOURCE=/work/git/edk2/EdkCompatibilityPkg" -D
   "EDK_SOURCE=/work/git/edk2/EdkCompatibilityPkg" -D
   "TOOL_CHAIN_TAG=GCC5" -D "TOOLCHAIN=GCC5" -D "TARGET=RELEASE" -D
   "FAMILY=GCC" -D "WORKSPACE=/work/git/edk2" -D
   "FIRMWARE_VER=b941c34" -D "EDK_TOOLS_PATH=/work/git/edk2/BaseTools"
   -D "ARCH=AARCH64" -D
   "ECP_SOURCE=/work/git/edk2/EdkCompatibilityPkg" [/work/git/edk2]

- Failed -
---

Again, resolved by
ln -s edk2-platforms/Silicon/AMD/StyxPkg/ Build/Overdrive/RELEASE_GCC5/AARCH64/

Am I doing something wrong here? Are there any magic runes that could
help out?

/
    Leif

On Fri, May 05, 2017 at 01:45:51PM +0000, Yao, Jiewen wrote:
> HI Leif
> It is great that you are adding more platform to edk2-platforms.
> 
> We (Intel) also have plan to add more boards there. In general, we are very 
> close on having silicon and platform folder.
> 
> I have a quick look. One minor suggestions here:
> Take Arm folder as example. (I assume Juno is one package, and VExpress is 
> the other package.)
> Can we name Juno to be JunoPkg, and VExpress to be VExpressPkg ?
> We do not add "Pkg" to a folder. And we usually add "Pkg" suffix to a package.
> 
> In general, I think it is a very good start.
> I may review the content in more detail and provide more feedback.
> 
> 
> Thank you
> Yao Jiewen
> 
> 
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Leif 
> Lindholm
> Sent: Thursday, May 4, 2017 6:56 AM
> To: edk2-devel@lists.01.org
> Cc: Ryan Harkin <ryan.har...@linaro.org>; Ard Biesheuvel 
> <ard.biesheu...@linaro.org>; Chenhui Sun <chenhui....@linaro.org>; Andrew 
> Fish <af...@apple.com>; Alan Ott <a...@softiron.co.uk>; Richardson, Brian 
> <brian.richard...@intel.com>; Duran, Leo <leo.du...@amd.com>; 
> haojian.zhu...@linaro.org; Linaro UEFI <linaro-u...@lists.linaro.org>; 
> Kinney, Michael D <michael.d.kin...@intel.com>; Heyi Guo <heyi....@linaro.org>
> Subject: [edk2] [RFC] migration of OpenPlatformPkg to tianocore
> 
> Hi all,
> 
> As some of you may be aware, I have been working around the lack of
> a clear upstreaming strategy for platform support by keeping such code
> in a dedicated repository I set up at Linaro for that purpose:
> https://git.linaro.org/uefi/OpenPlatformPkg.git
> 
> During discussions at the last Seattle plugfest we finally agreed on
> the (theoretical) details of how to use the edk2-platforms repository.
> After that I promised to migrate OpenPlatformPkg across to the
> edk2-platforms and edk2-non-osi structure, with the explicit end goal
> from my side that this should become the master branch for each.
> 
> And now, before the release of HURD 1.0, I have.
> 
> Current limitations (that I can remember):
> - A few references to OpenPlatformPkg remain, in ways that do not
>   appear to break any of the platform builds. Most likely this affects
>   dead code, but in case it's been accidentally orphaned, I thought it
>   best to
> - I have simply nuked all references to Ebl (used in _addition_ to the
>   UEFI shell, which was never the intent) and the efi-toolkit
>   ramdisk driver.
> - The Marvell Yukon driver that I sent out for review last week has
>   not migrated anywhere, and so has been temporarily disabled
>   Mike suggested I should
> - USB support on the LeMaker Cello board depends on the patch
>   "OptionRomPkg: add firmware loader driver for Renesas PD72020x"
>   sent out by Ard on 18th of April.
> - I have dropped some of the binary-only modules from OpenPlatformPkg,
>   and contacted the platform owners with requests for modifications.
> - The git history is quite messy and will be cleaned up, but I wanted
>   to keep the transition quite visible in the RFC.
> - I haven't filled anything into the Maintainers.txt files - I am in
>   favour of moving to a fully machine-readable format with wildcards
>   as Laszlo has proposed in the past, and think this would be an
>   excellent point to have that discussion (which can be had separately
>   for edk2-platforms and edk2-non-osi from edk2).
> - Few of the platforms complete the FV generation stage, and I've
>   inserted a couple of silly hacks to get them to get as far as they
>   do. I think that either I am missing some points of how
>   PACKAGES_PATH is intended to work, or I'm simply hitting corner
>   cases no one has come across before. I could really use some help
>   debugging these issues. (examples below).
> 
> The below depends on the 3-part series I sent out today for importing
> DwEmmcDxe and EfiTimeBaseLib from OpenPlatformPkg. But apart from
> that, I have uploaded branches called devel-OpenPlatformPkg to:
> 
> https://github.com/tianocore/edk2-platforms/tree/devel-OpenPlatformPkg
> https://github.com/tianocore/edk2-non-osi/tree/devel-OpenPlatformPkg
> 
> These branches _will_ be rebased occasionally until they get to a
> point where they can move out of devel- stage (and hopefully onto
> master).
> 
> 
> Build issue description
> =======================
> So, one of the hopefully easier ones is what I'm seeing when trying to
> build the Juno platform:
> 
> $ PACKAGES_PATH="/work/maint/edk2-platforms:/work/maint/edk2-non-osi" 
> GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -p 
> Platform/ARM/Juno/ArmJuno.dsc -b RELEASE -n 9
> 
> results in:
> 
> <<<
> GenFds.py...
>  : error F003: Output file for RAW section could not be found for
>  Platform/ARM/Juno/AcpiTables/AcpiTables.inf
> 
> ###
> 
> 
> build.py...
>  : error 7000: Failed to execute command
>          GenFds -f /work/maint/edk2-platforms/Platform/ARM/Juno/ArmJuno.fdf 
> --conf=/work/maint/edk2/Conf -o /work/maint/edk2/Build/ArmJuno/RELEASE_GCC5 
> -t GCC5 -b RELEASE -p 
> /work/maint/edk2-platforms/Platform/ARM/Juno/ArmJuno.dsc -a AARCH64 -D 
> "EFI_SOURCE=/work/maint/edk2/EdkCompatibilityPkg" -D 
> "EDK_SOURCE=/work/maint/edk2/EdkCompatibilityPkg" -D "TOOL_CHAIN_TAG=GCC5" -D 
> "TOOLCHAIN=GCC5" -D "TARGET=RELEASE" -D "FAMILY=GCC" -D 
> "WORKSPACE=/work/maint/edk2" -D "EDK_TOOLS_PATH=/work/maint/edk2/BaseTools" 
> -D "ARCH=AARCH64" -D "ECP_SOURCE=/work/maint/edk2/EdkCompatibilityPkg"
>  [/work/maint/edk2]
> 
> - Failed -
> >>>
> 
> And when I copy and paste the above command manually, I get:
> 
> <<<
> GenFds.py...
> /work/maint/edk2-platforms/Platform/ARM/Juno/ArmJuno.dsc(34): error
> 000E: File/directory not found in workspace
>         
> /work/maint/edk2-platforms/Platform/ARM/Juno/Platform/ARM/VExpress/ArmVExpress.dsc.inc
> /work/maint/edk2/Platform/ARM/VExpress/ArmVExpress.dsc.inc
> >>>
> 
> So, to an uniformed observer, it seems the portion
> !include Platform/ARM/VExpress/ArmVExpress.dsc.inc
> from ArmJuno.dsc
> gets expanded to "directory ArmJuno.dsc is in" + 
> "Platform/ARM/VExpress/ArmVExpress.dsc.inc"
> whereas I was hoping for it to try to find a match for
> "Platform/ARM/VExpress/ArmVExpress.dsc.inc" along PACKAGES_PATH (and
> find one in edk2-platforms).
> 
> I also have the impression that something similar is happening in
> ArmJuno.fdf for the line
>   INF RuleOverride=ACPITABLE Platform/ARM/Juno/AcpiTables/AcpiTables.inf
> generating the error message from the original build command.
> 
> But I'm not quite sure how to debug these issues (short of fully
> figuring out the innards of MultipleWorkspace.py, MetaFileParser.py
> and a few others).
> Any ideas of where to look, or even what is going on?
> Would these cases be expected to work?
> 
> /
>     Leif
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org<mailto: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