Thanks for your help, I don't really know why I keep missing the obvious :P
I've now compiled the pstocanonij you suggested, but unfortunately: Jun 20 21:23:51 heisenbug cupsd[21991]: pstocanonij: /home/nawal/.nix-profile/bin//gs -sstdout=%stderr -r600 -g4958x7016 -q -dNOPROMPT -dSAFER -sDEVICE=ppmraw -sOutputFile=%stdout -| /home/nawal/.nix-profile/bin//cifmp250 --imageres 600 --papersize a4 --media plain --paperload asf --bbox 9,14,586,834 --fit --copies 1 Jun 20 21:23:51 heisenbug cupsd[21991]: Error: invalid printer model name Jun 20 21:23:51 heisenbug cupsd[21991]: Read 324 bytes of back-channel data... Jun 20 21:23:52 heisenbug cupsd[21991]: Wrote 1 pages... Jun 20 21:23:52 heisenbug cupsd[21991]: PID 30211 (pstops) exited with no errors. [nawal@heisenbug:~/data/nixos/user/pkgs/canon]$ grep "invalid printer model name" -R ./cnijfilter-common/cnijfilter-3.40/src/bjfoption.c fprintf(stderr, "Error: invalid printer model name\n"); A bit of googling suggests the "model name" isn't quite what's in the ppd file... [nawal@heisenbug:~/data/nixos/user/pkgs/canon]$ grep Name -R ./usr/| grep ppd | grep Model ./usr/share/ppd/canonmp250.ppd:*ModelName: "Canon MP250 series" I think this might be where I leave the rabbit hole... On 20 June 2017 at 20:57, Kirill Elagin <kirela...@gmail.com> wrote: > Well, the log you posted is pretty clear on that: `pstocanonij` is calling > it. Googling `pstocanonij` gives me this: > > https://github.com/endlessm/cnijfilter-common/blob/master/ > pstocanonij/filter/pstocanonij.c#L45-L52 > > and sure enough > > https://github.com/endlessm/cnijfilter-common/blob/master/ > pstocanonij/filter/pstocanonij.c#L687-L695 > > Now, the question is what to do. It looks like the source of `pstocanonij` > is public (but you‘ll have to check what is this github repository, and > where does the code come from, to be on the safe side with the licence, > especially if you want to submit this expression to nixpkgs later). If this > part of the driver is really opensource, than the answer is obvious, you > just go there and fix the paths ;). > > On Tue, Jun 20, 2017 at 10:33 PM Nawal Husnoo <na...@husnoo.com> wrote: > >> Ah the lesson is I need to wake up fully before coding! Thank you! >> >> Still stuck - so close and yet so far! >> >> Error: >> ====== >> >> Jun 20 20:17:17 heisenbug cupsd[21991]: pstocanonij: /usr/bin/gs -r600 >> -g4958x7016 -q -dNOPROMPT -dSAFER -sDEVICE=ppmraw -sOutputFile=- -| >> /usr/bin/cifmp250 --imageres 600 --papersize a4 --media plain --paperload >> asf --bbox 9,14,586,834 --fit >> Jun 20 20:17:17 heisenbug cupsd[21991]: /bin/sh: /usr/bin/gs: No such >> file or directory >> Jun 20 20:17:17 heisenbug cupsd[21991]: /bin/sh: /usr/bin/cifmp250: No >> such file or directory >> Jun 20 20:17:17 heisenbug cupsd[21991]: Sent 0 bytes... >> >> Of course, the files /usr/bin/gs and /usr/bin/cifmp250 don't exist, this >> being nix and all... >> >> >> [nawal@heisenbug:~/data/nixos/user/pkgs/canon]$ which gs >> /home/nawal/.nix-profile/bin/gs >> >> [nawal@heisenbug:~/data/nixos/user/pkgs/canon]$ which cifmp250 >> /home/nawal/.nix-profile/bin/cifmp250 >> >> Closest thing I found was: >> https://github.com/NixOS/nixpkgs/blob/master/pkgs/misc/ >> cups/drivers/canon/default.nix >> https://github.com/NixOS/nixpkgs/blob/master/pkgs/misc/ >> cups/drivers/canon/preload.c >> >> but it's not clear to me how to port that to my problem... It's not even >> clear to me who's calling these two binaries, as grepping the deb file >> contents isn't turning up anything... >> >> thanks for any ideas! >> >> Nawal >> >> >> >> >> default.nix >> ====================================================== >> { stdenv >> , pkgs >> , udev >> , alsaLib >> , gtk2-x11 >> , patchelf >> , binutils >> , popt >> , cups >> , cairo >> , pango >> , fontconfig >> , glib >> , dpkg >> , atk >> , procps >> , gdk_pixbuf >> , zlib >> , libxml2 >> , perl >> , libtiff >> , firefox >> , libX11 >> , libXcursor >> , libXrandr >> , libXext >> , libXinerama >> , libXrender >> , libXi >> , libXfixes >> , libpng12 >> , pkgconfig >> }: >> >> stdenv.mkDerivation { >> name = "canon-mp250"; >> src = ./usr; >> builder = ./builder.sh; >> buildInputs = [libtiff perl pkgconfig]; >> >> configurePhase = '' >> echo "CONFIGURE TIFF ${libtiff.out}/lib/libtiff.so" >> ''; >> >> libPath = stdenv.lib.makeLibraryPath [ >> stdenv.cc.cc >> udev >> alsaLib >> gtk2-x11 >> binutils >> popt >> cups >> cairo >> pango >> fontconfig >> glib >> dpkg >> atk >> procps >> patchelf >> gdk_pixbuf >> libxml2 >> libtiff >> libpng12 >> libX11 >> libXcursor >> libXrandr >> libXext >> libXinerama >> libXrender >> libXi >> libXfixes >> ]; >> >> } >> >> >> >> >> >> builder.sh >> ====================================================== >> source $stdenv/setup >> >> mkdir -p $out/ >> cp -r $src/* $out/ >> >> >> chmod 777 -R $out/* >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/cngpijmonmp250 >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/cngpij >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/cnijnetprn >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/lgmonmp250 >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/cifmp250 >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/printuimp250 >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/bin/cnijnpr >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/lib/cups/filter/pstocanonij >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/lib/cups/backend/cnijusb >> >> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >> --set-rpath $libPath:$out/lib \ >> $out/lib/cups/backend/cnijnet >> >> ls -lh $out/lib/ >> ls -lh $out/ >> >> ln -sv $out/lib/libcnbpcmcm356.so.8.0.1 $out/lib/libcnbpcmcm356.so >> ln -sv $out/lib/libcnbpcnclbjcmd356.so.3.3.0 >> $out/lib/libcnbpcnclbjcmd356.so >> ln -sv $out/lib/libcnbpess356.so.3.3.3 $out/lib/libcnbpess356.so >> ln -sv $out/lib/libcnnet.so.1.2.0 $out/lib/libcnnet.so >> ln -sv $out/lib/libcnbpcnclapi356.so.3.5.0 $out/lib/libcnbpcnclapi356.so >> ln -sv $out/lib/libcnbpcnclui356.so.3.6.0 $out/lib/libcnbpcnclui356.so >> ln -sv $out/lib/libcnbpo356.so.1.0.2 $out/lib/libcnbpo356.so >> >> LIBTIFF=$(pkg-config --libs-only-L libtiff-4 | sed -e >> 's/-L//g')/libtiff.so.5 >> ln -s $LIBTIFF $out/lib/libtiff.so.4 >> >> >> >> >> >> >> On 20 June 2017 at 10:11, Kirill Elagin <kirela...@gmail.com> wrote: >> >>> You do `chmod 777` on a bunch of files, but not on `$out/lib`, but it’s >>> the creation of a link in `$out/lib` that fails, and according to your >>> output of `ls` the `lib` directory does not have the `w` permission indeed, >>> which is required to create a link in it. >>> >>> I am not sure how this works exactly, but it seems that `cp` removes the >>> `w` permission when copying, so you either have to reset this permissions >>> yourself or, probably simpler, `mkdir -p "$out/lib"` beforehand, in which >>> case `cp` will not overwrite its permissions. >>> >>> On Tue, Jun 20, 2017 at 11:28 AM Nawal Husnoo <na...@husnoo.com> wrote: >>> >>>> Hi >>>> >>>> I have the following default.nix and builder.sh, copied from the >>>> acroread example and adapted. They are called from config.nix. I'm getting >>>> permission denied when I try to create a symbolic link. Any ideas? >>>> >>>> thanks >>>> >>>> Nawal >>>> >>>> >>>> Error: >>>> >>>> [nawal@heisenbug:~/data/nixos/user/pkgs/canon]$ nix-env -i all >>>> warning: there are multiple derivations named ‘all’; using the first one >>>> replacing old ‘all’ >>>> installing ‘all’ >>>> these derivations will be built: >>>> /nix/store/w1w639kybx0lgvdmnb9ipg0j1xvb9wlq-canon-mp250.drv >>>> /nix/store/bmp2ibgc82rmx14bgavd3pknwxwdp4ld-all.drv >>>> building path(s) ‘/nix/store/q5qyxyqrfscdv7yj6aywx9v518215w >>>> dr-canon-mp250’ >>>> total 764K >>>> dr-xr-xr-x 2 nixbld1 nixbld 4.0K Jun 20 08:23 bjlib >>>> dr-xr-xr-x 4 nixbld1 nixbld 4.0K Jun 20 08:23 cups >>>> -r-xr-xr-x 1 nixbld1 nixbld 47K Jun 20 08:23 libcnbpcmcm356.so.8.0.1 >>>> -r-xr-xr-x 1 nixbld1 nixbld 41K Jun 20 08:23 libcnbpcnclapi356.so.3.5.0 >>>> -r-xr-xr-x 1 nixbld1 nixbld 21K Jun 20 08:23 >>>> libcnbpcnclbjcmd356.so.3.3.0 >>>> -r-xr-xr-x 1 nixbld1 nixbld 29K Jun 20 08:23 libcnbpcnclui356.so.3.6.0 >>>> -r-xr-xr-x 1 nixbld1 nixbld 522K Jun 20 08:23 libcnbpess356.so.3.3.3 >>>> -r-xr-xr-x 1 nixbld1 nixbld 42K Jun 20 08:23 libcnbpo356.so.1.0.2 >>>> -r-xr-xr-x 1 nixbld1 nixbld 38K Jun 20 08:23 libcnnet.so.1.2.0 >>>> total 12K >>>> dr-xr-xr-x 2 nixbld1 nixbld 4.0K Jun 20 08:23 bin >>>> dr-xr-xr-x 4 nixbld1 nixbld 4.0K Jun 20 08:23 lib >>>> dr-xr-xr-x 7 nixbld1 nixbld 4.0K Jun 20 08:23 share >>>> ln: failed to create symbolic link '/nix/store/ >>>> q5qyxyqrfscdv7yj6aywx9v518215wdr-canon-mp250/lib/libcnbpcmcm356.so': >>>> Permission denied >>>> builder for ‘/nix/store/w1w639kybx0lgvdmnb9ipg0j1xvb9wlq-canon-mp250.drv’ >>>> failed with exit code 1 >>>> cannot build derivation >>>> ‘/nix/store/bmp2ibgc82rmx14bgavd3pknwxwdp4ld-all.drv’: >>>> 1 dependencies couldn't be built >>>> error: build of ‘/nix/store/bmp2ibgc82rmx14bgavd3pknwxwdp4ld-all.drv’ >>>> failed >>>> >>>> >>>> >>>> config.nix >>>> with import <nixpkgs> {}; >>>> >>>> { >>>> allowUnfree = true; >>>> >>>> packageOverrides = pkgs_: with pkgs_; { >>>> canon = callPackage ./pkgs/canon { >>>> inherit (pkgs) pkgs; >>>> }; >>>> >>>> >>>> all = with pkgs; buildEnv { >>>> name = "all"; >>>> paths = [ >>>> canon >>>> ]; >>>> }; >>>> }; >>>> } >>>> >>>> >>>> default.nix: >>>> { stdenv >>>> , pkgs >>>> , udev >>>> , alsaLib >>>> , gtk2-x11 >>>> , patchelf >>>> , binutils >>>> , popt >>>> , cups >>>> , cairo >>>> , pango >>>> , fontconfig >>>> , glib >>>> , dpkg >>>> , atk >>>> , procps >>>> , gdk_pixbuf >>>> , zlib >>>> , libxml2 >>>> , libtiff >>>> , firefox >>>> , libX11 >>>> , libXcursor >>>> , libXrandr >>>> , libXext >>>> , libXinerama >>>> , libXrender >>>> , libXi >>>> , libXfixes >>>> }: >>>> >>>> stdenv.mkDerivation { >>>> name = "canon-mp250"; >>>> src = ./usr; >>>> builder = ./builder.sh; >>>> libPath = stdenv.lib.makeLibraryPath [ >>>> stdenv.cc.cc >>>> udev >>>> alsaLib >>>> gtk2-x11 >>>> binutils >>>> popt >>>> cups >>>> cairo >>>> pango >>>> fontconfig >>>> glib >>>> dpkg >>>> atk >>>> procps >>>> patchelf >>>> gdk_pixbuf >>>> libxml2 >>>> libtiff >>>> libX11 >>>> libXcursor >>>> libXrandr >>>> libXext >>>> libXinerama >>>> libXrender >>>> libXi >>>> libXfixes >>>> ]; >>>> >>>> } >>>> >>>> >>>> builder.sh: >>>> source $stdenv/setup >>>> >>>> mkdir -p $out/ >>>> cp -r $src/* $out/ >>>> >>>> >>>> chmod 777 -R $out/bin/* >>>> chmod 777 -R $out/lib/cups/filter/* >>>> chmod 777 -R $out/lib/cups/backend/* >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/cngpijmonmp250 >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/cngpij >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/cnijnetprn >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/lgmonmp250 >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/cifmp250 >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/printuimp250 >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/bin/cnijnpr >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/lib/cups/filter/pstocanonij >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/lib/cups/backend/cnijusb >>>> >>>> patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ >>>> --set-rpath $libPath:$out/lib \ >>>> $out/lib/cups/backend/cnijnet >>>> >>>> ls -lh $out/lib/ >>>> ls -lh $out/ >>>> >>>> ln -sv $out/lib/libcnbpcmcm356.so.8.0.1 $out/lib/libcnbpcmcm356.so >>>> ln -sv $out/lib/libcnbpcnclbjcmd356.so.3.3.0 >>>> $out/lib/libcnbpcnclbjcmd356.so >>>> ln -sv $out/lib/libcnbpess356.so.3.3.3 $out/lib/libcnbpess356.so >>>> ln -sv $out/lib/libcnnet.so.1.2.0 $out/lib/libcnnet.so >>>> ln -sv $out/lib/libcnbpcnclapi356.so.3.5.0 >>>> $out/lib/libcnbpcnclapi356.so >>>> ln -sv $out/lib/libcnbpcnclui356.so.3.6.0 $out/lib/libcnbpcnclui356.so >>>> ln -sv $out/lib/libcnbpo356.so.1.0.2 $out/lib/libcnbpo356.so >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> nix-dev mailing list >>>> nix-dev@lists.science.uu.nl >>>> https://mailman.science.uu.nl/mailman/listinfo/nix-dev >>>> >>> >>
_______________________________________________ nix-dev mailing list nix-dev@lists.science.uu.nl https://mailman.science.uu.nl/mailman/listinfo/nix-dev