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: mkraai
Subject: Re: errors on QNX 6.4.1
Date: Mon, 27 Jul 2009 11:23:16 -0700


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 <address@hidden>

07/25/2009 02:19 AM

To
address@hidden
cc
address@hidden
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  <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

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

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