public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ajan Zhong" <ajan.zhong@newfw.com>
To: "Leif Lindholm" <leif.lindholm@oss.qualcomm.com>
Cc: "Joey Vagedes" <joeyvagedes@microsoft.com>,
	 "devel@edk2.groups.io" <devel@edk2.groups.io>,
	 "Ard Biesheuvel" <ardb+tianocore@kernel.org>,
	 "Kinney,  Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] Expansion of ARCH in .dsc files
Date: Wed, 08 Jan 2025 18:26:42 +0800	[thread overview]
Message-ID: <94ba23fe064f2d82b913d4850e73e1d7918b1915.2ab9d557.6255.4c20.a423.6b6b95573d20@feishu.cn> (raw)
In-Reply-To: <94ba23fe064f2d82b913d4850e73e1d7918b1915.e524b174.0181.4a50.a951.515098c6ec72@feishu.cn>

[-- Attachment #1: Type: text/plain, Size: 7470 bytes --]

Hi all,
Just check outputs for each architecture, the FV cannot be generated if we use this method:
[Defines.X64]
OUTPUT_DIRECTORY = Build/UefiPayloadPkgX64
FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf

If we place FLASH_DEFINITION under the Defines section:
[Defines]
FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
We will meet "error F003: Module built under multiple ARCHs ['AARCH64', 'X64']. Not able to determine which output to put into flash for Module MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf !" issue again.

Still working in progress to figure out other solutions.

> From: "Ajan Zhong"<ajan.zhong@newfw.com>
> Date:  Wed, Jan 8, 2025, 3:29 PM
> Subject:  Re: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files
> To: "Leif Lindholm"<leif.lindholm@oss.qualcomm.com>
> Cc: "Joey Vagedes"<joeyvagedes@microsoft.com>, "devel@edk2.groups.io"<devel@edk2.groups.io>, "Ard Biesheuvel"<ardb+tianocore@kernel.org>, "Kinney, Michael D"<michael.d.kinney@intel.com>
> Thanks Leif and Joey. :)
> 
> 
> As suggested, I used the following content in the DSC file to pass all the builds:
> 
> 
> [Defines.IA32]
> OUTPUT_DIRECTORY = Build/UefiPayloadPkgIA32
> FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
> [Defines.X64]
> OUTPUT_DIRECTORY = Build/UefiPayloadPkgX64
> FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
> [Defines.AARCH64]
> OUTPUT_DIRECTORY = Build/UefiPayloadPkgAARCH64
> FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
> 
> 
> I have tried following build commands, they all succeed to build corresponding binaries:
> 1. build -p UefiPayloadPkg/UefiPayloadPkg.dsc -b DEBUG -a IA32 -a X64 -a AARCH64 -t GCC5
> 2. python UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t GCC5 -b DEBUG --FIT
> 3. python UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t GCC5 -a IA32 -b DEBUG --FIT
> 4. python UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t GCC5 -a AARCH -b DEBUG --FIT
> 
> 
> Now I am creating a new draft PR to fix all github CI failures which are not generated in my local.
> 
> 
> Thanks again for your help.
> From: "Leif Lindholm"<leif.lindholm@oss.qualcomm.com>
> Date:  Wed, Jan 8, 2025, 4:14 AM
> Subject:  Re: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files
> To: "Joey Vagedes"<joeyvagedes@microsoft.com>
> Cc: "devel@edk2.groups.io"<devel@edk2.groups.io>, "Ajan Zhong"<ajan.zhong@newfw.com>, "Ard Biesheuvel"<ardb+tianocore@kernel.org>, "Kinney, Michael D"<michael.d.kinney@intel.com>
> Hi Joey, 
> 
> 
> I appreciate the pointer. 
> However, that's the .inf spec. 
> 
> 
> The same language is not in the corresponding section of 
> https://tianocore-docs.github.io/edk2-DscSpecification/release-1.28/3_edk_ii_dsc_file_format/35_[defines]_section.html#35-defines-section 
> 
> 
> Regards, 
> 
> 
> Leif 
> 
> 
> On Tue, 7 Jan 2025 at 19:43, Joey Vagedes <joeyvagedes@microsoft.com> wrote: 
> > 
> > Leif, 
> > 
> > For your awareness, Section 3.4 of the INF specification states that architectural modifiers for the [Defines] section tag are not permitted. 
> > 
> > So that you can Ctrl+F and to find the exact language, here is a quote: 
> > 
> > "architectural modifiers for the [Defines] section tag are not permitted" 
> > 
> > https://tianocore-docs.github.io/edk2-InfSpecification/release-1.27/3_edk_ii_inf_file_format/34_[defines]_section.html#34-defines-section 
> > 
> > Thanks, 
> > Joey 
> > 
> > -----Original Message----- 
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Leif Lindholm via groups.io<http://groups.io> 
> Sent: Tuesday, January 7, 2025 11:05 AM 
> > To: devel@edk2.groups.io 
> Cc: Ajan Zhong <ajan.zhong@newfw.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com> 
> > Subject: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files 
> > 
> > So... I originally tripped over my misunderstanding of <subject> when writing 
> > https://github.com/tianocore/edk2/pull/6262 to get around something I wanted to test in UefiPayloadPkg. 
> > 
> > Now Ajan has run into at least an adjacent problem when trying to rework 
> > https://github.com/tianocore/edk2/pull/6545 based on feedback I among others provided. 
> > 
> > Now, the thing I had misunderstood before is that when build is called with multiple -a options, the ARCH variable will expand to a space-separated list of *all* the specified architectures. 
> > A lot of Arm/AArch64 modules assume this variable only ever contains a single architecture. 
> > 
> > The thing is, I don't think this is clearly documented in the .dsc specification at all. And it is frequently used as a shorthand in there in a form that would only work if build was called with a single -a. 
> > Now, this also means that there are nearly no correct users of ARCH in 
> > edk2 or edk2-platforms. 
> > Because "the list of all architectures being built simultaneously" 
> > simply isn't very useful information 
> > build-time. There are two correct uses in edk2, in EmulatorPkg.dsc and in UefiPayloadPkg.dsc, using '!if "IA32" in "$ARCH"', which as far as I can tell is the only possible way to use the variable correctly. 
> > Slightly amusingly, EmulatorPkg.dsc also contains an incorrect use. 
> > 
> > I guess the behaviour is a direct result of how the build command is architected. 
> > I guess the one question I have is - is this the intended behaviour? 
> > 
> > Ard: I think we need to update some of our .dsc files... 
> > 
> > Ajan: one somewhat hacky workaround I can think of to separate the output images is to hardcode the output image name in arch-specific Defines sections, like so: 
> > 
> > diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 0bd8d85cab03..f07f2b91764e 100644 
> > --- a/ArmVirtPkg/ArmVirtQemu.dsc 
> > +++ b/ArmVirtPkg/ArmVirtQemu.dsc 
> > @@ -12,12 +12,17 @@ 
> >  # Defines Section - statements that will be processed to create a Makefile. 
> >  # 
> >  ################################################################################ 
> > +[Defines.ARM] 
> > +  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-ARM 
> > + 
> > +[Defines.AARCH64] 
> > +  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-AARCH64 
> > + 
> >  [Defines] 
> >    PLATFORM_NAME                  = ArmVirtQemu 
> >    PLATFORM_GUID                  = 37d7e986-f7e9-45c2-8067-e371421a626c 
> >    PLATFORM_VERSION               = 0.1 
> >    DSC_SPECIFICATION              = 0x00010005 
> > -  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-$(ARCH) 
> >    SUPPORTED_ARCHITECTURES        = AARCH64|ARM 
> >    BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT 
> >    SKUID_IDENTIFIER               = DEFAULT 
> > 
> > 
> >  
> > 
> >
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#120998): https://edk2.groups.io/g/devel/message/120998
Mute This Topic: https://groups.io/mt/110483263/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



[-- Attachment #2: Type: text/html, Size: 52712 bytes --]

  reply	other threads:[~2025-01-15 18:52 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-07 19:04 [edk2-devel] Expansion of ARCH in .dsc files Leif Lindholm via groups.io
2025-01-07 19:43 ` Joey Vagedes via groups.io
2025-01-07 20:14   ` Leif Lindholm via groups.io
2025-01-08  7:29     ` Ajan Zhong
2025-01-08 10:26       ` Ajan Zhong [this message]
2025-01-08 15:01 ` Gerd Hoffmann via groups.io
2025-01-08 16:01   ` Leif Lindholm via groups.io
2025-01-09  5:14     ` Ajan Zhong
2025-01-09 13:37     ` Ajan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=94ba23fe064f2d82b913d4850e73e1d7918b1915.2ab9d557.6255.4c20.a423.6b6b95573d20@feishu.cn \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox