All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Antonin Godard" <antonin.godard@bootlin.com>
To: "Quentin Schulz" <quentin.schulz@cherry.de>,
	<docs@lists.yoctoproject.org>
Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: Re: [docs] [yocto-docs][PATCH v2 2/2] migration-5.2: add virtual provider change
Date: Fri, 31 Jan 2025 14:07:52 +0100	[thread overview]
Message-ID: <D7GA5NFGNWXK.22TNU3A37YW4I@bootlin.com> (raw)
In-Reply-To: <ef83770e-6502-4f74-8ae4-89954666780b@cherry.de>

Hi Quentin,

On Fri Jan 31, 2025 at 1:18 PM CET, Quentin Schulz wrote:
> Hi Antonin,
>
> On 1/31/25 12:14 PM, Antonin Godard via lists.yoctoproject.org wrote:
>> The commit 4ccc3bc8266c ("classes/recipes: Switch virtual/XXX-gcc to
>> virtual/cross-cc (and c++/binutils)") in OE-Core changes the
>> virtual/XXX-gcc to virtual/cross-cc (and c++/binutils) syntax. Add it to
>> the migration manual.
>> 
>> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
>> ---
>>   documentation/migration-guides/migration-5.2.rst | 29 ++++++++++++++++++++++++
>>   1 file changed, 29 insertions(+)
>> 
>> diff --git a/documentation/migration-guides/migration-5.2.rst b/documentation/migration-guides/migration-5.2.rst
>> index a60e3e9a8..b29cb2052 100644
>> --- a/documentation/migration-guides/migration-5.2.rst
>> +++ b/documentation/migration-guides/migration-5.2.rst
>> @@ -105,6 +105,35 @@ some obscure bugs.
>>   Any logic based on ``BB_CURRENT_MC`` equalling to ``default`` by default should
>>   be changed to be equal to an empty string.
>>   
>> +Virtual toolchain provider changes
>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> +
>> +Support was added for virtual providers on a per-recipe basis for specific
>> +key toolchain providers listed in ``BB_VIRTUAL_RECIPE_PROVIDERS``. As part of
>> +that support, the ``cross`` providers were simplified to remove the triplet
>> +prefix (:term:`TARGET_PREFIX`, :term:`SDK_PREFIX` and :term:`HOST_PREFIX`) and
>> +generalise the naming. Here are example of how references to these variables
>> +should be changed to use the new ``cross`` syntax::
>> +
>> +   virtual/${HOST_PREFIX}binutils -> virtual/cross-binutils
>> +   virtual/${TARGET_PREFIX}binutils -> virtual/cross-binutils
>> +
>> +   virtual/${HOST_PREFIX}gcc -> virtual/cross-cc
>> +   virtual/${TARGET_PREFIX}gcc -> virtual/cross-cc
>> +   virtual/${SDK_PREFIX}gcc -> virtual/nativesdk-cross-cc
>> +
>> +   virtual/${HOST_PREFIX}compilerlibs -> virtual/compilerlibs
>> +   virtual/${TARGET_PREFIX}compilerlibs -> virtual/compilerlibs
>> +   virtual/nativesdk-${SDK_PREFIX}compilerlibs -> virtual/nativesdk-compilerlibs
>> +
>> +   virtual/${TARGET_PREFIX}g++ -> virtual/cross-c++
>> +
>
> I am not sure this rule applies everywhere looking at the commit that 
> makes the change? (see below for related comment)
>
>> +A :term:`PREFERRED_PROVIDER` assignment should be transformed as follows::
>> +
>> +   PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils -> PREFERRED_PROVIDER_virtual/cross-binutils
>> +   PREFERRED_PROVIDER_virtual/${SDK_PREFIX}binutils -> PREFERRED_PROVIDER_virtual/cross-binutils:class-nativesdk
>> +   PREFERRED_PROVIDER_virtual/${SDK_PREFIX}g++ -> PREFERRED_PROVIDER_virtual/nativesdk-cross-c++
>> +
>
> I believe all PREFERRED_PROVIDER would replace TARGET_PREFIX with cross- 
> (and rename gcc to cc, g++ to c++).
>
> SDK_PREFIX would be replace following the same pattern as TARGET_PREFIX 
> except that an override with :class-nativesdk should be provided. Though 
> it seems there's now a second variable for each PREFERRED_PROVIDER which 
> had an SDK_PREFIX, it'll also need nativesdk- prefix added to the same 
> pattern used for TARGET_PREFIX. Except for compilerlibs which only gets 
> the one with the nativesdk- prefix.
>
> c.f. from 90e0a0f7f4536e1aeb311ab2b061be71b4129e4e in poky:
>
> -PREFERRED_PROVIDER_virtual/${SDK_PREFIX}binutils ?= 
> "binutils-crosssdk-${SDK_SYS}"
> -PREFERRED_PROVIDER_virtual/${SDK_PREFIX}gcc = "gcc-crosssdk-${SDK_SYS}"
> -PREFERRED_PROVIDER_virtual/${SDK_PREFIX}g++ = "gcc-crosssdk-${SDK_SYS}"
> -PREFERRED_PROVIDER_virtual/${SDK_PREFIX}compilerlibs = 
> "nativesdk-gcc-runtime"
> +PREFERRED_PROVIDER_virtual/cross-binutils:class-nativesdk ?= 
> "binutils-crosssdk-${SDK_SYS}"
> +PREFERRED_PROVIDER_virtual/cross-cc:class-nativesdk = 
> "gcc-crosssdk-${SDK_SYS}"
> +PREFERRED_PROVIDER_virtual/cross-c++:class-nativesdk = 
> "gcc-crosssdk-${SDK_SYS}"
> +
> +PREFERRED_PROVIDER_virtual/nativesdk-cross-binutils ?= 
> "binutils-crosssdk-${SDK_SYS}"
> +PREFERRED_PROVIDER_virtual/nativesdk-cross-cc = "gcc-crosssdk-${SDK_SYS}"
> +PREFERRED_PROVIDER_virtual/nativesdk-cross-c++ = "gcc-crosssdk-${SDK_SYS}"
> +PREFERRED_PROVIDER_virtual/nativesdk-compilerlibs = "nativesdk-gcc-runtime"
>
> Now looking a bit more into the changes made in this commit, there isn't 
> a simple search and replace that can be used, sometimes it's replacing a 
> variable with one value, sometimes with another. Depends on the recipe 
> the change is made in I guess?

I guess so. It's probably going to be different based on the recipe, but I
wouldn't know how to phrase it here. I just gave some more examples to
illustrate the changes. Any idea on a better way to explain this?

Antonin

-- 
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2025-01-31 13:08 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-31 11:14 [yocto-docs][PATCH v2 0/2] migration-5.2: Add entries for virtual provider and multiconfig changes Antonin Godard
2025-01-31 11:14 ` [yocto-docs][PATCH v2 1/2] migration-5.2: document BB_CURRENT_MC default value change Antonin Godard
2025-01-31 11:14 ` [yocto-docs][PATCH v2 2/2] migration-5.2: add virtual provider change Antonin Godard
2025-01-31 12:18   ` [docs] " Quentin Schulz
2025-01-31 13:07     ` Antonin Godard [this message]
2025-02-06  9:25       ` Quentin Schulz
2025-02-07  8:18         ` Antonin Godard

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-all 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=D7GA5NFGNWXK.22TNU3A37YW4I@bootlin.com \
    --to=antonin.godard@bootlin.com \
    --cc=docs@lists.yoctoproject.org \
    --cc=quentin.schulz@cherry.de \
    --cc=thomas.petazzoni@bootlin.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.