netatalk icon indicating copy to clipboard operation
netatalk copied to clipboard

papd - CUPS 3.0 Support Roadmap.

Open NJRoadfan opened this issue 1 year ago • 6 comments

  • [x] Remove deprecated CUPS API functions from print_cups.c.
  • Removed PPD API and rewrote all code to use the CUPS Destination API introduced in CUPS 1.6. Fixed with: #672 #651 #373
  • [ ] Add macro to print_cups.c to allow papd to compile against both libcups2 and libcups3.
  • There are several API calls with differing names that require this.
  • [ ] Integrate conversion of Postscript print jobs to PDF using libcupsfilters.
  • Currently CUPS 2.x automatically hands off all Postscript input from Macintosh clients to cupsfilters, which converts the print job to whatever format is needed for the destination printer (eg: URF/Raster, PCL, etc.). CUPS 3.x is doing away with filters and will only accept a limited set of file formats (one of which is PDF) so we'll need to handle the conversion before sending a job to a printer. This introduces a new dependency to the project but shouldn't be a problem in practice since machines with CUPS installed usually have cupsfilters installed too.
  • [ ] Update M4 autotools scripts and meson scripts to use pkg-config to detect libcups3 and libcupsfilters.
  • Netatalk currently uses the cups-config script to detect the presence of CUPS. This script is going away with CUPS 3.x and the project is opting to use pkg-config for now on. A preferred flow would be to keep the current cups-config macro routine in place to detect pre-3.x releases of CUPS, and if it fails, run the newer pkg-config macro to check for CUPS 3.x and libcupsfilter.

Currently the completion time frame of this list is TBD as CUPS 3.0 is not out yet. However, the API changes have been documented to allow for code updates. Project maintainers are targeting release later this year and distributions using CUPS 3.0 (notably Ubuntu) will likely appear shortly thereafter.

NJRoadfan avatar Jan 09 '24 04:01 NJRoadfan

Update: I now have papd working with libcups3 and printing documents. Discovered a bug in libcups3 in the process (see linked issue above). Now that issue has been fixed, I can proceed.

NJRoadfan avatar Jan 13 '24 19:01 NJRoadfan

@NJRoadfan One more task for this ticket is to update the documentation. At least the papd.conf(5) man page talks about using PPD files with CUPS.

rdmark avatar Mar 11 '24 23:03 rdmark

One can still override CUPS created queues with a custom PPD. That functionality has been retained. The only "under the hood" difference is that papd now dynamically generates a PPD on the fly by querying a printer via IPP directly, instead of relying on CUPS to do it (since its going away in 3.0).

NJRoadfan avatar Mar 12 '24 00:03 NJRoadfan

Right, so I think this behavior should be captured in the docs, for instance.

rdmark avatar Mar 12 '24 00:03 rdmark

For the record, I tweaked the papd docs slightly while merging https://github.com/Netatalk/netatalk/pull/1374 to explain the new PPD behavior.

rdmark avatar Aug 04 '24 06:08 rdmark