ClickHouse: Failed to build for RISC-V
Operating system
Linux 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Trying to cross-compile for riscv64.
Cmake version
cmake version 3.22.1
Ninja version
1.10.1
Compiler name and version
$ clang --version
Ubuntu clang version 14.0.6-++20220622053050+f28c006a5895-1~exp1~20220622173058.150
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Full cmake and/or ninja output
cd ClickHouse
mkdir build-riscv64
CC=clang-14 CXX=clang++-14 cmake . -Bbuild-riscv64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-riscv64.cmake -DGLIBC_COMPATIBILITY=OFF -DENABLE_LDAP=OFF -DOPENSSL_NO_ASM=ON -DENABLE_JEMALLOC=ON -DENABLE_PARQUET=OFF -DENABLE_ORC=OFF -DUSE_UNWIND=OFF -DENABLE_GRPC=OFF -DENABLE_HDFS=OFF -DENABLE_MYSQL=OFF
ninja -C build-riscv64
$ ninja -C build-riscv64
ninja: Entering directory `build-riscv64'
[0/2] Re-checking globbed directories...
[162/7673] Building ASM object contrib/boost-cmake/CMakeFiles/_boost_context.dir/__/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S.o
FAILED: contrib/boost-cmake/CMakeFiles/_boost_context.dir/__/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S.o
/usr/bin/clang-14 -target riscv64-linux-gnu --sysroot=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 -DHAS_RESERVED_IDENTIFIER -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -I/src/ClickHouse/contrib/boost -isystem /src/ClickHouse/contrib/libcxx/include -isystem /src/ClickHouse/contrib/libcxx/src -isystem /src/ClickHouse/contrib/libcxxabi/include --gcc-toolchain=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 --gcc-toolchain=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 -ffile-prefix-map=/src/ClickHouse=. -gdwarf-aranges -pipe -fasynchronous-unwind-tables -ffile-prefix-map=/src/ClickHouse=. -falign-functions=32 -O2 -g -DNDEBUG -O3 -g -gdwarf-4 -D OS_LINUX -Werror -MD -MT contrib/boost-cmake/CMakeFiles/_boost_context.dir/__/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S.o -MF contrib/boost-cmake/CMakeFiles/_boost_context.dir/__/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S.o.d -o contrib/boost-cmake/CMakeFiles/_boost_context.dir/__/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S.o -c /src/ClickHouse/contrib/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S
/src/ClickHouse/contrib/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S:78:1: error: version control conflict marker in file
<<<<<<< HEAD
^
/src/ClickHouse/contrib/boost/libs/context/src/asm/make_riscv64_sysv_elf_gas.S:91:1: error: version control conflict marker in file
<<<<<<< HEAD
^
2 errors generated.
[195/7673] Building CXX object contrib/boost-cmake/CMakeFiles/_boost_regex.dir/__/boost/libs/regex/src/wide_posix_api.cpp.o
ninja: build stopped: subcommand failed.
$ ninja -C build-riscv64
ninja: Entering directory `build-riscv64'
[0/2] Re-checking globbed directories...
[3933/7479] Generating include_private/lib/krb5/error_tables/asn1_err.c, include_private/lib/krb5/error_tables/asn1_err.h, include_private/asn1_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=asn1_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/asn1_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=asn1_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/asn1_err.et
[3934/7479] Generating include_private/lib/krb5/error_tables/kdb5_err.c, include_private/lib/krb5/error_tables/kdb5_err.h, include_private/kdb5_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=kdb5_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/kdb5_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=kdb5_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/kdb5_err.et
[3935/7479] Generating include_private/lib/krb5/error_tables/krb524_err.c, include_private/lib/krb5/error_tables/krb524_err.h, include_private/krb524_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=krb524_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/krb524_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=krb524_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/krb524_err.et
[3937/7479] Generating include_private/lib/krb5/error_tables/krb5_err.c, include_private/lib/krb5/error_tables/krb5_err.h, include_private/krb5_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=krb5_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/krb5_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=krb5_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/krb5_err.et
[3938/7479] Generating include_private/lib/krb5/error_tables/k5e1_err.c, include_private/lib/krb5/error_tables/k5e1_err.h, include_private/k5e1_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=k5e1_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/k5e1_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=k5e1_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/k5e1_err.et
[3940/7479] Generating include_private/lib/krb5/error_tables/kv5m_err.c, include_private/lib/krb5/error_tables/kv5m_err.h, include_private/kv5m_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=kv5m_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/kv5m_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=kv5m_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/krb5/error_tables/kv5m_err.et
[3947/7479] Generating include_private/lib/gssapi/krb5/gssapi_err_krb5.c, include_private/lib/gssapi/krb5/gssapi_err_krb5.h, include_private/gssapi_err_krb5.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=gssapi_err_krb5.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/gssapi/krb5/gssapi_err_krb5.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=gssapi_err_krb5.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/gssapi/krb5/gssapi_err_krb5.et
[3951/7479] Generating include_private/lib/gssapi/generic/gssapi_err_generic.c, include_private/lib/gssapi/generic/gssapi_err_generic.h, include_private/gssapi_err_generic.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=gssapi_err_generic.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/gssapi/generic/gssapi_err_generic.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=gssapi_err_generic.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/lib/gssapi/generic/gssapi_err_generic.et
[3953/7479] Generating include_private/util/profile/prof_err.c, include_private/util/profile/prof_err.h, include_private/prof_err.h
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_h.awk outfile=prof_err.h /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/util/profile/prof_err.et
+ /usr/bin/awk -f /src/ClickHouse/contrib/krb5/src/util/et/et_c.awk outfile=prof_err.c textdomain= localedir= /src/ClickHouse/build-riscv64/contrib/krb5-cmake/include_private/util/profile/prof_err.et
[6170/7479] Linking CXX executable base/base/tests/dump_variable
FAILED: base/base/tests/dump_variable
: && /usr/bin/clang++-14 --target=riscv64-linux-gnu --sysroot=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 --gcc-toolchain=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 --gcc-toolchain=/src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64 -std=c++20 -fdiagnostics-color=always -Xclang -fuse-ctor-homing -fsized-deallocation -gdwarf-aranges -pipe -fasynchronous-unwind-tables -ffile-prefix-map=/src/ClickHouse=. -falign-functions=32 -fdiagnostics-absolute-paths -fstrict-vtable-pointers -fexperimental-new-pass-manager -Wall -Wextra -Wframe-larger-than=65536 -Weverything -Wpedantic -Wno-zero-length-array -Wno-c++98-compat-pedantic -Wno-c++98-compat -Wno-conversion -Wno-ctad-maybe-unsupported -Wno-disabled-macro-expansion -Wno-documentation-unknown-command -Wno-double-promotion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-prototypes -Wno-missing-variable-declarations -Wno-padded -Wno-switch-enum -Wno-undefined-func-template -Wno-unused-template -Wno-vla -Wno-weak-template-vtables -Wno-weak-vtables -Wno-thread-safety-negative -O2 -g -DNDEBUG -O3 -g -gdwarf-4 -fno-pie -fuse-ld=bfd --ld-path=/usr/bin/ld.lld-14 -rdynamic -no-pie -Wl,-no-pie -Xlinker --no-undefined src/CMakeFiles/clickhouse_malloc.dir/Common/malloc.cpp.o base/base/tests/CMakeFiles/dump_variable.dir/dump_variable.cpp.o -o base/base/tests/dump_variable src/libclickhouse_common_io.a contrib/jemalloc-cmake/lib_jemalloc.a src/Common/StringUtils/libstring_utils.a base/widechar_width/libwidechar_width.a base/base/libcommon.a contrib/poco-cmake/Net/SSL/lib_poco_net_ssl.a contrib/poco-cmake/Net/lib_poco_net.a contrib/poco-cmake/Crypto/lib_poco_crypto.a contrib/poco-cmake/Util/lib_poco_util.a contrib/poco-cmake/JSON/lib_poco_json.a contrib/poco-cmake/JSON/lib_poco_json_pdjson.a contrib/poco-cmake/XML/lib_poco_xml.a contrib/poco-cmake/XML/lib_poco_xml_expat.a contrib/replxx-cmake/lib_replxx.a contrib/cctz-cmake/lib_cctz.a -Wl,--whole-archive /src/ClickHouse/build-riscv64/contrib/cctz-cmake/libtzdata.a -Wl,--no-whole-archive contrib/fmtlib-cmake/lib_fmt.a contrib/double-conversion-cmake/lib_double-conversion.a contrib/dragonbox-cmake/lib_dragonbox_to_chars.a contrib/re2-cmake/libre2_st.a contrib/re2-cmake/libre2.a contrib/boost-cmake/lib_boost_program_options.a contrib/boost-cmake/lib_boost_system.a contrib/cityhash102/lib_cityhash.a contrib/poco-cmake/Foundation/lib_poco_foundation.a contrib/poco-cmake/Foundation/lib_poco_foundation_pcre.a contrib/c-ares/lib/libcares.a contrib/aws-s3-cmake/lib_aws_s3.a contrib/aws-s3-cmake/lib_aws_s3_checksums.a contrib/brotli-cmake/lib_brotli.a contrib/snappy-cmake/lib_snappy.a contrib/lz4-cmake/lib_lz4.a contrib/minizip-ng-cmake/lib_minizip.a contrib/zlib-ng-cmake/lib_zlib.a contrib/zstd-cmake/lib_zstd.a contrib/xz-cmake/lib_liblzma.a contrib/bzip2-cmake/lib_bzip2.a contrib/boringssl-cmake/lib_ssl.a contrib/boringssl-cmake/lib_crypto.a -Wl,--start-group contrib/libcxx-cmake/libcxx.a contrib/libcxxabi-cmake/libcxxabi.a -lgcc_eh -Wl,--end-group -lpthread -nodefaultlibs -lgcc -lc -lm -lrt -lpthread -ldl && :
ld.lld-14: error: /src/ClickHouse/cmake/linux/../../contrib/sysroot/linux-riscv64/lib/riscv64-linux-gnu/crt1.o:(.text+0x0): relocation R_RISCV_ALIGN requires unimplemented linker relaxation; recompile with -mno-relax
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[6203/7479] Building CXX object src/CMakeFiles/dbms.dir/Coordination/KeeperStorage.cpp.o
ninja: build stopped: subcommand failed.
So, there are two problems:
- ClickHouse/boost#29 (version control conflict marker)
- relocation R_RISCV_ALIGN requires unimplemented linker relaxation; recompile with -mno-relax
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 23 (23 by maintainers)
After https://github.com/ClickHouse/ClickHouse/pull/31398, the build is integrated into our CI and checked for every commit. You can download it from the report.
Wow, we have committed a conflict marker in one of the files for RISC-V and no one noticed. Thank you for fixing.
I’ve started the server of this version of clickhouse on risc-v. But when I execute the SQL, I got this error:
server:
client:
Operating system
Linux fedora-riscv 6.1.22 #1 SMP Tue May 9 00:07:19 EDT 2023 riscv64 GNU/Linux
@alexey-milovidov @ernado Any help is much appreciated!
@ernado Thank you! May I ask to run the hardware benchmark on it? https://raw.githubusercontent.com/ClickHouse/ClickBench/main/hardware/hardware.sh
Some queries would not run successfully, but it still makes sense to get the result: https://benchmark.clickhouse.com/hardware/
Maybe we will write a blog post like ‘RISC-V dev board vs Threadripper Pro’.