apache / kvrocks

Apache Kvrocks is a distributed key value NoSQL database that uses RocksDB as storage engine and is compatible with Redis protocol.
https://kvrocks.apache.org/
Apache License 2.0
3.47k stars 452 forks source link

Kvrocks 2.1 build failed On CentOS 7.8 x86_64 #785

Closed corningsun closed 2 years ago

corningsun commented 2 years ago

Search before asking

Version

V2.1

git clone git@github.com:apache/incubator-kvrocks.git -b 2.1

Minimal reproduce step

upgrade cmake2 to cmake3

yum remove cmake -y wget https://cmake.org/files/v3.24/cmake-3.24.0-linux-x86_64.tar.gz tar -zxvf cmake-3.24.1.tar.gz cd cmake-3.24.1 yum install -y openssl-devel ./configure --prefix=/usr/local/cmake make && make install ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake cmake -version

build kvrocks 2.1

git clone git@github.com:apache/incubator-kvrocks.git -b 2.1 cd incubator-kvrocks/ yum install -y epel-release yum install -y git gcc gcc-c++ make cmake autoconf automake libtool which yum install -y libunwind-devel

nohup ./x.py build --ghproxy > build.log 2>&1 &

What did you expect to see?

build success

What did you see instead?

nohup: ignoring input
CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/jemalloc.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:50 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

configure: loading cache config.cache
configure: error: `CC' has changed since the previous run:
configure:   former value:  `'
configure:   current value: `/usr/bin/cc'
configure: error: `CXX' was set to `/usr/bin/c++' in the previous run
configure: error: in `/root/incubator-kvrocks/build/_deps/jemalloc-build':
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm config.cache' and start over
CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/gtest.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:56 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/glog.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:57 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Unwind: /usr/include (found version "1.2") 
CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/snappy.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:58 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/lz4.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:59 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/rocksdb.cmake:28 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:60 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found JeMalloc in /root/incubator-kvrocks/build/_deps/jemalloc-src
-- Found Snappy in /root/incubator-kvrocks/build/_deps/snappy-src
-- Found lz4 in /root/incubator-kvrocks/build/_deps/lz4-src
-- Could NOT find uring (missing: uring_LIBRARIES uring_INCLUDE_DIR) 
-- Enabling RTTI
-- ROCKSDB_PLUGINS: 
-- JNI library is disabled
CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/libevent.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:61 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Git: /usr/bin/git  
CMake Warning at build/_deps/libevent-src/CMakeLists.txt:1492 (message):
  The doxygen target will not support since doxygen command was not found!

-- 
--         ---( Libevent 2.1.11-stable )---
-- 
-- Available event backends: 
-- CMAKE_BINARY_DIR:         /root/incubator-kvrocks/build
-- CMAKE_CURRENT_BINARY_DIR: /root/incubator-kvrocks/build/_deps/libevent-build
-- CMAKE_SOURCE_DIR:         /root/incubator-kvrocks
-- CMAKE_CURRENT_SOURCE_DIR: /root/incubator-kvrocks/build/_deps/libevent-src
-- PROJECT_BINARY_DIR:       /root/incubator-kvrocks/build/_deps/libevent-build
-- PROJECT_SOURCE_DIR:       /root/incubator-kvrocks/build/_deps/libevent-src
-- CMAKE_MODULE_PATH:        /root/incubator-kvrocks/build/_deps/libevent-src/cmake/
-- CMAKE_COMMAND:            /usr/local/cmake/bin/cmake
-- CMAKE_ROOT:               /usr/local/cmake/share/cmake-3.24
-- CMAKE_SYSTEM:             Linux-3.10.0-1127.19.1.el7.x86_64
-- CMAKE_SYSTEM_NAME:        Linux
-- CMAKE_SYSTEM_VERSION:     3.10.0-1127.19.1.el7.x86_64
-- CMAKE_SYSTEM_PROCESSOR:   x86_64
-- CMAKE_SKIP_RPATH:         NO
-- CMAKE_VERBOSE_MAKEFILE:   FALSE
-- CMAKE_C_FLAGS:             -Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -Wstrict-prototypes -fno-strict-aliasing -Wmissing-prototypes -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Waddress -Wnormalized=id -Woverride-init -Wlogical-op -Wwrite-strings
-- CMAKE_BUILD_TYPE:         RelWithDebInfo
-- CMAKE_C_COMPILER:         /usr/bin/cc (id GNU, clang 0, GNUC 1)
-- CMAKE_AR:                 /usr/bin/ar
-- CMAKE_RANLIB:             /usr/bin/ranlib
-- 
CMake Warning (dev) at /usr/local/cmake/share/cmake-3.24/Modules/FetchContent.cmake:1264 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  cmake/utils.cmake:48 (FetchContent_Declare)
  cmake/utils.cmake:55 (FetchContent_DeclareWithMirror)
  cmake/lua.cmake:22 (FetchContent_DeclareGitHubWithMirror)
  CMakeLists.txt:62 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Git: /usr/bin/git (found version "1.8.3.1") 
CMake Error at CMakeLists.txt:91 (message):
  cannot find static library of libstdc++, please add
  ENABLE_STATIC_LIBSTDCXX=OFF to disable

-- Configuring incomplete, errors occurred!
See also "/root/incubator-kvrocks/build/CMakeFiles/CMakeOutput.log".
See also "/root/incubator-kvrocks/build/CMakeFiles/CMakeError.log".
Traceback (most recent call last):
  File "./x.py", line 221, in <module>
    args.func(args)
  File "./x.py", line 105, in build
    run([cmake, basedir, *cmake_options])
  File "./x.py", line 60, in run
    raise RuntimeError(err)
RuntimeError: 
failed to run: ['/usr/bin/cmake', PosixPath('/root/incubator-kvrocks'), '-DCMAKE_BUILD_TYPE=RelWithDebInfo', '-DDEPS_FETCH_PROXY=https://ghproxy.com/']
exit with code: 1
error message: None

Anything Else?


Performing C SOURCE FILE Test EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN failed with the following output:
Change Dir: /root/incubator-kvrocks/build/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_4b3e1/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_4b3e1.dir/build.make CMakeFiles/cmTC_4b3e1.dir/build
gmake[1]: Entering directory `/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_4b3e1.dir/src.c.o
/usr/bin/cc -DEVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN  -Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -Wstrict-prototypes -fno-strict-aliasing -Wmissing-prototypes -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Waddress -Wnormalized=id -Woverride-init -Wlogical-op -Wwrite-strings  -o CMakeFiles/cmTC_4b3e1.dir/src.c.o -c /root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c:6:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
 int main()
     ^
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c: In function ‘main’:
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c:8:42: error: ‘struct sockaddr_in6’ has no member named ‘sin_len’
   (void)sizeof(((struct sockaddr_in6 *)0)->sin_len);
                                          ^
