Merge pull request #244545 from ShamrockLee/xrootd-wrap

xrootd: wrap executables with [DY]LD_LIBRARY_PATH prefix
This commit is contained in:
Dmitry Kalinkin
2023-10-20 01:09:06 -04:00
committed by GitHub
3 changed files with 22 additions and 5 deletions
+17 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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;