[GRASS-dev] [GRASS GIS] #3273: Fails to build with GCC 7

#3273: Fails to build with GCC 7
-----------------------+-------------------------
Reporter: sebastic | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.2.1
Component: Compiling | Version: 7.2.0
Keywords: | CPU: x86-64
Platform: Linux |
-----------------------+-------------------------
As reported by Matthias Klose in [https://bugs.debian.org/853433 Debian
Bug #853433]:
> The package fails to build in a test rebuild on at least amd64 with
> gcc-7/g++-7, but succeeds to build with gcc-6/g++-6. The
> severity of this report may be raised before the buster release.
> There is no need to fix this issue in time for the stretch release.
>
> The full build log can be found at:
>
http://people.debian.org/~doko/logs/gcc7-20170126/grass_7.2.0-1_unstable_gcc7.log
> The last lines of the build log are at the end of this report.
>
> To build with GCC 7, either set CC=gcc-7 CXX=g++-7 explicitly,
> or install the gcc, g++, gfortran, ... packages from experimental.
>
> apt-get -t=experimental install g++
>
> Common build failures are new warnings resulting in build failures with
> -Werror turned on, or new/dropped symbols in Debian symbols files.
> For other C/C++ related build failures see the porting guide at
> http://gcc.gnu.org/gcc-7/porting_to.html
>
> {{{
> [...]
> can't handle line breaks in <dt>...</dt>
> make[6]: Leaving directory '/<<PKGBUILDDIR>>/man'
> make[5]: Leaving directory '/<<PKGBUILDDIR>>/man'
> make[4]: Leaving directory '/<<PKGBUILDDIR>>/man'
> make[4]: Entering directory '/<<PKGBUILDDIR>>/macosx'
> make[4]: Leaving directory '/<<PKGBUILDDIR>>/macosx'
> make[4]: Entering directory '/<<PKGBUILDDIR>>/mswindows'
> make[4]: Nothing to be done for 'first'.
> make[4]: Leaving directory '/<<PKGBUILDDIR>>/mswindows'
> make[3]: Leaving directory '/<<PKGBUILDDIR>>'
> make /<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/AUTHORS
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/CHANGES
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/CITING
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/COPYING
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/GPL.TXT
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/INSTALL
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/REQUIREMENTS.html
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/contributors.csv
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/contributors_extra.csv
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/translators.csv
> make[3]: Entering directory '/<<PKGBUILDDIR>>'
> /usr/bin/install -c -m 644 AUTHORS /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/AUTHORS
> /usr/bin/install -c -m 644 CHANGES /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/CHANGES
> /usr/bin/install -c -m 644 CITING /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/CITING
> /usr/bin/install -c -m 644 COPYING /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/COPYING
> /usr/bin/install -c -m 644 GPL.TXT /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/GPL.TXT
> /usr/bin/install -c -m 644 INSTALL /<<PKGBUILDDIR>>/dist.x86_64-pc-
linux-gnu/INSTALL
> /usr/bin/install -c -m 644 REQUIREMENTS.html
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/REQUIREMENTS.html
> /usr/bin/install -c -m 644 contributors.csv
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/contributors.csv
> /usr/bin/install -c -m 644 contributors_extra.csv
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/contributors_extra.csv
> /usr/bin/install -c -m 644 translators.csv /<<PKGBUILDDIR>>/dist.x86_64
-pc-linux-gnu/translators.csv
> make[3]: Leaving directory '/<<PKGBUILDDIR>>'
> make manifests
> make[3]: Entering directory '/<<PKGBUILDDIR>>'
> make[3]: Nothing to be done for 'manifests'.
> make[3]: Leaving directory '/<<PKGBUILDDIR>>'
> GRASS GIS 7.2.0 exported compilation log
> --------------------------------------------------
> Started compilation: Fri Jan 27 12:58:35 UTC 2017
> --
> Errors in:
> /<<PKGBUILDDIR>>/lib/python/ctypes
> --
> In case of errors please change into the directory with error and run
'make'.
> If you get multiple errors, you need to deal with them in the order they
> appear in the error log. If you get an error building a library, you
will
> also get errors from anything which uses the library.
> --
> Finished compilation: Fri Jan 27 12:59:36 UTC 2017
> Makefile:57: recipe for target 'default' failed
> make[2]: *** [default] Error 1
> make[2]: Leaving directory '/<<PKGBUILDDIR>>'
> dh_auto_build: make -j64 returned exit code 2
> debian/rules:110: recipe for target 'build-arch-stamp' failed
> make[1]: *** [build-arch-stamp] Error 2
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
> debian/rules:37: recipe for target 'build' failed
> make: *** [build] Error 2
> dpkg-buildpackage: error: debian/rules build gave error exit status 2
> }}}

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
------------------------+-------------------------
  Reporter: sebastic | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: normal | Milestone: 7.2.1
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
------------------------+-------------------------
Changes (by sebastic):

* Attachment "grass_7.2.0-1_unstable_gcc7.log.gz" added.

Full build log

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
------------------------+-------------------------
  Reporter: sebastic | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: normal | Milestone: 7.2.1
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
------------------------+-------------------------

Comment (by wenzeslaus):

This is probably the error message:

{{{
ValueError: invalid literal for int() with base 8:
'08420217248550443400745280086994171'
}}}

and in context:

{{{
GISRC=/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/demolocation/.grassrc72
GISBASE=/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu
PATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/scripts:$PATH"
PYTHONPATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/etc/python:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/gui/wxpython:$PYTHONPATH"
LD_LIBRARY_PATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/scripts:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/lib:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/lib:" LC_ALL=C
./ctypesgen.py --cpp "gcc -E -Wdate-time -D_FORTIFY_SOURCE=2
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-D__GLIBC_HAVE_LONG_LONG" -lgrass_rowio.7.2.0
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include/grass/rowio.h
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include/grass/defs/rowio.h -o
OBJ.x86_64-pc-linux-gnu/rowio.py
...
GISRC=/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/demolocation/.grassrc72
GISBASE=/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu
PATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/scripts:$PATH"
PYTHONPATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/etc/python:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/gui/wxpython:$PYTHONPATH"
LD_LIBRARY_PATH="/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/bin:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/scripts:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/lib:/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/lib:" LC_ALL=C
./ctypesgen.py --cpp "gcc -E -Wdate-time -D_FORTIFY_SOURCE=2
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-D__GLIBC_HAVE_LONG_LONG" -lgrass_nviz.7.2.0
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include/grass/nviz.h
/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include/grass/defs/nviz.h -o
OBJ.x86_64-pc-linux-gnu/nviz.py
python -t -3 -m py_compile /<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/etc/python/grass/lib/__init__.py
python -t -3 -m py_compile /<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/etc/python/grass/lib/ctypes_preamble.py
python -t -3 -m py_compile /<<PKGBUILDDIR>>/dist.x86_64-pc-linux-
gnu/etc/python/grass/lib/ctypes_loader.py
Status: Preprocessing /tmp/tmpWXgDtl.h
Status: gcc -E -Wdate-time -D_FORTIFY_SOURCE=2
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-I/<<PKGBUILDDIR>>/dist.x86_64-pc-linux-gnu/include
-D__GLIBC_HAVE_LONG_LONG -U __GNUC__ -dD "-Dinline=" "-D__inline__="
"-D__extension__=" "-D_Bool=uint8_t" "-D__const=const" "-D__asm__(x)="
"-D__asm(x)=" "-DCTYPESGEN=1" /tmp/tmpWXgDtl.h
Traceback (most recent call last):
   File "./ctypesgen.py", line 139, in <module>
     descriptions = ctypesgencore.parser.parse(options.headers, options)
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/__init__.py",
line 22, in parse
     parser.parse()
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/datacollectingparser.py",
line 74, in parse
     ctypesparser.CtypesParser.parse(self, fname, None)
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/cparser.py", line
120, in parse
     self.preprocessor_parser.parse(filename)
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/preprocessor.py",
line 218, in parse
     token = self.lexer.token()
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/preprocessor.py",
line 63, in token
     result = lex.Lexer.token(self)
   File "/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/lex.py",
line 355, in token
     newtok = func(tok)
   File
"/<<PKGBUILDDIR>>/lib/python/ctypes/ctypesgencore/parser/pplexer.py", line
262, in t_ANY_int
     g1 = str(long(g1, 8))
ValueError: invalid literal for int() with base 8:
'08420217248550443400745280086994171'
Makefile:102: recipe for target 'OBJ.x86_64-pc-linux-gnu/rowio.py' failed
make[8]: *** [OBJ.x86_64-pc-linux-gnu/rowio.py] Error 1
make[8]: *** Waiting for unfinished jobs....
}}}

I don't know how to find where this is coming from. My attempt:

{{{
> grep -IrnE 8420217248550443400745280086994171
/usr/include/boost/multiprecision/cpp_dec_float.hpp:2426:
cpp_dec_float("1.08420217248550443400745280086994171142578125000...000e-19"),
}}}

Since it is in multiple files and the number is not in GRASS GIS source
code, it is coming from a library header. Indeed `0842...` is not octal.
Do we need new ctypes or is there something strange in some header?

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:1&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
-----------------------------+-------------------------
  Reporter: Bas Couwenberg | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: normal | Milestone: 7.2.2
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
-----------------------------+-------------------------

Comment (by Bas Couwenberg):

GCC 7 is now the default compiler in Debian causing the issue to become
Release Critical which will trigger to automatic removal of the package
from Debian testing (and by extension from the next stable release) when
the issue remains unfixed.

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:3&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
-----------------------------+-------------------------
  Reporter: Bas Couwenberg | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: critical | Milestone: 7.2.2
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
-----------------------------+-------------------------
Changes (by martinl):

* priority: normal => critical

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:4&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
-----------------------------+-------------------------
  Reporter: Bas Couwenberg | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: critical | Milestone: 7.2.2
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
-----------------------------+-------------------------

Comment (by mlennert):

Replying to [comment:1 wenzeslaus]:
> This is probably the error message:
>
> {{{
> ValueError: invalid literal for int() with base 8:
'08420217248550443400745280086994171'
> }}}
>

Isn't this the same issue in #3331 (where it was apparently fixed) ?

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:5&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
-----------------------------+-------------------------
  Reporter: Bas Couwenberg | Owner: grass-dev@…
      Type: defect | Status: new
  Priority: critical | Milestone: 7.2.2
Component: Compiling | Version: 7.2.0
Resolution: | Keywords:
       CPU: x86-64 | Platform: Linux
-----------------------------+-------------------------

Comment (by neteler):

Replying to [comment:5 mlennert]:
> Replying to [comment:1 wenzeslaus]:
> > This is probably the error message:
> >
> > {{{
> > ValueError: invalid literal for int() with base 8:
'08420217248550443400745280086994171'
> > }}}
> >
>
> Isn't this the same issue in #3331 (where it was apparently fixed) ?

Yes, 7.2.2 will ship the fix. (also 7.0.6 if we ever release it...)

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:6&gt;
GRASS GIS <https://grass.osgeo.org>

#3273: Fails to build with GCC 7
-----------------------------+-------------------------
  Reporter: Bas Couwenberg | Owner: grass-dev@…
      Type: defect | Status: closed
  Priority: critical | Milestone: 7.2.2
Component: Compiling | Version: 7.2.0
Resolution: fixed | Keywords:
       CPU: x86-64 | Platform: Linux
-----------------------------+-------------------------
Changes (by Bas Couwenberg):

* status: new => closed
* resolution: => fixed

Comment:

Confirmed fixed in 7.2.2-rc1.

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3273#comment:7&gt;
GRASS GIS <https://grass.osgeo.org>