7 patchelfUnstable, # have to use patchelfUnstable to support --rename-dynamic-symbols
11 # Based on ideas from (using a wrapper library to redirect fopen() calls to firmware files):
12 # * https://tapesoftware.net/replace-symbol/
13 # * https://github.com/NixOS/nixpkgs/pull/260715
15 pname = "libfprint-2-tod1-broadcom";
19 url = "http://dell.archive.canonical.com/updates/pool/public/libf/${pname}/${pname}_${version}.orig.tar.gz";
20 hash = "sha256-0C2PpYpEJNrU+8NT95w4QV0J5nHQisMY94Czw3jQOzw=";
21 pname = "${pname}-unpacked";
25 wrapperLibName = "wrapper-lib.so";
26 wrapperLibSource = "wrapper-lib.c";
28 # wraps `fopen()` for finding firmware files
29 wrapperLib = stdenv.mkDerivation {
30 pname = "${pname}-wrapper-lib";
34 name = "${pname}-wrapper-lib-source";
36 filter = path: type: baseNameOf path == wrapperLibSource;
40 substitute ${wrapperLibSource} lib.c \
41 --subst-var-by to "${src}/var/lib/fprint/fw"
42 cc -fPIC -shared lib.c -o ${wrapperLibName}
47 install -D -t $out/lib ${wrapperLibName}
53 inherit src pname version;
68 install -D -t "$out/lib/libfprint-2/tod-1/" -m 644 -v usr/lib/x86_64-linux-gnu/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so
69 install -D -t "$out/lib/udev/rules.d/" -m 644 -v lib/udev/rules.d/60-libfprint-2-device-broadcom.rules
74 echo fopen64 fopen_wrapper > fopen_name_map
76 --rename-dynamic-symbols fopen_name_map \
77 --add-needed ${wrapperLibName} \
78 "$out/lib/libfprint-2/tod-1/libfprint-2-tod-1-broadcom.so"
81 passthru.driverPath = "/lib/libfprint-2/tod-1";
84 description = "Broadcom driver module for libfprint-2-tod Touch OEM Driver (from Dell)";
85 homepage = "http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-broadcom/";
86 license = licenses.unfree;
87 maintainers = with maintainers; [ pitkling ];
88 platforms = [ "x86_64-linux" ];
89 sourceProvenance = with sourceTypes; [ binaryNativeCode ];