gmake[1]: *** [CMakeFiles/cmTC_4b3e1.dir/src.c.o] Error 1
gmake[1]: Leaving directory `/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_4b3e1/fast] Error 2

Source file was:

#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>

int main()
{
  (void)sizeof(((struct sockaddr_in6 *)0)->sin_len);
  return 0;
}

Performing C SOURCE FILE Test EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY failed with the following output:
Change Dir: /root/incubator-kvrocks/build/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_fa186/fast && /usr/bin/gmake  -f CMakeFiles/cmTC_fa186.dir/build.make CMakeFiles/cmTC_fa186.dir/build
gmake[1]: Entering directory `/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_fa186.dir/src.c.o
/usr/bin/cc -DEVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY  -Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -Wstrict-prototypes -fno-strict-aliasing -Wmissing-prototypes -Winit-self -Wmissing-field-initializers -Wdeclaration-after-statement -Waddress -Wnormalized=id -Woverride-init -Wlogical-op -Wwrite-strings  -o CMakeFiles/cmTC_fa186.dir/src.c.o -c /root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c:6:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
 int main()
     ^
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c: In function ‘main’:
/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp/src.c:8:46: error: ‘struct sockaddr_storage’ has no member named ‘__ss_family’
   (void)sizeof(((struct sockaddr_storage *)0)->__ss_family);
                                              ^
gmake[1]: *** [CMakeFiles/cmTC_fa186.dir/src.c.o] Error 1
gmake[1]: Leaving directory `/root/incubator-kvrocks/build/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_fa186/fast] Error 2

Source file was:

#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>

int main()
{
  (void)sizeof(((struct sockaddr_storage *)0)->__ss_family);
  return 0;
}

Are you willing to submit a PR?

PragmaTwice commented 2 years ago

Hi @corningsun , thanks for your report.

Could you try yum install libstdc++-static and rerun the script?

corningsun commented 2 years ago

Hi @corningsun , thanks for your report.

Could you try yum install libstdc++-static and rerun the script?

ok, i'll try it

corningsun commented 2 years ago

Thanks a lot, It's OK for me.