diff --git a/pkgs/tools/networking/xrootd/default.nix b/pkgs/tools/networking/xrootd/default.nix index e5aad1b4ee9b..47496173642c 100644 --- a/pkgs/tools/networking/xrootd/default.nix +++ b/pkgs/tools/networking/xrootd/default.nix @@ -4,6 +4,7 @@ , fetchFromGitHub , cmake , cppunit +, makeWrapper , pkg-config , curl , fuse @@ -24,6 +25,9 @@ }: stdenv.mkDerivation (finalAttrs: { + + __structuredAttrs = true; + pname = "xrootd"; version = "5.5.5"; @@ -55,6 +59,7 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake + makeWrapper pkg-config ]; @@ -101,7 +106,18 @@ stdenv.mkDerivation (finalAttrs: { "-DENABLE_TESTS=TRUE" ]; - postFixup = lib.optionalString (externalEtc != null) '' + makeWrapperArgs = [ + # Workaround the library-not-found issue + # happening to binaries compiled with xrootd libraries. + # See #169677 + "--prefix" "${lib.optionalString stdenv.hostPlatform.isDarwin "DY"}LD_LIBRARY_PATH" ":" "${placeholder "out"}/lib" + ]; + + postFixup = '' + while IFS= read -r FILE; do + wrapProgram "$FILE" "''${makeWrapperArgs[@]}" + done < <(find "$bin/bin" -mindepth 1 -maxdepth 1 -type f,l -perm -a+x) + '' + lib.optionalString (externalEtc != null) '' mv "$out"/etc{,.orig} ln -s ${lib.escapeShellArg externalEtc} "$out/etc" ''; diff --git a/pkgs/tools/networking/xrootd/fetchxrd.nix b/pkgs/tools/networking/xrootd/fetchxrd.nix index 2d197f8504fe..21d7a2a0386d 100644 --- a/pkgs/tools/networking/xrootd/fetchxrd.nix +++ b/pkgs/tools/networking/xrootd/fetchxrd.nix @@ -21,11 +21,9 @@ inherit url; urls = if urls == [ ] then lib.singleton url else urls; } - # Set [DY]LD_LIBRARY_PATH to workaround #169677 - # TODO: Remove the library path after #200830 get merged '' for u in $urls; do - ${lib.optionalString buildPlatform.isDarwin "DY"}LD_LIBRARY_PATH=${lib.makeLibraryPath [ xrootd ]} xrdcp --force "$u" "$out" + xrdcp --verbose --force "$u" "$out" ret=$? (( ret != 0 )) || break done diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a1fc94e3390c..0bc03be4080d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2112,7 +2112,10 @@ with pkgs; xpaste = callPackage ../tools/text/xpaste { }; - xrootd = callPackage ../tools/networking/xrootd { }; + xrootd = callPackage ../tools/networking/xrootd { + # Workaround systemd static build breakage + systemd = if systemd.meta.broken then null else systemd; + }; yabridge = callPackage ../tools/audio/yabridge { wine = wineWowPackages.staging;