bitbake.conf: Make TCLIBC and TCMODE lazy assigned

Message ID 20220603064121.7395-1-pavel@zhukoff.net
State Accepted, archived
Commit de6c3f9cb2c589aecbf8d9d25fa83cd18bf80891
Headers show
Series bitbake.conf: Make TCLIBC and TCMODE lazy assigned | expand

Commit Message

Pavel Zhukov June 3, 2022, 6:41 a.m. UTC
This allows two level of overriding (distro level and local.conf/shell
variable). Previous settings blocked shell variables overring
if it was overriden on distro level.

Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
---
 meta/conf/bitbake.conf | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Martin Jansa June 3, 2022, 6:44 a.m. UTC | #1
You can always override it from local.conf with an override, right? That
always worked for me and I don't see why this change is needed.

On Fri, Jun 3, 2022 at 8:42 AM Pavel Zhukov <pavel@zhukoff.net> wrote:

> This allows two level of overriding (distro level and local.conf/shell
> variable). Previous settings blocked shell variables overring
> if it was overriden on distro level.
>
> Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
> ---
>  meta/conf/bitbake.conf | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index 0e939aca4f..2a3cf6f8aa 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -386,8 +386,8 @@ FILESYSTEM_PERMS_TABLES ?= "${@'files/fs-perms.txt' if
> oe.types.boolean(d.getVar
>  # General work and output directories for the build system.
>  ##################################################################
>
> -TCMODE ?= "default"
> -TCLIBC ?= "glibc"
> +TCMODE ??= "default"
> +TCLIBC ??= "glibc"
>  TMPDIR ?= "${TOPDIR}/tmp"
>
>  CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' +
> str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' +
> str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
> --
> 2.35.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#166509):
> https://lists.openembedded.org/g/openembedded-core/message/166509
> Mute This Topic: https://lists.openembedded.org/mt/91516557/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> Martin.Jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Pavel Zhukov June 3, 2022, 6:52 a.m. UTC | #2
An example we have right now:

bitbake.conf: TCLIBC ?= "glibc"
linux-distro.conf: TCLIBC = "musl"

TCLIBC="glibc" bitbake -e distro-image-base => TCLIBC == "musl" which
confuses users a lot (and it was not working this way in dunfell).
Same applies to if TCLIBC="glibc" is in conf/local.conf then musl is used.

With linux-distro.conf : TCLIBC ?= "musl" image is build with "glibc"
which is not that we want.

With suggested changes:

bitbake.conf: TCLIBC ??= "glibc"
linux-distro.conf: TCLIBC ?= "musl"

TCLIBC="glibc" bitbake -e distro-image-base => TCLIBC == "glibc"
bitbake -e distro-image-base => TCLIBC == "musl"

If distro maintainers wants they can set to TCLIBC = "<implementation>"
and disable overriding explicitly. 

Do I miss something? 

"Martin Jansa" <Martin.Jansa@gmail.com> writes:

> You can always override it from local.conf with an override, right? That always worked for me and I don't see why this change is needed.
>
> On Fri, Jun 3, 2022 at 8:42 AM Pavel Zhukov <pavel@zhukoff.net> wrote:
>
>  This allows two level of overriding (distro level and local.conf/shell
>  variable). Previous settings blocked shell variables overring
>  if it was overriden on distro level.
>
>  Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
>  ---
>   meta/conf/bitbake.conf | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
>  diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
>  index 0e939aca4f..2a3cf6f8aa 100644
>  --- a/meta/conf/bitbake.conf
>  +++ b/meta/conf/bitbake.conf
>  @@ -386,8 +386,8 @@ FILESYSTEM_PERMS_TABLES ?= "${@'files/fs-perms.txt' if oe.types.boolean(d.getVar
>   # General work and output directories for the build system.
>   ##################################################################
>
>  -TCMODE ?= "default"
>  -TCLIBC ?= "glibc"
>  +TCMODE ??= "default"
>  +TCLIBC ??= "glibc"
>   TMPDIR ?= "${TOPDIR}/tmp"
>
>   CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar
>  ('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
>  -- 
>  2.35.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#166510): https://lists.openembedded.org/g/openembedded-core/message/166510
> Mute This Topic: https://lists.openembedded.org/mt/91516557/6390638
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [pavel@zhukoff.net]
> -=-=-=-=-=-=-=-=-=-=-=-
Khem Raj June 3, 2022, 3:36 p.m. UTC | #3
On Fri, Jun 3, 2022 at 12:04 AM Pavel Zhukov <pavel@zhukoff.net> wrote:
>
>
> An example we have right now:
>
> bitbake.conf: TCLIBC ?= "glibc"
> linux-distro.conf: TCLIBC = "musl"
>
> TCLIBC="glibc" bitbake -e distro-image-base => TCLIBC == "musl" which
> confuses users a lot (and it was not working this way in dunfell).
> Same applies to if TCLIBC="glibc" is in conf/local.conf then musl is used.
>
> With linux-distro.conf : TCLIBC ?= "musl" image is build with "glibc"
> which is not that we want.
>
> With suggested changes:
>
> bitbake.conf: TCLIBC ??= "glibc"
> linux-distro.conf: TCLIBC ?= "musl"
>
> TCLIBC="glibc" bitbake -e distro-image-base => TCLIBC == "glibc"
> bitbake -e distro-image-base => TCLIBC == "musl"
>
> If distro maintainers wants they can set to TCLIBC = "<implementation>"
> and disable overriding explicitly.
>
> Do I miss something?
>

Its better to define different distros profiles sometimes they are not
beneficial to have knobs on cmdline e.g. see

https://github.com/YoeDistro/yoe-distro/blob/master/conf/site.conf#L14-L15
and
https://github.com/YoeDistro/yoe-distro/blob/master/sources/meta-yoe/conf/distro/yoe.conf

Since there could be multiple factors deciding the policy.

> "Martin Jansa" <Martin.Jansa@gmail.com> writes:
>
> > You can always override it from local.conf with an override, right? That always worked for me and I don't see why this change is needed.
> >
> > On Fri, Jun 3, 2022 at 8:42 AM Pavel Zhukov <pavel@zhukoff.net> wrote:
> >
> >  This allows two level of overriding (distro level and local.conf/shell
> >  variable). Previous settings blocked shell variables overring
> >  if it was overriden on distro level.
> >
> >  Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
> >  ---
> >   meta/conf/bitbake.conf | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >  diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> >  index 0e939aca4f..2a3cf6f8aa 100644
> >  --- a/meta/conf/bitbake.conf
> >  +++ b/meta/conf/bitbake.conf
> >  @@ -386,8 +386,8 @@ FILESYSTEM_PERMS_TABLES ?= "${@'files/fs-perms.txt' if oe.types.boolean(d.getVar
> >   # General work and output directories for the build system.
> >   ##################################################################
> >
> >  -TCMODE ?= "default"
> >  -TCLIBC ?= "glibc"
> >  +TCMODE ??= "default"
> >  +TCLIBC ??= "glibc"
> >   TMPDIR ?= "${TOPDIR}/tmp"
> >
> >   CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar
> >  ('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"
> >  --
> >  2.35.1
> >
> >
> >
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#166511): https://lists.openembedded.org/g/openembedded-core/message/166511
> Mute This Topic: https://lists.openembedded.org/mt/91516557/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

Patch

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 0e939aca4f..2a3cf6f8aa 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -386,8 +386,8 @@  FILESYSTEM_PERMS_TABLES ?= "${@'files/fs-perms.txt' if oe.types.boolean(d.getVar
 # General work and output directories for the build system.
 ##################################################################
 
-TCMODE ?= "default"
-TCLIBC ?= "glibc"
+TCMODE ??= "default"
+TCLIBC ??= "glibc"
 TMPDIR ?= "${TOPDIR}/tmp"
 
 CACHE = "${TMPDIR}/cache/${TCMODE}-${TCLIBC}${@['', '/' + str(d.getVar('MACHINE'))][bool(d.getVar('MACHINE'))]}${@['', '/' + str(d.getVar('SDKMACHINE'))][bool(d.getVar('SDKMACHINE'))]}"