From 2068a5c60cef0d14d048381c6164a5ba8ee1d292 Mon Sep 17 00:00:00 2001 From: André Draszik Date: Fri, 10 Jan 2020 17:15:40 +0000 Subject: coreutils: fix build with 64bit time_t on 32bit arches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | ../../coreutils-6.9/lib/mktime.c: In function 'ydhms_diff': | ../../coreutils-6.9/lib/mktime.c:105:52: error: size of array 'a' is negative | 105 | #define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } | | ^ | ../../coreutils-6.9/lib/mktime.c:168:3: note: in expansion of macro 'verify' | 168 | verify (long_int_year_and_yday_are_wide_enough, | | ^~~~~~ coreutils tries to determine of mktime() from the c-library works fine, but when cross-compiling, it unconditionally assumes buggy behaviour, in which case it will use its own replacement implementation. These basically are tests for (g)libc implementation bugs that have existed in ancient times but aren't relevant anymore. The alternative implementation makes various assumptions which don't hold true (and doesn't compile anymore). While more recent versions of coreutils have fixed those assumptions, it's quite hard to update the code here without potential licensing issues. Given mktime() works fine in musl and glibc these days, we can work-around the issues by simply relying on the c-libraries mktime() implementation, avoiding all problems with coreutils' alternative implementation. I've veryfied this by running the tests both on my musl target, and my glibc (v2.29) host. This also reduces code-size slightly. The ac_cv_func_working_mktime variable here corresponds to the gl_cv_func_working_mktime variable in more recent versions of coreutils (gnulib), which is being set in oe-core in meta/site. Signed-off-by: André Draszik Signed-off-by: Ross Burton --- recipes-core/coreutils/coreutils_6.9.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes-core/coreutils/coreutils_6.9.bb b/recipes-core/coreutils/coreutils_6.9.bb index 080100d..f6017ec 100644 --- a/recipes-core/coreutils/coreutils_6.9.bb +++ b/recipes-core/coreutils/coreutils_6.9.bb @@ -33,7 +33,9 @@ SRC_URI[md5sum] = "c9607d8495f16e98906e7ed2d9751a06" SRC_URI[sha256sum] = "89c2895ad157de50e53298b22d91db116ee4e1dd3fdf4019260254e2e31497b0" EXTRA_OECONF += "ac_cv_func_getgroups_works=yes \ - ac_cv_func_strcoll_works=yes" + ac_cv_func_strcoll_works=yes \ + ac_cv_func_working_mktime=yes \ + " # acl is not a default feature # -- cgit v1.2.3-54-g00ecf