mirror of
https://git.yoctoproject.org/poky
synced 2026-04-14 17:02:22 +02:00
time64.inc: annotate and clean up recipe-specific Y2038 exceptions
Additionally: - drop pseudo from INSANE_SKIP for 32bit time API check (pseudo passes the check; it's not clear where the issue may have been) - move rust exceptions to the cargo class, as the problem is common across the ecosystem, and needs to be fixed in the libc crate. (From OE-Core rev: d3d406bf636e579c17708b408e11c12d252533ee) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
de230d6abd
commit
9400e5bd58
@@ -174,3 +174,15 @@ oe_cargo_fix_env () {
|
||||
EXTRA_OECARGO_PATHS ??= ""
|
||||
|
||||
EXPORT_FUNCTIONS do_configure
|
||||
|
||||
# The culprit for this setting is the libc crate,
|
||||
# which as of Jun 2023 calls directly into 32 bit time functions in glibc,
|
||||
# bypassing all of glibc provisions to choose the right Y2038-safe functions. As
|
||||
# rust components statically link with that crate, pretty much everything
|
||||
# is affected, and so there's no point trying to have recipe-specific
|
||||
# INSANE_SKIP entries.
|
||||
#
|
||||
# Upstream ticket and PR:
|
||||
# https://github.com/rust-lang/libc/issues/3223
|
||||
# https://github.com/rust-lang/libc/pull/3175
|
||||
INSANE_SKIP:append = " 32bit-time"
|
||||
|
||||
@@ -27,22 +27,25 @@ GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = ""
|
||||
GLIBC_64BIT_TIME_FLAGS:pn-pipewire = ""
|
||||
# Pulseaudio override certain LFS64 functions e.g. open64 and intentionally
|
||||
# undefines _FILE_OFFSET_BITS, which wont work when _TIME_BITS=64 is set
|
||||
# See https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/3770
|
||||
GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""
|
||||
# Undefines _FILE_OFFSET_BITS on purpose in
|
||||
# libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
|
||||
GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = ""
|
||||
# https://github.com/strace/strace/issues/250
|
||||
GLIBC_64BIT_TIME_FLAGS:pn-strace = ""
|
||||
|
||||
INSANE_SKIP:append:pn-cargo = " 32bit-time"
|
||||
# Caused by the flags exceptions above
|
||||
INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-glibc = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-glibc-tests = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-librsvg = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-libstd-rs = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-pseudo = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-pulseaudio = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-python3-bcrypt = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-python3-cryptography = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-rust = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-rust-hello-world = " 32bit-time"
|
||||
|
||||
# Strace has tests that call 32 bit API directly, which is fair enough, e.g.
|
||||
# /usr/lib/strace/ptest/tests/ioctl_termios uses 32-bit api 'ioctl'
|
||||
INSANE_SKIP:append:pn-strace = " 32bit-time"
|
||||
|
||||
# Additionally cargo_common class (i.e. everything written in rust)
|
||||
# has the same INSANE_SKIP setting.
|
||||
# Please check the comment in meta/classes-recipe/cargo_common.bbclass
|
||||
# for information about why, and the overall Y2038 situation in rust.
|
||||
|
||||
Reference in New Issue
Block a user