Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
@ 2024-07-24 17:08 Tom Hochstein
  2024-07-24 17:20 ` [OE-core] " Alexander Kanavin
  0 siblings, 1 reply; 6+ messages in thread
From: Tom Hochstein @ 2024-07-24 17:08 UTC (permalink / raw)
  To: openembedded-core; +Cc: Tom Hochstein

The implementation uses the append operator to include
GLIBC_64BIT_TIME_FLAGS in TARGET_CC_ARCH, but it places the space in
the GLIBC_64BIT_TIME_FLAGS assignment in order to avoid a 'spurious
space' when the value is empty.

68b50d3 time64: Remove leading whitespace from GLIBC_64BIT_TIME_FLAGS

The problem with this is it requires anyone wishing to assign a value
to GLIBC_64BIT_TIME_FLAGS to add the leading space, otherwise this is
the error:

cc1: error: '-Werror=format-security-D_TIME_BITS=64': no option '-Wformat-security-D_TIME_BITS=64'

Remove the non-standard usage requirement with a different design that
uses the += operator and moves the arch override.

Signed-off-by: Tom Hochstein <tom.hochstein@oss.nxp.com>
---
 meta/conf/distro/include/time64.inc | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/meta/conf/distro/include/time64.inc b/meta/conf/distro/include/time64.inc
index 510da11039..a459013a92 100644
--- a/meta/conf/distro/include/time64.inc
+++ b/meta/conf/distro/include/time64.inc
@@ -8,15 +8,18 @@
 #
 # Working to address those (before Y2038 rolls in) will be appreciated.
 
-GLIBC_64BIT_TIME_FLAGS = " -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
+TARGET_CC_ARCH += "${GLIBC_64BIT_TIME_FLAGS}"
 
 # Only needed for some 32-bit architectures, some relatively newer
 # architectures do not need it ( e.g. riscv32 )
-TARGET_CC_ARCH:append:arm = "${GLIBC_64BIT_TIME_FLAGS}"
-TARGET_CC_ARCH:append:armeb = "${GLIBC_64BIT_TIME_FLAGS}"
-TARGET_CC_ARCH:append:mipsarcho32 = "${GLIBC_64BIT_TIME_FLAGS}"
-TARGET_CC_ARCH:append:powerpc = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
-TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
+GLIBC_64BIT_TIME_FLAGS             = ""
+GLIBC_64BIT_TIME_FLAGS:arm         = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
+GLIBC_64BIT_TIME_FLAGS:armeb       = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
+GLIBC_64BIT_TIME_FLAGS:mipsarcho32 = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
+GLIBC_64BIT_TIME_FLAGS:powerpc     = \
+    "${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64', '', d)}"
+GLIBC_64BIT_TIME_FLAGS:x86         = \
+    "${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64', '', d)}"
 
 GLIBC_64BIT_TIME_FLAGS:pn-glibc = ""
 GLIBC_64BIT_TIME_FLAGS:pn-glibc-y2038-tests = ""
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
  2024-07-24 17:08 [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage Tom Hochstein
@ 2024-07-24 17:20 ` Alexander Kanavin
  2024-07-24 19:31   ` Tom Hochstein
  2024-07-24 19:33   ` Tom Hochstein
  0 siblings, 2 replies; 6+ messages in thread
From: Alexander Kanavin @ 2024-07-24 17:20 UTC (permalink / raw)
  To: tom.hochstein; +Cc: openembedded-core

On Wed, 24 Jul 2024 at 19:10, Tom Hochstein via lists.openembedded.org
<tom.hochstein=oss.nxp.com@lists.openembedded.org> wrote:
> -GLIBC_64BIT_TIME_FLAGS = " -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
> +TARGET_CC_ARCH += "${GLIBC_64BIT_TIME_FLAGS}"
>
>  # Only needed for some 32-bit architectures, some relatively newer
>  # architectures do not need it ( e.g. riscv32 )
> -TARGET_CC_ARCH:append:arm = "${GLIBC_64BIT_TIME_FLAGS}"
> -TARGET_CC_ARCH:append:armeb = "${GLIBC_64BIT_TIME_FLAGS}"
> -TARGET_CC_ARCH:append:mipsarcho32 = "${GLIBC_64BIT_TIME_FLAGS}"
> -TARGET_CC_ARCH:append:powerpc = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
> -TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
> +GLIBC_64BIT_TIME_FLAGS             = ""
> +GLIBC_64BIT_TIME_FLAGS:arm         = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
> +GLIBC_64BIT_TIME_FLAGS:armeb       = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
> +GLIBC_64BIT_TIME_FLAGS:mipsarcho32 = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
> +GLIBC_64BIT_TIME_FLAGS:powerpc     = \
> +    "${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64', '', d)}"
> +GLIBC_64BIT_TIME_FLAGS:x86         = \
> +    "${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64', '', d)}"

