Subject: hplip 3.18.9 contains non-free binary blobs
From: [email-masked] (Ludovic Courtès)
To: [email-masked]
Cc: Tobias Geerinckx-Rice <[email-masked]>, Efraim Flashner <[email-masked]>
Date: Wed, 07 Nov 2018 11:19:35 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

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

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

Thoughts?

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