[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