We're using rdkafka in our rust project and it fails to compile on x86_64-unknown-linux-musl if the cmake crate version is > 0.1.48.
On checking this issue, we found that cmake v0.1.49 introduced a change which sets CMAKE_SYSTEM_NAME if HOST!=TARGET (which is our case as we're compiling for x86_64-unknown-linux-musl from x86_64-unknown-linux-gnu toolchain).
Is this has something to do with rdkafka's build script or related to this cmakeissue? Let me know if you need any additional information or if there are any updates regarding this issue.
Steps to reproduce
Set up a Rust project with rdkafka targeting x86_64-unknown-linux-musl architecture with x86_64-unknown-linux-gnu as default toolchain.
Ensure cmake crate version is 0.1.49 or higher.
Run cargo build
...
error: failed to run custom build command for `rdkafka-sys v4.5.0+1.9.2`
Caused by:
process didn't exit successfully: `/workspace/rdkafka-test/target/debug/build/rdkafka-sys-46f4da784de26db7/build-script-build` (exit status: 101)
--- stdout
Configuring and compiling librdkafka
CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-musl = None
CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_musl = None
TARGET_CMAKE_TOOLCHAIN_FILE = None
CMAKE_TOOLCHAIN_FILE = None
CMAKE_GENERATOR_x86_64-unknown-linux-musl = None
CMAKE_GENERATOR_x86_64_unknown_linux_musl = None
TARGET_CMAKE_GENERATOR = None
CMAKE_GENERATOR = None
CMAKE_PREFIX_PATH_x86_64-unknown-linux-musl = None
CMAKE_PREFIX_PATH_x86_64_unknown_linux_musl = None
TARGET_CMAKE_PREFIX_PATH = None
CMAKE_PREFIX_PATH = None
CMAKE_x86_64-unknown-linux-musl = None
CMAKE_x86_64_unknown_linux_musl = None
TARGET_CMAKE = None
CMAKE = None
running: cd "/workspace/rdkafka-test/target/x86_64-unknown-linux-musl/debug/build/rdkafka-sys-ccebc1fbfa5ab608/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/usr/local/rust/registry/src/github.com-1ecc6299db9ec823/rdkafka-sys-4.5.0+1.9.2/librdkafka" "-DRDKAFKA_BUILD_STATIC=1" "-DRDKAFKA_BUILD_TESTS=0" "-DRDKAFKA_BUILD_EXAMPLES=0" "-DCMAKE_INSTALL_LIBDIR=lib" "-DWITH_ZLIB=0" "-DWITH_CURL=0" "-DWITH_SSL=0" "-DWITH_SASL=0" "-DWITH_ZSTD=0" "-DENABLE_LZ4_EXT=0" "-DCMAKE_SYSTEM_NAME=Linux" "-DCMAKE_SYSTEM_PROCESSOR=x86_64" "-DCMAKE_INSTALL_PREFIX=/workspace/rdkafka-test/target/x86_64-unknown-linux-musl/debug/build/rdkafka-sys-ccebc1fbfa5ab608/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/musl-gcc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/musl-g++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/musl-gcc" "-DCMAKE_BUILD_TYPE=Debug"
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/musl-gcc
-- Check for working C compiler: /usr/bin/musl-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/musl-g++
-- Check for working CXX compiler: /usr/bin/musl-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pow in m
-- Looking for pow in m - found
-- Checking for module 'libsasl2'
-- No package 'libsasl2' found
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /workspace/rdkafka-test/target/x86_64-unknown-linux-musl/debug/build/rdkafka-sys-ccebc1fbfa5ab608/out/build
running: cd "/workspace/rdkafka-test/target/x86_64-unknown-linux-musl/debug/build/rdkafka-sys-ccebc1fbfa5ab608/out/build" && MAKEFLAGS="-j --jobserver-fds=16,17 --jobserver-auth=16,17" "cmake" "--build" "." "--target" "install" "--config" "Debug"
Scanning dependencies of target rdkafka
[ 4%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_buf.c.o
[ 4%] Building C object src/CMakeFiles/rdkafka.dir/crc32c.c.o
[ 4%] Building C object src/CMakeFiles/rdkafka.dir/rdbuf.c.o
[ 4%] Building C object src/CMakeFiles/rdkafka.dir/rdavl.c.o
[ 7%] Building C object src/CMakeFiles/rdkafka.dir/rdaddr.c.o
[ 8%] Building C object src/CMakeFiles/rdkafka.dir/rdfnv1a.c.o
[ 9%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka.c.o
[ 10%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_assignor.c.o
[ 11%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_broker.c.o
[ 11%] Building C object src/CMakeFiles/rdkafka.dir/rdcrc32.c.o
[ 13%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_cgrp.c.o
[ 14%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_conf.c.o
[ 15%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_event.c.o
[ 16%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_feature.c.o
[ 17%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_lz4.c.o
[ 19%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_metadata.c.o
[ 20%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_metadata_cache.c.o
[ 21%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_msg.c.o
[ 22%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_msgset_reader.c.o
[ 23%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_msgset_writer.c.o
[ 25%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_offset.c.o
[ 26%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_op.c.o
[ 27%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_partition.c.o
[ 28%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_pattern.c.o
[ 29%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_queue.c.o
[ 30%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_range_assignor.c.o
[ 32%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_request.c.o
[ 33%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_roundrobin_assignor.c.o
[ 34%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_sasl.c.o
[ 35%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_sasl_plain.c.o
[ 36%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_sticky_assignor.c.o
[ 38%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_subscription.c.o
[ 39%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_assignment.c.o
[ 41%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_timer.c.o
[ 41%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_topic.c.o
[ 42%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_transport.c.o
[ 44%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_interceptor.c.o
[ 45%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_header.c.o
[ 46%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_admin.c.o
[ 47%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_aux.c.o
[ 48%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_background.c.o
[ 50%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_idempotence.c.o
[ 51%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_txnmgr.c.o
[ 53%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_coord.c.o
[ 53%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_cert.c.o
[ 54%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_mock.c.o
[ 55%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_mock_handlers.c.o
[ 57%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_mock_cgrp.c.o
[ 58%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_error.c.o
[ 59%] Building C object src/CMakeFiles/rdkafka.dir/rdlist.c.o
[ 60%] Building C object src/CMakeFiles/rdkafka.dir/rdlog.c.o
[ 61%] Building C object src/CMakeFiles/rdkafka.dir/rdmurmur2.c.o
[ 63%] Building C object src/CMakeFiles/rdkafka.dir/rdports.c.o
[ 64%] Building C object src/CMakeFiles/rdkafka.dir/rdrand.c.o
[ 65%] Building C object src/CMakeFiles/rdkafka.dir/rdregex.c.o
[ 66%] Building C object src/CMakeFiles/rdkafka.dir/rdstring.c.o
[ 67%] Building C object src/CMakeFiles/rdkafka.dir/rdunittest.c.o
[ 69%] Building C object src/CMakeFiles/rdkafka.dir/rdvarint.c.o
[ 70%] Building C object src/CMakeFiles/rdkafka.dir/rdmap.c.o
[ 71%] Building C object src/CMakeFiles/rdkafka.dir/snappy.c.o
[ 72%] Building C object src/CMakeFiles/rdkafka.dir/tinycthread.c.o
[ 73%] Building C object src/CMakeFiles/rdkafka.dir/rdxxhash.c.o
[ 75%] Building C object src/CMakeFiles/rdkafka.dir/cJSON.c.o
[ 76%] Building C object src/CMakeFiles/rdkafka.dir/tinycthread_extra.c.o
[ 77%] Building C object src/CMakeFiles/rdkafka.dir/rdhdrhistogram.c.o
[ 78%] Building C object src/CMakeFiles/rdkafka.dir/rddl.c.o
[ 79%] Building C object src/CMakeFiles/rdkafka.dir/rdkafka_plugin.c.o
[ 80%] Building C object src/CMakeFiles/rdkafka.dir/lz4.c.o
[ 82%] Building C object src/CMakeFiles/rdkafka.dir/lz4frame.c.o
[ 83%] Building C object src/CMakeFiles/rdkafka.dir/lz4hc.c.o
[ 84%] Linking C static library librdkafka.a
--- stderr
Building and linking librdkafka statically
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_ASM_COMPILER
CMAKE_ASM_FLAGS
Error running link command: No such file or directory
make[2]: *** [src/CMakeFiles/rdkafka.dir/build.make:1120: src/librdkafka.a] Error 2
make[1]: *** [CMakeFiles/Makefile2:115: src/CMakeFiles/rdkafka.dir/all] Error 2
make: *** [Makefile:118: all] Error 2
thread 'main' panicked at '
command did not execute successfully, got: exit status: 2
build script failed, must exit now', /usr/local/rust/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.50/src/lib.rs:1098:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Issue description
We're using
rdkafka
in our rust project and it fails to compile onx86_64-unknown-linux-musl
if thecmake
crate version is >0.1.48
.On checking this issue, we found that
cmake v0.1.49
introduced a change which setsCMAKE_SYSTEM_NAME
ifHOST!=TARGET
(which is our case as we're compiling forx86_64-unknown-linux-musl
fromx86_64-unknown-linux-gnu
toolchain).Is this has something to do with
rdkafka
's build script or related to thiscmake
issue? Let me know if you need any additional information or if there are any updates regarding this issue.Steps to reproduce
rdkafka
targetingx86_64-unknown-linux-musl
architecture withx86_64-unknown-linux-gnu
as default toolchain.cmake
crate version is0.1.49
or higher.cargo build