Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

papd - CUPS 3.0 Support Roadmap. #663

Open
1 of 4 tasks
NJRoadfan opened this issue Jan 9, 2024 · 5 comments
Open
1 of 4 tasks

papd - CUPS 3.0 Support Roadmap. #663

NJRoadfan opened this issue Jan 9, 2024 · 5 comments
Assignees

Comments

@NJRoadfan
Copy link
Contributor

NJRoadfan commented Jan 9, 2024

  • 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: [2.3] papd - More cleanup and moderization of print_cups.c #672 [2.3] papd: Update cups_print_job() to use CUPS destination API #651 [2.2] papd: Future-proof CUPS API usage #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
Copy link
Contributor Author

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.

@rdmark
Copy link
Member

rdmark commented Mar 11, 2024

@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.

@NJRoadfan
Copy link
Contributor Author

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).

@rdmark
Copy link
Member

rdmark commented Mar 12, 2024

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

@rdmark rdmark changed the title [2.3] papd - CUPS 3.0 Support Roadmap. papd - CUPS 3.0 Support Roadmap. Jul 30, 2024
@rdmark
Copy link
Member

rdmark commented Aug 4, 2024

For the record, I tweaked the papd docs slightly while merging #1374 to explain the new PPD behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants