[packages/hplip] - up to 3.52.2

baggins baggins at pld-linux.org
Mon May 26 04:42:39 CEST 2025


commit b6ab004b79d4b10aafe33446012b618e48f4464d
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Mon May 26 05:02:55 2025 +0200

    - up to 3.52.2

 hplip-covscan.patch            | 615 +++++++++++++++++++++++++++++++++++++++++
 hplip-hpaio-gcc14.patch        | 114 ++++++++
 hplip-pcardext-disable.patch   |  17 ++
 hplip-scan-hpaio-include.patch |  19 ++
 hplip-scan-orblite-c99.patch   |  21 ++
 hplip.spec                     |  24 +-
 implicit-int.patch             |  11 +
 no-undefined-macro.patch       |  11 -
 pld-distro.patch               |   2 +-
 unresolved.patch               |  14 +-
 10 files changed, 817 insertions(+), 31 deletions(-)
---
diff --git a/hplip.spec b/hplip.spec
index 2b34137..7c9ac4c 100644
--- a/hplip.spec
+++ b/hplip.spec
@@ -13,12 +13,12 @@
 Summary:	Hewlett-Packard Linux Imaging and Printing suite - printing and scanning using HP devices
 Summary(pl.UTF-8):	Narzędzia Hewlett-Packard Linux Imaging and Printing - drukowanie i skanowanie przy użyciu urządzeń HP
 Name:		hplip
-Version:	3.22.6
-Release:	3
+Version:	3.25.2
+Release:	1
 License:	BSD (hpijs), MIT (low-level scanning and printing code), GPL v2 (the rest)
 Group:		Applications/System
 Source0:	http://downloads.sourceforge.net/hplip/%{name}-%{version}.tar.gz
-# Source0-md5:	77eb0b3552f85a46a079d24f4632385f
+# Source0-md5:	1f49ef7d5c6f17f2dd753ddf54a67704
 Patch0:		%{name}-desktop.patch
 Patch1:		unresolved.patch
 Patch2:		pld-distro.patch
@@ -28,8 +28,13 @@ Patch2:		pld-distro.patch
 Patch3:		%{name}-binary-fixup.patch
 Patch4:		%{name}-destdir.patch
 Patch5:		%{name}-udev-rules.patch
-Patch6:		no-undefined-macro.patch
 Patch7:		remove-all-ImageProcessor-functionality.patch
+Patch8:		implicit-int.patch
+Patch9:		hplip-covscan.patch
+Patch10:	hplip-scan-hpaio-include.patch
+Patch11:	hplip-hpaio-gcc14.patch
+Patch12:	hplip-scan-orblite-c99.patch
+Patch13:	hplip-pcardext-disable.patch
 URL:		http://hplipopensource.com/
 BuildRequires:	autoconf
 BuildRequires:	automake
@@ -174,8 +179,13 @@ urządzenia HP AiO.
 #patch -P 3 -p1
 %patch -P 4 -p1
 %patch -P 5 -p1
-%patch -P 6 -p1
 %patch -P 7 -p1
+%patch -P 8 -p1
+%patch -P 9 -p1
+%patch -P 10 -p1
+%patch -P 11 -p1
+%patch -P 12 -p1
+%patch -P 13 -p1
 
 %{__sed} -i -e '1s,^#!/usr/bin/env python$,#!%{__python3},' *.py fax/filters/pstotiff prnt/filters/hpps
 find base fax installer prnt scan ui ui4 -name '*.py' | xargs \
@@ -185,6 +195,8 @@ find base fax installer prnt scan ui ui4 -name '*.py' | xargs \
 %{__sed} -i -e 's#test -d /usr/share/polkit-1#true#' configure.in
 
 %build
+export CFLAGS="%{rpmcflags} -Wno-implicit-function-declaration"
+export CXXLAGS="%{rpmcxxflags} -Wno-implicit-function-declaration"
 %{__libtoolize}
 %{__aclocal}
 %{__autoconf}
@@ -341,7 +353,6 @@ fi
 %attr(755,root,root) %{_datadir}/hplip/locatedriver
 %attr(755,root,root) %{py3_sitedir}/cupsext.so
 %attr(755,root,root) %{py3_sitedir}/hpmudext.so
-%attr(755,root,root) %{py3_sitedir}/pcardext.so
 %attr(755,root,root) %{py3_sitedir}/scanext.so
 %dir %{_sysconfdir}/hp
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hp/hplip.conf
@@ -419,6 +430,7 @@ fi
 %files -n cups-backend-hpfax
 %defattr(644,root,root,755)
 %attr(755,root,root) %{cups_backenddir}/hpfax
+%attr(755,root,root) %{cups_filterdir}/hpcdmfax
 %attr(755,root,root) %{cups_filterdir}/hpcupsfax
 %attr(755,root,root) %{cups_filterdir}/pstotiff
 %{cups_mimedir}/pstotiff.types
diff --git a/hplip-covscan.patch b/hplip-covscan.patch
new file mode 100644
index 0000000..92ea780
--- /dev/null
+++ b/hplip-covscan.patch
@@ -0,0 +1,615 @@
+diff -up hplip-3.25.2/common/utils.c.covscan hplip-3.25.2/common/utils.c
+--- hplip-3.25.2/common/utils.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/common/utils.c	2025-04-11 10:21:58.034950818 +0200
+@@ -1,5 +1,9 @@
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++
+ #include "utils.h"
+-#include "string.h"
++#include <string.h>
+ #include <dlfcn.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+diff -up hplip-3.25.2/io/hpmud/hpmud.c.covscan hplip-3.25.2/io/hpmud/hpmud.c
+--- hplip-3.25.2/io/hpmud/hpmud.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/io/hpmud/hpmud.c	2025-04-11 10:21:58.035151792 +0200
+@@ -769,6 +769,7 @@ enum HPMUD_RESULT hpmud_get_dstat(HPMUD_
+    }
+ 
+    strncpy(ds->uri, msp->device[dd].uri, sizeof(ds->uri));
++   ds->uri[sizeof(ds->uri)-1] = '\0';
+    ds->io_mode = msp->device[dd].io_mode;
+    ds->channel_cnt = msp->device[dd].channel_cnt;
+    ds->mlc_up = msp->device[dd].mlc_up;
+diff -up hplip-3.25.2/io/hpmud/jd.c.covscan hplip-3.25.2/io/hpmud/jd.c
+--- hplip-3.25.2/io/hpmud/jd.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/io/hpmud/jd.c	2025-04-11 10:21:58.035328288 +0200
+@@ -31,6 +31,7 @@
+ #endif
+ 
+ #include <signal.h>
++#include <stdlib.h>
+ #include "hpmud.h"
+ #include "hpmudi.h"
+ 
+diff -up hplip-3.25.2/io/hpmud/model.c.covscan hplip-3.25.2/io/hpmud/model.c
+--- hplip-3.25.2/io/hpmud/model.c.covscan	2025-04-11 10:21:58.023885145 +0200
++++ hplip-3.25.2/io/hpmud/model.c	2025-04-11 10:21:58.035487541 +0200
+@@ -117,6 +117,7 @@ static int ReadConfig()
+       if (rcbuf[0] == '[')
+       {
+          strncpy(section, rcbuf, sizeof(section)); /* found new section */
++         section[sizeof(section)-1] = '\0';
+          continue;
+       }
+ 
+@@ -125,6 +126,7 @@ static int ReadConfig()
+       if ((strncasecmp(section, "[dirs]", 6) == 0) && (strcasecmp(key, "home") == 0))
+       {
+          strncpy(homedir, value, sizeof(homedir));
++         homedir[sizeof(homedir)-1] = '\0';
+          break;  /* done */
+       }
+    }
+diff -up hplip-3.25.2/io/hpmud/musb.c.covscan hplip-3.25.2/io/hpmud/musb.c
+--- hplip-3.25.2/io/hpmud/musb.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/io/hpmud/musb.c	2025-04-11 10:21:58.035717762 +0200
+@@ -776,7 +776,7 @@ static int device_id(int fd, unsigned ch
+         len = size-1;   /* leave byte for zero termination */
+     if (len > 2)
+         len -= 2;
+-    memcpy(buffer, buffer+2, len);    /* remove length */
++    memmove(buffer, buffer+2, len);    /* remove length */
+     buffer[len]=0;
+     DBG("read actual device_id successfully fd=%d len=%d\n", fd, len);
+ 
+diff -up hplip-3.25.2/io/hpmud/pp.c.covscan hplip-3.25.2/io/hpmud/pp.c
+--- hplip-3.25.2/io/hpmud/pp.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/io/hpmud/pp.c	2025-04-11 10:21:58.035977040 +0200
+@@ -632,7 +632,7 @@ static int device_id(int fd, char *buffe
+       len = size-1;   /* leave byte for zero termination */
+    if (len > 2)
+       len -= 2;
+-   memcpy(buffer, buffer+2, len);    /* remove length */
++   memmove(buffer, buffer+2, len);    /* remove length */
+    buffer[len]=0;
+ 
+    DBG("read actual device_id successfully fd=%d len=%d\n", fd, len);
+diff -up hplip-3.25.2/Makefile.am.covscan hplip-3.25.2/Makefile.am
+--- hplip-3.25.2/Makefile.am.covscan	2025-04-11 10:21:58.010155532 +0200
++++ hplip-3.25.2/Makefile.am	2025-04-11 10:22:52.826357214 +0200
+@@ -3,7 +3,7 @@
+ #
+ #  (c) 2004-2015 Copyright HP Development Company, LP
+ #  Author: David Suffield, Naga Samrat Chowdary Narla, Sarbeswar Meher
+-INCLUDES = -Iip -Iio/hpmud -Iscan/sane -Iprnt/hpijs -Icommon/
++INCLUDES = -Iip -Iio/hpmud -Iscan/sane -Iprnt/hpijs -Icommon/ -Iprotocol
+ CFLAGS+= -DCONFDIR=\"$(hplip_confdir)\"
+ CXXFLAGS+= -DCONFDIR=\"$(hplip_confdir)\"
+ 
+@@ -310,7 +310,7 @@ dist_pcard_DATA = pcard/__init__.py pcar
+ pcardextdir = $(PYTHONEXECDIR)
+ pcardext_LTLIBRARIES = pcardext.la
+ pcardext_la_LDFLAGS = -module -avoid-version
+-pcardext_la_SOURCES = pcard/pcardext/pcardext.c pcard/fat.c
++pcardext_la_SOURCES = pcard/pcardext/pcardext.c pcard/fat.c pcard/pcardext/pcardext.h
+ pcardext_la_CFLAGS = -I$(PYTHONINCLUDEDIR)
+ 
+ # prnt
+@@ -322,7 +322,7 @@ lib_LTLIBRARIES += libhpipp.la
+ #hpipp_LTLIBRARIES = hpipp.la
+ #hpipp_la_LDFLAGS = -module -avoid-version
+ libhpipp_la_SOURCES = protocol/hp_ipp.c protocol/hp_ipp.h protocol/hp_ipp_i.h
+-libhpipp_la_CFLAGS = -DCONFDIR=\"$(hplip_confdir)\"
++libhpipp_la_CFLAGS = -DCONFDIR=\"$(hplip_confdir)\" -D_GNU_SOURCE
+ libhpipp_la_LDFLAGS = -version-info 0:1:0
+ libhpipp_la_LIBADD = libhpmud.la -lcups
+ 
+diff -up hplip-3.25.2/pcard/fat.c.covscan hplip-3.25.2/pcard/fat.c
+--- hplip-3.25.2/pcard/fat.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/pcard/fat.c	2025-04-11 10:21:58.036450105 +0200
+@@ -519,14 +519,17 @@ int FatFreeSpace(void)
+ 
+ int FatDiskAttributes( PHOTO_CARD_ATTRIBUTES * pa )
+ {
+-    strncpy( pa->OEMID, bpb.OEMID, 8 );
++    strncpy(pa->OEMID, bpb.OEMID, sizeof(pa->OEMID));
++    pa->OEMID[sizeof(pa->OEMID)-1] = '\0';
+     pa->BytesPerSector = bpb.BytesPerSector;
+     pa->SectorsPerCluster = bpb.SectorsPerCluster;
+     pa->ReservedSectors = bpb.ReservedSectors;
+     pa->SectorsPerFat = bpb.SectorsPerFat;
+     pa->RootEntries = bpb.RootEntries;
+-    strncpy( pa->SystemID, (char *)bpb.SystemID, 8 );
+-    strncpy( pa->VolumeLabel, (char *)bpb.VolumeLabel, 11 );
++    strncpy(pa->SystemID, (char *)bpb.SystemID, sizeof(pa->SystemID));
++    pa->SystemID[sizeof(pa->SystemID)-1] = '\0';
++    strncpy(pa->VolumeLabel, (char *)bpb.VolumeLabel, sizeof(pa->VolumeLabel));
++    pa->VolumeLabel[sizeof(pa->VolumeLabel)-1] = '\0';
+     pa->WriteProtect = da.WriteProtect;
+     
+     return 0;
+@@ -741,6 +744,7 @@ int FatSetCWD(char *dir)
+       return 1;
+ 
+    strncpy(cwd.Name, fa.Name, sizeof(cwd.Name));
++   cwd.Name[sizeof(cwd.Name)-1] = '\0';
+    cwd.StartSector = ConvertClusterToSector(fa.StartCluster);
+    cwd.CurrSector = cwd.StartSector;
+    cwd.StartCluster = fa.StartCluster;
+diff -up hplip-3.25.2/prnt/hpijs/context2.cpp.covscan hplip-3.25.2/prnt/hpijs/context2.cpp
+--- hplip-3.25.2/prnt/hpijs/context2.cpp.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/prnt/hpijs/context2.cpp	2025-04-11 10:21:58.036656862 +0200
+@@ -1302,6 +1302,7 @@ DRIVER_ERROR PrintContext::SelectDevice
+ 	if(0 == strnlen((const char *)pSS->strDevID, DevIDBuffSize))
+ 	{
+ 		strncpy((char *)pSS->strDevID,szDeviceId,DevIDBuffSize);
++		pSS->strDevID[sizeof(pSS->strDevID)-1] = '\0';
+ 	}
+     thePrinter = pPFI->CreatePrinter (pSS, familyHandle);
+     if (thePrinter->constructor_error != NO_ERROR)
+diff -up hplip-3.25.2/prnt/hpijs/systemservices.cpp.covscan hplip-3.25.2/prnt/hpijs/systemservices.cpp
+--- hplip-3.25.2/prnt/hpijs/systemservices.cpp.covscan	2025-02-27 13:12:44.000000000 +0100
++++ hplip-3.25.2/prnt/hpijs/systemservices.cpp	2025-04-11 10:21:58.036891582 +0200
+@@ -396,7 +396,10 @@ void SystemServices::AdjustIO(IO_MODE IM
+     IOMode.bDevID =IM.bDevID  && IOMode.bDevID;
+ 
+     if (model)
++    {
+         strncpy(strModel,model, sizeof(strModel));
++        strModel[sizeof(strModel)-1] = '\0';
++    }
+ }
+ 
+ APDK_END_NAMESPACE
+diff -up hplip-3.25.2/prnt/hpps/hppsfilter.c.covscan hplip-3.25.2/prnt/hpps/hppsfilter.c
+--- hplip-3.25.2/prnt/hpps/hppsfilter.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/prnt/hpps/hppsfilter.c	2025-04-11 10:21:58.037072084 +0200
+@@ -329,13 +329,13 @@ static void WriteHeader(char **argument)
+     /*		Writing Header Information
+     argument[1] = JOB ID , argument[2]= USERNAME,  argument[3] = TITLE		*/
+     hpwrite("\x1b%-12345X at PJL JOBNAME=", strlen("\x1b%-12345X at PJL JOBNAME="));
+-    sprintf(buffer, "hplip_%s_%s\x0a", argument[2], argument[1]);
++    snprintf(buffer, MAX_BUFFER-1, "hplip_%s_%s\x0a", argument[2], argument[1]);
+     hpwrite(buffer, strlen(buffer));
+     memset(buffer, 0, sizeof(buffer));
+-    sprintf(buffer, "@PJL SET USERNAME=\"%s\"\x0a", argument[2]);
++    snprintf(buffer, MAX_BUFFER-1, "@PJL SET USERNAME=\"%s\"\x0a", argument[2]);
+     hpwrite(buffer, strlen(buffer));
+     memset(buffer, 0, sizeof(buffer));
+-    sprintf(buffer, "@PJL SET JOBNAME=\"%s\"\x0a", argument[3]);
++    snprintf(buffer, MAX_BUFFER-1, "@PJL SET JOBNAME=\"%s\"\x0a", argument[3]);
+     hpwrite(buffer, strlen(buffer));
+     fprintf(stderr, "HP PS filter func = WriteHeader           : WRITING PJL HEADER INFO\n");
+     return;
+diff -up hplip-3.25.2/protocol/hp_ipp.h.covscan hplip-3.25.2/protocol/hp_ipp.h
+--- hplip-3.25.2/protocol/hp_ipp.h.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/protocol/hp_ipp.h	2025-04-11 10:21:58.037239020 +0200
+@@ -168,6 +168,11 @@ HPIPP_RESULT parseResponseHeader(char* h
+ HPIPP_RESULT prepend_http_header(raw_ipp *raw_request,const char *resource);
+ enum HPMUD_RESULT sendUSBRequest(char *buf, int size, raw_ipp *responseptr, char * device_uri);
+ enum HPMUD_RESULT sendUSBFileRequest(char *buf, int size, int fileHandle,raw_ipp *responseptr, char *device_uri);
++void _releaseCupsInstance();
++int addCupsPrinter(char *name, char *device_uri, char *location, char *ppd_file, char *model, char *info);
++int delCupsPrinter(char *pr_name);
++int setDefaultCupsPrinter(char *pr_name);
++int controlCupsPrinter(char *pr_name, int op);
+ 
+ ipp_t * createFaxDetailRequest(const char *printer_name);
+ ipp_t * getDeviceFaxModemAttributes(char* device_uri,char* printer_name, int *count);
+diff -up hplip-3.25.2/scan/sane/bb_ledm.c.covscan hplip-3.25.2/scan/sane/bb_ledm.c
+--- hplip-3.25.2/scan/sane/bb_ledm.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/bb_ledm.c	2025-04-11 10:21:58.037378913 +0200
+@@ -26,6 +26,7 @@
+ # include "http.h"
+ # include "xml.h"
+ # include <stdlib.h>
++# include <unistd.h>
+ 
+ # include <stdint.h>
+ 
+diff -up hplip-3.25.2/scan/sane/common.h.covscan hplip-3.25.2/scan/sane/common.h
+--- hplip-3.25.2/scan/sane/common.h.covscan	2025-04-11 10:21:57.806326475 +0200
++++ hplip-3.25.2/scan/sane/common.h	2025-04-11 10:21:58.037532413 +0200
+@@ -36,7 +36,7 @@
+ #define _STRINGIZE(x) #x
+ #define STRINGIZE(x) _STRINGIZE(x)
+ 
+-#define BUG(args...) {syslog(LOG_ERR, __FILE__ " " STRINGIZE(__LINE__) ": " args); DBG(2, __FILE__ " " STRINGIZE(__LINE__) ": " args);}
++#define BUG_SCAN(args...) {syslog(LOG_ERR, __FILE__ " " STRINGIZE(__LINE__) ": " args); DBG(2, __FILE__ " " STRINGIZE(__LINE__) ": " args);}
+ #define BUG_DUMP(data, size) bugdump((data), (size))
+ #define BUG_SZ(args...) {syslog(LOG_ERR, args); DBG(2, args);}
+ 
+diff -up hplip-3.25.2/scan/sane/escl.c.covscan hplip-3.25.2/scan/sane/escl.c
+--- hplip-3.25.2/scan/sane/escl.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/escl.c	2025-04-11 10:21:58.037677793 +0200
+@@ -849,7 +849,7 @@ SANE_Status escl_control_option(SANE_Han
+   //DBG8("escl_control_option (option=%s) action=%d\n", ps->option[option].name, action);
+   if (stat != SANE_STATUS_GOOD)
+   {
+-     BUG("control_option failed: option=%s action=%s\n", ps->option[option].name, action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
++     BUG_SCAN("control_option failed: option=%s action=%s\n", ps->option[option].name, action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
+   }
+ 
+    return stat;
+@@ -1159,7 +1159,7 @@ void escl_close(SANE_Handle handle)
+ 
+   if (ps == NULL || ps != session)
+   {
+-    BUG("invalid sane_close\n");
++    BUG_SCAN("invalid sane_close\n");
+     return;
+   }
+ 
+diff -up hplip-3.25.2/scan/sane/http.c.covscan hplip-3.25.2/scan/sane/http.c
+--- hplip-3.25.2/scan/sane/http.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/http.c	2025-04-11 10:21:58.037859247 +0200
+@@ -36,6 +36,7 @@
+ #include <string.h>
+ #include <syslog.h>
+ #include <ctype.h>
++#include <unistd.h>
+ #include "hpmud.h"
+ #include "http.h"
+ 
+diff -up hplip-3.25.2/scan/sane/io.c.covscan hplip-3.25.2/scan/sane/io.c
+--- hplip-3.25.2/scan/sane/io.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/io.c	2025-04-11 10:21:58.037998005 +0200
+@@ -50,7 +50,7 @@ int __attribute__ ((visibility ("hidden"
+     
+    if (dbus_error_is_set(&dbus_err))
+    { 
+-      BUG("dBus Connection Error (%s)!\n", dbus_err.message); 
++      BUG_SCAN("dBus Connection Error (%s)!\n", dbus_err.message); 
+       dbus_error_free(&dbus_err); 
+    }
+ 
+@@ -79,7 +79,7 @@ int __attribute__ ((visibility ("hidden"
+ 
+     if (NULL == msg)
+     {
+-        BUG("dbus message is NULL!\n");
++        BUG_SCAN("dbus message is NULL!\n");
+         return 0;
+     }
+ 
+@@ -94,7 +94,7 @@ int __attribute__ ((visibility ("hidden"
+ 
+     if (!dbus_connection_send(dbus_conn, msg, NULL))
+     {
+-        BUG("dbus message send failed!\n");
++        BUG_SCAN("dbus message send failed!\n");
+         return 0;
+     }
+ 
+diff -up hplip-3.25.2/scan/sane/ledm.c.covscan hplip-3.25.2/scan/sane/ledm.c
+--- hplip-3.25.2/scan/sane/ledm.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/ledm.c	2025-04-11 10:21:58.038131991 +0200
+@@ -813,7 +813,7 @@ SANE_Status ledm_control_option(SANE_Han
+ 
+   if (stat != SANE_STATUS_GOOD)
+   {
+-     BUG("control_option failed: option=%s action=%s\n", ps->option[option].name, action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
++     BUG_SCAN("control_option failed: option=%s action=%s\n", ps->option[option].name, action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
+   }
+ 
+    return stat;
+@@ -1078,7 +1078,7 @@ void ledm_close(SANE_Handle handle)
+ 
+   if (ps == NULL || ps != session)
+   {
+-    BUG("invalid sane_close\n");
++    BUG_SCAN("invalid sane_close\n");
+     return;
+   }
+ 
+diff -up hplip-3.25.2/scan/sane/marvell.c.covscan hplip-3.25.2/scan/sane/marvell.c
+--- hplip-3.25.2/scan/sane/marvell.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/marvell.c	2025-04-11 10:21:58.038309394 +0200
+@@ -134,7 +134,7 @@ static int get_ip_data(struct marvell_se
+ 
+    if (!ps->ip_handle)
+    {
+-      BUG("invalid ipconvert state\n");
++      BUG_SCAN("invalid ipconvert state\n");
+       goto bugout;
+    }
+    
+@@ -335,7 +335,7 @@ static struct marvell_session *create_se
+ 
+    if ((ps = malloc(sizeof(struct marvell_session))) == NULL)
+    {
+-      BUG("malloc failed: %m\n");
++      BUG_SCAN("malloc failed: %m\n");
+       return NULL;
+    }
+    memset(ps, 0, sizeof(struct marvell_session));
+@@ -402,7 +402,7 @@ SANE_Status marvell_open(SANE_String_Con
+ 
+    if (session)
+    {
+-      BUG("session in use\n");
++      BUG_SCAN("session in use\n");
+       return SANE_STATUS_DEVICE_BUSY;
+    }
+       
+@@ -431,7 +431,7 @@ SANE_Status marvell_open(SANE_String_Con
+ 
+    if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK)
+    {
+-      BUG("unable to open device %s\n", session->uri);
++      BUG_SCAN("unable to open device %s\n", session->uri);
+       goto bugout;
+ 
+       free(session);
+@@ -441,7 +441,7 @@ SANE_Status marvell_open(SANE_String_Con
+ 
+    if (hpmud_open_channel(session->dd, HPMUD_S_MARVELL_SCAN_CHANNEL, &session->cd) != HPMUD_R_OK)
+    {
+-      BUG("unable to open %s channel %s\n", HPMUD_S_MARVELL_SCAN_CHANNEL, session->uri);
++      BUG_SCAN("unable to open %s channel %s\n", HPMUD_S_MARVELL_SCAN_CHANNEL, session->uri);
+       stat = SANE_STATUS_DEVICE_BUSY;
+       goto bugout;
+    }
+@@ -554,7 +554,7 @@ void marvell_close(SANE_Handle handle)
+ 
+    if (ps == NULL || ps != session)
+    {
+-      BUG("invalid sane_close\n");
++      BUG_SCAN("invalid sane_close\n");
+       return;
+    }
+ 
+@@ -849,7 +849,7 @@ SANE_Status marvell_control_option(SANE_
+                stat = SANE_STATUS_GOOD;
+                break;
+             }
+-            BUG("value=%d brymin=%d brymax=%d\n", *int_value, ps->bryRange.min, ps->bryRange.max);
++            BUG_SCAN("value=%d brymin=%d brymax=%d\n", *int_value, ps->bryRange.min, ps->bryRange.max);
+          }
+          else
+          {  /* Set default. */
+@@ -866,7 +866,7 @@ SANE_Status marvell_control_option(SANE_
+ 
+    if (stat != SANE_STATUS_GOOD)
+    {
+-      BUG("control_option failed: option=%s action=%s\n", ps->option[option].name, 
++      BUG_SCAN("control_option failed: option=%s action=%s\n", ps->option[option].name, 
+                   action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
+    }
+ 
+@@ -905,7 +905,7 @@ SANE_Status marvell_start(SANE_Handle ha
+    
+    if (set_extents(ps))
+    {
+-      BUG("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
++      BUG_SCAN("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
+          ps->currentTlx, ps->currentTly, ps->currentBrx, ps->currentBry, ps->min_width, ps->min_height, ps->tlxRange.max, ps->tlyRange.max);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+@@ -963,7 +963,7 @@ SANE_Status marvell_start(SANE_Handle ha
+    /* Open image processor. */
+    if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE)
+    {
+-      BUG("unable open image processor: err=%d\n", ret);
++      BUG_SCAN("unable open image processor: err=%d\n", ret);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+    }
+@@ -1023,7 +1023,7 @@ SANE_Status marvell_read(SANE_Handle han
+ 
+    if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR))
+    {
+-      BUG("ipConvert error=%x\n", ret);
++      BUG_SCAN("ipConvert error=%x\n", ret);
+       goto bugout;
+    }
+ 
+diff -up hplip-3.25.2/scan/sane/sclpml.c.covscan hplip-3.25.2/scan/sane/sclpml.c
+--- hplip-3.25.2/scan/sane/sclpml.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/sclpml.c	2025-04-11 10:21:58.038605168 +0200
+@@ -30,6 +30,7 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <string.h>
++#include <sys/time.h>
+ #include "sane.h"
+ #include "saneopts.h"
+ #include "common.h"
+@@ -2090,7 +2091,7 @@ void sclpml_close(SANE_Handle handle)
+     DBG(8, "sane_hpaio_close(): %s %d\n", __FILE__, __LINE__); 
+     if (hpaio == NULL || hpaio != session)
+     {
+-      BUG("invalid sane_close\n");
++      BUG_SCAN("invalid sane_close\n");
+       return;
+      }
+ 
+diff -up hplip-3.25.2/scan/sane/soap.c.covscan hplip-3.25.2/scan/sane/soap.c
+--- hplip-3.25.2/scan/sane/soap.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/soap.c	2025-04-11 10:21:58.038894758 +0200
+@@ -142,7 +142,7 @@ static int get_ip_data(struct soap_sessi
+ 
+    if (!ps->ip_handle)
+    {
+-      BUG("invalid ipconvert state\n");
++      BUG_SCAN("invalid ipconvert state\n");
+       goto bugout;
+    }      
+ 
+@@ -219,7 +219,7 @@ static struct soap_session *create_sessi
+ 
+    if ((ps = malloc(sizeof(struct soap_session))) == NULL)
+    {
+-      BUG("malloc failed: %m\n");
++      BUG_SCAN("malloc failed: %m\n");
+       return NULL;
+    }
+    memset(ps, 0, sizeof(struct soap_session));
+@@ -418,7 +418,7 @@ SANE_Status soap_open(SANE_String_Const
+ 
+    if (session)
+    {
+-      BUG("session in use\n");
++      BUG_SCAN("session in use\n");
+       return SANE_STATUS_DEVICE_BUSY;
+    }
+ 
+@@ -434,7 +434,7 @@ SANE_Status soap_open(SANE_String_Const
+ 
+    if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK)
+    {
+-      BUG("unable to open device %s\n", session->uri);
++      BUG_SCAN("unable to open device %s\n", session->uri);
+       goto bugout;
+ 
+       free(session);
+@@ -519,7 +519,7 @@ void soap_close(SANE_Handle handle)
+ 
+    if (ps == NULL || ps != session)
+    {
+-      BUG("invalid sane_close\n");
++      BUG_SCAN("invalid sane_close\n");
+       return;
+    }
+ 
+@@ -824,7 +824,7 @@ SANE_Status soap_control_option(SANE_Han
+ 
+    if (stat != SANE_STATUS_GOOD)
+    {
+-      BUG("control_option failed: option=%s action=%s\n", ps->option[option].name, 
++      BUG_SCAN("control_option failed: option=%s action=%s\n", ps->option[option].name, 
+                   action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
+    }
+ 
+@@ -862,7 +862,7 @@ SANE_Status soap_start(SANE_Handle handl
+    ps->user_cancel = 0;
+    if (set_extents(ps))
+    {
+-      BUG("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
++      BUG_SCAN("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
+          ps->currentTlx, ps->currentTly, ps->currentBrx, ps->currentBry, ps->min_width, ps->min_height, ps->tlxRange.max, ps->tlyRange.max);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+@@ -913,7 +913,7 @@ SANE_Status soap_start(SANE_Handle handl
+    /* Open image processor. */
+    if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE)
+    {
+-      BUG("unable open image processor: err=%d\n", ret);
++      BUG_SCAN("unable open image processor: err=%d\n", ret);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+    }
+@@ -955,7 +955,7 @@ SANE_Status soap_start(SANE_Handle handl
+ 
+          if (ret & (IP_INPUT_ERROR | IP_FATAL_ERROR | IP_DONE))
+          {
+-            BUG("ipConvert error=%x\n", ret);
++            BUG_SCAN("ipConvert error=%x\n", ret);
+             stat = SANE_STATUS_IO_ERROR;
+             goto bugout;
+          }
+@@ -1007,7 +1007,7 @@ SANE_Status soap_read(SANE_Handle handle
+ 
+    if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR))
+    {
+-      BUG("ipConvert error=%x\n", ret);
++      BUG_SCAN("ipConvert error=%x\n", ret);
+       goto bugout;
+    }
+ 
+diff -up hplip-3.25.2/scan/sane/soapht.c.covscan hplip-3.25.2/scan/sane/soapht.c
+--- hplip-3.25.2/scan/sane/soapht.c.covscan	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/scan/sane/soapht.c	2025-04-11 10:21:58.039106018 +0200
+@@ -136,7 +136,7 @@ static int get_ip_data(struct soap_sessi
+ 
+    if (!ps->ip_handle)
+    {
+-      BUG("invalid ipconvert state\n");
++      BUG_SCAN("invalid ipconvert state\n");
+       goto bugout;
+    }      
+ 
+@@ -435,7 +435,7 @@ static struct soap_session *create_sessi
+ 
+    if ((ps = malloc(sizeof(struct soap_session))) == NULL)
+    {
+-      BUG("malloc failed: %m\n");
++      BUG_SCAN("malloc failed: %m\n");
+       return NULL;
+    }
+    memset(ps, 0, sizeof(struct soap_session));
+@@ -459,7 +459,7 @@ SANE_Status soapht_open(SANE_String_Cons
+ 
+    if (session)
+    {
+-      BUG("session in use\n");
++      BUG_SCAN("session in use\n");
+       return SANE_STATUS_DEVICE_BUSY;
+    }
+ 
+@@ -475,7 +475,7 @@ SANE_Status soapht_open(SANE_String_Cons
+ 
+    if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK)
+    {
+-      BUG("unable to open device %s\n", session->uri);
++      BUG_SCAN("unable to open device %s\n", session->uri);
+       goto bugout;
+ 
+       free(session);
+@@ -554,7 +554,7 @@ void soapht_close(SANE_Handle handle)
+ 
+    if (ps == NULL || ps != session)
+    {
+-      BUG("invalid sane_close\n");
++      BUG_SCAN("invalid sane_close\n");
+       return;
+    }
+ 
+@@ -904,7 +904,7 @@ SANE_Status soapht_control_option(SANE_H
+ 
+    if (stat != SANE_STATUS_GOOD)
+    {
+-      BUG("control_option failed: option=%s action=%s\n", ps->option[option].name, 
++      BUG_SCAN("control_option failed: option=%s action=%s\n", ps->option[option].name, 
+                   action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto");
+    }
+ 
+@@ -946,7 +946,7 @@ SANE_Status soapht_start(SANE_Handle han
+   
+    if (set_extents(ps))
+    {
+-      BUG("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
++      BUG_SCAN("invalid extents: tlx=%d brx=%d tly=%d bry=%d minwidth=%d minheight%d maxwidth=%d maxheight=%d\n",
+          ps->currentTlx, ps->currentTly, ps->currentBrx, ps->currentBry, ps->min_width, ps->min_height, ps->tlxRange.max, ps->tlyRange.max);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+@@ -1032,7 +1032,7 @@ SANE_Status soapht_start(SANE_Handle han
+    /* Open image processor. */
+    if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE)
+    {
+-      BUG("unable open image processor: err=%d\n", ret);
++      BUG_SCAN("unable open image processor: err=%d\n", ret);
+       stat = SANE_STATUS_INVAL;
+       goto bugout;
+    }
+@@ -1075,7 +1075,7 @@ SANE_Status soapht_start(SANE_Handle han
+ 
+          if (ret & (IP_INPUT_ERROR | IP_FATAL_ERROR | IP_DONE))
+          {
+-            BUG("ipConvert error=%x\n", ret);
++            BUG_SCAN("ipConvert error=%x\n", ret);
+             stat = SANE_STATUS_IO_ERROR;
+             goto bugout;
+          }
+@@ -1124,7 +1124,7 @@ SANE_Status soapht_read(SANE_Handle hand
+ 
+    if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR))
+    {
+-      BUG("ipConvert error=%x\n", ret);
++      BUG_SCAN("ipConvert error=%x\n", ret);
+       goto bugout;
+    }
+ 
diff --git a/hplip-hpaio-gcc14.patch b/hplip-hpaio-gcc14.patch
new file mode 100644
index 0000000..f7d195e
--- /dev/null
+++ b/hplip-hpaio-gcc14.patch
@@ -0,0 +1,114 @@
+diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c
+index 57d1dde..3475929 100644
+--- a/scan/sane/hpaio.c
++++ b/scan/sane/hpaio.c
+@@ -379,7 +379,7 @@ extern SANE_Status sane_hpaio_get_devices(const SANE_Device ***deviceList, SANE_
+    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 --git a/scan/sane/orblite.c b/scan/sane/orblite.c
+index 2eb7aba..4eaa468 100644
+--- a/scan/sane/orblite.c
++++ b/scan/sane/orblite.c
+@@ -64,28 +64,28 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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  
+@@ -93,7 +93,7 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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
+@@ -101,7 +101,7 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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, 
+@@ -109,7 +109,7 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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, 
+@@ -117,7 +117,7 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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, 
+@@ -125,7 +125,7 @@ SANE_Option_Descriptor	DefaultOrbOptions[] = {
+ 		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
+@@ -274,6 +274,7 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle)
+ 	SANE_Auth_Callback authorize;
+ 	const SANE_Device *** device_list;
+ 	SANE_Bool local_only;
++	void * temp_handle;
+ 	
+ 	
+ 	// Allocate handle, set all handle values to zero
+@@ -305,7 +306,9 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle)
+ 	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 --git a/hplip-pcardext-disable.patch b/hplip-pcardext-disable.patch
new file mode 100644
index 0000000..342c4d3
--- /dev/null
+++ b/hplip-pcardext-disable.patch
@@ -0,0 +1,17 @@
+diff -up hplip-3.25.2/Makefile.am.pcardext-disable hplip-3.25.2/Makefile.am
+--- hplip-3.25.2/Makefile.am.pcardext-disable	2025-04-11 10:23:29.576593786 +0200
++++ hplip-3.25.2/Makefile.am	2025-04-11 10:24:08.259842784 +0200
+@@ -306,13 +306,6 @@ if !HPLIP_CLASS_DRIVER
+ pcarddir = $(hplipdir)/pcard
+ dist_pcard_DATA = pcard/__init__.py pcard/photocard.py
+ 
+-# pcardext
+-pcardextdir = $(PYTHONEXECDIR)
+-pcardext_LTLIBRARIES = pcardext.la
+-pcardext_la_LDFLAGS = -module -avoid-version
+-pcardext_la_SOURCES = pcard/pcardext/pcardext.c pcard/fat.c pcard/pcardext/pcardext.h
+-pcardext_la_CFLAGS = -I$(PYTHONINCLUDEDIR)
+-
+ # prnt
+ prntdir = $(hplipdir)/prnt
+ dist_prnt_DATA = prnt/cups.py prnt/__init__.py prnt/ldl.py prnt/pcl.py prnt/colorcal.py
diff --git a/hplip-scan-hpaio-include.patch b/hplip-scan-hpaio-include.patch
new file mode 100644
index 0000000..79d1d94
--- /dev/null
+++ b/hplip-scan-hpaio-include.patch
@@ -0,0 +1,19 @@
+scam/sane/hpaio.c: Include orblite.h for more function prototypes
+
+Otherwise the build fails with compilers which do not support
+implicit function declarations.
+
+Submitted upstream: <https://bugs.launchpad.net/hplip/+bug/1997875>
+
+diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c
+index d342626822fc2190..57d1ddea32fb5816 100644
+--- a/scan/sane/hpaio.c
++++ b/scan/sane/hpaio.c
+@@ -50,6 +50,7 @@
+ #include "sclpml.h"
+ #include "escl.h"
+ #include "io.h"
++#include "orblite.h"
+ #include "orblitei.h"
+ 
+ 
diff --git a/hplip-scan-orblite-c99.patch b/hplip-scan-orblite-c99.patch
new file mode 100644
index 0000000..c921f22
--- /dev/null
+++ b/hplip-scan-orblite-c99.patch
@@ -0,0 +1,21 @@
+diff --git a/scan/sane/orblite.c b/scan/sane/orblite.c
+index ba86640..2eb7aba 100644
+--- a/scan/sane/orblite.c
++++ b/scan/sane/orblite.c
+@@ -20,6 +20,7 @@
+ #include "orblitei.h"
+ #include "orblite.h"//Added New
+ #include <math.h>
++#include <dlfcn.h>
+ #include "utils.h"
+ #include "io.h"
+ 
+@@ -195,7 +196,7 @@ bugout:
+ 
+ static int bb_unload(SANE_THandle ps)
+ {
+-   _DBG("Calling orblite bb_unload: \n");
++   DBG("Calling orblite bb_unload: \n");
+    if (ps->bb_handle)
+    {
+       dlclose(ps->bb_handle);
diff --git a/implicit-int.patch b/implicit-int.patch
new file mode 100644
index 0000000..42f4d7b
--- /dev/null
+++ b/implicit-int.patch
@@ -0,0 +1,11 @@
+--- hplip-3.25.2/prnt/hpps/pserror.c~	2025-02-27 13:12:29.000000000 +0100
++++ hplip-3.25.2/prnt/hpps/pserror.c	2025-05-11 01:04:54.143331820 +0200
+@@ -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 --git a/no-undefined-macro.patch b/no-undefined-macro.patch
deleted file mode 100644
index caf02b2..0000000
--- a/no-undefined-macro.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- hplip-3.22.6/scan/sane/orblite.c~	2022-06-23 06:56:30.000000000 +0200
-+++ hplip-3.22.6/scan/sane/orblite.c	2022-07-10 23:33:28.815232120 +0200
-@@ -195,7 +195,7 @@
- 
- static int bb_unload(SANE_THandle ps)
- {
--   _DBG("Calling orblite bb_unload: \n");
-+   //_DBG("Calling orblite bb_unload: \n");
-    if (ps->bb_handle)
-    {
-       dlclose(ps->bb_handle);
diff --git a/pld-distro.patch b/pld-distro.patch
index 40c090f..60aea2f 100644
--- a/pld-distro.patch
+++ b/pld-distro.patch
@@ -10,7 +10,7 @@
  # ****************************************
  
 @@ -19541,3 +19541,130 @@
- packages=epm
+ same_as_version=6.1
  
  # ****************************************
 +
diff --git a/unresolved.patch b/unresolved.patch
index 8dd4e11..01ff080 100644
--- a/unresolved.patch
+++ b/unresolved.patch
@@ -18,16 +18,4 @@ diff -urNp -x '*.orig' hplip-3.22.6.org/Makefile.am hplip-3.22.6/Makefile.am
 +libhpipp_la_LIBADD = libhpmud.la -lcups
  
  # cupsext
- cupsextdir = $(pyexecdir)
-diff -urNp -x '*.orig' hplip-3.22.6.org/scan/sane/ledm.c hplip-3.22.6/scan/sane/ledm.c
---- hplip-3.22.6.org/scan/sane/ledm.c	2022-06-23 06:56:30.000000000 +0200
-+++ hplip-3.22.6/scan/sane/ledm.c	2022-07-10 22:42:59.782176747 +0200
-@@ -1078,7 +1078,7 @@ void ledm_close(SANE_Handle handle)
- 
-   if (ps == NULL || ps != session)
-   {
--    BUG("invalid sane_close\n");
-+//    BUG("invalid sane_close\n");
-     return;
-   }
- 
+ cupsextdir = $(PYTHONEXECDIR)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/hplip.git/commitdiff/b6ab004b79d4b10aafe33446012b618e48f4464d




More information about the pld-cvs-commit mailing list