diff options
| author | Alexander Kanavin <alex.kanavin@gmail.com> | 2023-06-28 17:00:43 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-06-28 23:02:50 +0100 |
| commit | 9400e5bd58cc1e73c2cf4e35ac0829d792e969ad (patch) | |
| tree | c5a4b27bca1b4b2d156a7ada86ac2bba72bd673f | |
| parent | de230d6abdf29be37bd279a1733fe3ee010bdc22 (diff) | |
| download | poky-9400e5bd58cc1e73c2cf4e35ac0829d792e969ad.tar.gz | |
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>
| -rw-r--r-- | meta/classes-recipe/cargo_common.bbclass | 12 | ||||
| -rw-r--r-- | meta/conf/distro/include/time64.inc | 19 |
2 files changed, 23 insertions, 8 deletions
diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass index 1ca0be471c..db54826ddb 100644 --- a/meta/classes-recipe/cargo_common.bbclass +++ b/meta/classes-recipe/cargo_common.bbclass | |||
| @@ -174,3 +174,15 @@ oe_cargo_fix_env () { | |||
| 174 | EXTRA_OECARGO_PATHS ??= "" | 174 | EXTRA_OECARGO_PATHS ??= "" |
| 175 | 175 | ||
| 176 | EXPORT_FUNCTIONS do_configure | 176 | EXPORT_FUNCTIONS do_configure |
| 177 | |||
| 178 | # The culprit for this setting is the libc crate, | ||
| 179 | # which as of Jun 2023 calls directly into 32 bit time functions in glibc, | ||
| 180 | # bypassing all of glibc provisions to choose the right Y2038-safe functions. As | ||
| 181 | # rust components statically link with that crate, pretty much everything | ||
| 182 | # is affected, and so there's no point trying to have recipe-specific | ||
| 183 | # INSANE_SKIP entries. | ||
| 184 | # | ||
| 185 | # Upstream ticket and PR: | ||
| 186 | # https://github.com/rust-lang/libc/issues/3223 | ||
| 187 | # https://github.com/rust-lang/libc/pull/3175 | ||
| 188 | INSANE_SKIP:append = " 32bit-time" | ||
diff --git a/meta/conf/distro/include/time64.inc b/meta/conf/distro/include/time64.inc index a0cee4fad6..bc0c72226b 100644 --- a/meta/conf/distro/include/time64.inc +++ b/meta/conf/distro/include/time64.inc | |||
| @@ -27,22 +27,25 @@ GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = "" | |||
| 27 | GLIBC_64BIT_TIME_FLAGS:pn-pipewire = "" | 27 | GLIBC_64BIT_TIME_FLAGS:pn-pipewire = "" |
| 28 | # Pulseaudio override certain LFS64 functions e.g. open64 and intentionally | 28 | # Pulseaudio override certain LFS64 functions e.g. open64 and intentionally |
| 29 | # undefines _FILE_OFFSET_BITS, which wont work when _TIME_BITS=64 is set | 29 | # undefines _FILE_OFFSET_BITS, which wont work when _TIME_BITS=64 is set |
| 30 | # See https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/3770 | ||
| 30 | GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = "" | 31 | GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = "" |
| 32 | # Undefines _FILE_OFFSET_BITS on purpose in | ||
| 33 | # libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp | ||
| 31 | GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = "" | 34 | GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = "" |
| 32 | # https://github.com/strace/strace/issues/250 | 35 | # https://github.com/strace/strace/issues/250 |
| 33 | GLIBC_64BIT_TIME_FLAGS:pn-strace = "" | 36 | GLIBC_64BIT_TIME_FLAGS:pn-strace = "" |
| 34 | 37 | ||
| 35 | INSANE_SKIP:append:pn-cargo = " 32bit-time" | 38 | # Caused by the flags exceptions above |
| 36 | INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" | 39 | INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" |
| 37 | INSANE_SKIP:append:pn-glibc = " 32bit-time" | 40 | INSANE_SKIP:append:pn-glibc = " 32bit-time" |
| 38 | INSANE_SKIP:append:pn-glibc-tests = " 32bit-time" | 41 | INSANE_SKIP:append:pn-glibc-tests = " 32bit-time" |
| 39 | INSANE_SKIP:append:pn-librsvg = " 32bit-time" | ||
| 40 | INSANE_SKIP:append:pn-libstd-rs = " 32bit-time" | ||
| 41 | INSANE_SKIP:append:pn-pseudo = " 32bit-time" | ||
| 42 | INSANE_SKIP:append:pn-pulseaudio = " 32bit-time" | 42 | INSANE_SKIP:append:pn-pulseaudio = " 32bit-time" |
| 43 | INSANE_SKIP:append:pn-python3-bcrypt = " 32bit-time" | 43 | |
| 44 | INSANE_SKIP:append:pn-python3-cryptography = " 32bit-time" | 44 | # Strace has tests that call 32 bit API directly, which is fair enough, e.g. |
| 45 | INSANE_SKIP:append:pn-rust = " 32bit-time" | 45 | # /usr/lib/strace/ptest/tests/ioctl_termios uses 32-bit api 'ioctl' |
| 46 | INSANE_SKIP:append:pn-rust-hello-world = " 32bit-time" | ||
| 47 | INSANE_SKIP:append:pn-strace = " 32bit-time" | 46 | INSANE_SKIP:append:pn-strace = " 32bit-time" |
| 48 | 47 | ||
| 48 | # Additionally cargo_common class (i.e. everything written in rust) | ||
| 49 | # has the same INSANE_SKIP setting. | ||
| 50 | # Please check the comment in meta/classes-recipe/cargo_common.bbclass | ||
| 51 | # for information about why, and the overall Y2038 situation in rust. | ||
