diff options
author | Klemens Nanni <klemens@posteo.de> | 2022-06-07 12:21:39 +0200 |
---|---|---|
committer | Klemens Nanni <klemens@posteo.de> | 2022-06-10 05:28:09 +0200 |
commit | 8daa103d1fecf9d95ecb89a837034cdc18daefe2 (patch) | |
tree | deb658b318379b2c8ef3005249df1a94fff2ddd8 /pkgs/tools/security/qdigidoc | |
parent | ea62d92f6368e2da5ca695445b271ec7cb1522ef (diff) |
qdigidoc: Explain why LD_LIBRARY_PATH is required
Contrary to libdigidocpp's libdigidocpp, qdigidoc uses Qt to load modules and thus causes different search behaviour in dlopen(3). This approach is not required on every platform; on OpenBSD[0] qdigidoc4(1) finds "opensc-pkcs11.so" due to /usr/local/lib/pkcs11/ in the main program's DT_RUNPATH. 0: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/libexec/ld.so/library_subr.c?annotate=1.51 (line 297)
Diffstat (limited to 'pkgs/tools/security/qdigidoc')
-rw-r--r-- | pkgs/tools/security/qdigidoc/default.nix | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pkgs/tools/security/qdigidoc/default.nix b/pkgs/tools/security/qdigidoc/default.nix index f76349c3dcf26..f7d40dc604cb6 100644 --- a/pkgs/tools/security/qdigidoc/default.nix +++ b/pkgs/tools/security/qdigidoc/default.nix @@ -35,10 +35,14 @@ mkDerivation rec { qttranslations ]; - # replace this hack with a proper cmake variable or environment variable - # once https://github.com/open-eid/cmake/pull/34 (or #35) gets merged. + # qdigidoc4's `QPKCS11::reload()` dlopen()s "opensc-pkcs11.so" in QLibrary, + # i.e. OpenSC's module is searched for in libQt5Core's DT_RUNPATH and fixing + # qdigidoc4's DT_RUNPATH has no effect on Linux (at least OpenBSD's ld.so(1) + # searches the program's runtime path as well). + # LD_LIBRARY_PATH takes precedence for all calling objects, see dlopen(3). + # https://github.com/open-eid/cmake/pull/35 might be an alternative. qtWrapperArgs = [ - "--prefix LD_LIBRARY_PATH : ${opensc}/lib/pkcs11/" + "--prefix LD_LIBRARY_PATH : ${opensc}/lib/pkcs11/" ]; meta = with lib; { |