Message ID | 20250131-migration-5-2-updates-v2-2-4ce688a74bfd@bootlin.com |
---|---|
State | Superseded |
Headers | show |
Series | migration-5.2: Add entries for virtual provider and multiconfig changes | expand |
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? Cheers, Quentin
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
Hi Antonin, On 1/31/25 2:07 PM, Antonin Godard wrote: > 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? > The issue is that the example implies that the change is simple and automatic, it is not I'm afraid. For the variables that we know can be changed automatically then it's fine, I believe that's the case for PREFERRED_PROVIDER with TARGET_PREFIX. For the others, maybe stating that one replacement could be X -> Y but it depends, so rather see <link to commit> to check for yourself. Don't have a better suggestion than that unfortunately. Cheers, Quentin
Hi Quentin, On Thu Feb 6, 2025 at 10:25 AM CET, Quentin Schulz wrote: [...] >>> + >>> +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? >> > > The issue is that the example implies that the change is simple and > automatic, it is not I'm afraid. For the variables that we know can be > changed automatically then it's fine, I believe that's the case for > PREFERRED_PROVIDER with TARGET_PREFIX. For the others, maybe stating > that one replacement could be X -> Y but it depends, so rather see <link > to commit> to check for yourself. > > Don't have a better suggestion than that unfortunately. I get what you mean, thanks. I think I will rephrase this is bit, stating that those are examples, but should not be taken as a simple grep & replace. I'll also link to the commit in question. Antonin
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++ + +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++ + Recipe changes ~~~~~~~~~~~~~~