hplip: Update to 3.21.10

Update hplip to latest upstream version and patch to fix Python 3.10
compatibility.
This commit is contained in:
Heinrich Kruger 2021-10-20 09:18:02 +01:00 committed by Andrew J. Hesford
parent e437bb3345
commit 6f33e3848d
6 changed files with 155 additions and 147 deletions

View File

@ -1,113 +0,0 @@
From fa9c0cf1a5db9bf8880b4796d5e3e0da46534e3d Mon Sep 17 00:00:00 2001
From: Didier Raboud <odyx@debian.org>
Date: Tue, 21 Aug 2018 18:18:10 +0200
Subject: Remove all ImageProcessor functionality, which is closed-source
---
Makefile.am | 14 ++------------
prnt/hpcups/HPCupsFilter.cpp | 21 ---------------------
2 files changed, 2 insertions(+), 33 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 1b097c4f9..8d5d78c9f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -166,7 +166,7 @@ if !HPLIP_CLASS_DRIVER
dist_hplip_SCRIPTS = hpssd.py __init__.py hpdio.py
endif #HPLIP_CLASS_DRIVER
-dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template prnt/hpcups/libImageProcessor-x86_64.so prnt/hpcups/libImageProcessor-x86_32.so
+dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template
dist_noinst_SCRIPTS += dat2drv.py install.py hplip-install init-suse-firewall init-iptables-firewall class_rpm_build.sh hplipclassdriver.spec createPPD.sh Makefile_dat2drv hpijs-drv
if !HPLIP_CLASS_DRIVER
@@ -594,7 +594,7 @@ hpcups_SOURCES = prnt/hpcups/HPCupsFilter.cpp prnt/hpcups/HPCupsFilter.h prnt/hp
prnt/hpcups/ImageProcessor.h
hpcups_CXXFLAGS = $(APDK_ENDIAN_FLAG) $(DBUS_CFLAGS)
-hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lImageProcessor -lcups -lcupsimage -lz $(DBUS_LIBS)
+hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lcups -lcupsimage -lz $(DBUS_LIBS)
#else
#hpcupsdir = $(cupsfilterdir)
#hpcups_PROGRAMS = hpcups
@@ -686,16 +686,6 @@ endif #HPLIP_CLASS_DRIVER
install-data-hook:
if HPLIP_BUILD
- if [ \( "$(UNAME)" = "x86_64" -a -d "$(libdir)/" \) ]; then \
- cp prnt/hpcups/libImageProcessor-x86_64.so $(libdir)/ ; \
- chmod 775 $(libdir)/libImageProcessor-x86_64.so ; \
- ln -sf $(libdir)/libImageProcessor-x86_64.so $(libdir)/libImageProcessor.so ; \
- fi; \
- if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/" \) ]; then \
- cp prnt/hpcups/libImageProcessor-x86_32.so $(libdir)/ ; \
- chmod 775 $(libdir)/libImageProcessor-x86_32.so ; \
- ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \
- fi
if !HPLIP_CLASS_DRIVER
# If scanner build, add hpaio entry to sane dll.conf.
if [ "$(scan_build)" = "yes" ]; then \
diff --git a/prnt/hpcups/HPCupsFilter.cpp b/prnt/hpcups/HPCupsFilter.cpp
index 5b282d83f..0bacfafac 100644
--- a/prnt/hpcups/HPCupsFilter.cpp
+++ b/prnt/hpcups/HPCupsFilter.cpp
@@ -31,7 +31,6 @@
\*****************************************************************************/
#include "HPCupsFilter.h"
-#include "ImageProcessor.h"
#include <signal.h>
#include <sys/wait.h>
@@ -637,16 +636,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name);
- image_processor_t* imageProcessor = imageProcessorCreate();
while (cupsRasterReadHeader2(cups_raster, &cups_header))
{
- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header);
- if (result != IPE_SUCCESS){
- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result);
- }
-
current_page_number++;
if (current_page_number == 1) {
@@ -745,12 +738,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
color_raster = rgbRaster;
black_raster = kRaster;
- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine);
- if (result != IPE_SUCCESS){
- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result);
- }
-
-
if ((y == 0) && !is_ljmono) {
//For ljmono, make sure that first line is not a blankRaster line.Otherwise printer
//may not skip blank lines before actual data
@@ -780,12 +767,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
}
} // for() loop end
- result = imageProcessorEndPage(imageProcessor);
- if (result != IPE_SUCCESS){
- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result);
- }
-
-
m_Job.NewPage();
if (err != NO_ERROR) {
break;
@@ -800,8 +781,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
rgbRaster = NULL;
}
- imageProcessorDestroy(imageProcessor);
-
unlink(hpPreProcessedRasterFile);
return ret_status;
}

View File

@ -0,0 +1,13 @@
Open gzipped PPD file in text mode, otherwise text regex search fails
--- a/setup.py 2021-10-18 18:37:49.795887272 +0100
+++ b/setup.py 2021-10-18 18:37:20.214898473 +0100
@@ -552,7 +552,7 @@
if os.path.exists(file_path) and os.path.isfile(file_path):
if file_path.endswith('.gz'):
- nickname = gzip.GzipFile(file_path, 'r').read(4096)
+ nickname = gzip.open(file_path, 'rt').read(4096)
else:
nickname = open(file_path, 'r').read(4096)

View File

@ -0,0 +1,100 @@
Based on patch by Zdenek Dohnal obtained from
https://bugs.launchpad.net/hplip/+bug/1933973
diff -pru hplip-3.21.8/io/mudext/hpmudext.c hplip-3.21.8-patched/io/mudext/hpmudext.c
--- hplip-3.21.8/io/mudext/hpmudext.c 2021-09-01 16:10:17.000000000 +0100
+++ hplip-3.21.8-patched/io/mudext/hpmudext.c 2021-10-22 08:30:38.600922861 +0100
@@ -24,6 +24,8 @@ Authors: Don Welch, David Suffield, Naga
\*****************************************************************************/
+#define PY_SSIZE_T_CLEAN
+
#include <Python.h>
#include <stdarg.h>
#include "hpmud.h"
@@ -187,14 +189,22 @@ static PyObject *write_channel(PyObject
HPMUD_CHANNEL cd;
int timeout = 30;
char * buf;
- int buf_size = 0;
+ Py_ssize_t buf_size = 0;
+ int buf_size_asInt = 0;
int bytes_written = 0;
if (!PyArg_ParseTuple(args, "iis#|i", &dd, &cd, &buf, &buf_size, &timeout))
return NULL;
+ if (buf_size < INT_MIN)
+ buf_size_asInt = INT_MIN;
+ else if (buf_size > INT_MAX)
+ buf_size_asInt = INT_MAX;
+ else
+ buf_size_asInt = (int)buf_size;
+
Py_BEGIN_ALLOW_THREADS
- result = hpmud_write_channel(dd, cd, buf, buf_size, timeout, &bytes_written);
+ result = hpmud_write_channel(dd, cd, buf, buf_size_asInt, timeout, &bytes_written);
Py_END_ALLOW_THREADS
return Py_BuildValue("(ii)", result, bytes_written);
@@ -231,14 +241,22 @@ static PyObject *set_pml(PyObject *self,
char * oid;
int type;
char * data;
- int data_size;
+ Py_ssize_t data_size = 0;
+ int data_size_asInt = 0;
int pml_result;
if (!PyArg_ParseTuple(args, "iisis#", &dd, &cd, &oid, &type, &data, &data_size))
return NULL;
+ if (data_size < INT_MIN)
+ data_size_asInt = INT_MIN;
+ else if (data_size > INT_MAX)
+ data_size_asInt = INT_MAX;
+ else
+ data_size_asInt = (int)data_size;
+
Py_BEGIN_ALLOW_THREADS
- result = hpmud_set_pml(dd, cd, oid, type, (void *)data, data_size, &pml_result);
+ result = hpmud_set_pml(dd, cd, oid, type, (void *)data, data_size_asInt, &pml_result);
Py_END_ALLOW_THREADS
return Py_BuildValue("(ii)", result, pml_result);
diff -pru hplip-3.21.8/pcard/pcardext/pcardext.c hplip-3.21.8-patched/pcard/pcardext/pcardext.c
--- hplip-3.21.8/pcard/pcardext/pcardext.c 2021-09-01 16:10:17.000000000 +0100
+++ hplip-3.21.8-patched/pcard/pcardext/pcardext.c 2021-10-22 08:24:11.010798381 +0100
@@ -24,6 +24,8 @@ Author: Don Welch
\*****************************************************************************/
+#define PY_SSIZE_T_CLEAN
+
#include <Python.h>
#include <structmember.h>
#include "../fat.h"
diff -pru hplip-3.21.8/prnt/cupsext/cupsext.c hplip-3.21.8-patched/prnt/cupsext/cupsext.c
--- hplip-3.21.8/prnt/cupsext/cupsext.c 2021-09-01 16:10:17.000000000 +0100
+++ hplip-3.21.8-patched/prnt/cupsext/cupsext.c 2021-10-22 08:26:30.975843330 +0100
@@ -73,6 +73,7 @@ Yashwant Kumar Sahu
Sanjay Kumar
*/
+#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <structmember.h>
diff -pru hplip-3.21.8/scan/scanext/scanext.c hplip-3.21.8-patched/scan/scanext/scanext.c
--- hplip-3.21.8/scan/scanext/scanext.c 2021-09-01 16:10:17.000000000 +0100
+++ hplip-3.21.8-patched/scan/scanext/scanext.c 2021-10-21 21:31:23.074739743 +0100
@@ -45,6 +45,8 @@ PERFORMANCE OF THIS SOFTWARE.
*******************************************************************/
+#define PY_SSIZE_T_CLEAN
+
/* _ScanDevice objects */
#include "Python.h"

View File

@ -0,0 +1,37 @@
--- a/Makefile.am
+++ b/Makefile.am
@@ -167,7 +167,7 @@
dist_hplip_SCRIPTS = hpssd.py __init__.py hpdio.py
endif #HPLIP_CLASS_DRIVER
-dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template prnt/hpcups/libImageProcessor-x86_64.so prnt/hpcups/libImageProcessor-x86_32.so
+dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template
dist_noinst_DATA += prnt/ipp-usb/HPLIP.conf
dist_noinst_SCRIPTS += dat2drv.py install.py hplip-install init-suse-firewall init-iptables-firewall class_rpm_build.sh hplipclassdriver.spec createPPD.sh Makefile_dat2drv hpijs-drv
@@ -597,7 +597,7 @@
prnt/hpcups/ImageProcessor.h
hpcups_CXXFLAGS = $(APDK_ENDIAN_FLAG) $(DBUS_CFLAGS)
-hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lImageProcessor -lcups -lcupsimage -lz $(DBUS_LIBS)
+hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lcups -lcupsimage -lz $(DBUS_LIBS)
#else
#hpcupsdir = $(cupsfilterdir)
#hpcups_PROGRAMS = hpcups
@@ -687,16 +687,6 @@
install-data-hook:
if HPLIP_BUILD
- if [ \( "$(UNAME)" = "x86_64" -a -d "$(libdir)/" \) ]; then \
- cp prnt/hpcups/libImageProcessor-x86_64.so $(libdir)/ ; \
- chmod 775 $(libdir)/libImageProcessor-x86_64.so ; \
- ln -sf $(libdir)/libImageProcessor-x86_64.so $(libdir)/libImageProcessor.so ; \
- fi; \
- if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/" \) ]; then \
- cp prnt/hpcups/libImageProcessor-x86_32.so $(libdir)/ ; \
- chmod 775 $(libdir)/libImageProcessor-x86_32.so ; \
- ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \
- fi
if [ -d "/usr/share/ipp-usb/quirks/" ]; then \
echo "ipp-usb directory exists"; \
cp prnt/ipp-usb/HPLIP.conf /usr/share/ipp-usb/quirks/ ; \

View File

@ -1,31 +0,0 @@
--- a/scan/sane.py 2020-10-13 22:29:59.456276307 -0400
+++ b/scan/sane.py 2020-10-13 22:32:44.663586789 -0400
@@ -378,14 +378,14 @@
def isScanActive(self):
if self.scan_thread is not None:
- return self.scan_thread.isAlive() and self.scan_thread.scan_active
+ return self.scan_thread.is_alive() and self.scan_thread.scan_active
else:
return False
def waitForScanDone(self):
if self.scan_thread is not None and \
- self.scan_thread.isAlive() and \
+ self.scan_thread.is_alive() and \
self.scan_thread.scan_active:
try:
@@ -398,9 +398,9 @@
#time.sleep(0.5)
if self.scan_thread is not None:
while True:
- #print self.scan_thread.isAlive()
+ #print self.scan_thread.is_alive()
#print self.scan_thread.scan_active
- if self.scan_thread.isAlive() and \
+ if self.scan_thread.is_alive() and \
self.scan_thread.scan_active:
return

View File

@ -1,7 +1,7 @@
# Template file for 'hplip'
pkgname=hplip
version=3.20.9
revision=6
version=3.21.10
revision=1
build_style=gnu-configure
pycompile_dirs="usr/share/hplip"
# configure checks sys.version[:3] for Python versioning, so 3.10 becomes 3.1;
@ -19,6 +19,7 @@ configure_args="
--enable-hpijs-install
--enable-foomatic-drv-install
--enable-pp-build
--disable-imageProcessor-build
--with-mimedir=/usr/share/cups/mime
am_cv_python_version=${py3_ver}"
conf_files="/etc/hp/hplip.conf"
@ -33,8 +34,9 @@ short_desc="HP Linux Imaging and Printing"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-only, BSD-3-Clause, MIT"
homepage="https://developers.hp.com/hp-linux-imaging-and-printing"
changelog="https://developers.hp.com/hp-linux-imaging-and-printing/release_notes"
distfiles="${SOURCEFORGE_SITE}/hplip/hplip/${version}/hplip-${version}.tar.gz"
checksum=36251189aa9cc349f6a3eacbb7ac3c4fd26fc9f087c9f75cee051010c85d2ddf
checksum=de230e1fdd1e718fc718417265612e0c882949e08fe045ee56f9f9882e6b6a60
conflicts="hplip-gui"
CFLAGS="-I${XBPS_CROSS_BASE}/usr/include/libusb-1.0 -I${XBPS_CROSS_BASE}/${py3_inc}"