Bjørn Forsman <[email protected]> writes: > On 16 December 2014 at 02:09, Peter Jones <[email protected]> wrote: >> I'm working on a Nix expression to install a proprietary scanner driver >> that is available as a Debian package. After using `nix-env' to install >> the package I'm still not able to see my scanner in the list produced by >> `scanimage -L' or `sane-find-scanner'. >> >> Here's the expression (WIP): >> >> >> https://github.com/pjones/nixpkgs/blob/pkg/brother/pkgs/misc/drivers/brother/dsseries.nix >> >> Something interesting to note is that device files for the scanner show >> up in /dev/bsg/ instead of the usual /dev/sg*. I think that has >> something to do with the scanner being detected as a disk. >> >> I did have this working under Debian before switching to NixOS. I also >> still have a Debian install if I need to test anything or figure out >> what's going on. >> >> Any hint/tips would be appreciated. Thanks. > > Maybe you must patchelf some binaries? See if this finds something > that points to (nonexisting) /usr/... or similar: > > find $out | while read f; do patchelf --print-rpath "$f"; done
None of the .so files in the binary package have an RPATH set. I was able to use strace and strings to discover that the main .so for the scanner driver tries to dlload two other .so files using hard-coded paths. Can I alter the strings in the .so or do I need to make some sort of wrapper that intercepts the dlload calls and loads the correct libraries? If the latter, is there an example somewhere I can use as a guide? -- Peter Jones, Founder, Devalot.com Defending the honor of good code _______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
