[cups-devel] [cups] IPP backend bug

Johannes Meixner jsmeix at suse.de
Mon Sep 7 05:25:14 PDT 2015


Hello,

On Sep 7 17:44 Vadim A. Misbakh-Soloviov wrote (excerpt):
> All the same filters (wil it be things from guttenprint or
> hplip or whatever) works fine with CUPS 1.5, but stops
> to work on versions since 1.6.

I still think that your issues are not caused by CUPS.

Very likely there are not all the same filters used
on your systems for CUPS 1.5 versus CUPS 1.6.

Only one of the filters is the actual printer driver
like Gutenprint or HPLIP and that one might be the same
but there are several other filters used too and those
are likely not the same in CUPS 1.5 versus CUPS 1.6.

See the CUPS error_log file what processes are started
to process one particular print job.

Many filters that had been provided up to CUPS 1.5 by CUPS itself
have been removed from CUPS since CUPS 1.6.

Those filters are now provided by cups-filters which
is not from CUPS upstream but a separated software from
the OpenPrinting workgroup at the Linux Foundation, see
http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters

Furthermore the general way how print jobs are processed
has fundamentally changed at that time from the traditional
PostScript-based workflow to the new PDF-based workflow, see
http://www.linuxfoundation.org/collaborate/workgroups/openprinting/pdf_as_standard_print_job_format

In your case it is not the printer driver that fails
but Ghostscript.

Ghostscript is called as one print job processing program
by one print job processing filter (in your case it seems
that filter is foomatic-rip).

I guess before Ghostscript was used within the traditional
PostScript-based workflow where it had worked but meanwhile
it is used within the new PDF-based workflow where it fails.

If my assumption is true I guess furthermore that the root cause
of the Ghostscript failure is "something" in the new PDF-based
workflow that calls Ghostscript "somehow" wrong that makes it fail.

Regarding the CUPS API:

Usually the filtering does not work by using function calls
from the CUPS library so that the CUPS API is not involved.

Basically each filtering program (except the CUPS backend)
gets its input via stdin and provides its output at stdout
(i.e. it works as traditional POSIX filter).

In genreal regarding filters and backends for CUPS see
"What does the filter system do and how does it work?" and
"What is a CUPS backend and how does it work?" at
https://en.opensuse.org/SDB:CUPS_in_a_Nutshell


Kind Regards
Johannes Meixner
-- 
SUSE LINUX GmbH - GF: Felix Imendoerffer, Jane Smithard,
Graham Norton - HRB 21284 (AG Nuernberg)




More information about the cups-devel mailing list