summary refs log tree commit diff
diff options
context:
space:
mode:
authorKlemens Nanni <klemens@posteo.de>2022-06-07 12:10:35 +0200
committerKlemens Nanni <klemens@posteo.de>2022-06-10 05:28:05 +0200
commitea62d92f6368e2da5ca695445b271ec7cb1522ef (patch)
treead5ff066f66628e60af663a2c8363333d3cb6471
parenta58de450c514aa1bc5a4999f92656ab6b600dc59 (diff)
downloadnixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar.gz
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar.bz2
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar.lz
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar.xz
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.tar.zst
nixpkgs-ea62d92f6368e2da5ca695445b271ec7cb1522ef.zip
libdigidocpp: Replace wrap with rpath addition
libdigidocpp.so itself contains the code to load the PKCS#11 module,
not digidoc-tool(1).

Wrapping `digitoc-tool`
- leaves the library broken
- is too broad (LD_LIBRARY_PATH is generic and inherited by children)
- needs an extra wrapper script (introducing subtle changes on its own)

Considering how dlopen(3) prefers the calling object's DT_RUNPATH,
simply amend that.
-rw-r--r--pkgs/development/libraries/libdigidocpp/default.nix14
1 files changed, 7 insertions, 7 deletions
diff --git a/pkgs/development/libraries/libdigidocpp/default.nix b/pkgs/development/libraries/libdigidocpp/default.nix
index 1e1e892e532..c99e96863d3 100644
--- a/pkgs/development/libraries/libdigidocpp/default.nix
+++ b/pkgs/development/libraries/libdigidocpp/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, fetchpatch, cmake, makeWrapper, minizip, pcsclite, opensc, openssl
+{ lib, stdenv, fetchurl, fetchpatch, cmake, minizip, pcsclite, opensc, openssl
 , xercesc, xml-security-c, pkg-config, xsd, zlib, xalanc, xxd }:
 
 stdenv.mkDerivation rec {
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  nativeBuildInputs = [ cmake makeWrapper pkg-config xxd ];
+  nativeBuildInputs = [ cmake pkg-config xxd ];
 
   buildInputs = [
     minizip pcsclite opensc openssl xercesc
@@ -31,11 +31,11 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "lib" "dev" "bin" ];
 
-  # replace this hack with a proper cmake variable or environment variable
-  # once https://github.com/open-eid/cmake/pull/34 (or #35) gets merged.
-  postInstall = ''
-    wrapProgram $bin/bin/digidoc-tool \
-      --prefix LD_LIBRARY_PATH : ${opensc}/lib/pkcs11/
+  # libdigidocpp.so's `PKCS11Signer::PKCS11Signer()` dlopen()s "opensc-pkcs11.so"
+  # itself, so add OpenSC to its DT_RUNPATH after the fixupPhase shrinked it.
+  # https://github.com/open-eid/cmake/pull/35 might be an alternative.
+  postFixup = ''
+    patchelf --add-rpath ${opensc}/lib/pkcs11 $lib/lib/libdigidocpp.so
   '';
 
   meta = with lib; {