bug-gnulib
[Top][All Lists]
Advanced

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

Re: errors on QNX 6.4.1


From: Bruno Haible
Subject: Re: errors on QNX 6.4.1
Date: Sat, 25 Jul 2009 11:19:22 +0200
User-agent: KMail/1.9.9

[Re-adding bug-gnulib as CC.]
Matt Kraai wrote:
> When I ran
> 
> ./gnulib-tool --create-testdir --dir=/tmp/testdir csharpcomp fbufmode 
> fpurge freadable freadahead freading freadptr freadseek fseeko fseterr 
> fwritable
> 
> (which are the modules that mention QNX) and ran "make check", there 
> weren't any errors.

Thanks! That means that the extended I/O modules fully work on QNX.

> I tried creating a test directory with
> 
> ./gnulib-tool --create-testdir --dir=/tmp/testdir

This command creates a test directory comprising all gnulib modules.
It's likely to find some bugs, and you already have two of them:

> but when I ran make in the /tmp/testdir, it failed with the following 
> errors;
> 
> ./.prev-version: No such file or directory
> sed: can't read ./cfg.mk: No such file or directory
> make  all-recursive
> ./.prev-version: No such file or directory
> sed: can't read ./cfg.mk: No such file or directory

This is a bug in gnulib-tool and the maintainer-makefile module.
I'm committing this workaround:

2009-07-25  Bruno Haible  <address@hidden>

        * gnulib-tool (func_create_testdir, func_create_megatestdir): Exclude
        the maintainer-makefile module.
        Reported by Matt Kraai <address@hidden>.

--- gnulib-tool.orig    2009-07-25 11:10:25.000000000 +0200
+++ gnulib-tool 2009-07-25 11:08:45.000000000 +0200
@@ -3818,9 +3818,10 @@
   if test -z "$modules"; then
     # All modules together.
     # Except config-h, which breaks all modules which use HAVE_CONFIG_H.
+    # Except maintainer-makefile, which requires a cfg.mk file.
     # Except ftruncate, mountlist, which abort the configuration on mingw. 
FIXME.
     modules=`func_all_modules`
-    modules=`for m in $modules; do case $m in config-h | ftruncate | 
mountlist) ;; *) echo $m;; esac; done`
+    modules=`for m in $modules; do case $m in config-h | maintainer-makefile | 
ftruncate | mountlist) ;; *) echo $m;; esac; done`
   fi
   modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u`
 
@@ -4311,7 +4312,8 @@
   done
   # Then, all modules all together.
   # Except config-h, which breaks all modules which use HAVE_CONFIG_H.
-  allmodules=`for m in $allmodules; do if test $m != config-h; then echo $m; 
fi; done`
+  # Except maintainer-makefile, which requires a cfg.mk file.
+  allmodules=`for m in $allmodules; do if test $m != config-h && test $m != 
maintainer-makefile; then echo $m; fi; done`
   func_create_testdir "$megatestdir/ALL" "$allmodules"
   func_append megasubdirs "ALL"

> make[1]: Entering directory `/tmp/testdir'
> Making all in gllib
> make[2]: Entering directory `/tmp/testdir/gllib'
> make  all-recursive
> make[3]: Entering directory `/tmp/testdir/gllib'
> make[4]: Entering directory `/tmp/testdir/gllib'
> depbase=`echo printf-frexp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
>         gcc -std=gnu99 -DHAVE_CONFIG_H -DEXEEXT=\"\" -DEXEEXT=\"\" 
> -DNO_XMALLOC -DEXEEXT=\"\" -I. -I..  -I../intl -I/usr/local/include 
> -fvisibility=hidden -g -O2 -MT printf-frexp.o -MD -MP -MF $depbase.Tpo -c 
> -o printf-frexp.o printf-frexp.c &&\
>         mv -f $depbase.Tpo $depbase.Po
> In file included from printf-frexp.c:27:
> ./math.h:181: error: expected declaration specifiers or '...' before 
> numeric constant
> ./math.h:181: error: conflicting types for '_LSin'
> /usr/qnx641/target/qnx6/usr/include/ymath.h:171: error: previous 
> declaration of '_LSin' was here
> ./math.h:270: error: expected declaration specifiers or '...' before 
> numeric constant
> ./math.h:270: error: conflicting types for '_LLog'
> /usr/qnx641/target/qnx6/usr/include/ymath.h:170: error: previous 
> declaration of '_LLog' was here
> ./math.h:325: error: expected declaration specifiers or '...' before 
> numeric constant
> ./math.h:325: error: conflicting types for '_LSin'
> /usr/qnx641/target/qnx6/usr/include/ymath.h:171: error: previous 
> declaration of '_LSin' was here
> make[4]: *** [printf-frexp.o] Error 1

This is apparently due to some declarations in QNX's <math.h> header,
see <http://lists.boost.org/Archives/boost/2005/12/97593.php>:

  #define cosl(x) _LSin(x, 1)
  #define coshl(x) _LCosh(x, 1)
  #define logl(x) _LLog(x, 0)
  #define log10l(x) _LLog(x, 1)
  #define sinl(x) _LSin(x, 0)
  #define sinhl(x) _LSinh(x, 1)

I'm applying this fix:

2009-07-25  Bruno Haible  <address@hidden>

        * lib/math.in.h (cosl, logl, sinl): Don't declare if they are already
        defined as macros. Needed on QNX 6.4.1.
        Reported by Matt Kraai <address@hidden>.

--- lib/math.in.h.orig  2009-07-25 11:16:18.000000000 +0200
+++ lib/math.in.h       2009-07-25 11:15:57.000000000 +0200
@@ -148,7 +148,7 @@
 #endif
 
 
-#if @GNULIB_MATHL@ || address@hidden@
+#if @GNULIB_MATHL@ || (address@hidden@ && !defined cosl)
 extern long double cosl (long double x);
 #endif
 #if address@hidden@ && defined GNULIB_POSIXCHECK
@@ -237,7 +237,7 @@
 #endif
 
 
-#if @GNULIB_MATHL@ || address@hidden@
+#if @GNULIB_MATHL@ || (address@hidden@ && !defined logl)
 extern long double logl (long double x);
 #endif
 #if address@hidden@ && defined GNULIB_POSIXCHECK
@@ -292,7 +292,7 @@
 #endif
 
 
-#if @GNULIB_MATHL@ || address@hidden@
+#if @GNULIB_MATHL@ || (address@hidden@ && !defined sinl)
 extern long double sinl (long double x);
 #endif
 #if address@hidden@ && defined GNULIB_POSIXCHECK


Thanks for these two reports. You can now retry the
"./gnulib-tool --create-testdir --dir=/tmp/testdir" command.

Bruno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]