From 941b891e26b6ed692fc8b0296187e075af9514bc Mon Sep 17 00:00:00 2001 From: Yarny0 <41838844+Yarny0@users.noreply.github.com> Date: Tue, 4 Apr 2023 19:39:32 +0200 Subject: [PATCH 1/3] tsm-client: use `libxcrypt-legacy` to fix build Since commit 4e300e071b97e1e3a6ba4d856cc65e5386366f6f building `tsm-client` fails with error messages > error: auto-patchelf could not satisfy dependency libcrypt.so.1 wanted by [...] Luckily, commit 9b766dd41b9b49cb0c1b1f3317fc2273f1f8f3a0 introduces `libxcrypt-legacy` which again provides `libcrypt.so.1`. --- pkgs/tools/backup/tsm-client/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/backup/tsm-client/default.nix b/pkgs/tools/backup/tsm-client/default.nix index 23a544a6a3e6..870f323fd68c 100644 --- a/pkgs/tools/backup/tsm-client/default.nix +++ b/pkgs/tools/backup/tsm-client/default.nix @@ -5,7 +5,7 @@ , fetchurl , autoPatchelfHook , rpmextract -, libxcrypt +, libxcrypt-legacy , openssl , zlib , lvm2 # LVM image backup and restore functions (optional) @@ -117,7 +117,7 @@ let rpmextract ]; buildInputs = [ - libxcrypt + libxcrypt-legacy openssl stdenv.cc.cc zlib 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 2/3] 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 { }; From ad2b70061fc05a5b83232bf55572ac8c1014bbdc Mon Sep 17 00:00:00 2001 From: Yarny0 <41838844+Yarny0@users.noreply.github.com> Date: Tue, 4 Apr 2023 19:46:20 +0200 Subject: [PATCH 3/3] nixos/tsm-client: use `lib.concatLines` --- nixos/modules/programs/tsm-client.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/modules/programs/tsm-client.nix b/nixos/modules/programs/tsm-client.nix index 7adff7cd28cb..41560544c2c7 100644 --- a/nixos/modules/programs/tsm-client.nix +++ b/nixos/modules/programs/tsm-client.nix @@ -6,7 +6,7 @@ let inherit (lib.attrsets) attrNames filterAttrs hasAttr mapAttrs mapAttrsToList optionalAttrs; inherit (lib.modules) mkDefault mkIf; inherit (lib.options) literalExpression mkEnableOption mkOption; - inherit (lib.strings) concatStringsSep optionalString toLower; + inherit (lib.strings) concatLines optionalString toLower; inherit (lib.types) addCheck attrsOf lines nonEmptyStr nullOr package path port str strMatching submodule; # Checks if given list of strings contains unique @@ -164,7 +164,7 @@ let mkLine = k: v: k + optionalString (v!="") " ${v}"; lines = mapAttrsToList mkLine attrset; in - concatStringsSep "\n" lines; + concatLines lines; config.stanza = '' server ${config.name} ${config.text} @@ -263,7 +263,7 @@ let ${optionalString (cfg.defaultServername!=null) "defaultserver ${cfg.defaultServername}"} - ${concatStringsSep "\n" (mapAttrsToList (k: v: v.stanza) cfg.servers)} + ${concatLines (mapAttrsToList (k: v: v.stanza) cfg.servers)} ''; in