The changes for the math.h errors don't work, because @GNULIB_MATHL@ is 
defined to 1, so the whole condition evaluates to true.

I forgot to mention that there's also a problem determining the 
dependencies of getdate.y.  The command fails with the following error:

getdate.y:116: error: negative width in bit-field 
'verify_error_if_negative_size__'

I believe this is because time_t is unsigned on QNX.




Bruno Haible <br...@clisp.org> 
07/25/2009 02:19 AM

To
mkr...@beckman.com
cc
bug-gnulib@gnu.org
Subject
Re: errors on QNX 6.4.1






[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  <br...@clisp.org>

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

--- 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  <br...@clisp.org>

                 * 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 <mkr...@beckman.com>.

--- 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@ || !...@have_decl_cosl@
+#if @GNULIB_MATHL@ || (!...@have_decl_cosl@ && !defined cosl)
 extern long double cosl (long double x);
 #endif
 #if !...@gnulib_mathl@ && defined GNULIB_POSIXCHECK
@@ -237,7 +237,7 @@
 #endif
 
 
-#if @GNULIB_MATHL@ || !...@have_decl_logl@
+#if @GNULIB_MATHL@ || (!...@have_decl_logl@ && !defined logl)
 extern long double logl (long double x);
 #endif
 #if !...@gnulib_mathl@ && defined GNULIB_POSIXCHECK
@@ -292,7 +292,7 @@
 #endif
 
 
-#if @GNULIB_MATHL@ || !...@have_decl_sinl@
+#if @GNULIB_MATHL@ || (!...@have_decl_sinl@ && !defined sinl)
 extern long double sinl (long double x);
 #endif
 #if !...@gnulib_mathl@ && defined GNULIB_POSIXCHECK


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

Bruno


The server  made the following annotations                           

---------------------------------------------------------------------------------

This message contains information that may be privileged or confidential and is 
the property of Beckman Coulter, Inc.  It is intended only for the person to 
whom it is addressed.  If you are not the intended recipient, you are not 
authorized to read, print, retain, copy, disseminate, distribute or use this 
message or any part thereof.  If you receive this message in error, please 
notify the sender immediately and delete all copies of this message.

---------------------------------------------------------------------------------

Reply via email to