diff options
Diffstat (limited to 'package/coreutils')
| -rw-r--r-- | package/coreutils/coreutils-01-spawn-uclibc.patch | 43 | ||||
| -rw-r--r-- | package/coreutils/coreutils-02-fix-timer-time-m4.patch | 36 | ||||
| -rw-r--r-- | package/coreutils/coreutils.mk | 3 |
3 files changed, 82 insertions, 0 deletions
diff --git a/package/coreutils/coreutils-01-spawn-uclibc.patch b/package/coreutils/coreutils-01-spawn-uclibc.patch new file mode 100644 index 0000000000..a67921bf20 --- /dev/null +++ b/package/coreutils/coreutils-01-spawn-uclibc.patch @@ -0,0 +1,43 @@ +From 71cf16e435bf5db64abcf81a9dc6dc36ce37d58d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com> +Date: Tue, 14 Jan 2014 16:59:07 +0000 +Subject: [PATCH] spawn: fix link error on uclibc + +* m4/spawn_h.m4 (gl_HAVE_POSIX_SPAWN): use AC_SEARCH_LIBS, +to incorporate -lrt if needed (on uclibc for example). +* modules/posix_spawn: Reference the substituted LIB. + +Patch status: suggested by gnulib maintainer +(http://article.gmane.org/gmane.comp.lib.gnulib.bugs/33610), not in upstream +gnulib yet + +This issue should be fixed in coreutils version 8.23. + +Signed-off-by: Baruch Siach <baruch@tkos.co.il> +--- + +diff --git a/m4/spawn_h.m4 b/m4/spawn_h.m4 +index 87fe122..3eb835c 100644 +--- a/m4/spawn_h.m4 ++++ b/m4/spawn_h.m4 +@@ -64,7 +64,15 @@ AC_DEFUN([gl_HAVE_POSIX_SPAWN], + dnl once only, before all statements that occur in other macros. + AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) + +- AC_CHECK_FUNCS_ONCE([posix_spawn]) ++ LIB_POSIX_SPAWN= ++ AC_SUBST([LIB_POSIX_SPAWN]) ++ gl_saved_libs=$LIBS ++ AC_SEARCH_LIBS([posix_spawn], [rt], ++ [test "$ac_cv_search_posix_spawn" = "none required" || ++ LIB_POSIX_SPAWN=$ac_cv_search_posix_spawn]) ++ AC_CHECK_FUNCS([posix_spawn]) ++ LIBS=$gl_saved_libs ++ + if test $ac_cv_func_posix_spawn != yes; then + HAVE_POSIX_SPAWN=0 + fi + +-- +1.7.7.6 + diff --git a/package/coreutils/coreutils-02-fix-timer-time-m4.patch b/package/coreutils/coreutils-02-fix-timer-time-m4.patch new file mode 100644 index 0000000000..3b4d81b0f1 --- /dev/null +++ b/package/coreutils/coreutils-02-fix-timer-time-m4.patch @@ -0,0 +1,36 @@ +Fix thread detection with uClibc in timer_time.m4 + +The timer_time.m4 gl_TIMER_TIME function determines which libraries +need to be linked to get access to the timer function, generally -lrt +for Linux systems. On platforms where threads are used, librt +typically uses thread functions from libpthread. + +However, the test to determine whether the platform has thread or not +is incorrect: it assumes that if the C library is uClibc, then threads +are not available. This is actually not true: uClibc has configurable +thread support, and when thread support is available, librt calls +libpthread functions. + +This is important when static linking is used, because otherwise only +-lrt is used at link time, which fails because librt calls undefined +thread functions. Both -lrt and -lpthread must be passed. + +This problem is fixed by making the uClibc thread detection a bit +smarter, thanks to the usage of the __HAS_NO_THREADS__ macro defined +in <bits/uClibc_config.h>, which itself is included by <features.h>. + +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> + +Index: b/m4/timer_time.m4 +=================================================================== +--- a/m4/timer_time.m4 ++++ b/m4/timer_time.m4 +@@ -28,7 +28,7 @@ + #include <features.h> + #ifdef __GNU_LIBRARY__ + #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)) \ +- && !defined __UCLIBC__ ++ && !(__UCLIBC__ && __HAS_NO_THREADS__) + Thread emulation available + #endif + #endif diff --git a/package/coreutils/coreutils.mk b/package/coreutils/coreutils.mk index e0e9d80b39..72087523f4 100644 --- a/package/coreutils/coreutils.mk +++ b/package/coreutils/coreutils.mk @@ -10,6 +10,9 @@ COREUTILS_SOURCE = coreutils-$(COREUTILS_VERSION).tar.xz COREUTILS_LICENSE = GPLv3+ COREUTILS_LICENSE_FILES = COPYING +# patching gnulib .m4 file +COREUTILS_AUTORECONF = YES + # If both coreutils and busybox are selected, make certain coreutils # wins the fight over who gets to have their utils actually installed. ifeq ($(BR2_PACKAGE_BUSYBOX),y) |