Apologies, but this is not simpler or better or more readable.
Repeating "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" multiple times
should really be avoided.

What prompted this patch specifically?

Alex


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
  2024-07-24 17:20 ` [OE-core] " Alexander Kanavin
@ 2024-07-24 19:31   ` Tom Hochstein
  2024-07-24 19:33   ` Tom Hochstein
  1 sibling, 0 replies; 6+ messages in thread
From: Tom Hochstein @ 2024-07-24 19:31 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

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


On 7/24/2024 12:20 PM, Alexander Kanavin wrote:
> On Wed, 24 Jul 2024 at 19:10, Tom Hochstein via lists.openembedded.org
> <tom.hochstein=oss.nxp.com@lists.openembedded.org>  wrote:
>> -GLIBC_64BIT_TIME_FLAGS = " -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +TARGET_CC_ARCH += "${GLIBC_64BIT_TIME_FLAGS}"
>>
>>   # Only needed for some 32-bit architectures, some relatively newer
>>   # architectures do not need it ( e.g. riscv32 )
>> -TARGET_CC_ARCH:append:arm = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:armeb = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:mipsarcho32 = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:powerpc ="${@bb.utils.contains('TUNE_FEATURES', 'm32', 
>> '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
>> -TARGET_CC_ARCH:append:x86 ="${@bb.utils.contains('TUNE_FEATURES', 'm32', 
>> '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
>> +GLIBC_64BIT_TIME_FLAGS             = ""
>> +GLIBC_64BIT_TIME_FLAGS:arm         = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:armeb       = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:mipsarcho32 = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:powerpc     = \
>> +"${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 
>> -D_FILE_OFFSET_BITS=64', '', d)}"
>> +GLIBC_64BIT_TIME_FLAGS:x86         = \
>> +"${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 
>> -D_FILE_OFFSET_BITS=64', '', d)}"
> Apologies, but this is not simpler or better or more readable.
> Repeating "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" multiple times
> should really be avoided.
>
> What prompted this patch specifically?
Thanks, Alex.

We are working to configure the builds of certain recipes so the 
non-Y2038-compliant code is avoided, e.g, by disabling oss-output in 
pulseaudio. That leads to needing to restore GLIBC_64BIT_TIME_FLAGS, 
which for pulseaudio is cleared here in time64.inc (on scarthgap, not on 
master):

GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""

When you do that override from another layer as one would normally 
expect, i.e., without the leading space, you get the error:

cc1: error: '-Werror=format-security-D_TIME_BITS=64': no option 
'-Wformat-security-D_TIME_BITS=64'

The problem is the design in time64.inc does impose an extra requirement 
for an external assignment to include a leading space. The redesign is 
meant to remove that requirement on the leading space, i.e., to simplify 
the usage of the variable by external users.

Tom


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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
  2024-07-24 17:20 ` [OE-core] " Alexander Kanavin
  2024-07-24 19:31   ` Tom Hochstein
@ 2024-07-24 19:33   ` Tom Hochstein
  2024-07-24 20:29     ` Alexander Kanavin
  1 sibling, 1 reply; 6+ messages in thread
From: Tom Hochstein @ 2024-07-24 19:33 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

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


On 7/24/2024 12:20 PM, Alexander Kanavin wrote:
> On Wed, 24 Jul 2024 at 19:10, Tom Hochstein via lists.openembedded.org
> <tom.hochstein=oss.nxp.com@lists.openembedded.org>  wrote:
>> -GLIBC_64BIT_TIME_FLAGS = " -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +TARGET_CC_ARCH += "${GLIBC_64BIT_TIME_FLAGS}"
>>
>>   # Only needed for some 32-bit architectures, some relatively newer
>>   # architectures do not need it ( e.g. riscv32 )
>> -TARGET_CC_ARCH:append:arm = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:armeb = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:mipsarcho32 = "${GLIBC_64BIT_TIME_FLAGS}"
>> -TARGET_CC_ARCH:append:powerpc ="${@bb.utils.contains('TUNE_FEATURES', 'm32', 
>> '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
>> -TARGET_CC_ARCH:append:x86 ="${@bb.utils.contains('TUNE_FEATURES', 'm32', 
>> '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
>> +GLIBC_64BIT_TIME_FLAGS             = ""
>> +GLIBC_64BIT_TIME_FLAGS:arm         = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:armeb       = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:mipsarcho32 = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
>> +GLIBC_64BIT_TIME_FLAGS:powerpc     = \
>> +"${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 
>> -D_FILE_OFFSET_BITS=64', '', d)}"
>> +GLIBC_64BIT_TIME_FLAGS:x86         = \
>> +"${@bb.utils.contains('TUNE_FEATURES', 'm32', '-D_TIME_BITS=64 
>> -D_FILE_OFFSET_BITS=64', '', d)}"
> Apologies, but this is not simpler or better or more readable.
> Repeating "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" multiple times
> should really be avoided.
>
> What prompted this patch specifically?

Thanks, Alex.

We are working to configure the builds of certain recipes so the 
non-Y2038-compliant code is avoided, e.g, by disabling oss-output in 
pulseaudio. That leads to needing to restore GLIBC_64BIT_TIME_FLAGS, 
which for pulseaudio is cleared in this file (on scarthgap, not on master):

GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""

When you do that override as one would normally expect, i.e., without 
the leading space, you get the error:

cc1: error: '-Werror=format-security-D_TIME_BITS=64': no option 
'-Wformat-security-D_TIME_BITS=64'

The problem is the design in time64.inc does impose an extra requirement 
for an external assignment to include a leading space. The redesign is 
meant to remove that requirement on the leading space, i.e., to simplify 
the usage of the variable by external users.

Tom

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
  2024-07-24 19:33   ` Tom Hochstein
