summary refs log tree commit diff
path: root/pkgs/misc/drivers
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2022-07-05 17:03:07 -0500
committerGitHub <noreply@github.com>2022-07-05 17:03:07 -0500
commitf8e92d67b8ffe330952807bddf16661751eb2259 (patch)
tree0f90493cfd370bfc14d1b36accdae51fb8fa45ba /pkgs/misc/drivers
parentbe948cdf737fec2f1d69ff721da2c0bd2232bb46 (diff)
parent3ed1328b9bdc61bb220d516fbbcdbf7befa74b41 (diff)
Merge pull request #179871 from avdv/hplip-update-3.22.6
hplip: 3.21.12 -> 3.22.6
Diffstat (limited to 'pkgs/misc/drivers')
-rw-r--r--pkgs/misc/drivers/hplip/default.nix20
-rw-r--r--pkgs/misc/drivers/hplip/revert-snprintf-change.patch61
2 files changed, 77 insertions, 4 deletions
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index 554a8d4066ca4..db7f92b219275 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, substituteAll
-, pkg-config
+, pkg-config, autoreconfHook
 , cups, zlib, libjpeg, libusb1, python3Packages, sane-backends
 , dbus, file, ghostscript, usbutils
 , net-snmp, openssl, perl, nettools, avahi
@@ -14,16 +14,16 @@
 let
 
   pname = "hplip";
-  version = "3.21.12";
+  version = "3.22.6";
 
   src = fetchurl {
     url = "mirror://sourceforge/hplip/${pname}-${version}.tar.gz";
-    sha256 = "sha256-fvRSPvgbztcVFeHIhA72xoxgJjjBWebdmpJpHO7GT5w=";
+    sha256 = "sha256-J+0NSS/rsLR8ZWI0gg085XOyT/W2Ljv0ssR/goaNa7Q=";
   };
 
   plugin = fetchurl {
     url = "https://developers.hp.com/sites/default/files/${pname}-${version}-plugin.run";
-    sha256 = "sha256-eyYNhuff8mM4IpRfn/fLBjQJ23JrTdsHBQ/EH7Ug0gw=";
+    sha256 = "sha256-MSQCPnSXVLrXS1nPIIvlUx0xshbyU0OlpfLOghZMgvs=";
   };
 
   hplipState = substituteAll {
@@ -71,6 +71,7 @@ python3Packages.buildPythonApplication {
   nativeBuildInputs = [
     pkg-config
     removeReferencesTo
+    autoreconfHook
   ] ++ lib.optional withQt5 qt5.wrapQtAppsHook;
 
   pythonPath = with python3Packages; [
@@ -96,6 +97,15 @@ python3Packages.buildPythonApplication {
     # don't on NixOS).  Add the equivalent NixOS path, /var/lib/cups/path/share.
     # See: https://github.com/NixOS/nixpkgs/issues/21796
     ./hplip-3.20.11-nixos-cups-ppd-search-path.patch
+
+    # Remove all ImageProcessor functionality since that is closed source
+    (fetchurl {
+      url = "https://sources.debian.org/data/main/h/hplip/3.22.4%2Bdfsg0-1/debian/patches/0028-Remove-ImageProcessor-binary-installs.patch";
+      sha256 = "sha256:18njrq5wrf3fi4lnpd1jqmaqr7ph5d7jxm7f15b1wwrbxir1rmml";
+    })
+
+    # Revert changes that break compilation under -Werror=format-security
+    ./revert-snprintf-change.patch
   ];
 
   postPatch = ''
@@ -118,6 +128,8 @@ python3Packages.buildPythonApplication {
       -e s,/usr/share/cups/fonts,${ghostscript}/share/ghostscript/fonts,g \
       -e "s,ExecStart=/usr/bin/python /usr/bin/hp-config_usb_printer,ExecStart=$out/bin/hp-config_usb_printer,g" \
       {} +
+
+    echo 'AUTOMAKE_OPTIONS = foreign' >> Makefile.am
   '';
 
   configureFlags = let out = placeholder "out"; in
diff --git a/pkgs/misc/drivers/hplip/revert-snprintf-change.patch b/pkgs/misc/drivers/hplip/revert-snprintf-change.patch
new file mode 100644
index 0000000000000..2caa98dc2cffa
--- /dev/null
+++ b/pkgs/misc/drivers/hplip/revert-snprintf-change.patch
@@ -0,0 +1,61 @@
+commit f103a260215016fc035bc1399c8accabf83b0264
+Author: Claudio Bley <claudio.bley@gmail.com>
+Date:   Fri Jul 1 22:29:05 2022 +0200
+
+    Revert change to hp_ipp.c from 3.22.{4 -> 6}
+    
+    This fails compilation:
+    ```
+    protocol/hp_ipp.c: In function ‘addCupsPrinter’:
+    protocol/hp_ipp.c:113:9: error: format not a string literal and no format arguments [-Werror=format-security]
+      113 |         snprintf( info,sizeof(info), name );
+          |         ^~~~~~~~
+    ```
+
+diff --git a/protocol/hp_ipp.c b/protocol/hp_ipp.c
+index 97d827d..af7013b 100644
+--- a/protocol/hp_ipp.c
++++ b/protocol/hp_ipp.c
+@@ -110,7 +110,7 @@ int addCupsPrinter(char *name, char *device_uri, char *location, char *ppd_file,
+      }
+ 
+      if ( info == NULL )
+-        snprintf( info,sizeof(info), name );
++        strcpy( info, name );
+ 
+      sprintf( printer_uri, "ipp://localhost/printers/%s", name );
+ 
+@@ -511,27 +511,27 @@ int __parsePrinterAttributes(ipp_t *response, printer_t **printer_list)
+ 
+              if ( strcmp(attr_name, "printer-name") == 0 &&
+                                         val_tag == IPP_TAG_NAME ) {
+-                  snprintf(t_printer->name, sizeof(t_printer->name),ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->name, ippGetString(attr, 0, NULL) );
+              }
+              else if ( strcmp(attr_name, "device-uri") == 0 &&
+                                          val_tag == IPP_TAG_URI ) {
+-                  snprintf(t_printer->device_uri,sizeof(t_printer->device_uri), ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->device_uri, ippGetString(attr, 0, NULL) );
+              }
+              else if ( strcmp(attr_name, "printer-uri-supported") == 0 &&
+                                                  val_tag == IPP_TAG_URI ) {
+-                  snprintf(t_printer->printer_uri,sizeof(t_printer->printer_uri), ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->printer_uri, ippGetString(attr, 0, NULL) );
+              }
+              else if ( strcmp(attr_name, "printer-info") == 0 &&
+                                         val_tag == IPP_TAG_TEXT ) {
+-                  snprintf(t_printer->info,sizeof(t_printer->info), ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->info, ippGetString(attr, 0, NULL) );
+              }
+              else if ( strcmp(attr_name, "printer-location") == 0 &&
+                                            val_tag == IPP_TAG_TEXT ) {
+-                  snprintf(t_printer->location,sizeof(t_printer->location),ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->location, ippGetString(attr, 0, NULL) );
+              }
+              else if ( strcmp(attr_name, "printer-make-and-model") == 0 &&
+                                                   val_tag == IPP_TAG_TEXT ) {
+-                  snprintf(t_printer->make_model,sizeof(t_printer->make_model),ippGetString(attr, 0, NULL) );
++                  strcpy(t_printer->make_model, ippGetString(attr, 0, NULL) );
+              } 
+              else if ( strcmp(attr_name, "printer-state") == 0 &&
+                                              val_tag == IPP_TAG_ENUM ) {