The problem:
The new version of coreutils, adds use of canonicalize_file_name()
function defined in canonicalize.h The problem I encountered is at
compile time, the function is redefined to rpl_canonicalize_file_name by
means of a macro, and I get an undefined reference error.
//-- stdlib.in.h
#if @GNULIB_CANONICALIZE_FILE_NAME@
# if @REPLACE_CANONICALIZE_FILE_NAME@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define canonicalize_file_name rpl_canonicalize_file_name
# endif
I've looked for REPLACE_CANONICALIZE_FILE_NAME and found out that is
being set in configure, which is generated from canonicalize.m4
# canonicalize.m4 serial 24
dnl Copyright (C) 2003-2007, 2009-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Provides canonicalize_file_name and canonicalize_filename_mode, but does
# not provide or fix realpath.
AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE],
[
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
if test $ac_cv_func_canonicalize_file_name = no; then
HAVE_CANONICALIZE_FILE_NAME=0
elif test "$gl_cv_func_realpath_works" != yes; then
REPLACE_CANONICALIZE_FILE_NAME=1
fi
])
# Provides canonicalize_file_name and realpath.
AC_DEFUN([gl_CANONICALIZE_LGPL],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE])
if test $ac_cv_func_canonicalize_file_name = no; then
HAVE_CANONICALIZE_FILE_NAME=0
if test $ac_cv_func_realpath = no; then
HAVE_REALPATH=0
elif test "$gl_cv_func_realpath_works" != yes; then
REPLACE_REALPATH=1
fi
elif test "$gl_cv_func_realpath_works" != yes; then
REPLACE_CANONICALIZE_FILE_NAME=1
REPLACE_REALPATH=1
fi
])
Then I followed gl_cv_func_realpath_works and found it to be set to
"guessing yes"
# canonicalize.m4 serial 24
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu*) gl_cv_func_realpath_works="guessing yes" ;;
# If we don't know, assume the worst.
*) gl_cv_func_realpath_works="guessing no" ;;
esac
Being set this way it looked to me like it was always assumed to be "no"
and thus assumed real path didn't work. In fact, I could not make a
logic for "guessing yes" and "quessing no" because to me it looks like
they are not verified against and thus I'm missing the reason of their
usage. However, I'm assuming I missed something because they are used
quite heavily.
I don't have experience with autoconf so I may have missed the "right
way" to fix this.
Any comments well apreciated.
radu
On 08/17/2012 04:05 PM, Radu Moisan wrote:
Signed-off-by: Radu Moisan <[email protected]>
---
.../coreutils-8.17/realpath-works-yes.patch | 13 +++++++++++++
.../remove-gets.patch | 20 +++++++++++---------
.../remove-usr-local-lib-from-m4.patch | 0
.../{coreutils_8.14.bb => coreutils_8.17.bb} | 9 +++++----
4 files changed, 29 insertions(+), 13 deletions(-)
create mode 100644
meta/recipes-core/coreutils/coreutils-8.17/realpath-works-yes.patch
rename meta/recipes-core/coreutils/{coreutils-8.14 =>
coreutils-8.17}/remove-gets.patch (47%)
rename meta/recipes-core/coreutils/{coreutils-8.14 =>
coreutils-8.17}/remove-usr-local-lib-from-m4.patch (100%)
rename meta/recipes-core/coreutils/{coreutils_8.14.bb => coreutils_8.17.bb}
(91%)
diff --git
a/meta/recipes-core/coreutils/coreutils-8.17/realpath-works-yes.patch
b/meta/recipes-core/coreutils/coreutils-8.17/realpath-works-yes.patch
new file mode 100644
index 0000000..6bbe7ee
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-8.17/realpath-works-yes.patch
@@ -0,0 +1,13 @@
+Index: coreutils-8.17/m4/canonicalize.m4
+===================================================================
+--- coreutils-8.17.orig/m4/canonicalize.m4 2012-05-08 12:05:23.000000000
+0300
++++ coreutils-8.17/m4/canonicalize.m4 2012-08-17 14:20:22.000000000 +0300
+@@ -95,7 +95,7 @@
+ [gl_cv_func_realpath_works=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+- *-gnu*) gl_cv_func_realpath_works="guessing yes" ;;
++ *-gnu*) gl_cv_func_realpath_works="yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_realpath_works="guessing no" ;;
+ esac
diff --git a/meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch
b/meta/recipes-core/coreutils/coreutils-8.17/remove-gets.patch
similarity index 47%
rename from meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch
rename to meta/recipes-core/coreutils/coreutils-8.17/remove-gets.patch
index 4f61c92..eaadf7e 100644
--- a/meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch
+++ b/meta/recipes-core/coreutils/coreutils-8.17/remove-gets.patch
@@ -3,19 +3,21 @@ use gets iff its defined. eglibc 2.16 removed gets
Signed-off-by: Khem Raj <[email protected]>
Upstream-Status: Pending
-Index: coreutils-8.14/lib/stdio.in.h
+Index: coreutils-8.17/lib/stdio.in.h
===================================================================
---- coreutils-8.14.orig/lib/stdio.in.h 2011-09-24 04:20:48.000000000 -0700
-+++ coreutils-8.14/lib/stdio.in.h 2012-07-03 10:36:19.886296576 -0700
-@@ -713,11 +713,13 @@
- _GL_CXXALIAS_SYS (gets, char *, (char *s));
- # undef gets
+--- coreutils-8.17.orig/lib/stdio.in.h
++++ coreutils-8.17/lib/stdio.in.h
+@@ -698,13 +698,14 @@ _GL_WARN_ON_USE (getline, "getline is un
+ "use gnulib module getline for portability");
# endif
+ #endif
+-
+# if defined gets
- _GL_CXXALIASWARN (gets);
/* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
+ so any use of gets warrants an unconditional warning; besides, C11
+ removed it. */
+ #undef gets
+ #if HAVE_RAW_DECL_GETS
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+# endif
#endif
diff --git
a/meta/recipes-core/coreutils/coreutils-8.14/remove-usr-local-lib-from-m4.patch
b/meta/recipes-core/coreutils/coreutils-8.17/remove-usr-local-lib-from-m4.patch
similarity index 100%
rename from
meta/recipes-core/coreutils/coreutils-8.14/remove-usr-local-lib-from-m4.patch
rename to
meta/recipes-core/coreutils/coreutils-8.17/remove-usr-local-lib-from-m4.patch
diff --git a/meta/recipes-core/coreutils/coreutils_8.14.bb
b/meta/recipes-core/coreutils/coreutils_8.17.bb
similarity index 91%
rename from meta/recipes-core/coreutils/coreutils_8.14.bb
rename to meta/recipes-core/coreutils/coreutils_8.17.bb
index 9a714a9..9d8170e 100644
--- a/meta/recipes-core/coreutils/coreutils_8.14.bb
+++ b/meta/recipes-core/coreutils/coreutils_8.17.bb
@@ -6,8 +6,8 @@ HOMEPAGE = "http://www.gnu.org/software/coreutils/"
BUGTRACKER = "http://debbugs.gnu.org/coreutils"
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
-
file://src/ls.c;startline=5;endline=16;md5=e1a509558876db58fb6667ba140137ad"
-PR = "r5"
+
file://src/ls.c;startline=5;endline=16;md5=30c84fd2942cad91041e5e2dcd19ced6"
+PR = "r0"
DEPENDS = "gmp libcap"
DEPENDS_virtclass-native = ""
@@ -16,9 +16,10 @@ inherit autotools gettext
SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
file://remove-usr-local-lib-from-m4.patch \
file://remove-gets.patch \
+ file://realpath-works-yes.patch \
"
-SRC_URI[md5sum] = "bcb135ce553493a45aba01b39eb3920a"
-SRC_URI[sha256sum] =
"0d120817c19292edb19e92ae6b8eac9020e03d51e0af9cb116cf82b65d18b02d"
+SRC_URI[md5sum] = "bbda656ce8ca2c6903948f9faa204ba3"
+SRC_URI[sha256sum] =
"4e075a0d238072a5bd079046e1f024dc5e0d9133d43a39c73d0b86b0d1e2c5e5"
EXTRA_OECONF_virtclass-native = "--without-gmp"
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core