@ 2024-07-24 20:29     ` Alexander Kanavin
  2024-07-24 21:20       ` Alexandre Belloni
  0 siblings, 1 reply; 6+ messages in thread
From: Alexander Kanavin @ 2024-07-24 20:29 UTC (permalink / raw)
  To: Tom Hochstein; +Cc: openembedded-core

On Wed, 24 Jul 2024 at 21:33, Tom Hochstein <tom.hochstein@oss.nxp.com> wrote:

> Thanks, Alex.
>
> We are working to configure the builds of certain recipes so the non-Y2038-compliant code is avoided, e.g, by disabling oss-output in pulseaudio. That leads to needing to restore GLIBC_64BIT_TIME_FLAGS, which for pulseaudio is cleared in this file (on scarthgap, not on master):
>
> GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""
>
> When you do that override as one would normally expect, i.e., without the leading space, you get the error:
>
> cc1: error: '-Werror=format-security-D_TIME_BITS=64': no option '-Wformat-security-D_TIME_BITS=64'
>
> The problem is the design in time64.inc does impose an extra requirement for an external assignment to include a leading space. The redesign is meant to remove that requirement on the leading space, i.e., to simplify the usage of the variable by external users.

Thanks for the background. I guess the only real objection I have is
about repeating the flags multiple times. They should be defined once,
so we probably need an extra intermediate variable that would be set
with target overrides.

Alex


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage
  2024-07-24 20:29     ` Alexander Kanavin
@ 2024-07-24 21:20       ` Alexandre Belloni
  0 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2024-07-24 21:20 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Tom Hochstein, openembedded-core

On 24/07/2024 22:29:45+0200, Alexander Kanavin wrote:
> On Wed, 24 Jul 2024 at 21:33, Tom Hochstein <tom.hochstein@oss.nxp.com> wrote:
> 
> > Thanks, Alex.
> >
> > We are working to configure the builds of certain recipes so the non-Y2038-compliant code is avoided, e.g, by disabling oss-output in pulseaudio. That leads to needing to restore GLIBC_64BIT_TIME_FLAGS, which for pulseaudio is cleared in this file (on scarthgap, not on master):
> >
> > GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""
> >
> > When you do that override as one would normally expect, i.e., without the leading space, you get the error:
> >
> > cc1: error: '-Werror=format-security-D_TIME_BITS=64': no option '-Wformat-security-D_TIME_BITS=64'
> >
> > The problem is the design in time64.inc does impose an extra requirement for an external assignment to include a leading space. The redesign is meant to remove that requirement on the leading space, i.e., to simplify the usage of the variable by external users.
> 
> Thanks for the background. I guess the only real objection I have is
> about repeating the flags multiple times. They should be defined once,
> so we probably need an extra intermediate variable that would be set
> with target overrides.

Then why not simply have this intermediate variable contain the initial
GLIBC_64BIT_TIME_FLAGS value with the leading space so recipe can simply
use it to restore the value?

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-07-24 21:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-24 17:08 [PATCH] time64.inc: Simplify GLIBC_64BIT_TIME_FLAGS usage Tom Hochstein
2024-07-24 17:20 ` [OE-core] " Alexander Kanavin
2024-07-24 19:31   ` Tom Hochstein
2024-07-24 19:33   ` Tom Hochstein
2024-07-24 20:29     ` Alexander Kanavin
2024-07-24 21:20       ` Alexandre Belloni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox