This is a know issue with that old GCC v4.8. 

Perhaps we should add some code checking for the GCC version macros in the complex workaround implementation file to skip offending lines (or everything) ?


On Sun, 16 May 2021 at 18:41, Junchao Zhang <junchao.zhang@gmail.com> wrote:
I checked and found PetscComplex was correctly defined to std::complex, and clang-6.0 was also fine to use GNU C++ library.  The problem was the gcc-4.8.5 C++ library clang picked up was a bit old, which conformed to C++11. However clang-6.0's default uses C++14, which changed the rules of constexpr.
Workarounds include:
  • define PETSC_SKIP_CXX_COMPLEX_FIX  in the offending *.cxx file.
  • add CXXOPTFLAGS=-std=c++11 
  • update clang-6.o or gcc-4.8.5 (of 2015) on that machine. 
--Junchao Zhang


On Fri, May 14, 2021 at 10:42 AM Satish Balay <balay@mcs.anl.gov> wrote:
You can login to: isdp001.cels.anl.gov - using your MCS account credentials [and then setup ~/.ssh/authorized_keys]

Satish

On Fri, 14 May 2021, Junchao Zhang wrote:

> Satish, how to access this machine? I want to know why complex is screwed
> up.
>
> --Junchao Zhang
>
>
> On Thu, May 13, 2021 at 7:08 PM Matthew Knepley <knepley@gmail.com> wrote:
>
> > Nope. I will use your fix.
> >
> >   Thanks,
> >
> >      Matt
> >
> > On Thu, May 13, 2021 at 7:55 PM Matthew Knepley <knepley@gmail.com> wrote:
> >
> >> I am going to try just including petscsys.h and see if it works.
> >>
> >>   Thanks,
> >>
> >>      Matt
> >>
> >> On Thu, May 13, 2021 at 6:23 PM Satish Balay <balay@mcs.anl.gov> wrote:
> >>
> >>> This gets the build going...
> >>>
> >>> diff --git a/src/sys/dll/cxx/demangle.cxx b/src/sys/dll/cxx/demangle.cxx
> >>> index 31810ea15f..793a97d285 100644
> >>> --- a/src/sys/dll/cxx/demangle.cxx
> >>> +++ b/src/sys/dll/cxx/demangle.cxx
> >>> @@ -1,3 +1,4 @@
> >>> +#define PETSC_SKIP_COMPLEX
> >>>  #include <petsc/private/petscimpl.h>
> >>>
> >>>  #ifdef PETSC_HAVE_CXXABI_H
> >>>
> >>> Satish
> >>>
> >>> On Thu, 13 May 2021, Satish Balay wrote:
> >>>
> >>> > >         CXX arch-ci-linux-clang-avx/obj/sys/dll/cxx/demangle.o
> >>> >
> >>> > It is built with a c++ compiler - so __cplusplus should be defined.
> >>> [PETSC_HAVE_CXXABI is not defined]
> >>> >
> >>> > Do you need to build this sourcefile file in a clanguage=C build?
> >>> >
> >>> > I'm not sure if a c++/complex build  is checked with this compiler.
> >>> >
> >>> > [eventhough its clang build - I see the compiler is using system
> >>> incldues aka from gcc-4.8.5 - so perhaps some things don't work?]
> >>> >
> >>> > One option is to add the following to this sourcefile:
> >>> >
> >>> > #define PETSC_SKIP_COMPLEX
> >>> >
> >>> > Satish
> >>> >
> >>> >
> >>> > On Thu, 13 May 2021, Matthew Knepley wrote:
> >>> >
> >>> > > In this CI run (linux-clang-avg):
> >>> > >
> >>> > >   https://gitlab.com/petsc/petsc/-/jobs/1260342204
> >>> > >
> >>> > > The compile fails building a C++ file, demangle.cxx. It fails at the
> >>> first
> >>> > > line,
> >>> > > including <petsc/private/petscimpl.h>, down in petscsystypes.h. It
> >>> bombs
> >>> > > during the definition of complex because it looks like the compiler
> >>> is not
> >>> > > defining __cplusplus, and thus takes the wrong branch. Is this what
> >>> is
> >>> > > happening?
> >>> > > I cannot access this machine.
> >>> > >
> >>> > >   Thanks,
> >>> > >
> >>> > >       Matt
> >>> > >
> >>> > >
> >>> >
> >>> >
> >>>
> >>>
> >>
> >> --
> >> What most experimenters take for granted before they begin their
> >> experiments is infinitely more interesting than any results to which their
> >> experiments lead.
> >> -- Norbert Wiener
> >>
> >> https://www.cse.buffalo.edu/~knepley/
> >> <http://www.cse.buffalo.edu/~knepley/>
> >>
> >
> >
> > --
> > What most experimenters take for granted before they begin their
> > experiments is infinitely more interesting than any results to which their
> > experiments lead.
> > -- Norbert Wiener
> >
> > https://www.cse.buffalo.edu/~knepley/
> > <http://www.cse.buffalo.edu/~knepley/>
> >
>



--
Lisandro Dalcin
============
Senior Research Scientist
Extreme Computing Research Center (ECRC)
King Abdullah University of Science and Technology (KAUST)
http://ecrc.kaust.edu.sa/