Subject: Re: bug#29219: CUPS filter still can't access Ghostscript (gs)

From: [email-masked] (Ludovic Courtès)
Date: Fri, 10 Nov 2017 13:22:39 +0100

Hi Mekeor,

Mekeor Melire <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> writes:
>
>> Mekeor Melire <[email-masked]> skribis:
>
>>> But although I was expecting commit
>>> 1728c411718e3b358c06561d6e80b47d7b331617¹ to fix this issue, when I try
>>> the ljet4² driver, I still get this error in /var/log/cups/error_log³:
>
>>>     sh: gs: command not found
>>>     Process is dying with \"Unable to determine number of pages, page count: -1
>>>     \", exit stat 3
>
>> Just make sure to reconfigure from a recent-enough commit (run ‘guix
>> --version’ as root to see which commit you’re using.)
>
> Done. I'm running a recent-enough commit. (Namely
> 46dea1241c801af5aa65e0c7b4e84bb0aff11273.)
>
>> If it turns out you’re already using CUPS with commit
>> 1728c411718e3b358c06561d6e80b47d7b331617, could you reproduce the issue
>> while running “strace -p PID -f -s 345 -o log”, where PID is the PID of
>> cupsd as shown by ‘herd status cups’?
>
> You can find the log here: <http://sprunge.us/UDOY>. These might be the
> interesting lines:
>
>     $ grep -E '[^a-zA-Z0-9]gs' log
>     31377 execve("/gnu/store/…-bash-static-4.4.12/bin/sh", ["sh", "-c", "gs -dNODISPLAY -q -c '/pdffile (/var/spool/cups/tmp/foomatic-4ngnEr) (r) file def pdfdict begin pdffile pdfopen begin (PageCount: ) print pdfpagecount == flush currentdict pdfclose end end quit'"], 0x149e810 /* 33 vars */ <unfinished ...>
>     31377 stat("/gnu/store/…-cups-server-bin/lib/cups/filter/gs", 0x7ffd7921b5c0) = -1 ENOENT (No such file or directory)
>     31377 stat("/gnu/store/…-cups-2.2.4/bin/gs", 0x7ffd7921b5c0) = -1 ENOENT (No such file or directory)
>     31377 stat("/gnu/store/…-cups-2.2.4/sbin/gs", 0x7ffd7921b5c0) = -1 ENOENT (No such file or directory)
>     31377 stat("/bin/gs", 0x7ffd7921b5c0)   = -1 ENOENT (No such file or directory)
>     31377 stat("/usr/bin/gs", 0x7ffd7921b5c0) = -1 ENOENT (No such file or directory)
>     31377 write(2, "sh: gs: command not found\n", 26) = 26
>     15154 <... read resumed> "sh: gs: command not found\n", 2047) = 26
>     15154 write(4, "D [09/Nov/2017:20:06:50 +0100] [Job 13] sh: gs: command not found\n", 66) = 66
>
> Thank you for your help! How could we continue debugging?

IIUC, process 31377 is started by cupsd itself.  Commit
1728c411718e3b358c06561d6e80b47d7b331617 wrapped the cups-filters
programs but not cupsd itself.  Perhaps we need to wrap cupsd similarly?
Could you grep the source of cups itself to see if it contains this ‘gs’
invocation?

In the meantime, can you try adding ghostcript to your system profile?
That should work around the problem.

Thanks,
Ludo’.