Unverified Commit 15051381 authored by Dmitry Kalinkin's avatar Dmitry Kalinkin Committed by GitHub
Browse files

Merge pull request #244545 from ShamrockLee/xrootd-wrap

xrootd: wrap executables with [DY]LD_LIBRARY_PATH prefix
parents 9fbda9a9 95f76d1d
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -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"
  '';
+1 −3
Original line number Diff line number Diff line
@@ -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
+4 −1
Original line number Diff line number Diff line
@@ -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;