Subject: bug#33300: hplip 3.18.9 contains non-free binary blobs

From: Efraim Flashner <[email-masked]>
Date: Wed, 7 Nov 2018 14:48:58 +0200

On Wed, Nov 07, 2018 at 11:19:35AM +0100, Ludovic Courtès wrote:
> Hello,
> 
> The tarball of hplip 3.18.9 contains several .so files that it installs
> as-is:
> 
> --8<---------------cut here---------------start------------->8---
> ludo@ribbon ~/src/guix$ (cd /tmp; tar xf $(guix build -S hplip))
> ludo@ribbon ~/src/guix$ find /tmp/hplip-3.18.9 -name \*.so
> /tmp/hplip-3.18.9/prnt/plugins/hbpl1-arm32.so
> /tmp/hplip-3.18.9/prnt/plugins/hbpl1-x86_64.so
> /tmp/hplip-3.18.9/prnt/plugins/lj-x86_32.so
> /tmp/hplip-3.18.9/prnt/plugins/hbpl1-arm64.so
> /tmp/hplip-3.18.9/prnt/plugins/hbpl1-x86_32.so
> /tmp/hplip-3.18.9/prnt/plugins/lj-arm64.so
> /tmp/hplip-3.18.9/prnt/plugins/lj-x86_64.so
> /tmp/hplip-3.18.9/prnt/plugins/lj-arm32.so
> /tmp/hplip-3.18.9/prnt/hpcups/libImageProcessor-x86_32.so
> /tmp/hplip-3.18.9/prnt/hpcups/libImageProcessor-x86_64.so
> --8<---------------cut here---------------end--------------->8---
> 
> I tried removing them with a snippet (patch attached), but installation
> eventually fails while trying to link against libImageProcessor, which
> is now missing.
> 
> In <https://bugs.launchpad.net/hplip/+bug/1785230/> people suggest that
> 3.18.6 is the last known-good version.  Indeed that version does not
> have the obnoxious libImageProcessor, so that should be fine.  It does
> come with the non-free binary plug-ins, though these are just plugins so
> removing them will be easier:
> 
> --8<---------------cut here---------------start------------->8---
> ludo@ribbon ~/src/guix$ find /tmp/hplip-3.18.6/ -name \*.so
> /tmp/hplip-3.18.6/prnt/plugins/hbpl1-arm32.so
> /tmp/hplip-3.18.6/prnt/plugins/hbpl1-x86_64.so
> /tmp/hplip-3.18.6/prnt/plugins/lj-x86_32.so
> /tmp/hplip-3.18.6/prnt/plugins/hbpl1-arm64.so
> /tmp/hplip-3.18.6/prnt/plugins/hbpl1-x86_32.so
> /tmp/hplip-3.18.6/prnt/plugins/lj-arm64.so
> /tmp/hplip-3.18.6/prnt/plugins/lj-x86_64.so
> /tmp/hplip-3.18.6/prnt/plugins/lj-arm32.so
> --8<---------------cut here---------------end--------------->8---
> 
> Thus, I propose to:
> 
>   1. Revert to 3.18.6 (we’ll upgrade if and when hplip becomes free
>      again.)

Not bad for an interm solution. Debian already has 3.18.10 packaged, and
based on their versioning scheme it still contains non-free artifacts.

> 
>   2. Add a snippet to remove the non-free plugins.
> 
> Thoughts?

Here's what I have right now:

;; Delete non-free blobs$
(delete-file "prnt/hpcups/libImageProcessor-x86_64.so")$
(delete-file "prnt/hpcups/libImageProcessor-x86_32.so")$
(delete-file-recursively "prnt/plugins")$
(substitute* "Makefile.am"$
  (("dist_printplugins_DATA") "# dist_printplugins_DATA"))

and a patch from debian to address imageprocessor:
  https://salsa.debian.org/printing-team/hplip/raw/debian/3.18.10+dfsg0-1/debian/patches/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch

> Thanks,
> Ludo’.

> diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
> index 4259648c69..c0ac365691 100644
> --- a/gnu/packages/cups.scm
> +++ b/gnu/packages/cups.scm
> @@ -410,6 +410,19 @@ device-specific programs to convert and print many types of files.")
>                 '(begin
>                    (substitute* "prnt/hpcups/genPCLm.cpp"
>                      (("boolean") "bool"))
> +
> +                  ;; Starting from version 3.18.9, hplip comes with binary
> +                  ;; blobs under prnt/hpcups and prnt/plugins.  Remove them.
> +                  (for-each delete-file (find-files "." "\\.so$"))
> +
> +                  ;; This trick changes the behavior of the
> +                  ;; 'install-data-hook' target so that it doesn't install the
> +                  ;; binary blobs.
> +                  (substitute* "Makefile.in"
> +                    (("^UNAME =.*")
> +                     "UNAME = free-software-only-thanks\n")
> +                    (("prnt/hpcups/libImageProcessor-([[:graph:]]+)\\.so")
> +                     ""))
>                    #t))))
>      (build-system gnu-build-system)
>      (home-page "https://developers.hp.com/hp-linux-imaging-and-printing")

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted