scylladb / seastar

High performance server-side application framework
http://seastar.io
Apache License 2.0
8.15k stars 1.53k forks source link

configure error: The CXX_STANDARD property on target "seastar_perf_testing" contained an invalid value: "2a". #977

Open choleraehyq opened 2 years ago

choleraehyq commented 2 years ago

Hi! I tried to build seastar in WSL2 following README , but got a strange error when ./configure.py --mode=release:

$ ./configure.py --mode=release
-- Found Boost: /usr/include (found suitable version "1.71.0", minimum required is "1.64")
-- Found Boost: /usr/include (found suitable version "1.71.0", minimum required is "1.64.0") found components: filesystem program_options thread unit_test_framework chrono date_time atomic
-- Could NOT find dpdk (missing: dpdk_INCLUDE_DIR dpdk_PMD_VMXNET3_UIO_LIBRARY dpdk_PMD_I40E_LIBRARY dpdk_PMD_IXGBE_LIBRARY dpdk_PMD_E1000_LIBRARY dpdk_PMD_BNXT_LIBRARY dpdk_PMD_RING_LIBRARY dpdk_PMD_CXGBE_LIBRARY dpdk_PMD_ENA_LIBRARY dpdk_PMD_ENIC_LIBRARY dpdk_PMD_NFP_LIBRARY dpdk_PMD_QEDE_LIBRARY dpdk_RING_LIBRARY dpdk_KVARGS_LIBRARY dpdk_MEMPOOL_LIBRARY dpdk_MEMPOOL_RING_LIBRARY dpdk_HASH_LIBRARY dpdk_CMDLINE_LIBRARY dpdk_MBUF_LIBRARY dpdk_CFGFILE_LIBRARY dpdk_EAL_LIBRARY dpdk_ETHDEV_LIBRARY dpdk_NET_LIBRARY dpdk_TIMER_LIBRARY dpdk_PCI_LIBRARY dpdk_BUS_PCI_LIBRARY dpdk_BUS_VDEV_LIBRARY dpdk_PMD_FM10K_LIBRARY dpdk_PMD_SFC_EFX_LIBRARY)
-- Configuring done
CMake Error in CMakeLists.txt:
  The CXX_STANDARD property on target "seastar_perf_testing" contained an
  invalid value: "2a".

CMake Generate step failed.  Build files cannot be regenerated correctly.
Traceback (most recent call last):
  File "./configure.py", line 237, in <module>
    configure_mode(mode)
  File "./configure.py", line 234, in configure_mode
    subprocess.check_call(ARGS, shell=False, cwd=dir)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '-G', 'Ninja', '../..', '-DCMAKE_BUILD_TYPE=RelWithDebInfo', '-DCMAKE_C_COMPILER=gcc', '-DCMAKE_CXX_COMPILER=g++', '-DCMAKE_INSTALL_PREFIX=/usr/local', '-DSeastar_API_LEVEL=6', '-DSeastar_SCHEDULING_GROUPS_COUNT=16', '-DSeastar_EXCLUDE_TESTS_FROM_ALL=no', '-DSeastar_EXCLUDE_APPS_FROM_ALL=no', '-DSeastar_EXCLUDE_DEMOS_FROM_ALL=no', '-DSeastar_CXX_FLAGS=', '-DSeastar_LD_FLAGS=', '-DSeastar_CXX_DIALECT=gnu++2a', '-DSeastar_DPDK=no', '-DSeastar_DPDK_MACHINE=native', '-DSeastar_HWLOC=yes', '-DSeastar_ALLOC_FAILURE_INJECTION=DEFAULT', '-DSeastar_TASK_BACKTRACE=no', '-DSeastar_ALLOC_PAGE_SIZE=no', '-DSeastar_SPLIT_DWARF=no', '-DSeastar_HEAP_PROFILING=no', '-DSeastar_DEFERRED_ACTION_REQUIRE_NOEXCEPT=yes', '-DSeastar_UNUSED_RESULT_ERROR=no', '-DSeastar_DEBUG_SHARED_PTR=default']' returned non-zero exit status 1.

My g++ version is 9.3.0, which support -std=gnu++2a.

$ g++ --version
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 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 sure how to eliminate that configure error, could someone give me help? Thanks.

masscry commented 2 years ago

Hello!

I had the same problem.

Try this:

./configure.py --mode=release --c++-dialect=gnu++17

It looks like that CMake do not know flag such flag as 2a in CXX_STANDARD variable.

At least CMake 3.16 do not know https://cmake.org/cmake/help/v3.16/prop_tgt/CXX_STANDARD.html

Also, there is a problem with .

Looks like few tweaks in configure script and guards on includes may fix building on gcc 9.

masscry commented 2 years ago

Some dirty fixes to build master branch on gcc 9.3 and CMake 3.16 (aka with Ubuntu 20.04)

I need some help to make proper solution, because gcc 9.3 has buggy attributes support + no concepts.

Also stale version of CryptoPP has no byte definition in namespace.

choleraehyq commented 2 years ago

@masscry

./configure.py --mode=release --c++-dialect=gnu++17

This resolves my problem! Thanks.

ouyun commented 2 years ago

@masscry

./configure.py --mode=release --c++-dialect=gnu++17

This resolves my problem! Thanks.

me too, thank you @masscry.