On 23/12/2022 19:30, Till Kamppeter wrote:
Is the API of the legacy libppd complex? Or could one find someone who could add this API to my modern libppd to keep these users happy and give them even a maintained library.
I have downloaded the upstream source of the legacy libppd now and investigated ...
The API adaption looks like rather easy, adding only some extra *.h files to my modern libppd.
My modern libppd is a very sophisticated and complete rip-out of the PPD support functionality of CUPS, to conserve this functionality for CUPS-driver retro-fitting Printer Applications when it goes away in CUPS 3.x. The original CUPS APIs are mainly conserved, only a few functions renamed.
The legacy libppd is also a rip-out of CUPS' PPD support functionality, but not that sophisticated and done 20 years ago to make CUPS' PPD support functionality available to LPD/LPR/LPRng users. It got rarely used, probably there were more of these LPD/LPR/LPRng users using my Foomatic instead.
As both libppd are rip-outs from CUPS, their APIs are very similar, so one could add some *.h file (and perhaps one *.c file with simple wrapper functions) to make my modern libppd replacing the legacy one so that we can ditch it for good, and continue gpr ...
So I would suggest 4. Replace the legacy libppd by my modern libppd As described above we add an "API adapter", some *.h files with macros to "translate" old names to new names and a *.c file with wrapper functions for changes between the APIs of CUPS 1.x and CUPS 2.x. The user will need libppd and libcups then (some of libppd's functions are not actually having to do with PPDs and so in my CUPS setup I have left them to be supplied by libcups (but using libcups does not require to run a CUPS daemon). When packaging, my libppd will have epoch 3 and so considered newer than legacy libppd, so updates should simply replace the old library by the new one and new installations of libppd-dev grab the new version. The gpr Debian package only needs a no-change rebuild to use libppd2 instead of libppd0. In Debian we have to remove the legacy libppd then and put the modern one into its place. WDYT? Till