[Foo2zjs-maintainer] Bug#594322: Bug#594322: foo2zjs: Please upgrade to more recent version for Squeeze.

Till Kamppeter till.kamppeter at gmail.com
Tue Feb 15 23:23:47 UTC 2011


On 11/05/2010 04:10 AM, Luca Capello wrote:
> Hi there!
>
> On Wed, 13 Oct 2010 02:21:35 +0200, Luca Capello wrote:
>> On Mon, 27 Sep 2010 23:16:49 +0200, Till Kamppeter wrote:
>>> On 09/27/2010 06:53 PM, Luca Capello wrote:
>>>> 4) I am not sure debian/local/ is the right place for non-upstream
>>>>      files, but I should admit that this is the first time I heard about
>>>>      it and I can not find any documentation about that.  Nevermind, I
>>>>      have added the two non-upstream PPDs.
>>>>
>>>>      BTW, conceptually speaking, Ubuntu debian/rules misses the command to
>>>>      compress these two files, given that this action is hidden in the
>>>>      'Add "*cupsFilter" line to accept PDF input data to the PPDs' block.
>>>>
>>>
>>> Please go ahead and correct also this.
>>> I will overtake the version with your corrections to Ubuntu.
>>
>> Given that I still have not understood what the 'Add "*cupsFilter"
>> line...' does, no corrections on this matter have been made yet.
>
> Still valid.
>

This makes the PPD files allow PDF as input format. This way the print 
queues integrate with the PDF-based printing workflow which is 
implemented in Debian and Ubuntu. PDF-based printing workflow means that 
applications send PDF (and not PostScript any more) to CUPS when the 
user prints his document. CUPS uses PDF as standard file format. 
Everything coming in which is not PDF (like PostScript output of legacy 
applications) is turned to PDF at first, then a pdftopdf filter does 
rearrangement of the pages (if the user selected N-up, reverse order, 
selected pages, ...), and after that PDF is sent to the driver. See

https://www.linuxfoundation.org/collaborate/workgroups/openprinting/pdfasstandardprintjobformat

I have seen may packages which use debian/local/ to add non-upstream files.

>> 5) - debian/foo2zjs.postinst: Automatically update the PPD files for
>>       existing queues to the versions supplied with this package.
>>     - debian/control: Add dependency on cups and cups-client to ensure that
>>       automatic update of the PPDs of existing print queues works.
>>
>>     I do not understand the purpose of this action, but I should admit
>>     that I am not a CUPS expert and I do not know how other drivers
>>     behave.
>>
>>     However, given that in Debian the PPDs are configuration files (see
>>     <http://bugs.debian.org/549673>), I would expect dpkg to prompt for
>>     any modification, is it so in this case?
>
> Still valid.
>

Often the driver has changes which require also changes in the PPD 
files, for example if options are added or additional settings for an 
option. If you simply update the package, the driver executables get 
replaced by the new version and also the PPD files under 
/usr/share/ppd/, but not the PPD files of already existing print queues 
in /etc/cups/ppd/. Rick Richardson, the upstream author of foo2zjs 
simply tells in his ChangeLog to remove and recreate the print queues. 
Typical distro users neither read the upstream ChangeLog of a package, 
nor do they not know that their queues need to get manually recreated to 
make the update complete. They even often do not know that the foo2zjs 
package is their printer driver. Therefore I let the package do the 
dirty work as doing a really complete update by letting the postinst 
script updating the PPDs of the already configured queues in 
/etc/cups/ppd/. The only configuration in these files are the default 
settings (lines starting with "*Default..."), The rest of the files are 
printer-specific and no user configuration. The automatic update is done 
with CUPS' "lpadmin" command line utility which preserves the default 
settings. This way the user has always the correct PPD for his driver 
(works on both up- and downdate of the package) and his default settings 
do not get lost. Printing will "just work" for him.

>> 10) - debian/rules: Add /etc/papersize support, and modify all
>>        /usr/bin/foo2*-wrapper scripts to handle custom page sizes correctly in
>>        the PDF-based printing workflow.
>>      - debian/rules: Add "*cupsFilter" line to accept PDF input data to the
>>        PPDs.
>>
>>      - Support for the PDF printing workflow:
>>         o "*cupsFilter:" lines for PDF input in the PPDs
>>         o Let wrapper scripts read custom page sizes also
>> 	 from the command line and not only from embedded
>>           PostScript commands.
>>
>>      I do not understand these modifications, would you mind explaining
>>      them, please?  I do not feel comfortable in applying something I do
>>      not understand, sorry...
>
> Still valid.
>

There are awkward foo2...-wrapper scripts, all identical except a few 
lines. Why did Rick not make one file with function definitions, source 
it into all the foo2...-wrapper scripts and use the functions? This way 
it is awkward to make patches doing the same change in each of the 
scripts. Especially more or less once a year (every second Ubuntu 
release) there is a new driver with a new foo2...-wrapper script in the 
package. Easy to overlook when having patches. Therefore I use Perl 
magic in the debian/rules file to do these identical changes on all the 
scripts. Also doing the same change on all PPD files is rather awkward 
by a patch and I do also this by Perl Magic in the debian/rules file.

1. Add /etc/papersize support: This change on the foo2...-wrapper 
scripts makes the default page size being taken from /etc/papersize, 
like all programs which use libpaper do, too. This way one has a 
reasonable default paper size and not Letter which is used only in two 
countries on the world.

2. The changes foir the custom page size handlin in the foo2...-wrapper 
scripts got already accepted upstream, therefore these are not done any 
more in the debian/rules file. So ignore the phrases

    and modify all /usr/bin/foo2*-wrapper scripts to handle custom page
    sizes correctly in the PDF-based printing workflow.

and

    Let wrapper scripts read custom page sizes also from the command
    line and not only from embedded PostScript commands.

in the list of Ubuntu-specific changes.

About the insertion of "*cupsFilter:" lines to the PPDs see the section 
about the PDF printing workflow above.

I hope everything is clear now.

    Till





More information about the Foo2zjs-maintainer mailing list