From 4d23d9f188ef7e6cd123db939311dd1b1b712bcd Mon Sep 17 00:00:00 2001 From: Florian Warzecha Date: Tue, 27 Feb 2024 12:45:40 +0100 Subject: [PATCH 1/2] paho-mqtt-c: pass static/shared build to cmake Allows to build paho-mqtt-c with pkgsStatic, which results in the following build failure without this change: ```console $ nix build ".#paho-mqtt-c" error: builder for '/nix/store/519ajxyj9vgzzk0mi1yll0df29synv5z-paho.mqtt.c-static-x86_64-unknown-linux-musl-1.3.13.drv' failed with exit code 2; last 10 log lines: > collect2: error: ld returned 1 exit status > make[2]: *** [src/CMakeFiles/paho-mqtt3cs.dir/build.make:163: src/libpaho-mqtt3cs.so.1.3.13] Error 1 > make[1]: *** [CMakeFiles/Makefile2:295: src/CMakeFiles/paho-mqtt3cs.dir/all] Error 2 > [ 64%] Linking C shared library libpaho-mqtt3as.so > /nix/store/zq91mr9h32cippzbnn321vrmbqkh4mi5-x86_64-unknown-linux-musl-binutils-2.40/bin/x86_64-unknown-linux-musl-ld: /nix/store/xqh4v9h8zlizphynp8d0mik2j2rzd94s-x86_64-unknown-linux-musl-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-musl/13.2.0/crtbeginT.o: relocation R_X86_64_32 against hidden symbol `__TMC_END__' can not be used when making a shared object > /nix/store/zq91mr9h32cippzbnn321vrmbqkh4mi5-x86_64-unknown-linux-musl-binutils-2.40/bin/x86_64-unknown-linux-musl-ld: failed to set dynamic section sizes: bad value > collect2: error: ld returned 1 exit status > make[2]: *** [src/CMakeFiles/paho-mqtt3as.dir/build.make:179: src/libpaho-mqtt3as.so.1.3.13] Error 1 > make[1]: *** [CMakeFiles/Makefile2:321: src/CMakeFiles/paho-mqtt3as.dir/all] Error 2 > make: *** [Makefile:166: all] Error 2 For full logs, run 'nix log /nix/store/519ajxyj9vgzzk0mi1yll0df29synv5z-paho.mqtt.c-static-x86_64-unknown-linux-musl-1.3.13.drv'. ``` Co-authored-by: Nikolay Korotkiy --- pkgs/development/libraries/paho-mqtt-c/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/paho-mqtt-c/default.nix b/pkgs/development/libraries/paho-mqtt-c/default.nix index 149432788221..0f345eb5134f 100644 --- a/pkgs/development/libraries/paho-mqtt-c/default.nix +++ b/pkgs/development/libraries/paho-mqtt-c/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, openssl }: +{ lib, stdenv, fetchFromGitHub, cmake, openssl, enableStatic ? stdenv.hostPlatform.isStatic, enableShared ? !stdenv.hostPlatform.isStatic }: stdenv.mkDerivation rec { pname = "paho.mqtt.c"; @@ -21,7 +21,11 @@ stdenv.mkDerivation rec { buildInputs = [ openssl ]; - cmakeFlags = [ "-DPAHO_WITH_SSL=TRUE" ]; + cmakeFlags = [ + (lib.cmakeBool "PAHO_WITH_SSL" true) + (lib.cmakeBool "PAHO_BUILD_STATIC" enableStatic) + (lib.cmakeBool "PAHO_BUILD_SHARED" enableShared) + ]; meta = with lib; { description = "Eclipse Paho MQTT C Client Library"; From 1b92b1a762d415a9759c6472582abdaababeb1a1 Mon Sep 17 00:00:00 2001 From: Florian Warzecha Date: Tue, 27 Feb 2024 17:05:28 +0100 Subject: [PATCH 2/2] paho-mqtt-cpp: pass static/shared build to cmake Allows to build paho-mqtt-cpp with pkgsStatic, which results in the following build failure without this change: ```console $ nix build ".#paho-mqtt-cpp" error: builder for '/nix/store/hppw8cjha4qkvxl3670886rm4i2q0mi0-paho.mqtt.cpp-static-x86_64-unknown-linux-musl-1.3.2.drv' failed with exit code 2; last 10 log lines: > [ 87%] Building CXX object src/CMakeFiles/paho-cpp-objs.dir/topic.cpp.o > [ 93%] Building CXX object src/CMakeFiles/paho-cpp-objs.dir/will_options.cpp.o > [ 93%] Built target paho-cpp-objs > [100%] Linking CXX shared library libpaho-mqttpp3.so > /nix/store/zq91mr9h32cippzbnn321vrmbqkh4mi5-x86_64-unknown-linux-musl-binutils-2.40/bin/x86_64-unknown-linux-musl-ld: /nix/store/xqh4v9h8zlizphynp8d0mik2j2rzd94s-x86_64-unknown-linux-musl-gcc-13.2.0/lib/gcc/x86_64-unknown-linux-musl/13.2.0/crtbeginT.o: relocation R_X86_64_32 against hidden symbol `__TMC_END__' can not be used when making a shared object > /nix/store/zq91mr9h32cippzbnn321vrmbqkh4mi5-x86_64-unknown-linux-musl-binutils-2.40/bin/x86_64-unknown-linux-musl-ld: failed to set dynamic section sizes: bad value > collect2: error: ld returned 1 exit status > make[2]: *** [src/CMakeFiles/paho-mqttpp3.dir/build.make:114: src/libpaho-mqttpp3.so.1.3.2] Error 1 > make[1]: *** [CMakeFiles/Makefile2:161: src/CMakeFiles/paho-mqttpp3.dir/all] Error 2 > make: *** [Makefile:156: all] Error 2 For full logs, run 'nix log /nix/store/hppw8cjha4qkvxl3670886rm4i2q0mi0-paho.mqtt.cpp-static-x86_64-unknown-linux-musl-1.3.2.drv'. ``` Co-authored-by: Nikolay Korotkiy --- pkgs/development/libraries/paho-mqtt-cpp/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/paho-mqtt-cpp/default.nix b/pkgs/development/libraries/paho-mqtt-cpp/default.nix index 62d9aa597792..6f1b9b215e26 100644 --- a/pkgs/development/libraries/paho-mqtt-cpp/default.nix +++ b/pkgs/development/libraries/paho-mqtt-cpp/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, openssl, paho-mqtt-c }: +{ lib, stdenv, fetchFromGitHub, cmake, openssl, paho-mqtt-c, enableStatic ? stdenv.hostPlatform.isStatic, enableShared ? !stdenv.hostPlatform.isStatic }: stdenv.mkDerivation rec { pname = "paho.mqtt.cpp"; @@ -15,6 +15,12 @@ stdenv.mkDerivation rec { buildInputs = [ openssl paho-mqtt-c ]; + cmakeFlags = [ + (lib.cmakeBool "PAHO_WITH_SSL" true) + (lib.cmakeBool "PAHO_BUILD_STATIC" enableStatic) + (lib.cmakeBool "PAHO_BUILD_SHARED" enableShared) + ]; + meta = with lib; { description = "Eclipse Paho MQTT C++ Client Library"; homepage = "https://www.eclipse.org/paho/";