groff
[Top][All Lists]
Advanced

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

Re: [groff] 1.22.4.rc4 - Final RC before official 1.22.4


From: Ingo Schwarze
Subject: Re: [groff] 1.22.4.rc4 - Final RC before official 1.22.4
Date: Fri, 30 Nov 2018 17:33:11 +0100
User-agent: Mutt/1.8.0 (2017-02-23)

Hi Bertrand,

Bertrand Garrigues wrote on Fri, Nov 30, 2018 at 01:00:59AM +0100:

> There were non-trivial changes since 1.22.4.rc3 but the build looks
> stable and everyone seems to agree that there are no more commits needed
> for 1.22.4 and that we can finalize the release.  So I've just made a
> 1.22.4.rc4 tag and pushed a tarball on the alpha ftp.

Thank your very much for your work on this release!

[...]
> 1.22.4.rc4 can be downloaded here:  https://alpha.gnu.org/gnu/groff/.
> To build it and install it:
> 
>   mkdir build
>   cd build
>   ../configure
>   make -j <number of cores>
>   sudo make install
> 
> A few checks can be done with:
> 
>   make check
> 
> To uninstall it just do 'make uninstall'.

Here are preliminary test results.  I'm sending this before my tests
are complete such that the problems i found so far are known as early
as possible.

On OpenBSD-current,

 * the build succeeds;
 * the build log looks sane as far a i studied it so far;
 * the software works as far as i tested so far;
 * the complete mandoc test suite succeeds.

However, there are problems on Oracle Solaris 11:

  address@hidden [unstable11s]:~/groff-1.22.4.rc4/build > uname -a
  SunOS unstable11s 5.11 11.3 sun4u sparc SUNW,SPARC-Enterprise

This is from ../configure output:

checking whether URW fonts in pfb format are available...
  grep: illegal option -- A
  Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
  no

I suspect that the reason for this failure is in m4/groff.m4:
  AC_DEFUN([GROFF_URW_FONTS],
    [AC_MSG_CHECKING([whether URW fonts in pfb format are available])
    _list_paths=`gs -h | grep -A 16 "Search path" | grep "^[ ]" | tr : ' ' `

Here, bare "grep" is used even though ../configure said this earlier:

  checking for grep that handles long lines and -e... /usr/bin/ggrep
  checking for egrep... /usr/bin/ggrep -E

Consequently, no URW fonts are found even though i see these files
on the system, among others:

  /opt/csw/share/texmf-dist/fonts/vf/urw/urwchancal/urwchancal.vf
  /opt/csw/share/texmf-dist/fonts/vf/vntex/urwvn
  /opt/csw/share/texmf-dist/fonts/vf/urw35vf
  /opt/csw/share/texmf-dist/fonts/tfm/urw35vf
  /opt/csw/share/texmf-dist/fonts/tfm/vntex/urwvn
  /opt/csw/share/texmf-dist/fonts/tfm/urw
  /opt/csw/share/texmf-dist/fonts/tfm/urw/urwchancal
  /opt/csw/share/texmf-dist/fonts/tfm/urw/urwchancal/urwchancal.tfm
  /opt/csw/share/texmf-dist/fonts/afm/vntex/urwvn
  /opt/csw/share/texmf-dist/fonts/afm/urw
  /opt/csw/share/texmf-dist/fonts/map/dvips/lithuanian/l7x-urwvn.map
  /opt/csw/share/texmf-dist/fonts/map/dvips/vntex/urwvn.map
  /opt/csw/share/texmf-dist/fonts/map/fontname/urw.map
  /opt/csw/share/texmf-dist/fonts/type1/vntex/urwvn
  /opt/csw/share/texmf-dist/fonts/type1/urw
  /opt/csw/share/fontconfig/conf.avail/30-urw-aliases.conf


What is potentially more serious is that "make" dies like this:

 ----- 8< ----- schnipp ----- >8 ----- 8< ----- schnapp ----- >8 -----

  CXX      src/libs/libgroff/libgroff_a-hypot.o
../src/libs/libgroff/hypot.cpp:24:30: error: ‘double hypot(double, double)’ 
conflicts with a previous declaration
   double hypot(double, double);
                              ^
In file included from /usr/gcc/7/include/c++/7.3.0/cmath:45:0,
                 from /usr/gcc/7/include/c++/7.3.0/math.h:36,
                 from ./lib/math.h:27,
                 from ../src/libs/libgroff/hypot.cpp:21:
/usr/gcc/7/lib/gcc/sparcv9-solaris2.11/7.3.0/include-fixed/math.h:202:15: note: 
previous declaration ‘double std::hypot(double, double)’
 extern double hypot __P((double, double));
               ^~~~~
../src/libs/libgroff/hypot.cpp: In function ‘double groff_hypot(double, 
double)’:
../src/libs/libgroff/hypot.cpp:29:29: error: call of overloaded ‘hypot(double&, 
double&)’ is ambiguous
   double result = hypot(x, y);
                             ^
../src/libs/libgroff/hypot.cpp:24:10: note: candidate: double hypot(double, 
double)
   double hypot(double, double);
          ^~~~~
In file included from /usr/gcc/7/include/c++/7.3.0/cmath:45:0,
                 from /usr/gcc/7/include/c++/7.3.0/math.h:36,
                 from ./lib/math.h:27,
                 from ../src/libs/libgroff/hypot.cpp:21:
/usr/gcc/7/lib/gcc/sparcv9-solaris2.11/7.3.0/include-fixed/math.h:202:15: note: 
candidate: double std::hypot(double, double)
 extern double hypot __P((double, double));
               ^~~~~
In file included from 
/usr/gcc/7/lib/gcc/sparcv9-solaris2.11/7.3.0/include-fixed/math.h:25:0,
                 from /usr/gcc/7/include/c++/7.3.0/cmath:45,
                 from /usr/gcc/7/include/c++/7.3.0/math.h:36,
                 from ./lib/math.h:27,
                 from ../src/libs/libgroff/hypot.cpp:21:
/usr/include/iso/math_c99.h:769:15: note: candidate: float std::hypot(float, 
float)
  inline float hypot(float __X, float __Y) { return __hypotf(__X, __Y); }
               ^~~~~
/usr/include/iso/math_c99.h:812:21: note: candidate: long double 
std::hypot(long double, long double)
  inline long double hypot(long double __X, long double __Y) {
                     ^~~~~
/usr/include/iso/math_c99.h:965:6: note: candidate: typename 
std::__math_impl::__promote_2<_Tp, _Up>::__type std::hypot(_Tp, _Up) [with _Tp 
= double; _Up = double; typename std::__math_impl::__promote_2<_Tp, 
_Up>::__type = double]
      hypot(_Tp __X, _Up __Y) {
      ^~~~~
*** Error code 1
The following command caused the error:
echo "  CXX     " src/libs/libgroff/libgroff_a-hypot.o;g++ -DHAVE_CONFIG_H -I. 
-I.. -I./src/include  -I../src/include  -I../lib  -I./src/include  -I./lib  
-D__GETOPT_PREFIX=groff_  -DENABLE_RELOCATABLE=1  
-DLIBDIR=\"/home/schwarze/Local/lib\"   -g -O2 -MT 
src/libs/libgroff/libgroff_a-hypot.o -MD -MP -MF 
src/libs/libgroff/.deps/libgroff_a-hypot.Tpo -c -o 
src/libs/libgroff/libgroff_a-hypot.o `test -f 'src/libs/libgroff/hypot.cpp' || 
echo '../'`src/libs/libgroff/hypot.cpp
make: Fatal error: Command failed for target 
`src/libs/libgroff/libgroff_a-hypot.o'
Current working directory /home/schwarze/groff-1.22.4.rc4/build
*** Error code 1
make: Fatal error: Command failed for target `all'

 ----- 8< ----- schnipp ----- >8 ----- 8< ----- schnapp ----- >8 -----


address@hidden [unstable11s]:~/groff-1.22.4.rc4/build > gcc --version
gcc (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I'm not all that experienced with C++, but as far as i understand,
there is a conflict between src/libs/libgroff/hypot.cpp and the
system <math.h>, likely caused by NEED_DECLARATION_HYPOT being set
even though it shouldn't.

I see this in ../configure output:

  checking whether hypot must be declared... yes

And this in config.log:

 ----- 8< ----- schnipp ----- >8 ----- 8< ----- schnapp ----- >8 -----

configure:20700: checking whether hypot must be declared
configure:20752: g++ -c -g -O2  conftest.cpp >&5
conftest.cpp: In function 'int main()':
conftest.cpp:162:22: error: overloaded function with no contextual type informat
ion
   char *p = (char *) hypot;
                      ^~~~~
configure:20752: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU Troff"
| #define PACKAGE_TARNAME "groff"
| #define PACKAGE_VERSION "1.22.4.rc4"
| #define PACKAGE_STRING "GNU Troff 1.22.4.rc4"
| #define PACKAGE_BUGREPORT "http://savannah.gnu.org/bugs/?group=groff";
| #define PACKAGE_URL "http://www.gnu.org/software/groff/";
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _DARWIN_C_SOURCE 1
| #define _GNU_SOURCE 1
| #define _NETBSD_SOURCE 1
| #define _OPENBSD_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
| #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
| #define __STDC_WANT_IEC_60559_DFP_EXT__ 1
| #define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
| #define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
| #define __STDC_WANT_LIB_EXT2__ 1
| #define __STDC_WANT_MATH_SPEC_FUNCS__ 1
| #define _TANDEM_SOURCE 1
| #define _HPUX_ALT_XOPEN_SOCKET_API 1
| #define PACKAGE "groff"
| #define VERSION "1.22.4.rc4"
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_STDINT_H_WITH_UINTMAX 1
| #define HAVE_INTTYPES_H_WITH_UINTMAX 1
| #define WORDS_BIGENDIAN 1
| #define CHECK_PRINTF_SAFE 1
| #define HAVE_SNPRINTF 1
| #define HAVE_SYMLINK 1
| #define HAVE_MPROTECT 1
| #define HAVE_ISWCNTRL 1
| #define HAVE_WCWIDTH 1
| #define HAVE_UNSIGNED_LONG_LONG_INT 1
| #define HAVE_LONG_LONG_INT 1
| #define HAVE_WCHAR_T 1
| #define HAVE_WINT_T 1
| #define HAVE_LIMITS_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_MATH_H 1
| #define HAVE_SYS_MMAN_H 1
| #define HAVE_WCHAR_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_WCTYPE_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_INTMAX_T 1
| #define DBL_EXPBIT0_WORD 0
| #define DBL_EXPBIT0_BIT 20
| #define HAVE_SNPRINTF 1
| #define HAVE_STRNLEN 1
| #define HAVE_WCSLEN 1
| #define HAVE_WCSNLEN 1
| #define HAVE_MBRTOWC 1
| #define HAVE_WCRTOMB 1
| #define HAVE_DECL__SNPRINTF 0
| #define HAVE_SNPRINTF_RETVAL_C99 1
| #define HAVE_DECL_ALARM 1
| #ifndef __sparc64__
| #define __sparc64__ 1
| #endif
| #ifndef __sparc64__
| #define __sparc64__ 1
| #endif
| #define FLT_EXPBIT0_WORD 0
| #define FLT_EXPBIT0_BIT 23
| #define HAVE_LANGINFO_CODESET 1
| #define HAVE_WORKING_O_NOATIME 1
| #define HAVE_WORKING_O_NOFOLLOW 1
| #define HAVE_DECL_GETC_UNLOCKED 1
| #define HAVE_MAP_ANONYMOUS 1
| #define HAVE_DECL_SNPRINTF 1
| #define restrict __restrict
| #define _USE_STD_STAT 1
| #define HAVE_DECL_VSNPRINTF 1
| #define HAVE_ALLOCA 1
| #define NEED_PRINTF_INFINITE_DOUBLE 1
| #define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
| #define NEED_PRINTF_DIRECTIVE_A 1
| #define HAVE_NL_LANGINFO 1
| #define NEED_PRINTF_DIRECTIVE_LS 1
| #define NEED_PRINTF_FLAG_ZERO 1
| #define REPLACE_FPRINTF_POSIX 1
| #define GNULIB_TEST_FPRINTF_POSIX 1
| #define HAVE_FREXP_IN_LIBC 1
| #define GNULIB_TEST_FREXP 1
| #define GNULIB_TEST_FREXPL 1
| #define HAVE_ISNAND_IN_LIBC 1
| #define HAVE_ISNANF_IN_LIBC 1
| #define HAVE_ISNANL_IN_LIBC 1
| #define GNULIB_TEST_MEMCHR 1
| #define HAVE_FREXP_IN_LIBC 1
| #define HAVE_LDEXP_IN_LIBC 1
| #define GNULIB_TEST_SIGNBIT 1
| #define HAVE_STDINT_H 1
| #define HAVE_SNPRINTF 1
| #define GNULIB_TEST_SNPRINTF 1
| #define GNULIB_SNPRINTF 1
| #define __USE_MINGW_ANSI_STDIO 1
| #define GNULIB_FSCANF 1
| #define GNULIB_SCANF 1
| #define HAVE_VSNPRINTF 1
| #define GNULIB_TEST_VSNPRINTF 1
| #define HAVE_TOWLOWER 1
| #define HAVE_DECL_WCWIDTH 1
| #define GNULIB_TEST_WCWIDTH 1
| #define HAVE_STDINT_H 1
| #define HAVE_STDDEF_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_MATH_H 1
| #define HAVE_SYS_TIME_H 1
| #define RET_TYPE_SRAND_IS_VOID 1
| /* end confdefs.h.  */
| 
| 
| 
| #include <stdio.h>
| #ifdef HAVE_STRING_H
| #include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| #include <strings.h>
| #endif
| #ifdef HAVE_STDLIB_H
| #include <stdlib.h>
| #endif
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #ifdef HAVE_UNISTD_H
| #include <unistd.h>
| #endif
| #ifdef HAVE_MATH_H
| #include <math.h>
| #endif
| 
| 
| int
| main ()
| {
| 
| 
| #ifndef hypot
|   char *p = (char *) hypot;
| #endif
| 
| 
|   ;
|   return 0;
| }
| 
configure:20760: result: yes

 ----- 8< ----- schnipp ----- >8 ----- 8< ----- schnapp ----- >8 -----

The message "overloaded function with no contextual type information" is
interesting.  If i read it correctly, is says that the test fails because
the test code is buggy, not because the systems headers are actually lacking
the hypot function prototype.

To me, this looks like a case of so-called compat code that actually
breaks compatibility rather than making anything better...

I shall continue investigation.

Yours,
  Ingo



reply via email to

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