netatalk
netatalk copied to clipboard
papd - CUPS 3.0 Support Roadmap.
- [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.cto allow papd to compile against bothlibcups2andlibcups3. - 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
cupsfiltersinstalled too. - [ ] Update M4 autotools scripts and meson scripts to use
pkg-configto detectlibcups3andlibcupsfilters. - Netatalk currently uses the
cups-configscript to detect the presence of CUPS. This script is going away with CUPS 3.x and the project is opting to usepkg-configfor now on. A preferred flow would be to keep the currentcups-configmacro routine in place to detect pre-3.x releases of CUPS, and if it fails, run the newerpkg-configmacro to check for CUPS 3.x andlibcupsfilter.
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.
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 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.
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).
Right, so I think this behavior should be captured in the docs, for instance.
For the record, I tweaked the papd docs slightly while merging https://github.com/Netatalk/netatalk/pull/1374 to explain the new PPD behavior.