From 34ca27bc95261256846ee8d0ebcdf4aeafef907a Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Thu, 7 Oct 2021 21:04:39 +0200 Subject: [PATCH] grpc: don't set LD_LIBRARY_PATH when cross compiling LD_LIBRARY_PATH is only necessary in the native compilation case when we need to execute grpc_cpp_plugin from the build directory. Disabling this for cross is not only cleaner, but eliminates linker failures when cross compiling to a compatible configuration, since LD_LIBRARY_PATH takes precedence over the rpath set in buildPackages.grpc's grpc_cpp_plugin. --- pkgs/development/libraries/grpc/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix index 2000bdccb008..0787ffea41fa 100644 --- a/pkgs/development/libraries/grpc/default.nix +++ b/pkgs/development/libraries/grpc/default.nix @@ -68,7 +68,12 @@ stdenv.mkDerivation rec { rm -vf BUILD ''; - preBuild = '' + # When natively compiling, grpc_cpp_plugin is executed from the build directory, + # needing to load dynamic libraries from the build directory, so we set + # LD_LIBRARY_PATH to enable this. When cross compiling we need to avoid this, + # since it can cause the grpc_cpp_plugin executable from buildPackages to + # crash if build and host architecture are compatible (e. g. pkgsLLVM). + preBuild = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' export LD_LIBRARY_PATH=$(pwd)''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH '';