🔒 Repository is read-only – file editing is disabled.

recipes/gui/hplip/consolidate.patch main

456 linii Raw ← Powrót
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
diff -Naur a/base/sixext.py b/base/sixext.py
--- a/base/sixext.py	2024-05-22 06:33:43.000000000 +0200
+++ b/base/sixext.py	2025-03-01 17:32:00.305660842 +0100
@@ -110,11 +110,11 @@
 
 
     def to_string_utf8(s):
-        return s.decode("utf-8")
+        return s.decode("utf-8", 'ignore')
 
 
     def to_string_latin(s):
-        return s.decode("latin-1")
+        return s.decode("latin-1", 'ignore')
 
 
     def to_unicode(s, enc=None):
diff -Naur a/configure.in b/configure.in
--- a/configure.in	2024-05-22 06:33:43.000000000 +0200
+++ b/configure.in	2025-03-01 17:37:01.545574805 +0100
@@ -618,7 +618,7 @@
 
 if test "$class_driver" = "no" && test "$hpijs_only_build" = "no" && test "$hpcups_only_build" = "no"; then
    AC_CHECK_LIB([cups], [cupsDoFileRequest], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libcups support], 9)])
-   AC_CHECK_HEADERS(cups/cups.h, ,[AC_MSG_ERROR([cannot find cups-devel support], 3)])
+   AC_CHECK_HEADERS(cups/cups.h cups/ppd.h, ,[AC_MSG_ERROR([cannot find cups-devel support], 3)])
    if test "$libusb01_build" = "yes"; then
       AC_CHECK_LIB([usb], [usb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb support], 2)])
       AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])
@@ -628,17 +628,29 @@
    fi
 fi
 
-SAVE_CPPFLAGS="$CPPFLAGS"
-CFLAGS=`python-config --includes`
-if [ $? -eq 0 ] 
-then
-   echo $FLAGS
-else
-CFLAGS=`python3-config --includes`
-   if [ $? -eq 0 ]
-   then
-   echo $FLAGS
-   fi
+AC_PATH_PROG(python3_config_path, python3-config, [AC_MSG_ERROR([python3-config not installed], 6)])
+
+PYTHON_INCLUDES=`$python3_config_path --includes`
+if test "X$PYTHON_INCLUDES" = "X" ; then
+  AC_MSG_ERROR([Cannot get Python includes via python3-config], 6)
+fi
+
+PYTHON_LIBS=`$python3_config_path --libs`
+if test "X$PYTHON_LIBS" = "X" ; then
+  AC_MSG_ERROR([Cannot get Python libs via python3-config], 6)
+fi
+
+SAVE_CFLAGS=$CFLAGS
+SAVE_LIBS=$LIBS
+
+CFLAGS="$CFLAGS $PYTHON_INCLUDES"
+LIBS="$LIBS $PYTHON_LIBS"
+
+AC_TRY_LINK(,[ ], AC_MSG_RESULT(yes); python_includes="ok", AC_MSG_ERROR([no: PYTHON DISABLED], 6))
+
+if test "X$python_includes" != "Xok" ; then
+  CFLAGS="$SAVE_CFLAGS"
+  LIBS="$SAVE_LIBS"
 fi
 
 #CFLAGS=`(python-config --includes)`
@@ -664,7 +676,6 @@
    AS_IF([test "x$FOUND_HEADER" != "xyes"],
           [AC_MSG_ERROR([cannot find python-devel support], 6)])
 fi
-CFLAGS="$save_CFLAGS"
 
 if test "$hpijs_only_build" = "no" && test "$scan_build" = "yes" && test "$hpcups_only_build" = "no"; then
    AC_CHECK_LIB([sane], [sane_open], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find sane-backends-devel support (or --disable-scan-build)], 12)])
diff -Naur a/createPPD.sh b/createPPD.sh
--- a/createPPD.sh	2024-05-22 06:33:43.000000000 +0200
+++ b/createPPD.sh	2025-03-01 17:38:18.443070552 +0100
@@ -55,16 +55,16 @@
 	else
 		cp prnt/ps/hp-postscript*.ppd ppd/classppd/ps
 		for i in ppd/classppd/ps/*.ppd; do
-			gzip -c "$i" > "$i.gz"
+			gzip -nc "$i" > "$i.gz"
 		done
 	fi
 	#cp prnt/spd/*.ppd ppd/classppd/hpcups/.
     #cp prnt/ps/hp-postscript*.ppd.gz ppd/classppd/ps
 	for i in ppd/classppd/hpcups/*.ppd; do
-		gzip -c "$i" > "$i.gz"
+		gzip -nc "$i" > "$i.gz"
 	done
 	#for i in ppd/classppd/ps/*.ppd; do
-	#	gzip -c "$i" > "$i.gz"
+	#	gzip -nc "$i" > "$i.gz"
 	#done
 
 	cat > class_cups_drv.inc <<EOF
@@ -83,7 +83,7 @@
 install -d ppd/hpcups
 ppdc -d ppd/hpcups prnt/drv/hpcups.drv
 for i in ppd/hpcups/*.ppd; do
-      gzip -c "$i" > "$i.gz"
+      gzip -nc "$i" > "$i.gz"
 done
 
 install -d ppd/hpijs
diff -Naur a/Makefile.am b/Makefile.am
--- a/Makefile.am	2024-05-22 06:33:43.000000000 +0200
+++ b/Makefile.am	2025-03-01 17:43:42.496564980 +0100
@@ -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
@@ -695,20 +695,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/ ; \
-	fi
 if !HPLIP_CLASS_DRIVER
 #	   If scanner build, add hpaio entry to sane dll.conf.
 	if [ "$(scan_build)" = "yes" ]; then \
@@ -720,15 +706,15 @@
 		  echo "Adding hpaio entry to /etc/sane.d/dll.conf." ; \
 		  echo hpaio >>$(DESTDIR)/etc/sane.d/dll.conf ; \
 	   fi; \
- 	   if [ \( "$(UNAME)" = "x86_64" -a  -d "$(libdir)/x86_64-linux-gnu/sane" \) ]; then \
-	  	ln -sf $(libdir)/sane/libsane-hpaio.so $(libdir)/x86_64-linux-gnu/sane/ ; \
-	  	ln -sf $(libdir)/sane/libsane-hpaio.so.1 $(libdir)/x86_64-linux-gnu/sane/ ; \
+ 	   if [ \( "$(UNAME)" = "x86_64" -a  -d "$(DESTDIR)$(libdir)/x86_64-linux-gnu/sane" \) ]; then \
+	  	ln -sf $(libdir)/sane/libsane-hpaio.so $(DESTDIR)$(libdir)/x86_64-linux-gnu/sane/ ; \
+	  	ln -sf $(libdir)/sane/libsane-hpaio.so.1 $(DESTDIR)$(libdir)/x86_64-linux-gnu/sane/ ; \
 	   fi; \
-	   if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/i386-linux-gnu" \) ]; then \
-	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(libdir)/i386-linux-gnu/libhpmud.so ; \
-	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(libdir)/i386-linux-gnu/libhpmud.so.0 ; \
-	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(libdir)/i386-linux-gnu/sane/libsane-hpaio.so.1 ; \
-	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(libdir)/i386-linux-gnu/sane/libsane-hpaio.so ; \
+	   if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(DESTDIR)$(libdir)/i386-linux-gnu" \) ]; then \
+	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(DESTDIR)$(libdir)/i386-linux-gnu/libhpmud.so ; \
+	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(DESTDIR)$(libdir)/i386-linux-gnu/libhpmud.so.0 ; \
+	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(DESTDIR)$(libdir)/i386-linux-gnu/sane/libsane-hpaio.so.1 ; \
+	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(DESTDIR)$(libdir)/i386-linux-gnu/sane/libsane-hpaio.so ; \
 	   fi \
 	fi
 endif #HPLIP_CLASS_DRIVER
diff -Naur a/Makefile.in b/Makefile.in
--- a/Makefile.in	2024-05-22 06:42:34.000000000 +0200
+++ b/Makefile.in	2025-03-01 17:49:20.263541595 +0100
@@ -10236,19 +10236,19 @@
 
 
 install-data-hook:
-@HPLIP_BUILD_TRUE@	if [ \( "$(UNAME)" = "x86_64" -a  -d "$(libdir)/" \) ]; then \
-@HPLIP_BUILD_TRUE@		cp prnt/hpcups/libImageProcessor-x86_64.so $(libdir)/ ; \
-@HPLIP_BUILD_TRUE@		chmod 775 $(libdir)/libImageProcessor-x86_64.so ; \
-@HPLIP_BUILD_TRUE@		ln -sf $(libdir)/libImageProcessor-x86_64.so $(libdir)/libImageProcessor.so ; \
+@HPLIP_BUILD_TRUE@	if [ \( "$(UNAME)" = "x86_64" -a  -d "$(DESTDIR)$(libdir)/" \) ]; then \
+@HPLIP_BUILD_TRUE@		cp prnt/hpcups/libImageProcessor-x86_64.so $(DESTDIR)$(libdir)/ ; \
+@HPLIP_BUILD_TRUE@		chmod 775 $(DESTDIR)$(libdir)/libImageProcessor-x86_64.so ; \
+@HPLIP_BUILD_TRUE@		ln -sf $(libdir)/libImageProcessor-x86_64.so $(DESTDIR)$(libdir)/libImageProcessor.so ; \
 @HPLIP_BUILD_TRUE@	fi; \
-@HPLIP_BUILD_TRUE@	if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/" \) ]; then \
-@HPLIP_BUILD_TRUE@		cp prnt/hpcups/libImageProcessor-x86_32.so $(libdir)/ ; \
-@HPLIP_BUILD_TRUE@		chmod 775 $(libdir)/libImageProcessor-x86_32.so ; \
-@HPLIP_BUILD_TRUE@		ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \
+@HPLIP_BUILD_TRUE@	if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(DESTDIR)$(libdir)/" \) ]; then \
+@HPLIP_BUILD_TRUE@		cp prnt/hpcups/libImageProcessor-x86_32.so $(DESTDIR)$(libdir)/ ; \
+@HPLIP_BUILD_TRUE@		chmod 775 $(DESTDIR)$(libdir)/libImageProcessor-x86_32.so ; \
+@HPLIP_BUILD_TRUE@		ln -sf $(libdir)/libImageProcessor-x86_32.so $(DESTDIR)$(libdir)/libImageProcessor.so ; \
 @HPLIP_BUILD_TRUE@	fi
-@HPLIP_BUILD_TRUE@	if [ -d "/usr/share/ipp-usb/quirks/" ]; then \
+@HPLIP_BUILD_TRUE@	if [ -d "$(DESTDIR)/usr/share/ipp-usb/quirks/" ]; then \
 @HPLIP_BUILD_TRUE@		echo "ipp-usb directory exists"; \
-@HPLIP_BUILD_TRUE@		cp prnt/ipp-usb/HPLIP.conf /usr/share/ipp-usb/quirks/ ; \
+@HPLIP_BUILD_TRUE@		cp prnt/ipp-usb/HPLIP.conf $(DESTDIR)/usr/share/ipp-usb/quirks/ ; \
 @HPLIP_BUILD_TRUE@	fi
 #	   If scanner build, add hpaio entry to sane dll.conf.
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	if [ "$(scan_build)" = "yes" ]; then \
@@ -10260,15 +10260,15 @@
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@		  echo "Adding hpaio entry to /etc/sane.d/dll.conf." ; \
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@		  echo hpaio >>$(DESTDIR)/etc/sane.d/dll.conf ; \
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	   fi; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@ 	   if [ \( "$(UNAME)" = "x86_64" -a  -d "$(libdir)/x86_64-linux-gnu/sane" \) ]; then \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	  	ln -sf $(libdir)/sane/libsane-hpaio.so $(libdir)/x86_64-linux-gnu/sane/ ; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	  	ln -sf $(libdir)/sane/libsane-hpaio.so.1 $(libdir)/x86_64-linux-gnu/sane/ ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@ 	   if [ \( "$(UNAME)" = "x86_64" -a  -d "$(DESTDIR)$(libdir)/x86_64-linux-gnu/sane" \) ]; then \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	  	ln -sf $(libdir)/sane/libsane-hpaio.so $(DESTDIR)$(libdir)/x86_64-linux-gnu/sane/ ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	  	ln -sf $(libdir)/sane/libsane-hpaio.so.1 $(DESTDIR)$(libdir)/x86_64-linux-gnu/sane/ ; \
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	   fi; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	   if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/i386-linux-gnu" \) ]; then \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(libdir)/i386-linux-gnu/libhpmud.so ; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(libdir)/i386-linux-gnu/libhpmud.so.0 ; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(libdir)/i386-linux-gnu/sane/libsane-hpaio.so.1 ; \
-@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(libdir)/i386-linux-gnu/sane/libsane-hpaio.so ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	   if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(DESTDIR)$(libdir)/i386-linux-gnu" \) ]; then \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(DESTDIR)$(libdir)/i386-linux-gnu/libhpmud.so ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/libhpmud.so.0.0.6  $(DESTDIR)$(libdir)/i386-linux-gnu/libhpmud.so.0 ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(DESTDIR)$(libdir)/i386-linux-gnu/sane/libsane-hpaio.so.1 ; \
+@HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	      ln -sf $(libdir)/sane/libsane-hpaio.so.1.0.0 $(DESTDIR)$(libdir)/i386-linux-gnu/sane/libsane-hpaio.so ; \
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	   fi \
 @HPLIP_BUILD_TRUE@@HPLIP_CLASS_DRIVER_FALSE@	fi
 #	   Create hp-xxx commands in bindir.
diff -Naur a/prnt/hpcups/CommonDefinitions.h b/prnt/hpcups/CommonDefinitions.h
--- a/prnt/hpcups/CommonDefinitions.h	2024-05-22 06:33:43.000000000 +0200
+++ b/prnt/hpcups/CommonDefinitions.h	2025-03-01 17:50:29.247619132 +0100
@@ -40,6 +40,7 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <cups/cups.h>
+#include <cups/ppd.h>
 #include <cups/raster.h>
 #include <stdarg.h>
 #include <stdio.h>
diff -Naur a/prnt/hpijs/hpcupsfax.cpp b/prnt/hpijs/hpcupsfax.cpp
--- a/prnt/hpijs/hpcupsfax.cpp	2024-05-22 06:33:43.000000000 +0200
+++ b/prnt/hpijs/hpcupsfax.cpp	2025-03-01 17:52:28.708907980 +0100
@@ -43,6 +43,7 @@
 #include <arpa/inet.h>
 #include <math.h>
 #include <cups/cups.h>
+#include <cups/ppd.h>
 #include <cups/raster.h>
 #include <string>
 #ifdef FALSE
diff -Naur a/prnt/hpps/pserror.c b/prnt/hpps/pserror.c
--- a/prnt/hpps/pserror.c	2024-05-22 06:33:43.000000000 +0200
+++ b/prnt/hpps/pserror.c	2025-03-01 18:02:45.395600653 +0100
@@ -24,7 +24,7 @@
 void message(int flags, char *format, ...)
 {
   va_list args ;
-  static column = 0 ;		/* current screen column for message wrap */
+  static int column = 0 ;	/* current screen column for message wrap */
   char msgbuf[MAX_MESSAGE] ;	/* buffer in which to put the message */
   char *bufptr = msgbuf ;	/* message buffer pointer */
 
diff -Naur a/scan/sane/hpaio.c b/scan/sane/hpaio.c
--- a/scan/sane/hpaio.c	2024-05-22 06:33:44.000000000 +0200
+++ b/scan/sane/hpaio.c	2025-03-01 18:18:48.159555576 +0100
@@ -50,6 +50,7 @@
 #include "sclpml.h"
 #include "escl.h"
 #include "io.h"
+#include "orblite.h"
 #include "orblitei.h"
 
 
@@ -378,7 +379,7 @@
    ResetDeviceList(&DeviceList);
    DevDiscovery(localOnly);
    *deviceList = (const SANE_Device **)DeviceList;
-   SANE_Device*** devList;
+   const SANE_Device*** devList;
    orblite_get_devices(devList, localOnly);
 
    return SANE_STATUS_GOOD;
diff -Naur a/scan/sane/orblite.c b/scan/sane/orblite.c
--- a/scan/sane/orblite.c	2024-05-22 06:33:44.000000000 +0200
+++ b/scan/sane/orblite.c	2025-03-01 18:25:35.944049732 +0100
@@ -19,10 +19,14 @@
 #undef NDEBUG
 #include "orblitei.h"
 #include "orblite.h"//Added New
+#include <dlfcn.h>
 #include <math.h>
 #include "utils.h"
 #include "io.h"
 
+#define DEBUG_DECLARE_ONLY
+#include "sanei_debug.h"
+
 #ifdef __cplusplus
  }
 #endif 
@@ -63,28 +67,28 @@
 		SANE_NAME_SCAN_TL_X, SANE_TITLE_SCAN_TL_X, SANE_DESC_SCAN_TL_X,  // name, title, desc
 		SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeLeft  // constraint_type, constraint
+		SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeLeft  // constraint_type, constraint
 	},
 
 	{
 		SANE_NAME_SCAN_TL_Y, SANE_TITLE_SCAN_TL_Y, SANE_DESC_SCAN_TL_Y,  // name, title, desc
 		SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeTop  // constraint_type, constraint
+		SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeTop  // constraint_type, constraint
 	},
   
 	{
 		SANE_NAME_SCAN_BR_X, SANE_TITLE_SCAN_BR_X, SANE_DESC_SCAN_BR_X,  // name, title, desc
 		SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeRight  // constraint_type, constraint
+		SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeRight  // constraint_type, constraint
 	},
 
 	{
 		SANE_NAME_SCAN_BR_Y, SANE_TITLE_SCAN_BR_Y, SANE_DESC_SCAN_BR_Y,  // name, title, desc
 		SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeBottom  // constraint_type, constraint
+		SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeBottom  // constraint_type, constraint
 	},
    
 	// optResolution,                                       // resolution group  
@@ -92,7 +96,7 @@
 		SANE_NAME_SCAN_RESOLUTION, SANE_TITLE_SCAN_RESOLUTION, SANE_DESC_SCAN_RESOLUTION, // name, title, desc
 		SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word),  // type, unit, size,
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint
+		SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint
 	},
 
 	// optMode,                                            // color/depth group
@@ -100,7 +104,7 @@
 		SANE_NAME_SCAN_MODE, SANE_TITLE_SCAN_MODE, SANE_DESC_SCAN_MODE, // name, title, desc
 		SANE_TYPE_STRING, SANE_UNIT_NONE, 256,  // type, unit, size,
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_modes   // constraint type, constraint
+		SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_modes   // constraint type, constraint
 	},
  
 	// optSource, 
@@ -108,7 +112,7 @@
 		SANE_NAME_SCAN_SOURCE, SANE_TITLE_SCAN_SOURCE, SANE_DESC_SCAN_SOURCE, // name, title, desc
 		SANE_TYPE_STRING, SANE_UNIT_NONE, 256,  // type, unit, size,
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_sources   // constraint type, constraint
+		SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_sources   // constraint type, constraint
 	},
  
 	// optPaperSize, 
@@ -116,7 +120,7 @@
 		SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc
 		SANE_TYPE_STRING, SANE_UNIT_NONE, 256,  // type, unit, size,
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_paper_sizes   // constraint type, constraint
+		SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_paper_sizes   // constraint type, constraint
 	},
  
 	// optPaperSize, 
@@ -124,7 +128,7 @@
 		SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc
 		SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word),  // type, unit, size,
 		SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT,      // cap(ability)
-		SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint
+		SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint
 	},
 #ifdef NOTDEF
 // default template
@@ -193,27 +197,6 @@
 
 }
 
-static int bb_unload(SANE_THandle ps)
-{
-   _DBG("Calling orblite bb_unload: \n");
-   if (ps->bb_handle)
-   {
-      dlclose(ps->bb_handle);
-      ps->bb_handle = NULL;
-   }
-   if (ps->hpmud_handle)
-   {
-      dlclose(ps->hpmud_handle);
-      ps->hpmud_handle = NULL;
-   }
-//   if (ps->math_handle)
-//   { 
-//      dlclose(ps->math_handle);
-//      ps->math_handle = NULL;
-//   }
-   return 0;
-}
-
 SANE_Status 
 orblite_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
 {
@@ -273,6 +256,7 @@
 	SANE_Auth_Callback authorize;
 	const SANE_Device *** device_list;
 	SANE_Bool local_only;
+	void * temp_handle;
 	
 	
 	// Allocate handle, set all handle values to zero
@@ -304,7 +288,9 @@
 	if (stat != SANE_STATUS_GOOD)
 		return stat;
 
-	stat = g_handle->bb_orblite_open(devicename, &g_handle);
+	temp_handle = g_handle;
+	stat = g_handle->bb_orblite_open(devicename, &temp_handle);
+	g_handle = temp_handle;
 	if (stat == SANE_STATUS_GOOD)
 		*handle = g_handle;
 
diff -Naur a/scan/sane/sclpml.c b/scan/sane/sclpml.c
--- a/scan/sane/sclpml.c	2024-05-22 06:33:44.000000000 +0200
+++ b/scan/sane/sclpml.c	2025-03-01 18:12:53.195637886 +0100
@@ -46,6 +46,9 @@
 #define DEBUG_DECLARE_ONLY
 #include "sanei_debug.h"
 
+/* This file is not built with _GNU_SOURCE. */
+char *strcasestr(const char *, const char *);
+
 //# define  SCLPML_DEBUG
 # ifdef SCLPML_DEBUG
    # define _DBG(args...) syslog(LOG_INFO, __FILE__ " " STRINGIZE(__LINE__) ": " args)
diff -Naur a/upgrade.py b/upgrade.py
--- a/upgrade.py	2024-05-22 06:33:44.000000000 +0200
+++ b/upgrade.py	2025-03-01 17:53:15.242743387 +0100
@@ -208,6 +208,9 @@
 if os.getenv("HPLIP_DEBUG"):
     log.set_level('debug')
 
+log.error("HPLIP upgrade is disabled by NuTyX for security reasons. Please use cards to upgrade.")
+clean_exit(1)
+
 for o, a in opts:
     if o in ('-h', '--help'):
         usage()