From a9d5785365b8fc79189b924143b062ce062b1825 Mon Sep 17 00:00:00 2001 From: FliegendeWurst Date: Tue, 21 Jan 2025 16:35:39 +0100 Subject: [PATCH 1/4] protobuf: add hook to provide protoc path --- .../libraries/protobuf/generic.nix | 23 +++++++++++-------- .../libraries/protobuf/setup-hook.sh | 9 ++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 pkgs/development/libraries/protobuf/setup-hook.sh diff --git a/pkgs/development/libraries/protobuf/generic.nix b/pkgs/development/libraries/protobuf/generic.nix index f8cfa4daff036..d528262e3180f 100644 --- a/pkgs/development/libraries/protobuf/generic.nix +++ b/pkgs/development/libraries/protobuf/generic.nix @@ -13,6 +13,7 @@ zlib, version, hash, + replaceVars, versionCheckHook, # downstream dependencies @@ -36,9 +37,9 @@ stdenv.mkDerivation (finalAttrs: { inherit hash; }; - postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' + postPatch = lib.optionalString (stdenv.hostPlatform.isDarwin && lib.versionOlder version "29") '' substituteInPlace src/google/protobuf/testing/googletest.cc \ - --replace 'tmpnam(b)' '"'$TMPDIR'/foo"' + --replace-fail 'tmpnam(b)' '"'$TMPDIR'/foo"' ''; patches = lib.optionals (lib.versionOlder version "22") [ @@ -50,15 +51,17 @@ stdenv.mkDerivation (finalAttrs: { }) ]; - nativeBuildInputs = - [ - cmake - ] - ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ - # protoc of the same version must be available for build. For non-cross builds, it's able to - # re-use the executable generated as part of the build + # hook to provide the path to protoc executable, used at build time + build_protobuf = + if (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) then buildPackages."protobuf_${lib.versions.major version}" - ]; + else + (placeholder "out"); + setupHook = ./setup-hook.sh; + + nativeBuildInputs = [ + cmake + ]; buildInputs = [ gtest diff --git a/pkgs/development/libraries/protobuf/setup-hook.sh b/pkgs/development/libraries/protobuf/setup-hook.sh new file mode 100644 index 0000000000000..a41f112ab2aa3 --- /dev/null +++ b/pkgs/development/libraries/protobuf/setup-hook.sh @@ -0,0 +1,9 @@ +ProtobufCMakeFlags() { + cmakeFlagsArray+=( + -DPROTOC_EXE="@build_protobuf@/bin/protoc" + -DProtobuf_PROTOC_EXE="@build_protobuf@/bin/protoc" + -DProtobuf_PROTOC_EXECUTABLE="@build_protobuf@/bin/protoc" + ) +} + +preConfigureHooks+=(ProtobufCMakeFlags) From 26d1630bae2ca44958a40ae81cf8de900738a163 Mon Sep 17 00:00:00 2001 From: FliegendeWurst Date: Tue, 21 Jan 2025 16:35:39 +0100 Subject: [PATCH 2/4] opencv4: use latest protobuf, remove no longer needed cross fix --- pkgs/development/libraries/opencv/4.x.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/opencv/4.x.nix b/pkgs/development/libraries/opencv/4.x.nix index e05c1f65dd129..dc7883b27c88c 100644 --- a/pkgs/development/libraries/opencv/4.x.nix +++ b/pkgs/development/libraries/opencv/4.x.nix @@ -12,7 +12,7 @@ , glib , glog , gflags -, protobuf_21 +, protobuf_29 , config , ocl-icd , buildPackages @@ -308,7 +308,7 @@ effectiveStdenv.mkDerivation { glib glog pcre2 - protobuf_21 + protobuf_29 zlib ] ++ optionals enablePython [ pythonPackages.python @@ -419,7 +419,6 @@ effectiveStdenv.mkDerivation { (cmakeBool "OPENCV_GENERATE_PKGCONFIG" true) (cmakeBool "WITH_OPENMP" true) (cmakeBool "BUILD_PROTOBUF" false) - (cmakeOptionType "path" "Protobuf_PROTOC_EXECUTABLE" (getExe buildPackages.protobuf_21)) (cmakeBool "PROTOBUF_UPDATE_FILES" true) (cmakeBool "OPENCV_ENABLE_NONFREE" enableUnfree) (cmakeBool "BUILD_TESTS" runAccuracyTests) From 40a3a48d08143ab7f0e8481658bae69d872d048e Mon Sep 17 00:00:00 2001 From: FliegendeWurst Date: Tue, 21 Jan 2025 16:35:39 +0100 Subject: [PATCH 3/4] monero-gui: use latest protobuf --- pkgs/applications/blockchains/monero-gui/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/blockchains/monero-gui/default.nix b/pkgs/applications/blockchains/monero-gui/default.nix index 57c949f451f39..790f691b79b22 100644 --- a/pkgs/applications/blockchains/monero-gui/default.nix +++ b/pkgs/applications/blockchains/monero-gui/default.nix @@ -30,7 +30,7 @@ trezorSupport ? true, hidapi, libusb1, - protobuf_21, + protobuf, python3, udev, }: @@ -77,7 +77,7 @@ stdenv.mkDerivation rec { ++ lib.optionals trezorSupport [ hidapi libusb1 - protobuf_21 + protobuf python3 ] ++ lib.optionals (trezorSupport && stdenv.hostPlatform.isLinux) [ From fc29afa6fcfc60f1ee7402f94b8947c1c92fe717 Mon Sep 17 00:00:00 2001 From: FliegendeWurst Date: Tue, 21 Jan 2025 16:35:39 +0100 Subject: [PATCH 4/4] monero-cli: use latest protobuf, mark cross as broken --- pkgs/applications/blockchains/monero-cli/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/blockchains/monero-cli/default.nix b/pkgs/applications/blockchains/monero-cli/default.nix index 0b4f90b2313f4..e39d5374b9ad7 100644 --- a/pkgs/applications/blockchains/monero-cli/default.nix +++ b/pkgs/applications/blockchains/monero-cli/default.nix @@ -23,7 +23,7 @@ trezorSupport ? true, hidapi, libusb1, - protobuf_21, + protobuf, udev, }: @@ -96,7 +96,7 @@ stdenv.mkDerivation rec { python3 hidapi libusb1 - protobuf_21 + protobuf ] ++ lib.optionals (trezorSupport && stdenv.hostPlatform.isLinux) [ udev ]; @@ -138,5 +138,7 @@ stdenv.mkDerivation rec { rnhmjoj ]; mainProgram = "monero-wallet-cli"; + # internal build tool generate_translations_header is tricky to compile for the build platform + broken = !stdenv.buildPlatform.canExecute stdenv.hostPlatform; }; }