All of lore.kernel.org
 help / color / mirror / Atom feed
From: Radu Moisan <radu.moisan@intel.com>
To: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH][RFC] coreutils: Upgrade to upstream version 8.17
Date: Fri, 17 Aug 2012 16:06:43 +0300	[thread overview]
Message-ID: <502E41E3.4020903@intel.com> (raw)
In-Reply-To: <1345208727-3029-1-git-send-email-radu.moisan@intel.com>

[-- Attachment #1: Type: text/plain, Size: 8568 bytes --]

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 <radu.moisan@intel.com>
> ---
>   .../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 <raj.khem@gmail.com>
>   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"
>   


[-- Attachment #2: Type: text/html, Size: 11175 bytes --]

  reply	other threads:[~2012-08-17 13:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-17 13:05 [PATCH][RFC] coreutils: Upgrade to upstream version 8.17 Radu Moisan
2012-08-17 13:06 ` Radu Moisan [this message]
2012-08-17 15:55 ` Saul Wold
2012-08-20  6:04   ` Radu Moisan
2012-08-20 16:45     ` Saul Wold
2012-08-21  8:46       ` Radu Moisan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=502E41E3.4020903@intel.com \
    --to=radu.moisan@intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.