← Back to team overview

maria-developers team mailing list archive

Re: b88e98df9da: C++11 experiment: check if all builders support it

 

Hi, Sergei!

On Tue, Jul 03, 2018 at 07:53:39PM +0200, Sergei Golubchik wrote:
> Hi, Sergey!
> 
> > Current status is: all staging builders pass, except for Ubuntu Precise.
> 
> But we no longer build on precise, do we?
Not anymore. Though, as discussed before, it also fails to build on labrador
and my push to bb-10.4-release was built only on few platforms.

> 
> Any followup MDEVs after this one is pushed?
> Like migrate atomics ops to C++11 or something?
No MDEVs, but it should happen eventually. I'd like to wait a bit with
implementing this (may be till first release) so that we're more or less
certain we won't have to revert it.

> 
> > revision-id: b88e98df9daa586bd6ed1f5908ededaa65a6e464 (mariadb-10.3.6-16-gb88e98df9da)
> > parent(s): 9988a423d229730b252942b7fa066d1591b7eca9
> > author: Sergey Vojtovich
> > committer: Sergey Vojtovich
> > timestamp: 2018-06-04 12:41:18 +0400
> > message:
> > 
> > C++11 experiment: check if all builders support it
> > 
> > diff --git a/CMakeLists.txt b/CMakeLists.txt
> > index 76b0817f8c7..efeae3d1ca5 100644
> > --- a/CMakeLists.txt
> > +++ b/CMakeLists.txt
> > @@ -89,6 +89,14 @@ ELSE()
> >  ENDIF()
> >  PROJECT(${MYSQL_PROJECT_NAME})
> >  
> > +IF(CMAKE_VERSION VERSION_LESS "3.1")
> > +  IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
> > +    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
> 
> Why gnu++11 and not c++11 ?
I don't recall if there was a reason for this, most probably I just copied it
from somewhere.

> And why not for clang?
No special reason, I just didn't see any problems with clang so far. Though I
can't say I did try hard.

According to manual, clang enables many c++11 features by default and atomic
operations seem to be eneabled as well (if I read it correctly).

> 
> > +  ENDIF()
> > +ELSE()
> > +  SET(CMAKE_CXX_STANDARD 11)
> 
> I'd expect this to mean c++11, not gnu++11.
I see your point. We should change the above to c++11 as well to be consistent.

> 
> > +ENDIF()
> > +
> >  SET(CPACK_PACKAGE_NAME "MariaDB")
> >  SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB: a very fast and robust SQL database server")
> >  SET(CPACK_PACKAGE_URL "http://mariadb.org";)
> > diff --git a/storage/tokudb/PerconaFT/portability/toku_crash.cc b/storage/tokudb/PerconaFT/portability/toku_crash.cc
> > index 0af85342a99..297cc29d9ca 100644
> > --- a/storage/tokudb/PerconaFT/portability/toku_crash.cc
> > +++ b/storage/tokudb/PerconaFT/portability/toku_crash.cc
> > @@ -70,7 +70,7 @@ run_gdb(pid_t parent_pid, const char *gdb_path) {
> >             "-ex", "thread apply all bt",
> >             "-ex", "thread apply all bt full",
> >             exe_buf, pid_buf,
> > -           NULL);
> > +           (char*) NULL);
> 
> Why's that?
storage/tokudb/PerconaFT/portability/toku_crash.cc: In function ‘void run_gdb(pid_t, const char*)’:
storage/tokudb/PerconaFT/portability/toku_crash.cc:73:16: error: missing sentinel in function call [-Werror=format=]
            NULL);
                ^

And then man execlp specifies this sentinel as "/* (char  *) NULL */".

Thanks,
Sergey


Follow ups

References