CUPS printer drivers contain a field named ppds_compressd_b64, which is not generated deterministically.

Known affected packages.


A /usr/lib/cups/driver/* file containing:

    # PPDs Archive
    ppds_compressed_b64 = b"/Td6WFoAAATm1rRGAgAhARYAAAB0...a very long line.

Cause / Solution

ppds_compressed_b64 is a base64 encoding of a xz'd compressed Python pickle of a dict. This is generated by the pyppd binary during the build process (usually called by dh_pyppd). Non-determinism was added by the pickling process, as well as by the ordering of ppd/ppd.gz files as found by pyppd. Replacing python-specific pickling with dumping to json (modulo base64'ing and encoding/decoding to/from ASCII), and ordering the file list was implemented in pyppd 1.0.1-4. Make sure to retry with this version.