Re: [PATCH 1/2] conifigure: add a crosscompile path for scanf_cv_alloc_modifier

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Karel Zak | 2012-02-28 15:12:26 [+0100]:

>> @@ -387,6 +387,8 @@ AC_CACHE_VAL([scanf_cv_alloc_modifier],
>>        [scanf_cv_alloc_modifier=as],
>>        [scanf_cv_alloc_modifier=no]
>>      )
>> +    ,
>> +    [scanf_cv_alloc_modifier=no]
>>    )
>>  )
>
> Applied, thanks.
>
> ...but it means that you will compile the package without libmount.
> Is it expected? In the next release fsck will depend on the library,
> we have new mount and umount, ....
>
> Is it really true that your glibc is without %as / %ms ?

So I've been greping for have_scanf_alloc_modifier and did not find a
user. Well now that you mentioned, I see a user in configure.... So now
we need something like a proper fix hmm.... What about this:
- you don't want %as as it is non-standard evil
- %m is good enough an available since glibc 2.7. Why should someone
  take old glibc (2.7 was released Thu Oct 18 00:09:32 2007 +0000) and
  new util-linux?
- uClibc seems not to support it. The code seems to be behind an ifdef
  and the define itseld is hidden in a comment

If this is okay then what about:

>From 921475f1b5f11699bc311c0f1c94d5da830edfd6 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Date: Wed, 29 Feb 2012 22:26:19 +0100
Subject: [PATCH] build-sys: make the crosscompile path for
 scanf_cv_alloc_modifier clever

My earlier assumption was that scanf_cv_alloc_modifier is unused. This
is not true as pointed out by Karel since it used befoe checking for
libmount. Argh. So instead saying no I add a test to check for glibc
>= 2.7 which provides %m. As of uClibc v0.9.32-rc3 the situation looks
the following:
| git grep _M_SPEC__
|libc/stdio/_vfprintf.c:/* #define __UCLIBC_HAS_PRINTF_M_SPEC__ */
|libc/stdio/_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/_vfprintf.c:# ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/_vfprintf.c:# endif /* __UCLIBC_HAS_PRINTF_M_SPEC__ */
|libc/stdio/_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/old_vfprintf.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__
|libc/stdio/perror.c:#ifdef __UCLIBC_HAS_PRINTF_M_SPEC__

And other libc user have to bring their own stuff.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
---
 configure.ac |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index b40a636..0a3016b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -384,7 +384,23 @@ AC_CACHE_VAL([scanf_cv_alloc_modifier],
       [scanf_cv_alloc_modifier=no]
     )
     ,
-    [scanf_cv_alloc_modifier=no]
+
+    [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+     #include <stdio.h>
+
+     #ifdef __GLIBC__
+
+     #if !(__GLIBC_PREREQ(2, 7))
+     #error %m is not available
+     #endif
+
+     #else
+
+     #error Your C-library is not supported.
+     #endif
+     ])],
+    [scanf_cv_alloc_modifier=ms],
+    [scanf_cv_alloc_modifier=no])]
   )
 )
 
-- 
1.7.9

Which results in:
| grep -E "%m|mount" log
|checking scanf string alloc modifiers... (%ms) yes
|config.status: creating libmount/Makefile
|config.status: creating libmount/docs/Makefile
|config.status: creating libmount/docs/version.xml
|config.status: creating libmount/mount.pc
|config.status: creating libmount/src/Makefile
|config.status: creating libmount/src/libmount.h
|config.status: creating mount/Makefile


>
>    Karel
>

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux