From fca76c5810d331a3d6b2f268b6cca75b8498b016 Mon Sep 17 00:00:00 2001 From: Yarny0 <41838844+Yarny0@users.noreply.github.com> Date: Wed, 5 Apr 2023 19:30:17 +0200 Subject: [PATCH] tsm-client: fix absolute symlinks, drop openssl dependency `tsm-client` is delivered with its own `lib{crypto,ssl}.so` implementation. Beginning with version 8.1.9.1, those `.so`-files came with absolute symlinks to `/opt/...` causing `autoPatchelf` to abort with error messages of the form > error: auto-patchelf could not satisfy dependency libssl.so.1.1 I was under the impression that a new dependency got introduced and added `openssl` to `builtInputs` in commit 5ad0ecb9019e964d2abfe034e184f8b846e42dfa. This fixed the build, but `tsm-client` no longer linked against its own ssl implementation. The commit at hand corrects that mistake: It adds a small `preFixup` script that finds and adapts absolute symlinks to `/opt/`, so that `autoPatchelfHook` finds those `so`-files again and sets RPATH properly. This permits to drop `openssl` from the dependency list again. --- pkgs/tools/backup/tsm-client/default.nix | 9 ++++++--- pkgs/top-level/all-packages.nix | 9 ++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/pkgs/tools/backup/tsm-client/default.nix b/pkgs/tools/backup/tsm-client/default.nix index 870f323fd68c..80097ade0902 100644 --- a/pkgs/tools/backup/tsm-client/default.nix +++ b/pkgs/tools/backup/tsm-client/default.nix @@ -6,7 +6,6 @@ , autoPatchelfHook , rpmextract , libxcrypt-legacy -, openssl , zlib , lvm2 # LVM image backup and restore functions (optional) , acl # EXT2/EXT3/XFS ACL support (optional) @@ -118,7 +117,6 @@ let ]; buildInputs = [ libxcrypt-legacy - openssl stdenv.cc.cc zlib ]; @@ -146,7 +144,8 @@ let runHook postInstall ''; - # Fix relative symlinks after `/usr` was moved up one level + # fix relative symlinks after `/usr` was moved up one level, + # fix absolute symlinks pointing to `/opt` preFixup = '' for link in $out/lib{,64}/* $out/bin/* do @@ -158,6 +157,10 @@ let fi ln --symbolic --force --no-target-directory "$out/$(cut -b 7- <<< "$target")" "$link" done + for link in $(find $out -type l -lname '/opt/*') + do + ln --symbolic --force --no-target-directory "$out$(readlink "$link")" "$link" + done ''; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a20a18d9f9d2..fc648254f207 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7027,13 +7027,8 @@ with pkgs; timeline = callPackage ../applications/office/timeline { }; - tsm-client = callPackage ../tools/backup/tsm-client { - openssl = openssl_1_1; - }; - tsm-client-withGui = callPackage ../tools/backup/tsm-client { - openssl = openssl_1_1; - enableGui = true; - }; + tsm-client = callPackage ../tools/backup/tsm-client { }; + tsm-client-withGui = callPackage ../tools/backup/tsm-client { enableGui = true; }; tracker = callPackage ../development/libraries/tracker { };