From f026aa670040b37154ce4ba1de6648f18e0c0e5c Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 17 May 2022 05:20:44 -0400 Subject: [PATCH] import hplip-3.21.2-6.el9 --- .gitignore | 3 + .hplip.metadata | 3 + ...Processor-functionality-which-is-clo.patch | 112 + ...-constructors-of-PyQT5-with-the-corr.patch | 473 +++ ...-removal-of-hp-toolbox-features-whic.patch | 41 + SOURCES/copy-deviceids.py | 75 + SOURCES/hpcups-update-ppds.sh | 107 + SOURCES/hplip-3165-sourceoption.patch | 11 + SOURCES/hplip-add-ppd-crash.patch | 31 + SOURCES/hplip-appdata.patch | 19 + SOURCES/hplip-avahi-parsing.patch | 19 + SOURCES/hplip-bad-low-ink-warning.patch | 39 + SOURCES/hplip-check-cups.patch | 16 + SOURCES/hplip-check-userperms.patch | 33 + SOURCES/hplip-clean-ldl.patch | 44 + SOURCES/hplip-clear-old-state-reasons.patch | 17 + SOURCES/hplip-configure-python.patch | 52 + SOURCES/hplip-covscan.patch | 674 +++++ SOURCES/hplip-deviceIDs-drv.patch | 750 +++++ SOURCES/hplip-deviceIDs-ppd.patch | 11 + SOURCES/hplip-dialog-infinite-loop.patch | 34 + SOURCES/hplip-dj990c-margin.patch | 15 + SOURCES/hplip-error-print.patch | 78 + SOURCES/hplip-fab-import.patch | 13 + SOURCES/hplip-find-driver.patch | 163 ++ SOURCES/hplip-fix-Wreturn-type-warning.patch | 111 + SOURCES/hplip-hpcups-crash.patch | 13 + SOURCES/hplip-hpcups-sigpipe.patch | 29 + SOURCES/hplip-hpfax-importerror-print.patch | 13 + SOURCES/hplip-hpijs-marker-supply.patch | 31 + SOURCES/hplip-hplj-3052.patch | 21 + SOURCES/hplip-hpmud-string-parse.patch | 16 + SOURCES/hplip-hpsetup-noscanjets.patch | 48 + SOURCES/hplip-keyserver.patch | 60 + SOURCES/hplip-log-stderr.patch | 37 + SOURCES/hplip-logdir.patch | 24 + SOURCES/hplip-logging-segfault.patch | 13 + SOURCES/hplip-m278-m281-needs-plugin.patch | 15 + SOURCES/hplip-missing-drivers.patch | 602 ++++ SOURCES/hplip-missing-links.patch | 13 + SOURCES/hplip-model-mismatch.patch | 64 + SOURCES/hplip-no-asm.patch | 36 + SOURCES/hplip-no-write-bytecode.patch | 27 + SOURCES/hplip-noernie.patch | 64 + SOURCES/hplip-ppd-ImageableArea.patch | 459 +++ SOURCES/hplip-pstotiff-is-rubbish.patch | 65 + SOURCES/hplip-repack.sh | 22 + SOURCES/hplip-retry-open.patch | 16 + SOURCES/hplip-revert-plugins.patch | 1178 ++++++++ SOURCES/hplip-scan-tmp.patch | 25 + SOURCES/hplip-silence-ioerror.patch | 12 + SOURCES/hplip-snmp-quirks.patch | 21 + SOURCES/hplip-strncpy.patch | 48 + SOURCES/hplip-strstr-const.patch | 50 + SOURCES/hplip-systray-blockerror.patch | 20 + SOURCES/hplip-thread-isalive-removed.patch | 93 + SOURCES/hplip-timeb-removed.patch | 12 + SOURCES/hplip-typo.patch | 12 + SOURCES/hplip-udev-rules.patch | 12 + SOURCES/hplip-ui-optional.patch | 96 + SOURCES/hplip-unicodeerror.patch | 18 + SOURCES/hplip-use-binary-str.patch | 40 + SOURCES/hplip-wifisetup.patch | 12 + SOURCES/hplip.appdata.xml | 54 + SPECS/hplip.spec | 2579 +++++++++++++++++ 65 files changed, 8914 insertions(+) create mode 100644 .gitignore create mode 100644 .hplip.metadata create mode 100644 SOURCES/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch create mode 100644 SOURCES/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch create mode 100644 SOURCES/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch create mode 100755 SOURCES/copy-deviceids.py create mode 100644 SOURCES/hpcups-update-ppds.sh create mode 100644 SOURCES/hplip-3165-sourceoption.patch create mode 100644 SOURCES/hplip-add-ppd-crash.patch create mode 100644 SOURCES/hplip-appdata.patch create mode 100644 SOURCES/hplip-avahi-parsing.patch create mode 100644 SOURCES/hplip-bad-low-ink-warning.patch create mode 100644 SOURCES/hplip-check-cups.patch create mode 100644 SOURCES/hplip-check-userperms.patch create mode 100644 SOURCES/hplip-clean-ldl.patch create mode 100644 SOURCES/hplip-clear-old-state-reasons.patch create mode 100644 SOURCES/hplip-configure-python.patch create mode 100644 SOURCES/hplip-covscan.patch create mode 100644 SOURCES/hplip-deviceIDs-drv.patch create mode 100644 SOURCES/hplip-deviceIDs-ppd.patch create mode 100644 SOURCES/hplip-dialog-infinite-loop.patch create mode 100644 SOURCES/hplip-dj990c-margin.patch create mode 100644 SOURCES/hplip-error-print.patch create mode 100644 SOURCES/hplip-fab-import.patch create mode 100644 SOURCES/hplip-find-driver.patch create mode 100644 SOURCES/hplip-fix-Wreturn-type-warning.patch create mode 100644 SOURCES/hplip-hpcups-crash.patch create mode 100644 SOURCES/hplip-hpcups-sigpipe.patch create mode 100644 SOURCES/hplip-hpfax-importerror-print.patch create mode 100644 SOURCES/hplip-hpijs-marker-supply.patch create mode 100644 SOURCES/hplip-hplj-3052.patch create mode 100644 SOURCES/hplip-hpmud-string-parse.patch create mode 100644 SOURCES/hplip-hpsetup-noscanjets.patch create mode 100644 SOURCES/hplip-keyserver.patch create mode 100644 SOURCES/hplip-log-stderr.patch create mode 100644 SOURCES/hplip-logdir.patch create mode 100644 SOURCES/hplip-logging-segfault.patch create mode 100644 SOURCES/hplip-m278-m281-needs-plugin.patch create mode 100644 SOURCES/hplip-missing-drivers.patch create mode 100644 SOURCES/hplip-missing-links.patch create mode 100644 SOURCES/hplip-model-mismatch.patch create mode 100644 SOURCES/hplip-no-asm.patch create mode 100644 SOURCES/hplip-no-write-bytecode.patch create mode 100644 SOURCES/hplip-noernie.patch create mode 100644 SOURCES/hplip-ppd-ImageableArea.patch create mode 100644 SOURCES/hplip-pstotiff-is-rubbish.patch create mode 100755 SOURCES/hplip-repack.sh create mode 100644 SOURCES/hplip-retry-open.patch create mode 100644 SOURCES/hplip-revert-plugins.patch create mode 100644 SOURCES/hplip-scan-tmp.patch create mode 100644 SOURCES/hplip-silence-ioerror.patch create mode 100644 SOURCES/hplip-snmp-quirks.patch create mode 100644 SOURCES/hplip-strncpy.patch create mode 100644 SOURCES/hplip-strstr-const.patch create mode 100644 SOURCES/hplip-systray-blockerror.patch create mode 100644 SOURCES/hplip-thread-isalive-removed.patch create mode 100644 SOURCES/hplip-timeb-removed.patch create mode 100644 SOURCES/hplip-typo.patch create mode 100644 SOURCES/hplip-udev-rules.patch create mode 100644 SOURCES/hplip-ui-optional.patch create mode 100644 SOURCES/hplip-unicodeerror.patch create mode 100644 SOURCES/hplip-use-binary-str.patch create mode 100644 SOURCES/hplip-wifisetup.patch create mode 100644 SOURCES/hplip.appdata.xml create mode 100644 SPECS/hplip.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dddb185 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/hp-laserjet_cp_1025nw.ppd.gz +SOURCES/hp-laserjet_professional_p_1102w.ppd.gz +SOURCES/hplip-3.21.2-repack.tar.gz diff --git a/.hplip.metadata b/.hplip.metadata new file mode 100644 index 0000000..76dcbd5 --- /dev/null +++ b/.hplip.metadata @@ -0,0 +1,3 @@ +ab5f8109daf6ec9ccc9571a1155e2438d581e096 SOURCES/hp-laserjet_cp_1025nw.ppd.gz +653b9a1d89a5aecedc8a9a66835ac060d995dfa2 SOURCES/hp-laserjet_professional_p_1102w.ppd.gz +6523daf5be0a41a0b40a24cf54ca5e03bcefd9ba SOURCES/hplip-3.21.2-repack.tar.gz diff --git a/SOURCES/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch b/SOURCES/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch new file mode 100644 index 0000000..1582480 --- /dev/null +++ b/SOURCES/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch @@ -0,0 +1,112 @@ +diff -up hplip-3.21.2/Makefile.am.libimageprocessor-removal hplip-3.21.2/Makefile.am +--- hplip-3.21.2/Makefile.am.libimageprocessor-removal 2021-02-24 12:38:31.707900421 +0100 ++++ hplip-3.21.2/Makefile.am 2021-02-24 12:38:31.735900172 +0100 +@@ -167,7 +167,7 @@ if !HPLIP_CLASS_DRIVER + dist_hplip_SCRIPTS = hpssd.py __init__.py hpdio.py + endif #HPLIP_CLASS_DRIVER + +-dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template prnt/hpcups/libImageProcessor-x86_64.so prnt/hpcups/libImageProcessor-x86_32.so ++dist_noinst_DATA += prnt/drv/hpijs.drv.in.template prnt/drv/hpcups.drv.in.template + dist_noinst_SCRIPTS += dat2drv.py install.py hplip-install init-suse-firewall init-iptables-firewall class_rpm_build.sh hplipclassdriver.spec createPPD.sh Makefile_dat2drv hpijs-drv + + if !HPLIP_CLASS_DRIVER +@@ -595,7 +595,7 @@ hpcups_SOURCES = prnt/hpcups/HPCupsFilte + 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 +@@ -685,16 +685,6 @@ endif #HPLIP_CLASS_DRIVER + + install-data-hook: + if HPLIP_BUILD +- if [ \( "$(UNAME)" = "x86_64" -a -d "$(libdir)/" \) ]; then \ +- cp prnt/hpcups/libImageProcessor-x86_64.so $(libdir)/ ; \ +- chmod 775 $(libdir)/libImageProcessor-x86_64.so ; \ +- ln -sf $(libdir)/libImageProcessor-x86_64.so $(libdir)/libImageProcessor.so ; \ +- fi; \ +- if [ \( \( "$(UNAME)" = "i686" -o "$(UNAME)" = "i386" \) -a -d "$(libdir)/" \) ]; then \ +- cp prnt/hpcups/libImageProcessor-x86_32.so $(libdir)/ ; \ +- chmod 775 $(libdir)/libImageProcessor-x86_32.so ; \ +- ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \ +- fi + if !HPLIP_CLASS_DRIVER + # If scanner build, add hpaio entry to sane dll.conf. + if [ "$(scan_build)" = "yes" ]; then \ +diff -up hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp.libimageprocessor-removal hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp +--- hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp.libimageprocessor-removal 2021-02-24 12:38:31.701900474 +0100 ++++ hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp 2021-02-24 12:42:49.445720549 +0100 +@@ -31,7 +31,6 @@ + \*****************************************************************************/ + + #include "HPCupsFilter.h" +-#include "ImageProcessor.h" + + #include + #include +@@ -659,21 +658,8 @@ int HPCupsFilter::processRasterData(cups + + snprintf(hpPreProcessedRasterFile, sizeof (hpPreProcessedRasterFile), "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name); + +- image_processor_t* imageProcessor=NULL; +- IMAGE_PROCESSOR_ERROR result; +- //added if condition to check if pinter language is "ljzjstream" +- //If so, then bypass imageprocessing functions while running HPCUPS filter. +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0){ +- imageProcessor = imageProcessorCreate(); +- } + while (cupsRasterReadHeader2(cups_raster, &cups_header)) + { +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0){ +- result = imageProcessorStartPage(imageProcessor, &cups_header); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result); +- } +- } + current_page_number++; + + if (current_page_number == 1) { +@@ -772,14 +758,6 @@ int HPCupsFilter::processRasterData(cups + color_raster = rgbRaster; + black_raster = kRaster; + +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { +- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result); +- } +- } +- + if ((y == 0) && !is_ljmono) { + //For ljmono, make sure that first line is not a blankRaster line.Otherwise printer + //may not skip blank lines before actual data +@@ -809,14 +787,6 @@ int HPCupsFilter::processRasterData(cups + } + } // for() loop end + +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { +- result = imageProcessorEndPage(imageProcessor); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result); +- } +- } +- + m_Job.NewPage(); + if (err != NO_ERROR) { + break; +@@ -832,10 +802,6 @@ int HPCupsFilter::processRasterData(cups + } + + +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { +- imageProcessorDestroy(imageProcessor); +- } + unlink(hpPreProcessedRasterFile); + return ret_status; + } diff --git a/SOURCES/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch b/SOURCES/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch new file mode 100644 index 0000000..ef7d370 --- /dev/null +++ b/SOURCES/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch @@ -0,0 +1,473 @@ +From 95a73bbc9bd65602a0f9411469ab511bc80a01d0 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter +Date: Wed, 3 Oct 2018 15:13:00 +0200 +Subject: Call QMessageBox constructors of PyQT5 with the correct parameters + +The whole Python source code of HPLIP contains 40 incorrect calls of +the QMessageBox constructurs, mostly the list of buttons was given as +separate arguments instead of a bitwise OR of each button's +representation value. If the flow of the code hits one of these +calls (usually when some error or warnings message should be +displayed or an "Are you sure?" question asked) the GUI app crashes. +See https://pythonspot.com/pyqt5-messagebox/ for QMessageBox +documentation. +This patch corrects all these calls. + +Bug-Debian: https://bugs.debian.org/912768 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1745383 +--- + ui/devmgr4.py | 16 ++++++++-------- + ui/faxaddrbookform.py | 6 +++--- + ui/faxsendjobform.py | 6 +++--- + ui/firmwaredialog.py | 2 +- + ui/makecopiesform.py | 4 ++-- + ui/nodevicesform.py | 2 +- + ui/pluginform2.py | 4 ++-- + ui/printerform.py | 2 +- + ui/settingsdialog.py | 4 ++-- + ui/setupform.py | 10 +++++----- + ui/unloadform.py | 2 +- + ui/upgradeform.py | 4 ++-- + ui5/devmgr5.py | 6 ++---- + ui5/fabwindow.py | 2 +- + ui5/nodevicesdialog.py | 3 +-- + ui5/plugindialog.py | 2 +- + ui5/queuesconf.py | 2 +- + ui5/setupdialog.py | 6 +++--- + 18 files changed, 40 insertions(+), 43 deletions(-) + +diff --git a/ui/devmgr4.py b/ui/devmgr4.py +index cc2552f91..a868ccac0 100644 +--- a/ui/devmgr4.py ++++ b/ui/devmgr4.py +@@ -1422,7 +1422,7 @@ class DevMgr4(DevMgr4_base): + QMessageBox.critical(self, + self.caption(), + self.__tr("Unable to find an appropriate su/sudo utility to run hp-plugin.

Install kdesu, gnomesu, or gksu.

"), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + else: +@@ -2854,7 +2854,7 @@ class DevMgr4(DevMgr4_base): + x = QMessageBox.critical(self, + self.caption(), + self.__tr("Annoying Confirmation: Are you sure you want to remove this device?"), +- QMessageBox.Yes, ++ QMessageBox.Yes |\ + QMessageBox.No | QMessageBox.Default, + QMessageBox.NoButton) + if x == QMessageBox.Yes: +@@ -2949,7 +2949,7 @@ class DevMgr4(DevMgr4_base): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -2958,7 +2958,7 @@ class DevMgr4(DevMgr4_base): + QMessageBox.warning(self, + self.caption(), + msg, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -3115,7 +3115,7 @@ class ScrollTestpageView(ScrollView): + QMessageBox.information(self, + self.caption(), + self.__tr("

A test page should be printing on your printer.

If the page fails to print, please visit http://hplip.sourceforge.net for troubleshooting and support."), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -3130,7 +3130,7 @@ class ScrollTestpageView(ScrollView): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -3272,7 +3272,7 @@ class ScrollColorCalView(ScrollView): + QMessageBox.information(self, + self.caption(), + self.__tr("

A test page should be printing on your printer.

If the page fails to print, please visit http://hplip.sourceforge.net for troubleshooting and support."), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -3287,7 +3287,7 @@ class ScrollColorCalView(ScrollView): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/faxaddrbookform.py b/ui/faxaddrbookform.py +index 109462207..b23364410 100644 +--- a/ui/faxaddrbookform.py ++++ b/ui/faxaddrbookform.py +@@ -228,7 +228,7 @@ class FaxAddrBookGroupsForm(FaxAddrBookGroupsForm_base): + x = QMessageBox.critical(self, + self.caption(), + self.__tr("Annoying Confirmation: Are you sure you want to delete this group?"), +- QMessageBox.Yes, ++ QMessageBox.Yes |\ + QMessageBox.No | QMessageBox.Default, + QMessageBox.NoButton) + if x == QMessageBox.Yes: +@@ -421,7 +421,7 @@ class FaxAddrBookForm(FaxAddrBookForm_base): + if QMessageBox.critical(self, + self.caption(), + self.__tr("Annoying Confirmation: Are you sure you want to delete this address book entry?"), +- QMessageBox.Yes, ++ QMessageBox.Yes |\ + QMessageBox.No | QMessageBox.Default, + QMessageBox.NoButton) == QMessageBox.Yes: + db.delete(self.current.entry['name']) +@@ -451,7 +451,7 @@ class FaxAddrBookForm(FaxAddrBookForm_base): + QMessageBox.critical(self, + self.caption(), + QString(error_text), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/faxsendjobform.py b/ui/faxsendjobform.py +index 106215c5e..69f424c42 100644 +--- a/ui/faxsendjobform.py ++++ b/ui/faxsendjobform.py +@@ -210,7 +210,7 @@ class FaxSendJobForm(QMainWindow): + QMessageBox.information(self, + self.caption(), + self.__tr("

Fax send completed successfully."), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -219,7 +219,7 @@ class FaxSendJobForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -228,7 +228,7 @@ class FaxSendJobForm(QMainWindow): + QMessageBox.warning(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/firmwaredialog.py b/ui/firmwaredialog.py +index 16b313374..0bcee1164 100644 +--- a/ui/firmwaredialog.py ++++ b/ui/firmwaredialog.py +@@ -109,7 +109,7 @@ class FirmwareDialog(QDialog, FirmwareDialog_Base): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/makecopiesform.py b/ui/makecopiesform.py +index 27f144b36..0fbb573e3 100644 +--- a/ui/makecopiesform.py ++++ b/ui/makecopiesform.py +@@ -156,7 +156,7 @@ class MakeCopiesForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -164,7 +164,7 @@ class MakeCopiesForm(QMainWindow): + QMessageBox.warning(self, + self.caption(), + msg, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/nodevicesform.py b/ui/nodevicesform.py +index 01f6ae53b..57a696375 100644 +--- a/ui/nodevicesform.py ++++ b/ui/nodevicesform.py +@@ -67,7 +67,7 @@ class NoDevicesForm(NoDevicesForm_base): + QMessageBox.critical(self, + self.caption(), + self.__tr("An error occurred.

Please re-start the Device Manager and try again."), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/pluginform2.py b/ui/pluginform2.py +index 64e64aa77..76cb0238b 100644 +--- a/ui/pluginform2.py ++++ b/ui/pluginform2.py +@@ -173,7 +173,7 @@ class PluginForm2(PluginForm2_base): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -181,7 +181,7 @@ class PluginForm2(PluginForm2_base): + QMessageBox.information(self, + self.caption(), + text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/printerform.py b/ui/printerform.py +index 0c6c4f39e..7c10ab07b 100644 +--- a/ui/printerform.py ++++ b/ui/printerform.py +@@ -154,7 +154,7 @@ class PrinterForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/settingsdialog.py b/ui/settingsdialog.py +index 92da22546..24f02fd84 100644 +--- a/ui/settingsdialog.py ++++ b/ui/settingsdialog.py +@@ -146,7 +146,7 @@ class SettingsDialog(SettingsDialog_base): + ## QMessageBox.warning(self, + ## self.caption(), + ## self.__tr("One or more email addresses are missing.

Please enter this information and try again."), +-## QMessageBox.Ok, ++## QMessageBox.Ok |\ + ## QMessageBox.NoButton, + ## QMessageBox.NoButton) + ## return +@@ -163,7 +163,7 @@ class SettingsDialog(SettingsDialog_base): + ## QMessageBox.information(self, + ## self.caption(), + ## self.__tr("

Please check your email for a test message.

If the message doesn't arrive, please check your settings and try again."), +-## QMessageBox.Ok, ++## QMessageBox.Ok |\ + ## QMessageBox.NoButton, + ## QMessageBox.NoButton) + +diff --git a/ui/setupform.py b/ui/setupform.py +index 307917b02..78863fdd8 100644 +--- a/ui/setupform.py ++++ b/ui/setupform.py +@@ -602,7 +602,7 @@ class SetupForm(SetupForm_base): + if ( QMessageBox.warning(self, + self.caption(), + warn_text, +- QMessageBox.Yes, ++ QMessageBox.Yes |\ + QMessageBox.No, + QMessageBox.NoButton) == QMessageBox.Yes ): + +@@ -804,7 +804,7 @@ class SetupForm(SetupForm_base): + if QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Retry | QMessageBox.Default, ++ QMessageBox.Retry | QMessageBox.Default |\ + QMessageBox.Cancel | QMessageBox.Escape, + QMessageBox.NoButton) == QMessageBox.Cancel: + break +@@ -832,7 +832,7 @@ class SetupForm(SetupForm_base): + if QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Retry | QMessageBox.Default, ++ QMessageBox.Retry | QMessageBox.Default |\ + QMessageBox.Cancel | QMessageBox.Escape, + QMessageBox.NoButton) == QMessageBox.Cancel: + break +@@ -1003,7 +1003,7 @@ class SetupForm(SetupForm_base): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -1011,7 +1011,7 @@ class SetupForm(SetupForm_base): + QMessageBox.warning(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/unloadform.py b/ui/unloadform.py +index 8397a689c..ae363e01e 100644 +--- a/ui/unloadform.py ++++ b/ui/unloadform.py +@@ -135,7 +135,7 @@ class UnloadForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui/upgradeform.py b/ui/upgradeform.py +index 6b9acf5cc..d0b418419 100644 +--- a/ui/upgradeform.py ++++ b/ui/upgradeform.py +@@ -118,7 +118,7 @@ class UpgradeForm(UpgradeForm_base): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +@@ -126,7 +126,7 @@ class UpgradeForm(UpgradeForm_base): + QMessageBox.information(self, + self.caption(), + text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff --git a/ui5/devmgr5.py b/ui5/devmgr5.py +index 495883f72..0ca016820 100644 +--- a/ui5/devmgr5.py ++++ b/ui5/devmgr5.py +@@ -139,8 +139,7 @@ class PluginInstall(QObject): + install_plugin = QMessageBox.warning(self.parent, + self.parent.windowTitle(), + self.__tr("The HPLIP plugin is already installed.

Do you want to continue and re-install it?"), +- QMessageBox.Yes, +- QMessageBox.No, ++ QMessageBox.Yes | QMessageBox.No, + QMessageBox.NoButton) == QMessageBox.Yes + + if install_plugin: +@@ -149,8 +148,7 @@ class PluginInstall(QObject): + QMessageBox.critical(self.parent, + self.parent.windowTitle(), + self.__tr("Unable to find an appropriate su/sudo utility to run hp-plugin.

Install kdesu, gnomesu, or gksu.

"), +- QMessageBox.Ok, +- QMessageBox.NoButton, ++ QMessageBox.Ok | QMessageBox.NoButton, + QMessageBox.NoButton) + + +diff --git a/ui5/fabwindow.py b/ui5/fabwindow.py +index 488b6bbd5..0b95c94f1 100644 +--- a/ui5/fabwindow.py ++++ b/ui5/fabwindow.py +@@ -344,7 +344,7 @@ class FABWindow(QMainWindow, Ui_MainWindow): + new_name = to_unicode(self.NameLineEdit.text()) + if new_name != self.name: + if QMessageBox.question(self, self.__tr("Rename?"), "Rename '%s' to '%s'?"%(self.name,new_name), \ +- QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes: ++ QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes: + + self.db.rename(self.name, new_name) + log.debug("Rename %s to %s" % (self.name, new_name)) +diff --git a/ui5/nodevicesdialog.py b/ui5/nodevicesdialog.py +index 6083f6d4b..ca86bfcda 100644 +--- a/ui5/nodevicesdialog.py ++++ b/ui5/nodevicesdialog.py +@@ -64,8 +64,7 @@ class NoDevicesDialog(QDialog, Ui_NoDevicesDialog_base): + QMessageBox.critical(self, + self.windowTitle(), + self.__tr("An error occurred.

Please re-start the Device Manager and try again."), +- QMessageBox.Ok, +- QMessageBox.NoButton, ++ QMessageBox.Ok | QMessageBox.NoButton, + QMessageBox.NoButton) + + +diff --git a/ui5/plugindialog.py b/ui5/plugindialog.py +index e3007f911..1c6b33868 100644 +--- a/ui5/plugindialog.py ++++ b/ui5/plugindialog.py +@@ -252,7 +252,7 @@ class PluginDialog(QDialog, Ui_Dialog): + + if QMessageBox.question(self, " ", + self.__tr("%s

Without this, it is not possible to authenticate and validate the plug-in prior to installation.

Do you still want to install the plug-in?" %error_str), +- QMessageBox.Yes | QMessageBox.No) != QMessageBox.Yes: ++ QMessageBox.Yes | QMessageBox.No, QMessageBox.No) != QMessageBox.Yes: + + self.pluginObj.deleteInstallationFiles(download_plugin_file) + self.close() +diff --git a/ui5/queuesconf.py b/ui5/queuesconf.py +index cf2206490..e3c2a0278 100644 +--- a/ui5/queuesconf.py ++++ b/ui5/queuesconf.py +@@ -245,7 +245,7 @@ class QueuesDiagnose(QDialog, Ui_Dialog): + + if QMessageBox.question(self, " ", + self.__tr("%s

Without this, it is not possible to authenticate and validate this tool prior to installation.

Do you still want to run Smart Install disabler?" %error_str), +- QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes: ++ QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes: + # Disabling without verification. + sts, out = utils.run("sh %s"%smart_install_run) + +diff --git a/ui5/setupdialog.py b/ui5/setupdialog.py +index fbfe5ac9b..120ee1587 100644 +--- a/ui5/setupdialog.py ++++ b/ui5/setupdialog.py +@@ -873,7 +873,7 @@ class SetupDialog(QDialog, Ui_Dialog): + self.windowTitle(), + warn_text, + QMessageBox.Yes|\ +- QMessageBox.No|\ ++ QMessageBox.No, + QMessageBox.NoButton) == QMessageBox.Yes ): + i = 2 + while True: +@@ -1108,7 +1108,7 @@ class SetupDialog(QDialog, Ui_Dialog): + if QMessageBox.critical(self, + self.windowTitle(), + error_text, +- QMessageBox.Retry | QMessageBox.Default, ++ QMessageBox.Retry | QMessageBox.Default |\ + QMessageBox.Cancel | QMessageBox.Escape, + QMessageBox.NoButton) == QMessageBox.Cancel: + break +@@ -1138,7 +1138,7 @@ class SetupDialog(QDialog, Ui_Dialog): + if QMessageBox.critical(self, + self.windowTitle(), + error_text, +- QMessageBox.Retry | QMessageBox.Default, ++ QMessageBox.Retry | QMessageBox.Default |\ + QMessageBox.Cancel | QMessageBox.Escape, + QMessageBox.NoButton) == QMessageBox.Cancel: + break diff --git a/SOURCES/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch b/SOURCES/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch new file mode 100644 index 0000000..04fc19d --- /dev/null +++ b/SOURCES/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch @@ -0,0 +1,41 @@ +From ae211a3fcfb1b827f0ec35d61f28d6b539028812 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter +Date: Wed, 3 Oct 2018 15:13:00 +0200 +Subject: Fixed incomplete removal of hp-toolbox features, which caused the + hp-toolbox not to start + +Looking into the ui5/devmgr5.py of the HPLIP Python source code it +seems that some features got removed by commenting them out, but this +removal seems not to have been completed, making non-existing objects +being called during the start of hp-toolbox and so it crashes right +away. + +This patch completes the commenting-out and so makes hp-toolbox start +up and work again. + +Bug-Debian: https://bugs.debian.org/912768 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1789184 +--- + ui5/devmgr5.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ui5/devmgr5.py b/ui5/devmgr5.py +index 0ca016820..9d4e82c58 100644 +--- a/ui5/devmgr5.py ++++ b/ui5/devmgr5.py +@@ -319,11 +319,11 @@ class DevMgr5(Ui_MainWindow_Derived, Ui_MainWindow, QMainWindow): + self.PreferencesAction.setIcon(QIcon(load_pixmap('settings', '16x16'))) + self.PreferencesAction.triggered.connect(self.PreferencesAction_activated) + +- self.DiagnoseQueueAction.setIcon(QIcon(load_pixmap('warning', '16x16'))) +- self.DiagnoseQueueAction.triggered.connect(self.DiagnoseQueueAction_activated) ++ #self.DiagnoseQueueAction.setIcon(QIcon(load_pixmap('warning', '16x16'))) ++ #self.DiagnoseQueueAction.triggered.connect(self.DiagnoseQueueAction_activated) + +- self.DiagnoseHPLIPAction.setIcon(QIcon(load_pixmap('troubleshoot', '16x16'))) +- self.DiagnoseHPLIPAction.triggered.connect(self.DiagnoseHPLIP_activated) ++ #self.DiagnoseHPLIPAction.setIcon(QIcon(load_pixmap('troubleshoot', '16x16'))) ++ #self.DiagnoseHPLIPAction.triggered.connect(self.DiagnoseHPLIP_activated) + + self.ContentsAction.setIcon(QIcon(load_pixmap("help", "16x16"))) + self.ContentsAction.triggered.connect(self.helpContents) diff --git a/SOURCES/copy-deviceids.py b/SOURCES/copy-deviceids.py new file mode 100755 index 0000000..c27a06b --- /dev/null +++ b/SOURCES/copy-deviceids.py @@ -0,0 +1,75 @@ +#!/usr/bin/python3 +import os +import re +import sys +if len (sys.argv) < 3: + print ("Specify hpcups.drv and hpijs.drv pathnames") + sys.exit (1) + +hpcups_drv = sys.argv[1] +hpijs_drv = sys.argv[2] + +# Match e.g. Model "ModelName" +# and catch 'ModelName' in group 0 +mn_re = re.compile ('^\s*ModelName\s+"(.*)"\s*$') + +# Match e.g. Attribute "1284DeviceID" "" "blah" +# and catch everything before 'blah' in group 0, 'blah' in group 1, +# trailing characters in group 2 +devid_re = re.compile ('^(\s*Attribute\s+"1284DeviceID"\s+""\s+")(.*)("\s*)$') + +# Match e.g. } +end_re = re.compile ('^\s*}') + +devid_by_mn = dict() + +hpcups_lines = open (hpcups_drv, "r").readlines () +current_mn = None +for line in hpcups_lines: + if current_mn == None: + match = mn_re.match (line) + if match == None: + continue + + current_mn = match.groups ()[0] + else: + match = devid_re.match (line) + if match: + devid_by_mn[current_mn] = match.groups ()[1] + continue + + if end_re.match (line): + current_mn = None + +print("%d IEEE 1284 Device IDs loaded from %s" % (len (devid_by_mn), + os.path.basename (hpcups_drv)), + file=sys.stderr) + +replaced = 0 +hpijs_lines = open (hpijs_drv, "r").readlines () +current_mn = None +for line in hpijs_lines: + if current_mn == None: + match = mn_re.match (line) + if match: + current_mn = match.groups ()[0] + if current_mn.endswith (" hpijs"): + current_mn = current_mn[:-6] + else: + match = devid_re.match (line) + if match: + devid = devid_by_mn.get (current_mn) + if devid: + line = (match.groups ()[0] + devid + match.groups ()[2]) + replaced += 1 + else: + print ("Not matched: %s" % current_mn, file=sys.stderr) + + if end_re.match (line): + current_mn = None + + print (line.rstrip ("\n")) + +print("%d IEEE 1284 Device IDs loaded in %s" % (replaced, + os.path.basename (hpijs_drv)), + file=sys.stderr) diff --git a/SOURCES/hpcups-update-ppds.sh b/SOURCES/hpcups-update-ppds.sh new file mode 100644 index 0000000..2e97ef5 --- /dev/null +++ b/SOURCES/hpcups-update-ppds.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +## Copyright (C) 2010 Red Hat, Inc. +## Authors: +## Tim Waugh + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +## Purpose: Update hpcups PPDs when necessary. + +sock=/var/run/cups/cups.sock +running=$(LC_ALL=C lpstat -h "$sock" -r 2>/dev/null) +if [ "$?" -ne 0 ] +then + # No lpstat in path + exit 0 +fi + +if [ -z "${running##*not*}" ] +then + # scheduler is not running + exit 0 +fi + +trap 'rm -f "$tmpdir"/models; rmdir "$tmpdir"; exit 0' \ + 0 HUP INT QUIT ILL ABRT PIPE TERM + +debug=true +tmpdir="$(mktemp -d)" +for ppd in /etc/cups/ppd/*.ppd +do + [ -r "$ppd" ] || continue + queue="${ppd#/etc/cups/ppd/}" + queue="${queue%.ppd}" + lpstat -h "$sock" -p "$queue" &>/dev/null || continue + + # We have PPD associated with a queue. Find out its NickName + $debug && echo "Examining $queue" + nickname="$(grep '^\*NickName:' "$ppd")" + nickname="${nickname#*\"}" # strip text up to and incl first double quote + nickname="${nickname%\"*}" # strip final double quote + $debug && echo "NickName is: $nickname" + + # Is it an hpcups PPD? + [ -z "${nickname##*, hpcups*}" ] || continue + $debug && echo "hpcups: true" + + # No: need to regenerate the PPD. + if [ ! -f "$tmpdir/models" ] + then + # Get list of driver URIs and NickNames + lpinfo -h "$sock" --include-schemes=drv -m 2>/dev/null >"$tmpdir/models" + fi + + # Strip hpcups version from NickName + nickname="${nickname%, hpcups*}" + $debug && echo "Stripped NickName: $nickname" + while read line + do + uri=${line%% *} + nn="${line#$uri }" + [ -z "${nn##*, hpcups*}" ] || continue + + nn="${nn%, hpcups*}" + if [ "$nn" == "$nickname" ] + then + $debug && echo "Match found, URI: $uri" + + # Unfortunately CUPS will reset the page size when we + # change the PPD, due to the weird page size names that + # HPLIP uses. Try to maintain the existing page size. + size="$(grep '^\*DefaultPageSize:' "$ppd")" + size="${size##* }" # strip until after first ' ' + size="${size%% *}" # strip after any ' ' + $debug && echo "PageSize is $size" + + if [ -z "${size#*Duplex}" ] + then + # Special handling for duplex sizes because HPLIP + # broke backwards compatibility with *that* too! + size="${size%Duplex}.Duplex" + fi + + null=/dev/null + $debug && null=/dev/stdout + lpadmin -h "$sock" -p "$queue" -m "$uri" &>"$null" || : + $debug && echo "PPD regenerated" + + lpadmin -h "$sock" -p "$queue" -o PageSize="$size" &>"$null" || : + $debug && echo "PageSize restored to $size" + break + fi + done <"$tmpdir/models" +done +exit 0 diff --git a/SOURCES/hplip-3165-sourceoption.patch b/SOURCES/hplip-3165-sourceoption.patch new file mode 100644 index 0000000..fd8ff09 --- /dev/null +++ b/SOURCES/hplip-3165-sourceoption.patch @@ -0,0 +1,11 @@ +diff -up hplip-3.16.5/scan.py.sourceoption hplip-3.16.5/scan.py +--- hplip-3.16.5/scan.py.sourceoption 2016-06-22 10:25:52.742799941 +0200 ++++ hplip-3.16.5/scan.py 2016-06-22 10:34:51.945766487 +0200 +@@ -658,6 +658,7 @@ try: + sys.exit(1) + except: + log.error("Failed to get the source from device.") ++ sys.exit(1) + + #check if device has only ADF + if len(source_option) == 1 and 'ADF' in source_option: diff --git a/SOURCES/hplip-add-ppd-crash.patch b/SOURCES/hplip-add-ppd-crash.patch new file mode 100644 index 0000000..7117860 --- /dev/null +++ b/SOURCES/hplip-add-ppd-crash.patch @@ -0,0 +1,31 @@ +diff --git a/setup.py b/setup.py +index 976a42c..3604dd7 100755 +--- a/setup.py ++++ b/setup.py +@@ -558,6 +558,9 @@ else: # INTERACTIVE_MODE + + if file_path.endswith('.gz'): + nickname = gzip.GzipFile(file_path, 'r').read(4096) ++ if sys.version_info[0] > 2: ++ nickname = nickname.decode('utf-8') ++ + else: + nickname = open(file_path, 'r').read(4096) + +diff --git a/ui5/setupdialog.py b/ui5/setupdialog.py +index ac45357..a6dacf0 100644 +--- a/ui5/setupdialog.py ++++ b/ui5/setupdialog.py +@@ -772,9 +772,9 @@ class SetupDialog(QDialog, Ui_Dialog): + + + def OtherPPDButton_clicked(self, b): +- ppd_file = to_unicode(QFileDialog.getOpenFileName(self, self.__tr("Select PPD File"), +- sys_conf.get('dirs', 'ppd'), +- self.__tr("PPD Files (*.ppd *.ppd.gz);;All Files (*)"))) ++ ppd_file = QFileDialog.getOpenFileName(self, self.__tr("Select PPD File"), ++ sys_conf.get('dirs', 'ppd'), ++ self.__tr("PPD Files (*.ppd *.ppd.gz);;All Files (*)"))[0] + + if ppd_file and os.path.exists(ppd_file): + self.print_ppd = (ppd_file, cups.getPPDDescription(ppd_file)) diff --git a/SOURCES/hplip-appdata.patch b/SOURCES/hplip-appdata.patch new file mode 100644 index 0000000..6ad46a3 --- /dev/null +++ b/SOURCES/hplip-appdata.patch @@ -0,0 +1,19 @@ +diff -up hplip-3.17.9/hplip.desktop.in.appdata hplip-3.17.9/hplip.desktop.in +--- hplip-3.17.9/hplip.desktop.in.appdata 2017-10-04 16:04:26.594881663 +0200 ++++ hplip-3.17.9/hplip.desktop.in 2017-10-04 16:05:59.638113656 +0200 +@@ -1,11 +1,11 @@ + [Desktop Entry] + Encoding=UTF-8 + Type=Application +-Name=HP Device Manager +-GenericName=Printer Management Application +-Comment=View device status, ink levels and perform maintenance. ++Name=HPLIP Graphical Tools ++GenericName=Printer Graphical Tools ++Comment=View device status, ink levels and perform maintenance etc. + Exec=hp-toolbox +-Icon=@abs_datadir@/hplip/data/images/128x128/hp_logo.png ++Icon=hp_logo + Terminal=false + Categories=Application;Utility; + X-KDE-StartupNotify=false diff --git a/SOURCES/hplip-avahi-parsing.patch b/SOURCES/hplip-avahi-parsing.patch new file mode 100644 index 0000000..029040b --- /dev/null +++ b/SOURCES/hplip-avahi-parsing.patch @@ -0,0 +1,19 @@ +diff -up hplip-3.15.2/base/avahi.py.parsing hplip-3.15.2/base/avahi.py +--- hplip-3.15.2/base/avahi.py.parsing 2015-02-04 15:43:37.662551377 +0100 ++++ hplip-3.15.2/base/avahi.py 2015-02-04 15:45:56.576564858 +0100 +@@ -52,9 +52,14 @@ def detectNetworkDevices(ttl=4, timeout= + 'status_code': 0, 'device2': '0', 'device3': '0', 'note': ''} + y['ip'] = ip + y['hn'] = bits[6].replace('.local', '') +- details = bits[9].split('" "') ++ details = bits[9].rstrip ().strip ('"').split('" "') + for item in details: + key, value = item.split('=', 1) ++ keyvalue = item.split('=', 1) ++ if len (keyvalue) < 2: ++ # Skip parts that don't match key=value ++ continue ++ key, value = keyvalue + if key == 'ty': + y['mdns'] = value + y['device1'] = "MFG:Hewlett-Packard;MDL:%s;CLS:PRINTER;" % value diff --git a/SOURCES/hplip-bad-low-ink-warning.patch b/SOURCES/hplip-bad-low-ink-warning.patch new file mode 100644 index 0000000..bd51d64 --- /dev/null +++ b/SOURCES/hplip-bad-low-ink-warning.patch @@ -0,0 +1,39 @@ +diff -up hplip-3.10.5/prnt/hpijs/dj9xxvip.cpp.bad-low-ink-warning hplip-3.10.5/prnt/hpijs/dj9xxvip.cpp +--- hplip-3.10.5/prnt/hpijs/dj9xxvip.cpp.bad-low-ink-warning 2010-05-13 01:48:58.000000000 +0200 ++++ hplip-3.10.5/prnt/hpijs/dj9xxvip.cpp 2010-05-17 14:56:31.000000000 +0200 +@@ -2239,7 +2239,7 @@ DRIVER_ERROR DJ9xxVIP::CheckInkLevel() + { + case '5': + { +- if ((*(pStr+1) & 0xf3) > 1) ++ if ((*(pStr+1) & 0xf3) > '1') + { + if (err != NO_ERROR) + { +@@ -2254,7 +2254,7 @@ DRIVER_ERROR DJ9xxVIP::CheckInkLevel() + } + case '6': + { +- if ((*(pStr+1) & 0xf3) > 1) ++ if ((*(pStr+1) & 0xf3) > '1') + { + if (err != NO_ERROR) + { +@@ -2269,7 +2269,7 @@ DRIVER_ERROR DJ9xxVIP::CheckInkLevel() + } + case '7': + { +- if ((*(pStr+1) & 0xf3) > 1) ++ if ((*(pStr+1) & 0xf3) > '1') + { + if (err != NO_ERROR) + { +@@ -2285,7 +2285,7 @@ DRIVER_ERROR DJ9xxVIP::CheckInkLevel() + } + case '8': + { +- if ((*(pStr+1) & 0xf3) > 1) ++ if ((*(pStr+1) & 0xf3) > '1') + { + if (err != NO_ERROR) + { diff --git a/SOURCES/hplip-check-cups.patch b/SOURCES/hplip-check-cups.patch new file mode 100644 index 0000000..053eb50 --- /dev/null +++ b/SOURCES/hplip-check-cups.patch @@ -0,0 +1,16 @@ +diff -up hplip-3.17.11/installer/core_install.py.check-cups hplip-3.17.11/installer/core_install.py +--- hplip-3.17.11/installer/core_install.py.check-cups 2017-12-07 15:34:24.855761874 +0100 ++++ hplip-3.17.11/installer/core_install.py 2017-12-07 15:38:44.749568860 +0100 +@@ -349,9 +349,9 @@ class CoreInstall(object): + 'automake': (True, ['prnt'], AUTOMAKE_STR, self.check_automake, DEPENDENCY_RUN_AND_COMPILE_TIME, '-', None, GENERALDEP), + 'libjpeg': (True, ['base', 'prnt'], JPEG_STR, self.check_libjpeg, DEPENDENCY_RUN_AND_COMPILE_TIME, '-', None, GENERALDEP), + 'libtool': (True, ['base', 'prnt'], LIBTOOL_STR, self.check_libtool, DEPENDENCY_COMPILE_TIME, '-', 'libtool --version', COMPILEDEP), +- 'cups': (True, ['base', 'prnt'], CUPS_STR, self.check_cups, DEPENDENCY_RUN_TIME, '1.1', 'cups-config --version', EXTERNALDEP), +- 'cups-devel': (True, ['base', 'prnt'], CUPS_DEV_STR, self.check_cups_devel, DEPENDENCY_COMPILE_TIME, '-', 'cups-config --version', GENERALDEP), +- 'cups-image': (True, ['base', 'prnt'], CUPS_IMG_STR, self.check_cups_image, DEPENDENCY_COMPILE_TIME, '-', 'cups-config --version', GENERALDEP), ++ 'cups': (True, ['base', 'prnt'], CUPS_STR, self.check_cups, DEPENDENCY_RUN_TIME, '1.1', 'lpstat -r', EXTERNALDEP), ++ 'cups-devel': (True, ['base', 'prnt'], CUPS_DEV_STR, self.check_cups_devel, DEPENDENCY_COMPILE_TIME, '-', 'lpstat -r', GENERALDEP), ++ 'cups-image': (True, ['base', 'prnt'], CUPS_IMG_STR, self.check_cups_image, DEPENDENCY_COMPILE_TIME, '-', 'lpstat -r', GENERALDEP), + 'gcc': (True, ['base', 'prnt'], GCC_STR, self.check_gcc, DEPENDENCY_COMPILE_TIME, '-', 'gcc --version', COMPILEDEP), + 'make': (True, ['base', 'prnt'], MAKE_STR, self.check_make, DEPENDENCY_COMPILE_TIME, '3.0', 'make --version', COMPILEDEP), + 'libpthread': (True, ['base', 'prnt'], THREAD_STR, self.check_libpthread, DEPENDENCY_RUN_AND_COMPILE_TIME, '-', 'FUNC#get_libpthread_version', GENERALDEP), diff --git a/SOURCES/hplip-check-userperms.patch b/SOURCES/hplip-check-userperms.patch new file mode 100644 index 0000000..9204c0b --- /dev/null +++ b/SOURCES/hplip-check-userperms.patch @@ -0,0 +1,33 @@ +diff --git a/base/password.py b/base/password.py +index bd68f2a..bff9f80 100644 +--- a/base/password.py ++++ b/base/password.py +@@ -157,6 +157,28 @@ class Password(object): + log.warn("%s distro is not found in AUTH_TYPES" % distro_name) + self.__authType = 'su' + ++ # check if caller is in wheel group - use 'su' if he isnt - ++ # or if the caller is root (just for showing 'root' username) ++ # in the prompt ++ import os ++ from grp import getgrnam ++ ++ user = os.getenv('USER') ++ ++ try: ++ members = getgrnam('wheel').gr_mem ++ except KeyError: ++ try: ++ members = getgrnam('sudo').gr_mem ++ except: ++ return ++ ++ if user in members: ++ self.__authType = 'sudo' ++ else: ++ self.__authType = 'su' ++ ++ + def __getPasswordDisplayString(self): + if self.__authType == "su": + return "Please enter the root/superuser password: " diff --git a/SOURCES/hplip-clean-ldl.patch b/SOURCES/hplip-clean-ldl.patch new file mode 100644 index 0000000..89553ec --- /dev/null +++ b/SOURCES/hplip-clean-ldl.patch @@ -0,0 +1,44 @@ +diff --git a/base/device.py b/base/device.py +index 6d7add9..bf27307 100644 +--- a/base/device.py ++++ b/base/device.py +@@ -2264,7 +2264,8 @@ class Device(object): + self.callback() + + if total_bytes_to_write != bytes_out: +- raise Error(ERROR_DEVICE_IO_ERROR) ++ raise Error(ERROR_DEVICE_IO_ERROR, 'Number of written ' ++ 'bytes by hpmudext mismatch with expected amount.') + + return bytes_out + +diff --git a/base/g.py b/base/g.py +index 9856662..0aa0e2e 100644 +--- a/base/g.py ++++ b/base/g.py +@@ -398,9 +398,11 @@ ERROR_STRINGS = { + + + class Error(Exception): +- def __init__(self, opt=ERROR_INTERNAL): ++ def __init__(self, opt=ERROR_INTERNAL, msg=None): + self.opt = opt + self.msg = ERROR_STRINGS.get(opt, ERROR_STRINGS[ERROR_INTERNAL]) ++ if msg: ++ self.msg = '{} - {}'.format(self.msg, msg) + log.debug("Exception: %d (%s)" % (opt, self.msg)) + Exception.__init__(self, self.msg, opt) + +diff --git a/prnt/ldl.py b/prnt/ldl.py +index e3f77f7..8b28e7f 100644 +--- a/prnt/ldl.py ++++ b/prnt/ldl.py +@@ -145,7 +145,7 @@ def buildLIDILPacket(packet_type, command=0, operation=0, other={}): + p = '$\x00\x10\x00\x08\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$' + + elif packet_type == PACKET_TYPE_RESET_LIDIL: +- p = '$\x00\x10\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$' ++ p = b'$\x00\x10\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff$' + + elif packet_type == PACKET_TYPE_COMMAND: + diff --git a/SOURCES/hplip-clear-old-state-reasons.patch b/SOURCES/hplip-clear-old-state-reasons.patch new file mode 100644 index 0000000..0dd0c66 --- /dev/null +++ b/SOURCES/hplip-clear-old-state-reasons.patch @@ -0,0 +1,17 @@ +diff -up hplip-3.12.6/prnt/hpcups/HPCupsFilter.cpp.clear-old-state-reasons hplip-3.12.6/prnt/hpcups/HPCupsFilter.cpp +--- hplip-3.12.6/prnt/hpcups/HPCupsFilter.cpp.clear-old-state-reasons 2012-06-19 11:00:06.000000000 +0200 ++++ hplip-3.12.6/prnt/hpcups/HPCupsFilter.cpp 2012-06-19 11:00:57.822093043 +0200 +@@ -510,6 +510,13 @@ int HPCupsFilter::StartPrintJob(int arg + + signal(SIGTERM, HPCancelJob); + ++/* ++ * Prior to the re-write of hpcups, this filter managed the ++ * marker-supply-low-warning printer state reason. Make sure to ++ * clear that state reason so that upgrades work correctly. ++ */ ++ fputs ("STATE: -marker-supply-low-warning\n", stderr); ++ + cups_raster = cupsRasterOpen(fd, CUPS_RASTER_READ); + + if (cups_raster == NULL) { diff --git a/SOURCES/hplip-configure-python.patch b/SOURCES/hplip-configure-python.patch new file mode 100644 index 0000000..9dc78cd --- /dev/null +++ b/SOURCES/hplip-configure-python.patch @@ -0,0 +1,52 @@ +diff -up hplip-3.20.9/configure.in.configure-python hplip-3.20.9/configure.in +--- hplip-3.20.9/configure.in.configure-python 2020-09-23 07:24:27.000000000 +0200 ++++ hplip-3.20.9/configure.in 2020-10-02 07:27:09.082331431 +0200 +@@ -604,17 +604,29 @@ if test "$class_driver" = "no" && test " + 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)` +@@ -631,7 +643,6 @@ if test "$class_driver" = "no" && test " + 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 --git a/SOURCES/hplip-covscan.patch b/SOURCES/hplip-covscan.patch new file mode 100644 index 0000000..bb6314b --- /dev/null +++ b/SOURCES/hplip-covscan.patch @@ -0,0 +1,674 @@ +diff --git a/Makefile.am b/Makefile.am +index 62a25d3..2c4d6f8 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -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)\" + +@@ -304,7 +304,7 @@ dist_pcard_DATA = pcard/__init__.py pcard/photocard.py + pcardextdir = $(pyexecdir) + 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 +@@ -316,7 +316,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 + +diff --git a/common/utils.c b/common/utils.c +index d8ecee9..def4e47 100644 +--- a/common/utils.c ++++ b/common/utils.c +@@ -1,5 +1,9 @@ ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE ++#endif ++ + #include "utils.h" +-#include "string.h" ++#include + #include + #include + #include +diff --git a/io/hpmud/hpmud.c b/io/hpmud/hpmud.c +index 0eb6fff..358f279 100644 +--- a/io/hpmud/hpmud.c ++++ b/io/hpmud/hpmud.c +@@ -759,6 +759,7 @@ enum HPMUD_RESULT hpmud_get_dstat(HPMUD_DEVICE dd, struct hpmud_dstat *ds) + } + + 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 --git a/io/hpmud/jd.c b/io/hpmud/jd.c +index 06f5072..20df27a 100644 +--- a/io/hpmud/jd.c ++++ b/io/hpmud/jd.c +@@ -31,6 +31,7 @@ + #endif + + #include ++#include + #include "hpmud.h" + #include "hpmudi.h" + +diff --git a/io/hpmud/model.c b/io/hpmud/model.c +index 4ea8990..a917d69 100644 +--- a/io/hpmud/model.c ++++ b/io/hpmud/model.c +@@ -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 --git a/io/hpmud/musb.c b/io/hpmud/musb.c +index 6e99c15..755493e 100644 +--- a/io/hpmud/musb.c ++++ b/io/hpmud/musb.c +@@ -775,7 +775,7 @@ static int device_id(int fd, unsigned char *buffer, int size) + 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 --git a/io/hpmud/pp.c b/io/hpmud/pp.c +index 74c5fdc..021d627 100644 +--- a/io/hpmud/pp.c ++++ b/io/hpmud/pp.c +@@ -632,7 +632,7 @@ static int device_id(int fd, char *buffer, int size) + 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 --git a/pcard/fat.c b/pcard/fat.c +index caa383f..e1425c0 100644 +--- a/pcard/fat.c ++++ b/pcard/fat.c +@@ -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 --git a/prnt/hpcups/genPCLm.cpp b/prnt/hpcups/genPCLm.cpp +index c0cdc73..4db4bde 100644 +--- a/prnt/hpcups/genPCLm.cpp ++++ b/prnt/hpcups/genPCLm.cpp +@@ -1237,11 +1237,16 @@ void PCLmGenerator::writeJobTicket() + char orientation[256]; + char duplex[256]; + char colorthemes[256]; +- strncpy(colorthemes,getColorThemesString(m_pPCLmSSettings->colorTheme),256); +- strncpy(inputBin,getInputBinString(m_pPCLmSSettings->userInputBin),256); +- strncpy(outputBin,getOutputBin(m_pPCLmSSettings->userOutputBin),256); +- strncpy(orientation,getOrientationString(m_pPCLmSSettings->userOrientation),256); +- strncpy(duplex,getDuplexString(currDuplexDisposition),256); ++ strncpy(colorthemes,getColorThemesString(m_pPCLmSSettings->colorTheme), sizeof(colorthemes)); ++ colorthemes[sizeof(colorthemes)-1] = '\0'; ++ strncpy(inputBin,getInputBinString(m_pPCLmSSettings->userInputBin), sizeof(inputBin)); ++ inputBin[sizeof(inputBin)-1] = '\0'; ++ strncpy(outputBin,getOutputBin(m_pPCLmSSettings->userOutputBin), sizeof(outputBin)); ++ outputBin[sizeof(outputBin)-1] = '\0'; ++ strncpy(orientation,getOrientationString(m_pPCLmSSettings->userOrientation), sizeof(orientation)); ++ orientation[sizeof(orientation)-1] = '\0'; ++ strncpy(duplex,getDuplexString(currDuplexDisposition), sizeof(duplex)); ++ duplex[sizeof(duplex)-1] = '\0'; + + snprintf(pOutStr,OUT_STR_SIZE,"%% genPCLm (Ver: %f)\n",PCLM_Ver); writeStr2OutBuff(pOutStr); + snprintf(pOutStr,OUT_STR_SIZE,"%%============= Job Ticket =============\n"); writeStr2OutBuff(pOutStr); +@@ -1635,7 +1640,10 @@ int PCLmGenerator::StartPage(PCLmPageSetup *PCLmPageContent, void **pOutBuffer, + } + + if(strlen(PCLmPageContent->mediaSizeName)) +- strncpy(currMediaName,PCLmPageContent->mediaSizeName,256); ++ { ++ strncpy(currMediaName,PCLmPageContent->mediaSizeName, sizeof(currMediaName)); ++ currMediaName[sizeof(currMediaName)-1] = '\0'; ++ } + + currStripHeight=PCLmPageContent->stripHeight; + if(!currStripHeight) +diff --git a/prnt/hpijs/context2.cpp b/prnt/hpijs/context2.cpp +index c3df482..19490b1 100644 +--- a/prnt/hpijs/context2.cpp ++++ b/prnt/hpijs/context2.cpp +@@ -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 --git a/prnt/hpijs/systemservices.cpp b/prnt/hpijs/systemservices.cpp +index 95f5a64..f5b4bb5 100644 +--- a/prnt/hpijs/systemservices.cpp ++++ b/prnt/hpijs/systemservices.cpp +@@ -396,7 +396,10 @@ void SystemServices::AdjustIO(IO_MODE IM, const char* model) + IOMode.bDevID =IM.bDevID && IOMode.bDevID; + + if (model) ++ { + strncpy(strModel,model, sizeof(strModel)); ++ strModel[sizeof(strModel)-1] = '\0'; ++ } + } + + APDK_END_NAMESPACE +diff --git a/prnt/hpps/hppsfilter.c b/prnt/hpps/hppsfilter.c +index 5879a70..d246041 100644 +--- a/prnt/hpps/hppsfilter.c ++++ b/prnt/hpps/hppsfilter.c +@@ -230,13 +230,13 @@ static void WriteHeader(char **argument) + /* Writing Header Information + argument[1] = JOB ID , argument[2]= USERNAME, argument[3] = TITLE */ + hpwrite("\x1b%-12345X@PJL JOBNAME=", strlen("\x1b%-12345X@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 --git a/protocol/hp_ipp.h b/protocol/hp_ipp.h +index 3853f84..de76202 100644 +--- a/protocol/hp_ipp.h ++++ b/protocol/hp_ipp.h +@@ -166,5 +166,10 @@ int getCupsPrinters(printer_t **printer_list); + HPIPP_RESULT parseResponseHeader(char* header, int *content_length, int *chunked, int* header_size); + HPIPP_RESULT prepend_http_header(raw_ipp *raw_request); + enum HPMUD_RESULT sendUSBRequest(char *buf, int size, 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); + + # endif //_IPP_H +diff --git a/scan/sane/bb_ledm.c b/scan/sane/bb_ledm.c +index b233d1e..7ba0edf 100644 +--- a/scan/sane/bb_ledm.c ++++ b/scan/sane/bb_ledm.c +@@ -26,6 +26,7 @@ + # include "http.h" + # include "xml.h" + # include ++# include + + # include + +diff --git a/scan/sane/common.h b/scan/sane/common.h +index 0f67542..e496a74 100644 +--- a/scan/sane/common.h ++++ b/scan/sane/common.h +@@ -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 --git a/scan/sane/escl.c b/scan/sane/escl.c +index af45bff..4f59b21 100644 +--- a/scan/sane/escl.c ++++ b/scan/sane/escl.c +@@ -795,7 +795,7 @@ SANE_Status escl_control_option(SANE_Handle handle, SANE_Int option, SANE_Action + //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; +@@ -1102,7 +1102,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 --git a/scan/sane/http.c b/scan/sane/http.c +index 800df91..45668cd 100644 +--- a/scan/sane/http.c ++++ b/scan/sane/http.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + #include "hpmud.h" + #include "http.h" + +diff --git a/scan/sane/io.c b/scan/sane/io.c +index 4508458..7bbddea 100755 +--- a/scan/sane/io.c ++++ b/scan/sane/io.c +@@ -50,7 +50,7 @@ int __attribute__ ((visibility ("hidden"))) InitDbus(void) + + 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"))) SendScanEvent(char *device_uri, int + + 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"))) SendScanEvent(char *device_uri, int + + if (!dbus_connection_send(dbus_conn, msg, NULL)) + { +- BUG("dbus message send failed!\n"); ++ BUG_SCAN("dbus message send failed!\n"); + return 0; + } + +diff --git a/scan/sane/ledm.c b/scan/sane/ledm.c +index 9a1ff02..07ab5b0 100644 +--- a/scan/sane/ledm.c ++++ b/scan/sane/ledm.c +@@ -802,7 +802,7 @@ SANE_Status ledm_control_option(SANE_Handle handle, SANE_Int option, SANE_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; +@@ -1067,7 +1067,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 --git a/scan/sane/marvell.c b/scan/sane/marvell.c +index ad267a3..236f7c9 100644 +--- a/scan/sane/marvell.c ++++ b/scan/sane/marvell.c +@@ -134,7 +134,7 @@ static int get_ip_data(struct marvell_session *ps, SANE_Byte *data, SANE_Int max + + 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_session() + + 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_Const device, SANE_Handle *handle) + + 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_Const device, SANE_Handle *handle) + + 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_Const device, SANE_Handle *handle) + + 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_Handle handle, SANE_Int option, SANE_Act + 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_Handle handle, SANE_Int option, SANE_Act + + 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 handle) + + 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 handle) + /* 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 handle, SANE_Byte *data, SANE_Int maxLength + + 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/scan/sane/sclpml.c b/scan/sane/sclpml.c +index 9a5975f..dc8b32c 100644 +--- a/scan/sane/sclpml.c ++++ b/scan/sane/sclpml.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #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 --git a/scan/sane/soap.c b/scan/sane/soap.c +index 07106fe..0d22e52 100644 +--- a/scan/sane/soap.c ++++ b/scan/sane/soap.c +@@ -142,7 +142,7 @@ static int get_ip_data(struct soap_session *ps, SANE_Byte *data, SANE_Int maxLen + + 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_session() + + 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 device, SANE_Handle *handle) + + 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 device, SANE_Handle *handle) + + 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_Handle handle, SANE_Int option, SANE_Action + + 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 handle) + 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 handle) + /* 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 handle) + + 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, SANE_Byte *data, SANE_Int maxLength, S + + 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/scan/sane/soapht.c b/scan/sane/soapht.c +index 269ab21..139100d 100644 +--- a/scan/sane/soapht.c ++++ b/scan/sane/soapht.c +@@ -136,7 +136,7 @@ static int get_ip_data(struct soap_session *ps, SANE_Byte *data, SANE_Int maxLen + + 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_session() + + 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_Const device, SANE_Handle *handle) + + 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_Const device, SANE_Handle *handle) + + 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_Handle handle, SANE_Int option, SANE_Acti + + 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 handle) + + 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 handle) + /* 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 handle) + + 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 handle, SANE_Byte *data, SANE_Int maxLength, + + 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/SOURCES/hplip-deviceIDs-drv.patch b/SOURCES/hplip-deviceIDs-drv.patch new file mode 100644 index 0000000..258b414 --- /dev/null +++ b/SOURCES/hplip-deviceIDs-drv.patch @@ -0,0 +1,750 @@ +diff -up hplip-3.19.6/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.19.6/prnt/drv/hpcups.drv.in +--- hplip-3.19.6/prnt/drv/hpcups.drv.in.deviceIDs-drv 2019-06-26 15:09:17.000000000 +0200 ++++ hplip-3.19.6/prnt/drv/hpcups.drv.in 2019-07-12 08:34:02.789910485 +0200 +@@ -487,7 +487,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 3820" + Attribute "NickName" "" "HP Deskjet 3820, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 3820 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 3820;DES:deskjet 3820;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 3820;DES:Hewlett-Packard DeskJet 3820;" + PCFileName "hp-deskjet_3820.ppd" + Attribute "Product" "" "(HP Deskjet 3820 Color Inkjet Printer)" + Attribute "Product" "" "(HP Deskjet 3820v Color Inkjet Printer)" +@@ -521,7 +521,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 920c" + Attribute "NickName" "" "HP Deskjet 920c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 920c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 920c;DES:deskjet 920c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 920C;DES:Hewlett-Packard DeskJet 920C;" + PCFileName "hp-deskjet_920c.ppd" + Attribute "Product" "" "(HP Deskjet 920c Printer)" + Attribute "Product" "" "(HP Deskjet 920cvr Printer)" +@@ -532,7 +532,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 930c" + Attribute "NickName" "" "HP Deskjet 930c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 930c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 930c;DES:deskjet 930c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 930C;DES:Hewlett-Packard DeskJet 930C;" + PCFileName "hp-deskjet_930c.ppd" + Attribute "Product" "" "(HP Deskjet 930c Printer)" + Attribute "Product" "" "(HP Deskjet 930cm Printer)" +@@ -573,7 +573,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 940c" + Attribute "NickName" "" "HP Deskjet 940c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 940c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 940c;DES:deskjet 940c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 940C;DES:Hewlett-Packard DeskJet 940C;" + PCFileName "hp-deskjet_940c.ppd" + Attribute "Product" "" "(HP Deskjet 940cvr Printer)" + Attribute "Product" "" "(HP Deskjet 940c Printer)" +@@ -592,7 +592,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 950c" + Attribute "NickName" "" "HP Deskjet 950c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 950c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 950c;DES:deskjet 950c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;" + PCFileName "hp-deskjet_950c.ppd" + Attribute "Product" "" "(HP Deskjet 950c Printer)" + } +@@ -625,7 +625,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 959c" + Attribute "NickName" "" "HP Deskjet 959c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 959c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 959c;DES:deskjet 959c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 950C;DES:Hewlett-Packard DeskJet 950C;" + PCFileName "hp-deskjet_959c.ppd" + Attribute "Product" "" "(HP Deskjet 959c Printer)" + } +@@ -633,7 +633,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 970c" + Attribute "NickName" "" "HP Deskjet 970c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 970c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 970c;DES:deskjet 970c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 970C;DES:Hewlett-Packard DeskJet 970C;" + PCFileName "hp-deskjet_970c.ppd" + Attribute "Product" "" "(HP Deskjet 970cxi Printer)" + Attribute "Product" "" "(HP Deskjet 970cse Printer)" +@@ -665,7 +665,7 @@ Manufacturer "HP" + ModelName "HP Officejet g55" + Attribute "NickName" "" "HP Officejet g55, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet g55 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet g55;DES:officejet g55;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet G55;DES:Hewlett-Packard OfficeJet G Series;" + PCFileName "hp-officejet_g55.ppd" + Attribute "Product" "" "(HP Officejet g55 All-in-one Printer)" + } +@@ -681,7 +681,7 @@ Manufacturer "HP" + ModelName "HP Officejet g85" + Attribute "NickName" "" "HP Officejet g85, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet g85 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet g85;DES:officejet g85;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet G85;DES:Hewlett-Packard OfficeJet G Series;" + PCFileName "hp-officejet_g85.ppd" + Attribute "Product" "" "(HP Officejet g85 All-in-one Printer)" + } +@@ -697,7 +697,7 @@ Manufacturer "HP" + ModelName "HP Officejet g95" + Attribute "NickName" "" "HP Officejet g95, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet g95 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet g95;DES:officejet g95;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet G95;DES:Hewlett-Packard OfficeJet G Series;" + PCFileName "hp-officejet_g95.ppd" + Attribute "Product" "" "(HP Officejet g95 All-in-one Printer)" + } +@@ -745,7 +745,7 @@ Manufacturer "HP" + ModelName "HP Officejet v40" + Attribute "NickName" "" "HP Officejet v40, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet v40 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet v40;DES:officejet v40;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet V40;DES:Hewlett-Packard OfficeJet V Series;" + PCFileName "hp-officejet_v40.ppd" + Attribute "Product" "" "(HP Officejet v40 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet v40s All-in-one Printer)" +@@ -754,7 +754,7 @@ Manufacturer "HP" + ModelName "HP Officejet v40xi" + Attribute "NickName" "" "HP Officejet v40xi, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet v40xi hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet v40xi;DES:officejet v40xi;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet V40xi;DES:Hewlett-Packard OfficeJet V Series;" + PCFileName "hp-officejet_v40xi.ppd" + Attribute "Product" "" "(HP Officejet v40xi All-in-one Printer)" + } +@@ -770,7 +770,7 @@ Manufacturer "HP" + ModelName "HP Photosmart p1000" + Attribute "NickName" "" "HP Photosmart p1000, hpcups $Version" + Attribute "ShortNickName" "" "HP Photosmart p1000 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:photosmart p1000;DES:photosmart p1000;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1100;DES:Hewlett-Packard PhotoSmart P1100;" + PCFileName "hp-photosmart_p1000.ppd" + Attribute "Product" "" "(HP Photosmart p1000/1000 Printer)" + Attribute "Product" "" "(HP Photosmart p1000xi Printer)" +@@ -779,7 +779,7 @@ Manufacturer "HP" + ModelName "HP Photosmart p1100" + Attribute "NickName" "" "HP Photosmart p1100, hpcups $Version" + Attribute "ShortNickName" "" "HP Photosmart p1100 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:photosmart p1100;DES:photosmart p1100;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:PHOTOSMART P1000;DES:Hewlett-Packard PhotoSmart P1000;" + PCFileName "hp-photosmart_p1100.ppd" + Attribute "Product" "" "(HP Photosmart p1100 Printer)" + Attribute "Product" "" "(HP Photosmart p1100xi Printer)" +@@ -796,7 +796,7 @@ Manufacturer "HP" + ModelName "HP PSC 750" + Attribute "NickName" "" "HP PSC 750, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 750 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 750;DES:psc 750;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 750;DES:Hewlett-Packard PSC 700 Series;" + PCFileName "hp-psc_750.ppd" + Attribute "Product" "" "(HP PSC 750 All-in-one Printer)" + } +@@ -804,7 +804,7 @@ Manufacturer "HP" + ModelName "HP PSC 750xi" + Attribute "NickName" "" "HP PSC 750xi, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 750xi hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 750xi;DES:psc 750xi;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 750xi;DES:Hewlett-Packard PSC 700 Series;" + PCFileName "hp-psc_750xi.ppd" + Attribute "Product" "" "(HP PSC 750xi All-in-one Printer)" + } +@@ -836,7 +836,7 @@ Manufacturer "HP" + ModelName "HP PSC 900 Series" + Attribute "NickName" "" "HP PSC 900 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 900 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 900 series;DES:psc 900 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 900 Series;DES:Hewlett-Packard PSC 900 Series;" + PCFileName "hp-psc_900_series.ppd" + Attribute "Product" "" "(HP PSC 900 All-in-one Printer)" + } +@@ -910,7 +910,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 1220c" + Attribute "NickName" "" "HP Deskjet 1220c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 1220c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 1220c;DES:deskjet 1220c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 1220C;DES:Hewlett-Packard DeskJet 1220;" + PCFileName "hp-deskjet_1220c.ppd" + Attribute "Product" "" "(HP Deskjet 1220c Printer)" + Attribute "Product" "" "(HP Deskjet 1220cse Printer)" +@@ -1100,7 +1100,7 @@ Manufacturer "HP" + ModelName "HP 2000c" + Attribute "NickName" "" "HP 2000c, hpcups $Version" + Attribute "ShortNickName" "" "HP 2000c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp 2000c;DES:hp 2000c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP 2000C;DES:hp 2000c;" + PCFileName "hp-2000c.ppd" + Attribute "Product" "" "(HP 2000cse Printer)" + Attribute "Product" "" "(HP 2000c Printer)" +@@ -1564,7 +1564,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 960c" + Attribute "NickName" "" "HP Deskjet 960c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 960c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 960c;DES:deskjet 960c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 960C;DES:Hewlett-Packard DeskJet 960C;" + PCFileName "hp-deskjet_960c.ppd" + Attribute "Product" "" "(HP Deskjet 960cse Printer)" + Attribute "Product" "" "(HP Deskjet 960cxi Printer)" +@@ -1574,7 +1574,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 980c" + Attribute "NickName" "" "HP Deskjet 980c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 980c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 980c;DES:deskjet 980c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 980C;DES:Hewlett-Packard DeskJet 980C;" + PCFileName "hp-deskjet_980c.ppd" + Attribute "Product" "" "(HP Deskjet 980cxi Printer)" + Attribute "Product" "" "(HP Deskjet 980c Printer)" +@@ -1583,7 +1583,7 @@ Manufacturer "HP" + ModelName "HP Deskjet 990c" + Attribute "NickName" "" "HP Deskjet 990c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 990c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 990c;DES:deskjet 990c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 990C;DES:Hewlett-Packard DeskJet 990C;" + PCFileName "hp-deskjet_990c.ppd" + Attribute "Product" "" "(HP Deskjet 990cxi Printer)" + Attribute "Product" "" "(HP Deskjet 990cse Printer)" +@@ -1613,7 +1613,7 @@ Manufacturer "HP" + ModelName "HP Officejet 7100 Series" + Attribute "NickName" "" "HP Officejet 7100 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 7100 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 7100 series;DES:officejet 7100 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet 7100 series;DES:officejet 7100 series;" + PCFileName "hp-officejet_7100_series.ppd" + Attribute "Product" "" "(HP Officejet 7100 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 7110 All-in-one Printer)" +@@ -1628,7 +1628,7 @@ Manufacturer "HP" + ModelName "HP Officejet D Series" + Attribute "NickName" "" "HP Officejet D Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet D Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet d series;DES:officejet d series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet d series;DES:officejet d series;" + PCFileName "hp-officejet_d_series.ppd" + Attribute "Product" "" "(HP Officejet d125xi All-in-one Printer)" + Attribute "Product" "" "(HP Officejet d135 All-in-one Printer)" +@@ -1675,7 +1675,7 @@ Manufacturer "HP" + ModelName "HP PSC 2100 Series" + Attribute "NickName" "" "HP PSC 2100 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2100 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2100 series;DES:psc 2100 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2100 Series;DES:psc 2100 series;" + PCFileName "hp-psc_2100_series.ppd" + Attribute "Product" "" "(HP PSC 2105 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 2108 All-in-one Printer)" +@@ -1688,7 +1688,7 @@ Manufacturer "HP" + ModelName "HP PSC 2150 Series" + Attribute "NickName" "" "HP PSC 2150 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2150 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2150 series;DES:psc 2150 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2150 Series;DES:psc 2150 series;" + PCFileName "hp-psc_2150_series.ppd" + Attribute "Product" "" "(HP PSC 2150 All-in-one Printer)" + } +@@ -1696,7 +1696,7 @@ Manufacturer "HP" + ModelName "HP PSC 2170 Series" + Attribute "NickName" "" "HP PSC 2170 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2170 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2170 series;DES:psc 2170 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2170 Series;DES:psc 2170 series;" + PCFileName "hp-psc_2170_series.ppd" + Attribute "Product" "" "(HP PSC 2170 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 2171 All-in-one Printer)" +@@ -1743,7 +1743,7 @@ Manufacturer "HP" + ModelName "HP Color Inkjet Printer cp1700" + Attribute "NickName" "" "HP Color Inkjet Printer cp1700, hpcups $Version" + Attribute "ShortNickName" "" "HP CJ IJ Printer cp1700 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp color inkjet printer cp1700;DES:hp color inkjet printer cp1700;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP Color Inkjet CP1700;DES:HP Color Inkjet CP1700;" + PCFileName "hp-color_inkjet_printer_cp1700.ppd" + Attribute "Product" "" "(HP Color Inkjet cp1700 Printer)" + Attribute "Product" "" "(HP Color Inkjet cp1700ps Printer)" +@@ -1918,7 +1918,7 @@ Manufacturer "HP" + ModelName "HP Business Inkjet 2200" + Attribute "NickName" "" "HP Business Inkjet 2200, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2200 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2200;DES:hp business inkjet 2200;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2200;DES:Hewlett-Packard Business Inkjet 2200;" + PCFileName "hp-business_inkjet_2200.ppd" + Attribute "Product" "" "(HP Business Inkjet 2200 Printer)" + Attribute "Product" "" "(HP Business Inkjet 2200se Printer)" +@@ -1928,7 +1928,7 @@ Manufacturer "HP" + ModelName "HP Business Inkjet 2230" + Attribute "NickName" "" "HP Business Inkjet 2230, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2230 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2230;DES:hp business inkjet 2230;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2230;DES:Hewlett-Packard Business Inkjet 2230;" + PCFileName "hp-business_inkjet_2230.ppd" + Attribute "Product" "" "(HP Business Inkjet 2230 Printer)" + } +@@ -1936,7 +1936,7 @@ Manufacturer "HP" + ModelName "HP Business Inkjet 2250" + Attribute "NickName" "" "HP Business Inkjet 2250 pcl3, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2250 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2250;DES:hp business inkjet 2250;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2250;DES:Hewlett-Packard Business Inkjet 2250;" + PCFileName "hp-business_inkjet_2250-pcl3.ppd" + Attribute "Product" "" "(HP Business Inkjet 2250 Printer)" + Attribute "Product" "" "(HP Business Inkjet 2250tn Printer)" +@@ -1945,7 +1945,7 @@ Manufacturer "HP" + ModelName "HP Business Inkjet 2280" + Attribute "NickName" "" "HP Business Inkjet 2280 pcl3, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2280 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2280;DES:hp business inkjet 2280;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2280;DES:Hewlett-Packard Business Inkjet 2280;" + PCFileName "hp-business_inkjet_2280-pcl3.ppd" + Attribute "Product" "" "(HP Business Inkjet 2280 Printer)" + Attribute "Product" "" "(HP Business Inkjet 2280tn Printer)" +@@ -2689,7 +2689,7 @@ Manufacturer "HP" + ModelName "HP Officejet 7200 Series" + Attribute "NickName" "" "HP Officejet 7200 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 7200 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 7200 series;DES:officejet 7200 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet 7200 series;DES:officejet 7200 series;" + PCFileName "hp-officejet_7200_series.ppd" + Attribute "Product" "" "(HP Officejet 7205 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 7208 All-in-one Printer)" +@@ -2713,7 +2713,7 @@ Manufacturer "HP" + ModelName "HP Officejet 7400 Series" + Attribute "NickName" "" "HP Officejet 7400 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 7400 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 7400 series;DES:officejet 7400 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet 7400 series;DES:officejet 7400 series;" + PCFileName "hp-officejet_7400_series.ppd" + Attribute "Product" "" "(HP Officejet 7408 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 7410 All-in-one Printer)" +@@ -2757,7 +2757,7 @@ Manufacturer "HP" + ModelName "HP Officejet j5700 Series" + Attribute "NickName" "" "HP Officejet j5700 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet j5700 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet j5700 series;DES:officejet j5700 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:Officejet J5700 series;DES:officejet j5700 series;" + PCFileName "hp-officejet_j5700_series.ppd" + Attribute "Product" "" "(HP Officejet j5725 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet j5785 All-in-one Printer)" +@@ -3391,7 +3391,7 @@ Manufacturer "HP" + ModelName "HP PSC 2200 Series" + Attribute "NickName" "" "HP PSC 2200 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2200 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2200 series;DES:psc 2200 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2200 Series;DES:psc 2200 series;" + PCFileName "hp-psc_2200_series.ppd" + Attribute "Product" "" "(HP PSC 2200 All-in-one Printer)" + } +@@ -3409,7 +3409,7 @@ Manufacturer "HP" + ModelName "HP PSC 2300 Series" + Attribute "NickName" "" "HP PSC 2300 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2300 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2300 series;DES:psc 2300 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2300 Series;DES:psc 2300 series;" + PCFileName "hp-psc_2300_series.ppd" + Attribute "Product" "" "(HP PSC 2300 Series All-in-one Printer)" + Attribute "Product" "" "(HP PSC 2310 All-in-one Printer)" +@@ -3417,8 +3417,7 @@ Manufacturer "HP" + { + ModelName "HP PSC 2350 Series" + Attribute "NickName" "" "HP PSC 2350 Series, hpcups $Version" +- Attribute "ShortNickName" "" "HP PSC 2350 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2350 series;DES:psc 2350 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2350 Series;DES:psc 2350 series;" + PCFileName "hp-psc_2350_series.ppd" + Attribute "Product" "" "(HP PSC 2350 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 2358 All-in-one Printer)" +@@ -3448,7 +3447,7 @@ Manufacturer "HP" + ModelName "HP PSC 2500 Series" + Attribute "NickName" "" "HP PSC 2500 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 2500 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 2500 series;DES:psc 2500 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:PSC 2500 Series;DES:psc 2500 series;" + PCFileName "hp-psc_2500_series.ppd" + Attribute "Product" "" "(HP PSC 2500 Photosmart All-in-one Printer)" + Attribute "Product" "" "(HP PSC 2510 Photosmart All-in-one Printer)" +@@ -7023,7 +7022,7 @@ Manufacturer "HP" + ModelName "HP Officejet 6100" + Attribute "NickName" "" "HP Officejet 6100, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 6100 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 6100;DES:officejet 6100;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet 6100 Series;DES:officejet 6100 series;" + PCFileName "hp-officejet_6100.ppd" + Attribute "Product" "" "(HP Officejet 6100 Eprinter h611a)" + } +@@ -16708,7 +16707,7 @@ Manufacturer "HP" + ModelName "HP Officejet 4100 Series" + Attribute "NickName" "" "HP Officejet 4100 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 4100 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 4100 series;DES:officejet 4100 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-packard;MDL:officejet 4100 series;DES:officejet 4100 series;" + PCFileName "hp-officejet_4100_series.ppd" + Attribute "Product" "" "(HP Officejet 4100 Series All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 4110xi All-in-one Printer)" +@@ -16735,7 +16734,7 @@ Manufacturer "HP" + ModelName "HP Officejet 4300 Series" + Attribute "NickName" "" "HP Officejet 4300 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 4300 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 4300 series;DES:officejet 4300 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:Officejet 4300 series;DES:officejet 4300 series;" + PCFileName "hp-officejet_4300_series.ppd" + Attribute "Product" "" "(HP Officejet 4308 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 4338 All-in-one Printer)" +@@ -16767,7 +16766,7 @@ Manufacturer "HP" + ModelName "HP PSC 1100 Series" + Attribute "NickName" "" "HP PSC 1100 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 1100 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 1100 series;DES:psc 1100 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:psc 1100 series;DES:psc 1100 series;" + PCFileName "hp-psc_1100_series.ppd" + Attribute "Product" "" "(HP PSC 1110 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 1110v All-in-one Printer)" +@@ -16777,7 +16776,7 @@ Manufacturer "HP" + ModelName "HP PSC 1200 Series" + Attribute "NickName" "" "HP PSC 1200 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 1200 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 1200 series;DES:psc 1200 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:psc 1200 series;DES:psc 1200 series;" + PCFileName "hp-psc_1200_series.ppd" + Attribute "Product" "" "(HP PSC 1200 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 1217 All-in-one Printer)" +@@ -17077,7 +17076,7 @@ Manufacturer "HP" + ModelName "HP Officejet 4200 Series" + Attribute "NickName" "" "HP Officejet 4200 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 4200 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 4200 series;DES:officejet 4200 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet 4200 series;DES:officejet 4200 series;" + PCFileName "hp-officejet_4200_series.ppd" + Attribute "Product" "" "(HP Officejet 4200 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 4211 All-in-one Printer)" +@@ -17142,7 +17141,7 @@ Manufacturer "HP" + ModelName "HP Officejet j3600 Series" + Attribute "NickName" "" "HP Officejet j3600 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet j3600 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet j3600 series;DES:officejet j3600 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:Officejet J3600 series;DES:officejet j3600 series;" + PCFileName "hp-officejet_j3600_series.ppd" + Attribute "Product" "" "(HP Officejet j3608 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet j3625 All-in-one Printer)" +@@ -17639,6 +17638,7 @@ Manufacturer "HP" + Attribute "NickName" "" "HP Photosmart 380 Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Photosmart 380 Series hpijs" + Attribute "1284DeviceID" "" "MFG:HP;MDL:photosmart 380 series;DES:photosmart 380 series;" ++ Attribute "1284DeviceID" "" "MFG:HP;MDL:Photosmart 380 series_BT;DES:385;" + PCFileName "hp-photosmart_380_series.ppd" + Attribute "Product" "" "(HP Photosmart 385 Compact Photo Printer)" + Attribute "Product" "" "(HP Photosmart 385xi Compact Photo Printer)" +@@ -19378,7 +19378,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Business Inkjet 2300" + Attribute "NickName" "" "HP Business Inkjet 2300 pcl3, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2300 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2300;DES:hp business inkjet 2300;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2300;DES:Hewlett-Packard Business Inkjet 2300;" + PCFileName "hp-business_inkjet_2300-pcl3.ppd" + Attribute "Product" "" "(HP Business Inkjet 2300 Printer)" + Attribute "Product" "" "(HP Business Inkjet 2300n Printer)" +@@ -19759,7 +19759,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet 9100 Series" + Attribute "NickName" "" "HP Officejet 9100 Series pcl3, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet 9100 Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 9100 series;DES:officejet 9100 series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:officejet 9100 series;DES:officejet 9100 series;" + PCFileName "hp-officejet_9100_series-pcl3.ppd" + Attribute "Product" "" "(HP Officejet 9110 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet 9120 All-in-one Printer)" +@@ -19843,7 +19843,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Business Inkjet 2800" + Attribute "NickName" "" "HP Business Inkjet 2800 pcl3, hpcups $Version" + Attribute "ShortNickName" "" "HP Business Inkjet 2800 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp business inkjet 2800;DES:hp business inkjet 2800;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP BUSINESS INKJET 2800;DES:Hewlett-Packard Business Inkjet 2800;" + PCFileName "hp-business_inkjet_2800-pcl3.ppd" + Attribute "Product" "" "(HP Business Inkjet 2800 Printer)" + Attribute "Product" "" "(HP Business Inkjet 2800dt Printer)" +@@ -20379,7 +20379,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Lx" + Attribute "NickName" "" "HP Officejet Lx, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet Lx hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet lx;DES:officejet lx;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet;DES:officejet lx;" + PCFileName "hp-officejet_lx.ppd" + Attribute "Product" "" "(HP Officejet Lx All-in-one Printer)" + } +@@ -20516,7 +20516,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 540" + Attribute "NickName" "" "HP Deskjet 540, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 540 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 540;DES:deskjet 540;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 540;DES:Hewlett-Packard DeskJet 540;" + PCFileName "hp-deskjet_540.ppd" + Attribute "Product" "" "(HP Deskjet 540 Printer)" + } +@@ -20524,7 +20524,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 400" + Attribute "NickName" "" "HP Deskjet 400, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 400 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp deskjet 400;DES:hp deskjet 400;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:HP DeskJet 400;DES:HP DeskJet 400 Printer;" + PCFileName "hp-deskjet_400.ppd" + Attribute "Product" "" "(HP Deskjet 400 Printer)" + Attribute "Product" "" "(HP Deskjet 400 Color Capable Printer)" +@@ -20541,7 +20541,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Series 300" + Attribute "NickName" "" "HP Officejet Series 300, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet Series 300 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet series 300;DES:officejet series 300;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet Series 300;DES:Hewlett-Packard OfficeJet Series 300;" + PCFileName "hp-officejet_series_300.ppd" + Attribute "Product" "" "(HP Officejet 300 All-in-one Printer)" + } +@@ -20674,7 +20674,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 630c" + Attribute "NickName" "" "HP Deskjet 630c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 630c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 630c;DES:deskjet 630c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 630C;DES:Hewlett-Packard DeskJet 630C;" + PCFileName "hp-deskjet_630c.ppd" + Attribute "Product" "" "(HP Deskjet 630c Printer)" + } +@@ -20690,7 +20690,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 656c" + Attribute "NickName" "" "HP Deskjet 656c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 656c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 656c;DES:deskjet 656c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 656C;DES:DESKJET 656C;" + PCFileName "hp-deskjet_656c.ppd" + Attribute "Product" "" "(HP Deskjet 656c Printer)" + Attribute "Product" "" "(HP Deskjet 656cvr Printer)" +@@ -20803,7 +20803,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 600" + Attribute "NickName" "" "HP Deskjet 600, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 600 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 600;DES:deskjet 600;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 600;DES:Hewlett-Packard DeskJet 600;" + PCFileName "hp-deskjet_600.ppd" + Attribute "Product" "" "(HP Deskjet 600c Printer)" + Attribute "Product" "" "(HP Deskjet 600 Printer)" +@@ -20843,7 +20843,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 670c" + Attribute "NickName" "" "HP Deskjet 670c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 670c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 670c;DES:deskjet 670c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 670C;DES:Hewlett-Packard DeskJet 670C;" + PCFileName "hp-deskjet_670c.ppd" + Attribute "Product" "" "(HP Deskjet 670c Printer)" + } +@@ -20915,7 +20915,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Series 600" + Attribute "NickName" "" "HP Officejet Series 600, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet Series 600 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet series 600;DES:officejet series 600;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet Series 600;DES:officejet series 600;" + PCFileName "hp-officejet_series_600.ppd" + Attribute "Product" "" "(HP Officejet 600 All-in-one Printer)" + } +@@ -21060,7 +21060,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 610c" + Attribute "NickName" "" "HP Deskjet 610c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 610c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 610c;DES:deskjet 610c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 610C;DES:Hewlett-Packard DeskJet 610C;" + PCFileName "hp-deskjet_610c.ppd" + Attribute "Product" "" "(HP Deskjet 610c Printer)" + } +@@ -21084,7 +21084,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 640c" + Attribute "NickName" "" "HP Deskjet 640c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 640c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 640c;DES:deskjet 640c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 640C;DES:Hewlett-Packard DeskJet 640C;" + PCFileName "hp-deskjet_640c.ppd" + Attribute "Product" "" "(HP Deskjet 640c Lite Printer)" + Attribute "Product" "" "(HP Deskjet 640c Printer)" +@@ -21104,7 +21104,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 690c" + Attribute "NickName" "" "HP Deskjet 690c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 690c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 690c;DES:deskjet 690c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 690C;DES:Hewlett-Packard DeskJet 690C;" + PCFileName "hp-deskjet_690c.ppd" + Attribute "Product" "" "(HP Deskjet 690 Printer)" + Attribute "Product" "" "(HP Deskjet 690c Plus Printer)" +@@ -21156,7 +21156,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Series 700" + Attribute "NickName" "" "HP Officejet Series 700, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet Series 700 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet series 700;DES:officejet series 700;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet Series 700;DES:officejet series 700;" + PCFileName "hp-officejet_series_700.ppd" + Attribute "Product" "" "(HP Officejet 700 All-in-one Printer)" + } +@@ -21307,7 +21307,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 812c" + Attribute "NickName" "" "HP Deskjet 812c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 812c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 812c;DES:deskjet 812c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 810C;DES:Hewlett-Packard DeskJet 810C;" + PCFileName "hp-deskjet_812c.ppd" + Attribute "Product" "" "(HP Deskjet 812c Printer)" + } +@@ -21315,7 +21315,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 815c" + Attribute "NickName" "" "HP Deskjet 815c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 815c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 815c;DES:deskjet 815c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 815C;DES:Hewlett-Packard DeskJet 815C;" + PCFileName "hp-deskjet_815c.ppd" + Attribute "Product" "" "(HP Deskjet 815c Printer)" + } +@@ -21347,7 +21347,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 840c" + Attribute "NickName" "" "HP Deskjet 840c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 840c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 840c;DES:deskjet 840c;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:DeskJet 840C;DES:deskjet 840c;" + PCFileName "hp-deskjet_840c.ppd" + Attribute "Product" "" "(HP Deskjet 840c Printer)" + } +@@ -21355,7 +21355,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 841c" + Attribute "NickName" "" "HP Deskjet 841c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 841c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 841c;DES:deskjet 841c;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:DeskJet 841C;DES:deskjet 841c;" + PCFileName "hp-deskjet_841c.ppd" + Attribute "Product" "" "(HP Deskjet 841c Printer)" + } +@@ -21371,7 +21371,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 843c" + Attribute "NickName" "" "HP Deskjet 843c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 843c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 843c;DES:deskjet 843c;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:DeskJet 843C;DES:deskjet 843c;" + PCFileName "hp-deskjet_843c.ppd" + Attribute "Product" "" "(HP Deskjet 843c Printer)" + Attribute "Product" "" "(HP Deskjet 843cxe Printer)" +@@ -21380,7 +21380,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 880c" + Attribute "NickName" "" "HP Deskjet 880c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 880c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 880c;DES:deskjet 880c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 880C;DES:Hewlett-Packard DeskJet 880C;" + PCFileName "hp-deskjet_880c.ppd" + Attribute "Product" "" "(HP Deskjet 880c Printer)" + } +@@ -21396,7 +21396,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 895c" + Attribute "NickName" "" "HP Deskjet 895c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 895c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 895c;DES:deskjet 895c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 895C;DES:Hewlett-Packard DeskJet 895C;" + PCFileName "hp-deskjet_895c.ppd" + Attribute "Product" "" "(HP Deskjet 895cse Printer)" + Attribute "Product" "" "(HP Deskjet 895c Printer)" +@@ -21406,7 +21406,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet r40" + Attribute "NickName" "" "HP Officejet r40, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet r40 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet r40;DES:officejet r40;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET R40;DES:Hewlett-Packard OfficeJet R40;" + PCFileName "hp-officejet_r40.ppd" + Attribute "Product" "" "(HP Officejet r40 All-in-one Printer)" + } +@@ -21430,7 +21430,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet r60" + Attribute "NickName" "" "HP Officejet r60, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet r60 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet r60;DES:officejet r60;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET R60;DES:Hewlett-Packard OfficeJet R60;" + PCFileName "hp-officejet_r60.ppd" + Attribute "Product" "" "(HP Officejet r60 All-in-one Printer)" + } +@@ -21438,7 +21438,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet r65" + Attribute "NickName" "" "HP Officejet r65, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet r65 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet r65;DES:officejet r65;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET R65;DES:Hewlett-Packard OfficeJet R65;" + PCFileName "hp-officejet_r65.ppd" + Attribute "Product" "" "(HP Officejet r65 All-in-one Printer)" + } +@@ -21446,7 +21446,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet r80" + Attribute "NickName" "" "HP Officejet r80, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet r80 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet r80;DES:officejet r80;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET R80;DES:Hewlett-Packard OfficeJet R80;" + PCFileName "hp-officejet_r80.ppd" + Attribute "Product" "" "(HP Officejet r80 All-in-one Printer)" + } +@@ -21462,7 +21462,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet T Series" + Attribute "NickName" "" "HP Officejet T Series, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet T Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet t series;DES:officejet t series;" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet T Series;DES:Hewlett-Packard OfficeJet T Series;" + PCFileName "hp-officejet_t_series.ppd" + Attribute "Product" "" "(HP Officejet t45 All-in-one Printer)" + Attribute "Product" "" "(HP Officejet t45xi All-in-one Printer)" +@@ -21473,7 +21473,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP PSC 500" + Attribute "NickName" "" "HP PSC 500, hpcups $Version" + Attribute "ShortNickName" "" "HP PSC 500 hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:psc 500;DES:psc 500;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:PSC 500;DES:Hewlett-Packard PSC 500;" + PCFileName "hp-psc_500.ppd" + Attribute "Product" "" "(HP PSC 500 All-in-one Printer)" + Attribute "Product" "" "(HP PSC 500xi All-in-one Printer)" +@@ -21589,7 +21589,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 825c" + Attribute "NickName" "" "HP Deskjet 825c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 825c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 825c;DES:deskjet 825c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 825C;DES:Hewlett-Packard DeskJet 825C;" + PCFileName "hp-deskjet_825c.ppd" + Attribute "Product" "" "(HP Deskjet 825cvr Printer)" + Attribute "Product" "" "(HP Deskjet 825c Printer)" +@@ -21598,7 +21598,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 845c" + Attribute "NickName" "" "HP Deskjet 845c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 845c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 845c;DES:deskjet 845c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 845C;DES:Hewlett-Packard DeskJet 845C;" + PCFileName "hp-deskjet_845c.ppd" + Attribute "Product" "" "(HP Deskjet 845c Printer)" + Attribute "Product" "" "(HP Deskjet 845cvr Printer)" +@@ -21709,7 +21709,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 850c" + Attribute "NickName" "" "HP Deskjet 850c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 850c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 850c;DES:deskjet 850c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 850C;DES:Hewlett-Packard Deskjet 850C;" + PCFileName "hp-deskjet_850c.ppd" + Attribute "Product" "" "(HP Deskjet 850k Printer)" + Attribute "Product" "" "(HP Deskjet 850c Printer)" +@@ -21728,7 +21728,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 870c" + Attribute "NickName" "" "HP Deskjet 870c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 870c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 870c;DES:deskjet 870c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 870C;DES:Hewlett-Packard Deskjet 870C;" + PCFileName "hp-deskjet_870c.ppd" + Attribute "Product" "" "(HP Deskjet 870k Printer)" + Attribute "Product" "" "(HP Deskjet 870c Printer)" +@@ -21739,7 +21739,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Pro 1150c" + Attribute "NickName" "" "HP Officejet Pro 1150c, hpcups $Version" + Attribute "ShortNickName" "" "HP Officejet Pro 1150c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet pro 1150c;DES:officejet pro 1150c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1150C;DES:Hewlett-Packard OfficeJet Pro 1150C;" + PCFileName "hp-officejet_pro_1150c.ppd" + Attribute "Product" "" "(HP Officejet Pro 1150c All-in-one Printer)" + Attribute "Product" "" "(HP Officejet Pro 1150cse All-in-one Printer)" +@@ -21853,7 +21853,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Deskjet 890c" + Attribute "NickName" "" "HP Deskjet 890c, hpcups $Version" + Attribute "ShortNickName" "" "HP Deskjet 890c hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:deskjet 890c;DES:deskjet 890c;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:DESKJET 890C;DES:Hewlett-Packard Deskjet 890C;" + PCFileName "hp-deskjet_890c.ppd" + Attribute "Product" "" "(HP Deskjet 890cse Printer)" + Attribute "Product" "" "(HP Deskjet 890c Printer)" +@@ -21862,7 +21862,7 @@ Group "RLT/HP Real Life Technologies" + ModelName "HP Officejet Pro 1170c Series" + Attribute "NickName" "" "HP Officejet Pro 1170c Series, hpcups $Version" + Attribute "ShortNickName" "" "HP OJ Pro 1170c Series hpijs" +- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet pro 1170c series;DES:officejet pro 1170c series;" ++ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:OFFICEJET PRO 1170C SERIES;DES:Hewlett-Packard OfficeJet Pro 1170C Series;" + PCFileName "hp-officejet_pro_1170c_series.ppd" + Attribute "Product" "" "(HP Officejet Pro 1170c All-in-one Printer)" + Attribute "Product" "" "(HP Officejet Pro 1170cse All-in-one Printer)" diff --git a/SOURCES/hplip-deviceIDs-ppd.patch b/SOURCES/hplip-deviceIDs-ppd.patch new file mode 100644 index 0000000..810fdc3 --- /dev/null +++ b/SOURCES/hplip-deviceIDs-ppd.patch @@ -0,0 +1,11 @@ +diff -up hplip-3.14.10/prnt/ps/hp-lj_300_400_color_m351_m451-ps.ppd.gz-deviceid hplip-3.14.10/prnt/ps/hp-lj_300_400_color_m351_m451-ps.ppd +--- hplip-3.14.10/prnt/ps/hp-lj_300_400_color_m351_m451-ps.ppd.gz-deviceid 2014-11-04 09:41:13.200005393 +0000 ++++ hplip-3.14.10/prnt/ps/hp-lj_300_400_color_m351_m451-ps.ppd 2014-11-04 09:42:13.168312042 +0000 +@@ -82,6 +82,7 @@ + *cupsManualCopies: False + *cupsLanguages: "en da de es fi fr it ja ko nb nl pt ru sv zh_CN zh_TW" + *cupsFilter: "application/vnd.cups-postscript 0 hpps" ++*1284DeviceID: "MFG:Hewlett-Packard;MDL:HP LaserJet 400 color M451dn;DES:HP LaserJet 400 color M451dn;" + *UIConstraints: *HPOption_Duplexer False *Duplex + *UIConstraints: *Duplex *HPOption_Duplexer False + *UIConstraints: *HPOption_Tray3 False *InputSlot Tray3 diff --git a/SOURCES/hplip-dialog-infinite-loop.patch b/SOURCES/hplip-dialog-infinite-loop.patch new file mode 100644 index 0000000..dbb04e7 --- /dev/null +++ b/SOURCES/hplip-dialog-infinite-loop.patch @@ -0,0 +1,34 @@ +diff --git a/ui5/devmgr5.py b/ui5/devmgr5.py +index c23957a..48b248f 100644 +--- a/ui5/devmgr5.py ++++ b/ui5/devmgr5.py +@@ -2247,7 +2247,7 @@ class PasswordDialog(QDialog): + self.prompt = prompt + + Layout= QGridLayout(self) +- Layout.setMargin(11) ++ Layout.setContentsMargins(11, 11, 11, 11) + Layout.setSpacing(6) + + self.PromptTextLabel = QLabel(self) +@@ -2300,14 +2300,15 @@ class PasswordDialog(QDialog): + # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + def showPasswordUI(prompt): ++ dlg = None ++ + try: + dlg = PasswordDialog(prompt, None) ++ except Exception as e: ++ log.error('Unable to open password dialog due following error:\n {}'.format(e)) + +- if dlg.exec_() == QDialog.Accepted: +- return (dlg.getUsername(), dlg.getPassword()) +- +- finally: +- pass ++ if dlg and dlg.exec_() == QDialog.Accepted: ++ return (dlg.getUsername(), dlg.getPassword()) + + return ("", "") + diff --git a/SOURCES/hplip-dj990c-margin.patch b/SOURCES/hplip-dj990c-margin.patch new file mode 100644 index 0000000..1091384 --- /dev/null +++ b/SOURCES/hplip-dj990c-margin.patch @@ -0,0 +1,15 @@ +diff -up hplip-3.14.10/prnt/drv/hpcups.drv.in.dj990c-margin hplip-3.14.10/prnt/drv/hpcups.drv.in +--- hplip-3.14.10/prnt/drv/hpcups.drv.in.dj990c-margin 2014-12-23 15:55:09.779368939 +0000 ++++ hplip-3.14.10/prnt/drv/hpcups.drv.in 2014-12-23 15:55:24.488454126 +0000 +@@ -1531,9 +1531,9 @@ Manufacturer "HP" + "<>setpagedevice" + CustomMedia "Letter.Duplex/Letter AutoDuplex 8.5x11in" 612 783 18 27 18 36 "<>setpagedevice" + "<>setpagedevice" +- CustomMedia "A4/A4 210x297mm" 595.44 841.68 18 36.00 18 9.00 "<>setpagedevice" ++ CustomMedia "A4/A4 210x297mm" 595.44 841.68 9 36.00 9 9.00 "<>setpagedevice" + "<>setpagedevice" +- CustomMedia "A4.Duplex/A4 AutoDuplex 210x297mm" 595 833 18 27 18 36 "<>setpagedevice" ++ CustomMedia "A4.Duplex/A4 AutoDuplex 210x297mm" 595 833 9 27 9 36 "<>setpagedevice" + "<>setpagedevice" + CustomMedia "ExecutiveJIS/Executive (JIS) 8.5x12.986in" 612 936 18 36 18 9 "<>setpagedevice" + "<>setpagedevice" diff --git a/SOURCES/hplip-error-print.patch b/SOURCES/hplip-error-print.patch new file mode 100644 index 0000000..e4b3e5f --- /dev/null +++ b/SOURCES/hplip-error-print.patch @@ -0,0 +1,78 @@ +commit 4c913b68d8f8a79e11e247a8f7086f779f2685d4 +Author: Tomas Korbar +Date: Tue Sep 18 16:17:06 2018 +0200 + + Fix TypeError + + - 1564770 - TypeError: 'Error' object does not support indexing + +diff --git a/clean.py b/clean.py +index 3d41f04..3a7248e 100755 +--- a/clean.py ++++ b/clean.py +@@ -182,7 +182,7 @@ try: + log.error("Cleaning not needed or supported on this device.") + + except Error as e: +- log.error("An error occured: %s" % e[0]) ++ log.error("An error occured: %s" % e.msg) + + else: + log.error("Device is busy or in an error state. Please check device and try again.") +diff --git a/ui/scrollunload.py b/ui/scrollunload.py +index fdb48e8..345ed82 100644 +--- a/ui/scrollunload.py ++++ b/ui/scrollunload.py +@@ -120,7 +120,7 @@ class ScrollUnloadView(ScrollView): + self.pc = photocard.PhotoCard(None, self.cur_device.device_uri, self.cur_printer) + except Error as e: + QApplication.restoreOverrideCursor() +- self.form.FailureUI(self.__tr("An error occured: %s" % e[0])) ++ self.form.FailureUI(self.__tr("An error occured: %s" % e.msg)) + self.cleanup(EVENT_PCARD_UNABLE_TO_MOUNT) + return False + +diff --git a/ui4/wifisetupdialog.py b/ui4/wifisetupdialog.py +index 9fd1786..4d36f83 100644 +--- a/ui4/wifisetupdialog.py ++++ b/ui4/wifisetupdialog.py +@@ -256,7 +256,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog): + try: + self.dev = device.Device(self.device_uri) + except Error as e: +- FailureUI(self, self.__tr("Error opening device:

%s

(%s)

") %(self.device_uri, QString(e[0]))) ++ FailureUI(self, self.__tr("Error opening device:

%s

(%s)

") %(self.device_uri, QString(e.msg))) + + if self.dev is not None: + self.dev.close() +@@ -834,7 +834,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog): + + + def showIOError(self, e): +- FailureUI(self, self.__tr("An I/O error occurred.

Please check the USB connection to your printer and try again.

(%s)" % QString(e[0]))) ++ FailureUI(self, self.__tr("An I/O error occurred.

Please check the USB connection to your printer and try again.

(%s)" % QString(e.msg))) + + if self.dev is not None: + self.dev.close() +diff --git a/ui5/wifisetupdialog.py b/ui5/wifisetupdialog.py +index e0c7aee..74cc0ef 100644 +--- a/ui5/wifisetupdialog.py ++++ b/ui5/wifisetupdialog.py +@@ -259,7 +259,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog): + try: + self.dev = device.Device(self.device_uri) + except Error as e: +- FailureUI(self, self.__tr("Error opening device:

%s

(%s)

") %(self.device_uri, str(e[0]))) ++ FailureUI(self, self.__tr("Error opening device:

%s

(%s)

") %(self.device_uri, str(e.msg))) + + if self.dev is not None: + self.dev.close() +@@ -840,7 +840,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog): + + + def showIOError(self, e): +- FailureUI(self, self.__tr("An I/O error occurred.

Please check the USB connection to your printer and try again.

(%s)" % str(e[0]))) ++ FailureUI(self, self.__tr("An I/O error occurred.

Please check the USB connection to your printer and try again.

(%s)" % str(e.msg))) + + if self.dev is not None: + self.dev.close() diff --git a/SOURCES/hplip-fab-import.patch b/SOURCES/hplip-fab-import.patch new file mode 100644 index 0000000..0d2e94b --- /dev/null +++ b/SOURCES/hplip-fab-import.patch @@ -0,0 +1,13 @@ +diff --git a/ui5/fabwindow.py b/ui5/fabwindow.py +index 0b95c94..631727c 100644 +--- a/ui5/fabwindow.py ++++ b/ui5/fabwindow.py +@@ -518,7 +518,7 @@ class FABWindow(QMainWindow, Ui_MainWindow): + self.__tr("Import fax addresses from LDIF or vCard"), + #user_conf.workingDirectory(), + self.user_settings.working_dir, +- "vCard (*.vcf);;LDIF (*.ldif *.ldi)")) ++ "vCard (*.vcf);;LDIF (*.ldif *.ldi)")[0]) + + if result: + working_directory = to_unicode(os.path.dirname(result)) diff --git a/SOURCES/hplip-find-driver.patch b/SOURCES/hplip-find-driver.patch new file mode 100644 index 0000000..f991967 --- /dev/null +++ b/SOURCES/hplip-find-driver.patch @@ -0,0 +1,163 @@ +diff --git a/prnt/cups.py b/prnt/cups.py +index a9f410a..3783a60 100644 +--- a/prnt/cups.py ++++ b/prnt/cups.py +@@ -489,78 +489,77 @@ def getPPDFile2(mq,model, ppds): # New PPD find + #Check if common ppd name is already given in models.dat(This is needed because in case of devices having more than one derivatives + #will have diffrent model name strings in device ID, because of which we don't get the common ppd name for search) + family_check=isfamilydrv(ppds) +- family_class=getFamilyClassName(model) ++ + model = models.normalizeModelName(model) +- if family_check==0: +- ppd_name = mq.get('ppd-name',0) +- else: +- ppd_name = mq.get('family-ppd',0) + +- if ppd_name == 0: +- stripped_model = stripModel2(model) +- else: +- stripped_model = stripModel2(ppd_name) ++ ppd_name = mq.get('{}'.format('family-ppd' if family_check else 'ppd-name'), 0) ++ ++ stripped_model = stripModel2(ppd_name) if ppd_name else stripModel2(model) ++ ++ wanted_model = getFamilyClassName(model) if family_check else stripped_model + + log.debug("Matching PPD list to model %s..." % stripped_model) + + matches = [] +- if family_check ==0 : +- for f in ppds: +- match = ppd_pat.match(f) +- if match is not None: +- if match.group(1) == stripped_model: +- log.debug("Found match: %s" % f) +- try: +- pdls = match.group(2).split('-') +- except AttributeError: +- pdls = [] +- if (prop.hpcups_build and 'hpijs' not in f) or \ +- ((prop.hpijs_build and 'hpijs' in pdls) or (prop.hpcups_build and 'hpijs' not in pdls)) or \ +- ('ps' in pdls) or ('pdf' in pdls): +- matches.append((f, [p for p in pdls if p and p != 'hpijs'])) +- else: +- for f in ppds: +- match = ppd_pat1.match(f) +- if match is not None: +- if match.group(1) == family_class: +- log.debug("Found match: %s" % f) +- try: +- pdls = match.group(2).split('-') +- except AttributeError: +- pdls = [] +- if (prop.hpcups_build and 'hpijs' not in f) or \ +- ((prop.hpijs_build and 'hpijs' in pdls) or (prop.hpcups_build and 'hpijs' not in pdls)) or \ +- ('ps' in pdls) or ('pdf' in pdls): +- matches.append((f, [p for p in pdls if p and p != 'hpijs'])) +- log.debug(matches) +- num_matches = len(matches) ++ for f in ppds: ++ # ignore foomatic and gutenprint drivers ++ if 'foomatic' in f or 'gutenprint' in f: ++ continue ++ ++ # see if driver type is in driver name ++ driver_types = [] ++ if 'hpcups' in f: ++ driver_types.append('hpcups') ++ if 'hpijs' in f: ++ driver_types.append('hpijs') ++ ++ ++ ppd_filename = f.rsplit('/', 1)[1].split('.')[0].replace('hp-', '') ++ ++ if not ppd_filename: ++ continue ++ ++ # we need to sanitize the end of filename - there can be a driver type (-hpijs, -hpcups), ++ # pdl name (-zjstream, -pdf, -ps etc.) or the device can just have '-' in their name ++ # (HP Photosmart Premium C309g-m). ++ # So if we don't know the name after '-', take it as part of device name. ++ # If we know them either like driver type of PDL, remove the string from ppd name ++ # so we can compare it with stripped model ++ pdl_candidates = [] ++ pdl_candidates = ppd_filename.split('-')[1:] ++ ++ pdls = [] ++ ppd_model = ppd_filename ++ ++ for pdl in pdl_candidates: ++ if pdl in ['hpijs', 'hpcups']: ++ ppd_model=ppd_model.replace('-{}'.format(pdl), '') ++ continue + +- if num_matches == 0: +- log.debug("No PPD found for model %s using new algorithm. Trying old algorithm..." % stripped_model) +- #Using Old algo, ignores the series keyword in ppd searching. +- matches2 = list(getPPDFile(stripModel(stripped_model), ppds).items()) +- log.debug(matches2) +- num_matches2 = len(matches2) +- if num_matches2: +- for f, d in matches2: +- match = ppd_pat.match(f) +- if match is not None: +- log.debug("Found match: %s" % f) +- try: +- pdls = match.group(2).split('-') +- except AttributeError: +- pdls = [] ++ if not models.PDL_TYPES.get(pdl): ++ log.debug('Unknown PDL named \'{}\' - can be a new PDL or ' ++ 'just a part of device name. Assume it is ' ++ 'a part of device name.'.format(pdl)) ++ else: ++ pdls.append(pdl) ++ ppd_model=ppd_model.replace('-{}'.format(pdl), '') ++ ++ if ppd_model != wanted_model and ppd_model != '{}_series'.format(wanted_model): ++ continue ++ ++ log.debug("Found match: %s" % f) + +- if (prop.hpcups_build and 'hpijs' not in f) or \ +- ((prop.hpijs_build and 'hpijs' in pdls) or (prop.hpcups_build and 'hpijs' not in pdls)) or \ +- ('ps' in pdls) or ('pdf' in pdls): +- matches.append((f, [p for p in pdls if p and p != 'hpijs'])) ++ if (prop.hpcups_build and 'hpijs' not in f) or \ ++ ((prop.hpijs_build and 'hpijs' in driver_types) or (prop.hpcups_build and 'hpijs' not in driver_types)) or \ ++ ('ps' in pdls) or ('pdf' in pdls): ++ matches.append((f, pdls, [d for d in driver_types if d and d != 'hpijs'])) + +- log.debug(matches) +- num_matches = len(matches) ++ ++ log.debug(matches) ++ num_matches = len(matches) + + if num_matches == 0: +- log.error("No PPD found for model %s using old algorithm." % stripModel(stripped_model)) ++ log.error("No PPD found for model %s." % stripModel(stripped_model)) + return None + + elif num_matches == 1: +@@ -570,7 +569,7 @@ def getPPDFile2(mq,model, ppds): # New PPD find + # > 1 + log.debug("%d matches found. Searching based on PDL: Host > PS,PDF > PCL/Other" % num_matches) + for p in [models.PDL_TYPE_HOST, models.PDL_TYPE_PS,models.PDL_TYPE_PDF, models.PDL_TYPE_PCL]: +- for f, pdl_list in matches: ++ for f, pdl_list, driver_list in matches: + for x in pdl_list: + # default to HOST-based PDLs, as newly supported PDLs will most likely be of this type + if models.PDL_TYPES.get(x, models.PDL_TYPE_HOST) == p: +@@ -579,8 +578,8 @@ def getPPDFile2(mq,model, ppds): # New PPD find + + log.debug("%d matches found. Searching based on Filters: HPCUPS > HPIJS" % num_matches) + for p in ["hpcups","hpijs"]: +- for f, pdl_list in matches: +- if p in f: ++ for f, pdl_list, driver_list in matches: ++ if p in driver_list: + log.debug("Selecting PPD: %s" % (f)) + return (f, '') + diff --git a/SOURCES/hplip-fix-Wreturn-type-warning.patch b/SOURCES/hplip-fix-Wreturn-type-warning.patch new file mode 100644 index 0000000..e128078 --- /dev/null +++ b/SOURCES/hplip-fix-Wreturn-type-warning.patch @@ -0,0 +1,111 @@ +--- hplip-3.20.3/prnt/hpps/hppsfilter.c.orig 2020-03-25 01:09:51.585129957 +0000 ++++ hplip-3.20.3/prnt/hpps/hppsfilter.c 2020-03-25 01:10:15.610058293 +0000 +@@ -104,7 +104,7 @@ static void open_tempbookletfile(char *m + if(ptempbooklet_file == NULL) + { + fprintf(stderr, "ERROR: Unable to open temp file %s\n", temp_filename); +- return 1; ++ return; + } + chmod(temp_filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + +--- hplip-3.20.3/scan/sane/hpaio.c.orig 2020-03-25 01:24:15.558732638 +0000 ++++ hplip-3.20.3/scan/sane/hpaio.c 2020-03-25 02:48:36.097054366 +0000 +@@ -406,20 +406,34 @@ extern SANE_Status sane_hpaio_open(SANE_ + + extern void sane_hpaio_close(SANE_Handle handle) + { +- if (strcmp(*((char **)handle), "MARVELL") == 0) +- return marvell_close(handle); +- if (strcmp(*((char **)handle), "SOAP") == 0) +- return soap_close(handle); +- if (strcmp(*((char **)handle), "SOAPHT") == 0) +- return soapht_close(handle); +- if (strcmp(*((char **)handle), "LEDM") == 0) +- return ledm_close(handle); +- if (strcmp(*((char **)handle), "SCL-PML") == 0) +- return sclpml_close(handle); +- if (strcmp(*((char **)handle), "ESCL") == 0) +- return escl_close(handle); +- if (strcmp(*((char **)handle), "ORBLITE") == 0) +- return orblite_close(handle); ++ if (strcmp(*((char **)handle), "MARVELL") == 0) { ++ marvell_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SOAP") == 0) { ++ soap_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SOAPHT") == 0) { ++ soapht_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "LEDM") == 0) { ++ ledm_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SCL-PML") == 0) { ++ sclpml_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "ESCL") == 0) { ++ escl_close(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "ORBLITE") == 0) { ++ orblite_close(handle); ++ return; ++ } + } /* sane_hpaio_close() */ + + extern const SANE_Option_Descriptor * sane_hpaio_get_option_descriptor(SANE_Handle handle, SANE_Int option) +@@ -539,20 +553,34 @@ extern SANE_Status sane_hpaio_read(SANE_ + /* Note, sane_cancel is called normally not just during IO abort situations. */ + extern void sane_hpaio_cancel( SANE_Handle handle ) + { +- if (strcmp(*((char **)handle), "MARVELL") == 0) +- return marvell_cancel(handle); +- if (strcmp(*((char **)handle), "SOAP") == 0) +- return soap_cancel(handle); +- if (strcmp(*((char **)handle), "SOAPHT") == 0) +- return soapht_cancel(handle); +- if (strcmp(*((char **)handle), "LEDM") == 0) +- return ledm_cancel(handle); +- if (strcmp(*((char **)handle), "SCL-PML") == 0) +- return sclpml_cancel(handle); +- if (strcmp(*((char **)handle), "ESCL") == 0) +- return escl_cancel(handle); +- if (strcmp(*((char **)handle), "ORBLITE") == 0) +- return orblite_cancel(handle); ++ if (strcmp(*((char **)handle), "MARVELL") == 0) { ++ marvell_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SOAP") == 0) { ++ soap_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SOAPHT") == 0) { ++ soapht_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "LEDM") == 0) { ++ ledm_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "SCL-PML") == 0) { ++ sclpml_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "ESCL") == 0) { ++ escl_cancel(handle); ++ return; ++ } ++ if (strcmp(*((char **)handle), "ORBLITE") == 0) { ++ orblite_cancel(handle); ++ return; ++ } + } /* sane_hpaio_cancel() */ + + extern SANE_Status sane_hpaio_set_io_mode(SANE_Handle handle, SANE_Bool nonBlocking) diff --git a/SOURCES/hplip-hpcups-crash.patch b/SOURCES/hplip-hpcups-crash.patch new file mode 100644 index 0000000..28f34f7 --- /dev/null +++ b/SOURCES/hplip-hpcups-crash.patch @@ -0,0 +1,13 @@ +diff --git a/prnt/hpcups/Compressor.cpp b/prnt/hpcups/Compressor.cpp +index 7fbbcd0..a29955e 100644 +--- a/prnt/hpcups/Compressor.cpp ++++ b/prnt/hpcups/Compressor.cpp +@@ -29,7 +29,7 @@ + \*****************************************************************************/ + #include "Compressor.h" + +-Compressor::Compressor (unsigned int RasterSize, bool useseed) : SeedRow(NULL), UseSeedRow(useseed), inputsize(RasterSize), seeded(false) ++Compressor::Compressor (unsigned int RasterSize, bool useseed) : SeedRow(NULL), compressBuf(NULL), UseSeedRow(useseed), inputsize(RasterSize), seeded(false) + { + constructor_error = NO_ERROR; + iRastersReady = 0; diff --git a/SOURCES/hplip-hpcups-sigpipe.patch b/SOURCES/hplip-hpcups-sigpipe.patch new file mode 100644 index 0000000..3dbe0b0 --- /dev/null +++ b/SOURCES/hplip-hpcups-sigpipe.patch @@ -0,0 +1,29 @@ +diff -up hplip-3.9.8/prnt/hpijs/services.cpp.hpcups-sigpipe hplip-3.9.8/prnt/hpijs/services.cpp +--- hplip-3.9.8/prnt/hpijs/services.cpp.hpcups-sigpipe 2009-08-04 22:35:41.000000000 +0100 ++++ hplip-3.9.8/prnt/hpijs/services.cpp 2009-10-29 11:56:23.015022337 +0000 +@@ -29,6 +29,7 @@ + POSSIBILITY OF SUCH DAMAGE. + \*****************************************************************************/ + ++#include + #include + #include + #include +@@ -382,8 +383,16 @@ DRIVER_ERROR UXServices::ToDevice(const + if (write(OutputPath, pBuffer, *Count) != (ssize_t)*Count) + { + static int cnt=0; +- if (cnt++ < 5) ++ if (cnt < 5) ++ { ++ cnt++; + BUG("unable to write to output, fd=%d, count=%d: %m\n", OutputPath, *Count); ++ } ++ ++ if (errno == EPIPE) ++ /* The backend has exited. There's no recovering from that. */ ++ exit (1); ++ + return IO_ERROR; + } + diff --git a/SOURCES/hplip-hpfax-importerror-print.patch b/SOURCES/hplip-hpfax-importerror-print.patch new file mode 100644 index 0000000..3fdafda --- /dev/null +++ b/SOURCES/hplip-hpfax-importerror-print.patch @@ -0,0 +1,13 @@ +diff --git a/fax/backend/hpfax.py b/fax/backend/hpfax.py +index a63051d..3e187c9 100755 +--- a/fax/backend/hpfax.py ++++ b/fax/backend/hpfax.py +@@ -89,7 +89,7 @@ try: + from base import utils + #from prnt import cups + except ImportError as e: +- bug("Error importing HPLIP modules: %s\n" % (pid, e)) ++ bug("Error importing HPLIP modules: %s\n" % (e)) + sys.exit(1) + + def handle_sigpipe(): diff --git a/SOURCES/hplip-hpijs-marker-supply.patch b/SOURCES/hplip-hpijs-marker-supply.patch new file mode 100644 index 0000000..ff0713e --- /dev/null +++ b/SOURCES/hplip-hpijs-marker-supply.patch @@ -0,0 +1,31 @@ +diff -up hplip-3.10.9/prnt/hpijs/hpijs.cpp.hpijs-marker-supply hplip-3.10.9/prnt/hpijs/hpijs.cpp +--- hplip-3.10.9/prnt/hpijs/hpijs.cpp.hpijs-marker-supply 2010-10-18 16:58:23.882993673 +0100 ++++ hplip-3.10.9/prnt/hpijs/hpijs.cpp 2010-10-18 17:00:00.510869032 +0100 +@@ -585,6 +585,7 @@ int main (int argc, char *argv[], char * + char *raster = NULL, *k_raster = NULL; + int status = EXIT_FAILURE; + int ret, n, i, kn=0, width, k_width; ++ int low_marker = 0; + char user_name[32]={0,}; + + openlog("hpijs", LOG_PID, LOG_DAEMON); +@@ -666,14 +667,17 @@ int main (int argc, char *argv[], char * + case WARN_LOW_INK_YELLOW: + case WARN_LOW_INK_MULTIPLE_PENS: + { +- fputs("STATE: +marker-supply-low-warning\n", stderr); ++ low_marker = 1; + break; + } + default: +- fputs("STATE: +marker-supply-low-warning\n", stderr); ++ low_marker = 1; + } + } + ++ fprintf(stderr, "STATE: %cmarker-supply-low-warning\n", ++ low_marker ? '+' : '-'); ++ + #if 0 + BUG("device model=%s\n", pSS->pPC->PrinterModel()); + BUG("device class=%s\n", pSS->pPC->PrintertypeToString(pSS->pPC->SelectedDevice())); diff --git a/SOURCES/hplip-hplj-3052.patch b/SOURCES/hplip-hplj-3052.patch new file mode 100644 index 0000000..c65efac --- /dev/null +++ b/SOURCES/hplip-hplj-3052.patch @@ -0,0 +1,21 @@ +diff --git a/scan/scanext/scanext.c b/scan/scanext/scanext.c +index ff57987..f607220 100755 +--- a/scan/scanext/scanext.c ++++ b/scan/scanext/scanext.c +@@ -407,16 +407,6 @@ static PyObject *setOption (_ScanDevice * self, PyObject * args) + int n; + multipick = 1; + +-if(1) +-{ +-SANE_Bool b = SANE_TRUE; +- sane_control_option (self->h, 9, SANE_ACTION_SET_VALUE, (void *)&b, &i); +-} +-else +-{ +-SANE_Bool b = SANE_FALSE; +- sane_control_option (self->h, 9, SANE_ACTION_SET_VALUE, (void *)&b, &i); +-} + if (!PyArg_ParseTuple (args, "iO", &n, &value)) + raiseError("Invalid arguments."); + diff --git a/SOURCES/hplip-hpmud-string-parse.patch b/SOURCES/hplip-hpmud-string-parse.patch new file mode 100644 index 0000000..58bf5dd --- /dev/null +++ b/SOURCES/hplip-hpmud-string-parse.patch @@ -0,0 +1,16 @@ +diff --git a/io/hpmud/model.c b/io/hpmud/model.c +index 4ea8990..72c630b 100644 +--- a/io/hpmud/model.c ++++ b/io/hpmud/model.c +@@ -420,7 +420,10 @@ static int ParseFile(char *datFile, char *model, char *attr, int attrSize, int * + strncpy(section, rcbuf+1, sizeof(section)); /* found new section */ + n = strlen(section); + section[n-2]=0; /* remove ']' and CR */ +- if (strcasecmp(model, section) == 0) ++ if (strcasecmp(model, section) == 0 || ++ (section[0] == 'h' && section[1] == 'p' && ++ section[2] == '_' && ++ strcasecmp(model, section + 3) == 0)) + { + /* Found model match. */ + *bytes_read = ResolveAttributes(fp, attr, attrSize); diff --git a/SOURCES/hplip-hpsetup-noscanjets.patch b/SOURCES/hplip-hpsetup-noscanjets.patch new file mode 100644 index 0000000..5c956a0 --- /dev/null +++ b/SOURCES/hplip-hpsetup-noscanjets.patch @@ -0,0 +1,48 @@ +diff --git a/setup.py b/setup.py +index 5d48aaa..88e663f 100755 +--- a/setup.py ++++ b/setup.py +@@ -399,9 +399,19 @@ else: # INTERACTIVE_MODE + #log.warning("Cannot setup fax - device does not have fax feature.") + setup_fax = False + ++ norm_model = models.normalizeModelName(model).lower() ++ ++ # get out if the found model is standalone scanner, hp-setup is printer/fax setup tool ++ if 'scanjet' in norm_model: ++ log.error('The device {} is a standalone scanner. ' ++ 'hp-setup is a printer/MFD setup tool, ' ++ 'not scanner installation tool. '.format(model)) ++ log.info(log.bold('Scanners do not need a installation, but they may ' ++ 'require a binary plugin (install by \'hp-plugin -i\').')) ++ clean_exit(1) ++ + # ******************************* PLUGIN + +- norm_model = models.normalizeModelName(model).lower() + plugin = mq.get('plugin', PLUGIN_NONE) + + if ignore_plugin_check is False and plugin > PLUGIN_NONE: +diff --git a/ui5/setupdialog.py b/ui5/setupdialog.py +index c6f234b..a5041c1 100644 +--- a/ui5/setupdialog.py ++++ b/ui5/setupdialog.py +@@ -1326,6 +1326,18 @@ class SetupDialog(QDialog, Ui_Dialog): + self.mq = device.queryModelByURI(self.device_uri) + back_end, is_hp, bus, model, serial, dev_file, host, zc, port = device.parseDeviceURI(self.device_uri) + self.model = models.normalizeModelName(model).lower() ++ if 'scanjet' in self.model: ++ FailureUI(self, ++ self.__tr('The device {} is a standalone ' ++ 'scanner.

\'hp-setup\' is a tool ' ++ 'for installing printers and multifunction ' ++ 'devices. Scanners supported by HPLIP ' ++ 'work out-of-the-box after HPLIP installation, ' ++ 'or they may require a binary plugin, which you ' ++ 'can install by \'hp-plugin -i\'.

'.format(model))) ++ self.displayPage(PAGE_DEVICES) ++ return ++ + self.showAddPrinterPage() + + elif p == PAGE_ADD_PRINTER: diff --git a/SOURCES/hplip-keyserver.patch b/SOURCES/hplip-keyserver.patch new file mode 100644 index 0000000..e285799 --- /dev/null +++ b/SOURCES/hplip-keyserver.patch @@ -0,0 +1,60 @@ +diff -up hplip-3.20.3/base/tui.py.keyserver hplip-3.20.3/base/tui.py +--- hplip-3.20.3/base/tui.py.keyserver 2020-03-10 09:01:53.000000000 +0100 ++++ hplip-3.20.3/base/tui.py 2020-04-07 08:44:44.319710001 +0200 +@@ -241,6 +241,7 @@ class ProgressMeter(object): + sys.stdout.write(y) + + sys.stdout.flush() ++ sys.stdout.write('\n') + self.prev_length = len(y) + self.spinner_pos = (self.spinner_pos + 1) % 8 + +diff -up hplip-3.20.3/base/validation.py.keyserver hplip-3.20.3/base/validation.py +--- hplip-3.20.3/base/validation.py.keyserver 2020-03-10 09:01:53.000000000 +0100 ++++ hplip-3.20.3/base/validation.py 2020-04-07 08:45:46.657132415 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # -*- coding: utf-8 -*- + # + # (c) Copyright 2015 HP Development Company, L.P. +@@ -42,8 +42,11 @@ class DigiSign_Verification(object): + + + class GPG_Verification(DigiSign_Verification): +- def __init__(self, pgp_site = 'pgp.mit.edu', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9): +- self.__pgp_site = pgp_site ++ def __init__(self, keyservers = ['pool.sks-keyservers.net', ++ 'keyserver.ubuntu.com', ++ 'sks-keyservers.net', 'pgp.mit.edu'], ++ key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9): ++ self.__keyservers = keyservers + self.__key = key + self.__gpg = utils.which('gpg',True) + +@@ -82,13 +85,18 @@ class GPG_Verification(DigiSign_Verifica + + + def __acquire_gpg_key(self): +- +- cmd = '%s --homedir %s --no-permission-warning --keyserver %s --recv-keys 0x%X' \ +- % (self.__gpg, self.__gpg_dir, self.__pgp_site, self.__key) +- +- log.info("Receiving digital keys: %s" % cmd) +- status, output = utils.run(cmd) +- log.debug(output) ++ for kserver in self.__keyservers: ++ cmd = '%s --homedir %s --no-permission-warning --keyserver %s --recv-keys 0x%X' \ ++ % (self.__gpg, self.__gpg_dir, kserver, self.__key) ++ ++ log.info("Receiving digital keys: %s" % cmd) ++ status, output = utils.run(cmd) ++ log.debug(output) ++ ++ if not status: ++ break ++ log.info("Receiving keys from {} failed, trying the next keyserver." ++ .format(kserver)) + + self.__change_owner(True) + diff --git a/SOURCES/hplip-log-stderr.patch b/SOURCES/hplip-log-stderr.patch new file mode 100644 index 0000000..6c0749f --- /dev/null +++ b/SOURCES/hplip-log-stderr.patch @@ -0,0 +1,37 @@ +diff -up hplip-3.15.2/fax/backend/hpfax.py.log-stderr hplip-3.15.2/fax/backend/hpfax.py +--- hplip-3.15.2/fax/backend/hpfax.py.log-stderr 2015-01-29 13:20:35.000000000 +0100 ++++ hplip-3.15.2/fax/backend/hpfax.py 2015-02-04 15:40:48.360972449 +0100 +@@ -55,7 +55,10 @@ home_dir = '' + + def bug(msg): + syslog.syslog("hpfax[%d]: error: %s\n" % (pid, msg)) +- log.stderr("ERROR: %s\n" % msg) ++ try: ++ log.stderr("ERROR: %s" % msg) ++ except NameError: ++ sys.stderr.write("ERROR: %s\n" % msg) + + + if os.path.exists(config_file): +diff -up hplip-3.15.2/prnt/filters/hpps.log-stderr hplip-3.15.2/prnt/filters/hpps +--- hplip-3.15.2/prnt/filters/hpps.log-stderr 2015-02-04 15:40:48.360972449 +0100 ++++ hplip-3.15.2/prnt/filters/hpps 2015-02-04 15:43:14.796878364 +0100 +@@ -53,10 +53,16 @@ home_dir = '' + + + def bug(m): +- log.stderr("ERROR: %s" % m) ++ try: ++ log.stderr("ERROR: %s" % m) ++ except NameError: ++ sys.stderr.write("ERROR: %s\n" % m) + + def msg(m): +- log.stderr("INFO: %s" % m) ++ try: ++ log.stderr("INFO: %s" % msg) ++ except NameError: ++ sys.stderr.write("INFO: %s\n" % msg) + + if os.path.exists(config_file): + config = configparser.ConfigParser() diff --git a/SOURCES/hplip-logdir.patch b/SOURCES/hplip-logdir.patch new file mode 100644 index 0000000..4b517a5 --- /dev/null +++ b/SOURCES/hplip-logdir.patch @@ -0,0 +1,24 @@ +diff -up hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp.logdir hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp +--- hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp.logdir 2021-02-19 07:46:48.334843864 +0100 ++++ hplip-3.21.2/prnt/hpcups/HPCupsFilter.cpp 2021-02-19 07:48:18.052963216 +0100 +@@ -656,7 +656,7 @@ int HPCupsFilter::processRasterData(cups + char hpPreProcessedRasterFile[MAX_FILE_PATH_LEN]; //temp file needed to store raster data with swaped pages. + + +- sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name); ++ snprintf(hpPreProcessedRasterFile, sizeof (hpPreProcessedRasterFile), "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name); + + image_processor_t* imageProcessor=NULL; + IMAGE_PROCESSOR_ERROR result; +diff -up hplip-3.21.2/prnt/hpcups/SystemServices.cpp.logdir hplip-3.21.2/prnt/hpcups/SystemServices.cpp +--- hplip-3.21.2/prnt/hpcups/SystemServices.cpp.logdir 2021-02-15 00:55:21.000000000 +0100 ++++ hplip-3.21.2/prnt/hpcups/SystemServices.cpp 2021-02-19 07:46:48.334843864 +0100 +@@ -38,7 +38,7 @@ SystemServices::SystemServices(int iLogL + if (iLogLevel & SAVE_OUT_FILE) + { + char fname[MAX_FILE_PATH_LEN]; +- sprintf(fname, "%s/hpcups_%s_out_job%d_XXXXXX",CUPS_TMP_DIR, user_name, job_id); ++ snprintf(fname, sizeof(fname), "%s/hpcups_%s_out_job%d_XXXXXX",CUPS_TMP_DIR, user_name, job_id); + createTempFile(fname, &m_fp); + if (m_fp) + { diff --git a/SOURCES/hplip-logging-segfault.patch b/SOURCES/hplip-logging-segfault.patch new file mode 100644 index 0000000..4d7d2f0 --- /dev/null +++ b/SOURCES/hplip-logging-segfault.patch @@ -0,0 +1,13 @@ +diff --git a/io/hpmud/musb.c b/io/hpmud/musb.c +index 755493e..6d9c7fc 100644 +--- a/io/hpmud/musb.c ++++ b/io/hpmud/musb.c +@@ -1454,7 +1454,7 @@ enum HPMUD_RESULT __attribute__ ((visibility ("hidden"))) musb_raw_channel_write + BUG("unable to write data %s: %d second io timeout\n", msp->device[pc->dindex].uri, sec_timeout); + } + else +- BUG("unable to write data (len = %d) %s: %m\n", msp->device[pc->dindex].uri, len); ++ BUG("unable to write data (len = %d) %s: %m\n", len, msp->device[pc->dindex].uri); + goto bugout; + } + if(len == 0 && size > 0) diff --git a/SOURCES/hplip-m278-m281-needs-plugin.patch b/SOURCES/hplip-m278-m281-needs-plugin.patch new file mode 100644 index 0000000..2a0783c --- /dev/null +++ b/SOURCES/hplip-m278-m281-needs-plugin.patch @@ -0,0 +1,15 @@ +diff --git a/data/models/models.dat b/data/models/models.dat +index 4b21c1a..76c4cc0 100644 +--- a/data/models/models.dat ++++ b/data/models/models.dat +@@ -64063,8 +64063,8 @@ model11=HP Color LaserJet Pro MFP M280c2 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_mfp_m278-m281-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd diff --git a/SOURCES/hplip-missing-drivers.patch b/SOURCES/hplip-missing-drivers.patch new file mode 100644 index 0000000..08198bc --- /dev/null +++ b/SOURCES/hplip-missing-drivers.patch @@ -0,0 +1,602 @@ +diff -up hplip-3.20.6/cups_drv.inc.missing-drivers hplip-3.20.6/cups_drv.inc +--- hplip-3.20.6/cups_drv.inc.missing-drivers 2020-06-09 13:23:14.000000000 +0200 ++++ hplip-3.20.6/cups_drv.inc 2020-06-17 13:49:39.110952720 +0200 +@@ -407,6 +407,7 @@ cups_ppd_printers = \ + ppd/hpcups/hp-laserjet_cm1418fnw-pcl3.ppd.gz \ + ppd/hpcups/hp-laserjet_cp1025.ppd.gz \ + ppd/hpcups/hp-laserjet_cp1025nw.ppd.gz \ ++ ppd/hpcups/hp-laserjet_cp_1025nw.ppd.gz \ + ppd/hpcups/hp-laserjet_m1005.ppd.gz \ + ppd/hpcups/hp-laserjet_m101-m106.ppd.gz \ + ppd/hpcups/hp-laserjet_m1120_mfp.ppd.gz \ +@@ -520,6 +521,7 @@ cups_ppd_printers = \ + ppd/hpcups/hp-laserjet_professional_p1607dn.ppd.gz \ + ppd/hpcups/hp-laserjet_professional_p1608dn.ppd.gz \ + ppd/hpcups/hp-laserjet_professional_p1609dn.ppd.gz \ ++ ppd/hpcups/hp-laserjet_professional_p1102w.ppd.gz \ + ppd/hpcups/hp-laserjet_professional_p_1102w.ppd.gz \ + ppd/hpcups/hp-mopier_240-pcl3.ppd.gz \ + ppd/hpcups/hp-mopier_320-pcl3.ppd.gz \ +diff -up hplip-3.20.6/data/models/models.dat.missing-drivers hplip-3.20.6/data/models/models.dat +--- hplip-3.20.6/data/models/models.dat.missing-drivers 2020-06-17 13:49:39.080953000 +0200 ++++ hplip-3.20.6/data/models/models.dat 2020-06-17 13:49:39.120952626 +0200 +@@ -2104,7 +2104,7 @@ usb-pid=411 + usb-vid=3f0 + wifi-config=0 + +-[hp_laserjet_100_colormfp_m175] ++[hp_laserjet_100_colormfp_m175nw] + align-type=0 + clean-type=0 + color-cal-type=0 +@@ -2119,14 +2119,6 @@ io-support=14 + job-storage=0 + linefeed-cal-type=0 + model1=HP LaserJet 100 Color MFP M175 +-model2=HP LaserJet 100 Color MFP M175a +-model3=HP LaserJet 100 Color MFP M175b +-model4=HP LaserJet 100 Color MFP M175c +-model5=HP LaserJet 100 Color MFP M175e +-model6=HP LaserJet 100 Color MFP M175nw +-model7=HP LaserJet 100 Color MFP M175p +-model8=HP LaserJet 100 Color MFP M175q +-model9=HP LaserJet 100 Color MFP M175r + ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd + monitor-type=0 + panel-check-type=0 +@@ -2165,6 +2157,378 @@ usb-pid=62a + usb-vid=3f0 + wifi-config=3 + ++[hp_laserjet_100_colormfp_m175r] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=14 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=3 ++ ++[hp_laserjet_100_colormfp_m175q] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=14 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=3 ++ ++[hp_laserjet_100_colormfp_m175p] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=14 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=3 ++ ++[hp_laserjet_100_colormfp_m175e] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=2 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=-1 ++ ++[hp_laserjet_100_colormfp_m175a] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++family-ppd=hp-postscript-laserjet-pro.ppd ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=2 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=-1 ++ ++[hp_laserjet_100_colormfp_m175c] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=2 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=-1 ++ ++[hp_laserjet_100_colormfp_m175b] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cm1312_mfp.png ++io-mfp-mode=3 ++io-mode=1 ++io-support=2 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet 100 Color MFP M175 ++ppd-name=hp-laserjet_100_color_mfp_m175-ps.ppd ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=64 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=3 ++scan-type=5 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=10 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.11.7 ++tech-class=Postscript ++family-class=Undefined ++tech-subclass=Normal ++tech-type=4 ++usb-pid=62a ++usb-vid=3f0 ++wifi-config=-1 ++ + [officejet_100_mobile_l411] + align-type=-1 + clean-type=1 +@@ -17867,6 +18231,58 @@ usb-pid=2c17 + usb-vid=3f0 + wifi-config=0 + ++[hp_laserjet_cp_1025nw] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=1 ++fax-type=0 ++fw-download=False ++icon=hp_color_laserjet_cp2025.png ++io-mfp-mode=1 ++io-mode=1 ++io-support=14 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet Pro CP 1025nw Color Printer Series ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=1 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=CE310A ++r0-agent1-type=1 ++r0-agent2-kind=4 ++r0-agent2-sku=CE311A ++r0-agent2-type=4 ++r0-agent3-kind=4 ++r0-agent3-sku=CE313A ++r0-agent3-type=5 ++r0-agent4-kind=4 ++r0-agent4-sku=CE312A ++r0-agent4-type=6 ++scan-src=0 ++scan-type=0 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=8 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.12.4 ++tech-class=LJZjsColor ++family-class=LJ-Class4 ++tech-subclass=Advanced ++tech-type=4 ++usb-pid=112a ++usb-vid=3f0 ++wifi-config=3 ++ + [hp_laserjet_cp1025nw] + align-type=0 + clean-type=0 +@@ -18468,6 +18884,49 @@ usb-pid=3011 + usb-vid=3f0 + wifi-config=0 + ++[hp_laserjet_professional_p1102w] ++align-type=0 ++clean-type=0 ++color-cal-type=0 ++copy-type=0 ++embedded-server-type=0 ++fax-type=0 ++fw-download=False ++icon=HP_LaserJet_1012.png ++io-mfp-mode=6 ++io-mode=1 ++io-support=10 ++job-storage=0 ++linefeed-cal-type=0 ++model1=HP LaserJet Professional P1102w Printer ++monitor-type=0 ++panel-check-type=0 ++pcard-type=0 ++plugin=1 ++plugin-reason=1 ++power-settings=0 ++pq-diag-type=0 ++r-type=0 ++r0-agent1-kind=4 ++r0-agent1-sku=85A ++r0-agent1-type=1 ++scan-src=0 ++scan-type=0 ++status-battery-check=0 ++status-dynamic-counters=0 ++status-type=8 ++support-released=True ++support-subtype=219b2b ++support-type=2 ++support-ver=3.10.4 ++tech-class=LJZjsMono ++family-class=LJ-Class4 ++tech-subclass=NoAutoDuplex ++tech-type=3 ++usb-pid=32a ++usb-vid=3f0 ++wifi-config=3 ++ + [hp_laserjet_professional_p1102] + align-type=0 + clean-type=0 +diff -up hplip-3.20.6/Makefile.in.missing-drivers hplip-3.20.6/Makefile.in +--- hplip-3.20.6/Makefile.in.missing-drivers 2020-06-09 13:23:20.000000000 +0200 ++++ hplip-3.20.6/Makefile.in 2020-06-17 13:49:39.110952720 +0200 +@@ -1571,6 +1571,7 @@ am__dist_ppd_DATA_DIST = prnt/ps/hp-lase + ppd/hpcups/hp-laserjet_cm1418fnw-pcl3.ppd.gz \ + ppd/hpcups/hp-laserjet_cp1025.ppd.gz \ + ppd/hpcups/hp-laserjet_cp1025nw.ppd.gz \ ++ ppd/hpcups/hp-laserjet_cp_1025nw.ppd.gz \ + ppd/hpcups/hp-laserjet_m1005.ppd.gz \ + ppd/hpcups/hp-laserjet_m101-m106.ppd.gz \ + ppd/hpcups/hp-laserjet_m1120_mfp.ppd.gz \ +@@ -1685,6 +1686,7 @@ am__dist_ppd_DATA_DIST = prnt/ps/hp-lase + ppd/hpcups/hp-laserjet_professional_p1608dn.ppd.gz \ + ppd/hpcups/hp-laserjet_professional_p1609dn.ppd.gz \ + ppd/hpcups/hp-laserjet_professional_p_1102w.ppd.gz \ ++ ppd/hpcups/hp-laserjet_professional_p1102w.ppd.gz \ + ppd/hpcups/hp-mopier_240-pcl3.ppd.gz \ + ppd/hpcups/hp-mopier_320-pcl3.ppd.gz \ + ppd/hpcups/hp-neverstop_laser_100x.ppd.gz \ +@@ -3961,6 +3963,7 @@ dist_unrel_DATA = + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_cm1418fnw-pcl3.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_cp1025.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_cp1025nw.ppd.gz \ ++@HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_cp_1025nw.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_m1005.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_m101-m106.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_m1120_mfp.ppd.gz \ +@@ -4074,6 +4077,7 @@ dist_unrel_DATA = + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_professional_p1607dn.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_professional_p1608dn.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_professional_p1609dn.ppd.gz \ ++@HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_professional_p1102w.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_professional_p_1102w.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-mopier_240-pcl3.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-mopier_320-pcl3.ppd.gz \ +diff -up hplip-3.20.6/prnt/drv/hpcups.drv.in.missing-drivers hplip-3.20.6/prnt/drv/hpcups.drv.in +--- hplip-3.20.6/prnt/drv/hpcups.drv.in.missing-drivers 2020-06-17 13:49:39.009953663 +0200 ++++ hplip-3.20.6/prnt/drv/hpcups.drv.in 2020-06-17 13:51:49.576733820 +0200 +@@ -22319,6 +22319,14 @@ Group "RLT/HP Real Life Technologies" + Attribute "Product" "" "(HP LaserJet Professional p1102s Printer)" + } + { ++ ModelName "HP LaserJet Professional p1102w" ++ Attribute "NickName" "" "HP LaserJet Professional p1102w, hpcups $Version, requires proprietary plugin" ++ Attribute "ShortNickName" "" "HP LaserJet Professional p1102w hpijs" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:hp laserjet professional p1102w;DES:hp laserjet professional p1102w;" ++ PCFileName "hp-laserjet_professional_p1102w.ppd" ++ Attribute "Product" "" "(HP LaserJet Professional p1102w Printer)" ++ } ++ { + ModelName "HP LaserJet Professional p1106" + Attribute "NickName" "" "HP LaserJet Professional p1106, hpcups $Version" + Attribute "ShortNickName" "" "HP LJ Pro p1106 hpijs" +@@ -22752,6 +22760,14 @@ Group "RLT/HP Real Life Technologies" + PCFileName "hp-laserjet_cp1025nw.ppd" + Attribute "Product" "" "(HP LaserJet Pro cp1025nw Color Printer Series)" + } ++ { ++ ModelName "HP LaserJet Cp 1025nw" ++ Attribute "NickName" "" "HP LaserJet Cp 1025nw, hpcups $Version, requires proprietary plugin" ++ Attribute "ShortNickName" "" "HP LaserJet Cp 1025nw hpijs" ++ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:hp laserjet cp 1025nw;DES:hp laserjet cp 1025nw;" ++ PCFileName "hp-laserjet_cp_1025nw.ppd" ++ Attribute "Product" "" "(HP LaserJet Pro Cp 1025nw Color Printer Series)" ++ } + } + } // End LJZjsColor (for proprietary plugin) + diff --git a/SOURCES/hplip-missing-links.patch b/SOURCES/hplip-missing-links.patch new file mode 100644 index 0000000..3e19877 --- /dev/null +++ b/SOURCES/hplip-missing-links.patch @@ -0,0 +1,13 @@ +diff --git a/installer/pluginhandler.py b/installer/pluginhandler.py +index 4d7c1b8..1af8d85 100755 +--- a/installer/pluginhandler.py ++++ b/installer/pluginhandler.py +@@ -164,7 +164,7 @@ class PluginHandle(object): + for src, trg, link in copies: + if link != "": + if not utils.check_library(link): +- self.__plugin_state = PLUGIN_FILES_CORRUPTED ++ pass + + + def __getPluginInformation(self, callback=None): diff --git a/SOURCES/hplip-model-mismatch.patch b/SOURCES/hplip-model-mismatch.patch new file mode 100644 index 0000000..1dbe3c0 --- /dev/null +++ b/SOURCES/hplip-model-mismatch.patch @@ -0,0 +1,64 @@ +diff --git a/io/hpmud/jd.c b/io/hpmud/jd.c +index 20df27a..7ed4918 100644 +--- a/io/hpmud/jd.c ++++ b/io/hpmud/jd.c +@@ -208,7 +208,22 @@ enum HPMUD_RESULT __attribute__ ((visibility ("hidden"))) jd_open(mud_device *pd + { + /* Make sure uri model matches device id model. */ + hpmud_get_uri_model(pd->uri, uri_model, sizeof(uri_model)); ++ ++ /* remove possible hp_ string */ ++ if (strncasecmp(uri_model, "HP_", 3) == 0) ++ { ++ memmove(uri_model, uri_model + 3, 127); ++ uri_model[127] = '\0'; ++ } ++ + hpmud_get_model(pd->id, model, sizeof(model)); ++ /* remove possible hp_ string */ ++ if (strncasecmp(model, "HP_", 3) == 0) ++ { ++ memmove(model, model + 3, 127); ++ model[127] = '\0'; ++ } ++ + if (strcasecmp(uri_model, model) != 0) + { + stat = HPMUD_R_INVALID_URI; /* different device plugged in */ +diff --git a/io/hpmud/model.c b/io/hpmud/model.c +index d546ec1..adb3d87 100644 +--- a/io/hpmud/model.c ++++ b/io/hpmud/model.c +@@ -407,7 +407,10 @@ static int ParseFile(char *datFile, char *model, char *attr, int attrSize, int * + char rcbuf[255]; + char section[128]; + char file[128]; +- int found=0, n; ++ int found=0; ++ size_t n; ++ ++ size_t model_len = strlen(model); + + if ((fp = fopen(datFile, "r")) == NULL) + goto bugout; +@@ -422,10 +425,17 @@ static int ParseFile(char *datFile, char *model, char *attr, int attrSize, int * + strncpy(section, rcbuf+1, sizeof(section)); /* found new section */ + n = strlen(section); + section[n-2]=0; /* remove ']' and CR */ ++ n -= 2; + if (strcasecmp(model, section) == 0 || +- (section[0] == 'h' && section[1] == 'p' && +- section[2] == '_' && +- strcasecmp(model, section + 3) == 0)) ++ (section[0] == 'h' && ++ section[1] == 'p' && ++ section[2] == '_' && ++ strcasecmp(model, section + 3) == 0) || ++ (n > model_len && ++ strncasecmp(section, model, model_len) == 0 && ++ strncasecmp(section + model_len, "_series", strlen("_series")) == 0 ++ ) ++ ) + { + /* Found model match. */ + *bytes_read = ResolveAttributes(fp, attr, attrSize); diff --git a/SOURCES/hplip-no-asm.patch b/SOURCES/hplip-no-asm.patch new file mode 100644 index 0000000..1240c17 --- /dev/null +++ b/SOURCES/hplip-no-asm.patch @@ -0,0 +1,36 @@ +diff -up hplip-3.9.8/ip/xfax.c.no-asm hplip-3.9.8/ip/xfax.c +--- hplip-3.9.8/ip/xfax.c.no-asm 2009-08-04 22:37:28.000000000 +0100 ++++ hplip-3.9.8/ip/xfax.c 2009-08-25 14:44:04.502202418 +0100 +@@ -1680,19 +1680,6 @@ static BOOL bits_flush_to_eol ( + & ((1u<gb_cache; \ +- \ +- asm ("extract %1,%2,%0" \ +- : "=d" (par_result) \ +- : "dI" (g->gb_cache_cnt - n_bits), "dI" (n_bits), "0" (par_result)); \ +-} +- +-#endif + + + +diff -up hplip-3.9.8/scan/sane/common.h.no-asm hplip-3.9.8/scan/sane/common.h +--- hplip-3.9.8/scan/sane/common.h.no-asm 2009-08-25 16:35:14.577203106 +0100 ++++ hplip-3.9.8/scan/sane/common.h 2009-08-25 16:35:29.948216281 +0100 +@@ -53,8 +53,6 @@ + + #define BACKEND_NAME hpaio + +-#define BREAKPOINT __asm( "int3" ) +- + #define OK 1 + #define ERROR 0 + #define MAX_LIST_SIZE 32 +diff -up hplip-3.9.8/scan/sane/hpaio.c.no-asm hplip-3.9.8/scan/sane/hpaio.c diff --git a/SOURCES/hplip-no-write-bytecode.patch b/SOURCES/hplip-no-write-bytecode.patch new file mode 100644 index 0000000..55d6147 --- /dev/null +++ b/SOURCES/hplip-no-write-bytecode.patch @@ -0,0 +1,27 @@ +diff -up hplip-3.15.11/config_usb_printer.py.no-write-bytecode hplip-3.15.11/config_usb_printer.py +--- hplip-3.15.11/config_usb_printer.py.no-write-bytecode 2015-11-16 10:50:03.127459222 +0100 ++++ hplip-3.15.11/config_usb_printer.py 2015-11-16 10:53:52.266931490 +0100 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python -B + # -*- coding: utf-8 -*- + # + # (c) Copyright 2011-2015 HP Development Company, L.P. +diff -up hplip-3.15.11/fax/backend/hpfax.py.no-write-bytecode hplip-3.15.11/fax/backend/hpfax.py +--- hplip-3.15.11/fax/backend/hpfax.py.no-write-bytecode 2015-11-16 10:50:03.128459220 +0100 ++++ hplip-3.15.11/fax/backend/hpfax.py 2015-11-16 10:53:49.587937659 +0100 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python -B + # -*- coding: utf-8 -*- + # + # (c) Copyright 2003-2015 HP Development Company, L.P. +diff -up hplip-3.15.11/prnt/filters/hpps.no-write-bytecode hplip-3.15.9/prnt/filters/hpps +--- hplip-3.15.11/prnt/filters/hpps.no-write-bytecode 2016-01-04 16:44:08.000000000 +0100 ++++ hplip-3.15.11/prnt/filters/hpps 2016-01-04 16:50:11.272921194 +0100 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python -B + # -*- coding: utf-8 -*- + # + # (c) Copyright 2003-2015 HP Development Company, L.P. diff --git a/SOURCES/hplip-noernie.patch b/SOURCES/hplip-noernie.patch new file mode 100644 index 0000000..4ac83b4 --- /dev/null +++ b/SOURCES/hplip-noernie.patch @@ -0,0 +1,64 @@ +diff -up hplip-3.17.4/Makefile.am.no-ernie hplip-3.17.4/Makefile.am +--- hplip-3.17.4/Makefile.am.no-ernie 2017-04-26 16:28:35.398099978 +0200 ++++ hplip-3.17.4/Makefile.am 2017-04-26 16:29:02.235879035 +0200 +@@ -519,7 +519,7 @@ hpcups_SOURCES = prnt/hpcups/HPCupsFilte + prnt/hpcups/Mode2.cpp prnt/hpcups/Mode2.h prnt/hpcups/Mode3.cpp prnt/hpcups/Mode3.h \ + prnt/hpcups/Mode9.cpp prnt/hpcups/Mode9.h prnt/hpcups/Mode10.cpp prnt/hpcups/Mode10.h \ + prnt/hpcups/ModeDeltaPlus.cpp prnt/hpcups/ModeDeltaPlus.h prnt/hpcups/ModeJbig.cpp prnt/hpcups/ModeJbig.h \ +- prnt/hpcups/ErnieFilter.cpp prnt/hpcups/ErnieFilter.h prnt/hpcups/EncapsulatorFactory.cpp prnt/hpcups/EncapsulatorFactory.h \ ++ prnt/hpcups/EncapsulatorFactory.cpp prnt/hpcups/EncapsulatorFactory.h \ + prnt/hpcups/Encapsulator.cpp prnt/hpcups/Encapsulator.h prnt/hpcups/Pcl3.cpp prnt/hpcups/Pcl3.h \ + prnt/hpcups/Pcl3Gui.cpp prnt/hpcups/Pcl3Gui.h prnt/hpcups/Pcl3Gui2.cpp prnt/hpcups/Pcl3Gui2.h \ + prnt/hpcups/LJMono.cpp prnt/hpcups/LJMono.h prnt/hpcups/LJColor.cpp prnt/hpcups/LJColor.h \ +diff -up hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp.no-ernie hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp +--- hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp.no-ernie 2017-04-26 16:28:39.525066003 +0200 ++++ hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp 2017-04-26 16:29:46.987510614 +0200 +@@ -30,7 +30,6 @@ + + #include "CommonDefinitions.h" + #include "Pcl3Gui2.h" +-#include "ErnieFilter.h" + #include "Mode10.h" + #include "Mode9.h" + #include "PrinterCommands.h" +@@ -38,7 +37,6 @@ + Pcl3Gui2::Pcl3Gui2() : Encapsulator() + { + speed_mech_enabled = true; +- m_run_ernie_filter = true; + crd_type = eCrd_both; + strcpy(m_szLanguage, "PCL3GUI"); + } +@@ -59,21 +57,6 @@ DRIVER_ERROR Pcl3Gui2::Configure(Pipelin + } + + width = m_pMA->printable_width;; +- if (m_run_ernie_filter) { +- ErnieFilter *pErnie; +- +- // Normal: threshold = (resolution) * (0.0876) - 2 +- int threshold = ((m_pQA->horizontal_resolution * 876) / 10000) - 2; +- +- pErnie = new ErnieFilter (width, eBGRPixelData, threshold); +- p = new Pipeline (pErnie); +- if (head) { +- head->AddPhase (p); +- } +- else { +- head = p; +- } +- } + + if (crd_type != eCrd_black_only) { + Mode10 *pMode10; +diff -up hplip-3.17.4/prnt/hpcups/Pcl3Gui2.h.no-ernie hplip-3.17.4/prnt/hpcups/Pcl3Gui2.h +--- hplip-3.17.4/prnt/hpcups/Pcl3Gui2.h.no-ernie 2017-04-26 16:28:43.277035115 +0200 ++++ hplip-3.17.4/prnt/hpcups/Pcl3Gui2.h 2017-04-26 16:30:05.826355522 +0200 +@@ -60,7 +60,6 @@ private: + DRIVER_ERROR encapsulateRaster(BYTE *input_raster, unsigned int num_bytes, COLORTYPE c_type); + bool speed_mech_enabled; + int page_number; +- bool m_run_ernie_filter; + eCrdType crd_type; + }; + diff --git a/SOURCES/hplip-ppd-ImageableArea.patch b/SOURCES/hplip-ppd-ImageableArea.patch new file mode 100644 index 0000000..7394bb7 --- /dev/null +++ b/SOURCES/hplip-ppd-ImageableArea.patch @@ -0,0 +1,459 @@ +diff -up hplip-3.14.3/prnt/ps/hp-laserjet_8150_mfp-ps.ppd.ImageableArea hplip-3.14.3/prnt/ps/hp-laserjet_8150_mfp-ps.ppd +--- hplip-3.14.3/prnt/ps/hp-laserjet_8150_mfp-ps.ppd.ImageableArea 2014-03-06 06:11:09.000000000 +0100 ++++ hplip-3.14.3/prnt/ps/hp-laserjet_8150_mfp-ps.ppd 2014-03-07 10:26:54.404913622 +0100 +@@ -3430,7 +3430,7 @@ restore + *CloseUI: *PageRegion + + *DefaultImageableArea: Letter +-*ImageableArea Letter/Letter: "4.00 3.00 606.00 786.00" ++*ImageableArea Letter/Letter: "12.00 12.00 599.76 779.76" + *da.ImageableArea Letter/Letter: "" + *de.ImageableArea Letter/Letter: "" + *es.ImageableArea Letter/Letter: "" +@@ -3462,7 +3462,7 @@ restore + *zh_CN.ImageableArea LetterSmall/信纸 (小): "" + *zh_TW.ImageableArea LetterSmall/Letter (小): "" + +-*ImageableArea Executive/Executive: "3.00 3.00 516.00 750.00" ++*ImageableArea Executive/Executive: "12.00 12.00 509.76 743.76" + *da.ImageableArea Executive/Executive: "" + *de.ImageableArea Executive/Executive: "" + *es.ImageableArea Executive/Exec: "" +@@ -3478,7 +3478,7 @@ restore + *zh_CN.ImageableArea Executive/Executive: "" + *zh_TW.ImageableArea Executive/Executive: "" + +-*ImageableArea Legal/Legal: "64.00 54.00 606.00 1002.00" ++*ImageableArea Legal/Legal: "12.00 12.00 599.76 995.76" + *da.ImageableArea Legal/Legal: "" + *de.ImageableArea Legal/Legal: "" + *es.ImageableArea Legal/Legal: "" +@@ -3494,7 +3494,7 @@ restore + *zh_CN.ImageableArea Legal/Legal: "" + *zh_TW.ImageableArea Legal/Legal: "" + +-*ImageableArea LegalSmall/Legal (Small): "3.00 3.00 548.00 954.00" ++*ImageableArea LegalSmall/Legal (Small): "64.00 54.00 548.00 954.00" + *da.ImageableArea LegalSmall/Legal (lille): "" + *de.ImageableArea LegalSmall/Legal (Klein): "" + *es.ImageableArea LegalSmall/Legal (pequeño): "" +@@ -3510,7 +3510,7 @@ restore + *zh_CN.ImageableArea LegalSmall/Legal (小): "" + *zh_TW.ImageableArea LegalSmall/Legal (小): "" + +-*ImageableArea Tabloid/11x17: "3.00 3.00 786.00 1218.00" ++*ImageableArea Tabloid/11x17: "12.00 12.00 779.76 1211.76" + *da.ImageableArea Tabloid/11x17: "" + *de.ImageableArea Tabloid/11x17 Zoll: "" + *es.ImageableArea Tabloid/11x17: "" +@@ -3526,7 +3526,7 @@ restore + *zh_CN.ImageableArea Tabloid/11x17: "" + *zh_TW.ImageableArea Tabloid/11x17 : "" + +-*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "3.00 3.00 836.00 1268.00" ++*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "12.00 12.00 829.68 1261.68" + *da.ImageableArea w842h1274/11x17 (overstr. 297 x 450 mm): "" + *de.ImageableArea w842h1274/11x17 Zoll (Übergröße 11,7x17,7 Zoll): "" + *es.ImageableArea w842h1274/11x17 (Extra 11,7x17,7) : "" +@@ -3542,7 +3542,7 @@ restore + *zh_CN.ImageableArea w842h1274/11x17 (超大尺寸 11.7x17.7): "" + *zh_TW.ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "" + +-*ImageableArea A3/A3: "3.00 3.00 836.00 1185.00" ++*ImageableArea A3/A3: "12.00 12.00 829.44 1178.16" + *da.ImageableArea A3/A3: "" + *de.ImageableArea A3/A3: "" + *es.ImageableArea A3/A3: "" +@@ -3558,7 +3558,7 @@ restore + *zh_CN.ImageableArea A3/A3: "" + *zh_TW.ImageableArea A3/A3: "" + +-*ImageableArea A4/A4: "4.00 3.00 586.00 836.00" ++*ImageableArea A4/A4: "12.00 12.00 582.96 829.44" + *da.ImageableArea A4/A4: "" + *de.ImageableArea A4/A4: "" + *es.ImageableArea A4/A4: "" +@@ -3590,7 +3590,7 @@ restore + *zh_CN.ImageableArea A4Small/A4 (小): "" + *zh_TW.ImageableArea A4Small/A4 (小): "" + +-*ImageableArea A5/A5: "3.00 3.00 414.00 589.00" ++*ImageableArea A5/A5: "12.00 12.00 407.28 582.96" + *da.ImageableArea A5/A5: "" + *de.ImageableArea A5/A5: "" + *es.ImageableArea A5/A5: "" +@@ -3606,7 +3606,7 @@ restore + *zh_CN.ImageableArea A5/A5: "" + *zh_TW.ImageableArea A5/A5: "" + +-*ImageableArea B4/JIS B4: "3.00 3.00 723.00 1026.00" ++*ImageableArea B4/JIS B4: "12.00 12.00 716.16 1019.52" + *da.ImageableArea B4/JIS B4: "" + *de.ImageableArea B4/B4 (JIS): "" + *es.ImageableArea B4/JIS B4: "" +@@ -3622,7 +3622,7 @@ restore + *zh_CN.ImageableArea B4/JIS B4: "" + *zh_TW.ImageableArea B4/JIS B4: "" + +-*ImageableArea B5/JIS B5: "3.00 3.00 510.00 723.00" ++*ImageableArea B5/JIS B5: "12.00 12.00 503.52 716.16" + *da.ImageableArea B5/JIS B5: "" + *de.ImageableArea B5/JIS B5: "" + *es.ImageableArea B5/JIS B5: "" +@@ -3638,7 +3638,7 @@ restore + *zh_CN.ImageableArea B5/JIS B5: "" + *zh_TW.ImageableArea B5/JIS B5: "" + +-*ImageableArea DoublePostcard/Double Postcard (JIS): "3.00 3.00 413.50 561.00" ++*ImageableArea DoublePostcard/Double Postcard (JIS): "12.00 12.00 407.28 554.64" + *da.ImageableArea DoublePostcard/Dobbelt postkort (JIS): "" + *de.ImageableArea DoublePostcard/Doppelte Postkarte (JIS): "" + *es.ImageableArea DoublePostcard/Tarjeta postal doble (JIS): "" +@@ -3654,7 +3654,7 @@ restore + *zh_CN.ImageableArea DoublePostcard/大号明信片 (JIS): "" + *zh_TW.ImageableArea DoublePostcard/雙聯明信片(JIS): "" + +-*ImageableArea w612h935/Executive (JIS): "3.00 3.00 606.00 929.00" ++*ImageableArea w612h935/Executive (JIS): "12.00 12.00 599.76 922.76" + *da.ImageableArea w612h935/Executive (JIS): "" + *de.ImageableArea w612h935/Executive (JIS): "" + *es.ImageableArea w612h935/Exec (JIS): "" +@@ -3670,7 +3670,7 @@ restore + *zh_CN.ImageableArea w612h935/Executive (JIS): "" + *zh_TW.ImageableArea w612h935/Executive (JIS): "" + +-*ImageableArea w558h774/16K: "3.00 3.00 552.00 768.00" ++*ImageableArea w558h774/16K: "12.00 12.00 545.76 761.76" + *da.ImageableArea w558h774/16K: "" + *de.ImageableArea w558h774/16K: "" + *es.ImageableArea w558h774/16K: "" +@@ -3686,7 +3686,7 @@ restore + *zh_CN.ImageableArea w558h774/16K: "" + *zh_TW.ImageableArea w558h774/16K: "" + +-*ImageableArea w774h1116/8K: "3.00 3.00 768.00 1110.00" ++*ImageableArea w774h1116/8K: "12.00 12.00 761.76 1103.76" + *da.ImageableArea w774h1116/8K: "" + *de.ImageableArea w774h1116/8K: "" + *es.ImageableArea w774h1116/8K: "" +@@ -3702,7 +3702,7 @@ restore + *zh_CN.ImageableArea w774h1116/8K: "" + *zh_TW.ImageableArea w774h1116/8K: "" + +-*ImageableArea Env10/Env Comm10: "3.00 3.00 291.00 678.00" ++*ImageableArea Env10/Env Comm10: "12.00 12.00 284.64 671.76" + *da.ImageableArea Env10/Konvolut Comm10: "" + *de.ImageableArea Env10/Umschlag Comm10: "" + *es.ImageableArea Env10/Sobre Comm10: "" +@@ -3718,7 +3718,7 @@ restore + *zh_CN.ImageableArea Env10/Comm10号信封: "" + *zh_TW.ImageableArea Env10/Comm10 信封: "" + +-*ImageableArea EnvMonarch/Env Monarch: "3.00 3.00 273.00 534.00" ++*ImageableArea EnvMonarch/Env Monarch: "12.00 12.00 266.64 527.76" + *da.ImageableArea EnvMonarch/Konvolut Monarch: "" + *de.ImageableArea EnvMonarch/Umschlag Monarch: "" + *es.ImageableArea EnvMonarch/Sobre Monarch: "" +@@ -3734,7 +3734,7 @@ restore + *zh_CN.ImageableArea EnvMonarch/Monarch号信封: "" + *zh_TW.ImageableArea EnvMonarch/Monarch 信封: "" + +-*ImageableArea EnvDL/Env DL: "3.00 3.00 306.00 618.00" ++*ImageableArea EnvDL/Env DL: "12.00 12.00 299.52 611.28" + *da.ImageableArea EnvDL/Konvolut DL: "" + *de.ImageableArea EnvDL/Umschlag DL: "" + *es.ImageableArea EnvDL/Sobre DL: "" +@@ -3750,7 +3750,7 @@ restore + *zh_CN.ImageableArea EnvDL/DL号信封: "" + *zh_TW.ImageableArea EnvDL/DL 信封: "" + +-*ImageableArea EnvC5/Env C5: "3.00 3.00 453.00 643.00" ++*ImageableArea EnvC5/Env C5: "12.00 12.00 446.88 636.72" + *da.ImageableArea EnvC5/Konvolut C5: "" + *de.ImageableArea EnvC5/Umschlag C5: "" + *es.ImageableArea EnvC5/Sobre C5: "" +@@ -3766,7 +3766,7 @@ restore + *zh_CN.ImageableArea EnvC5/C5号信封: "" + *zh_TW.ImageableArea EnvC5/C5 信封: "" + +-*ImageableArea EnvISOB5/Env ISO B5: "3.00 3.00 493.00 703.00" ++*ImageableArea EnvISOB5/Env ISO B5: "12.00 12.00 486.48 696.24" + *da.ImageableArea EnvISOB5/Konvolut ISO B5: "" + *de.ImageableArea EnvISOB5/Umschlag ISO B5: "" + *es.ImageableArea EnvISOB5/Sobre ISO B5: "" +diff -up hplip-3.14.3/prnt/ps/hp-laserjet_9000_mfp-ps.ppd.ImageableArea hplip-3.14.3/prnt/ps/hp-laserjet_9000_mfp-ps.ppd +--- hplip-3.14.3/prnt/ps/hp-laserjet_9000_mfp-ps.ppd.ImageableArea 2014-03-06 06:11:09.000000000 +0100 ++++ hplip-3.14.3/prnt/ps/hp-laserjet_9000_mfp-ps.ppd 2014-03-07 10:26:54.407913581 +0100 +@@ -2593,7 +2593,7 @@ currentpagedevice /MediaProcessing known + *CloseUI: *PageRegion + + *DefaultImageableArea: Letter +-*ImageableArea Letter/Letter: "6.00 6.00 606.00 786.00" ++*ImageableArea Letter/Letter: "12.00 12.00 599.76 779.76" + *da.ImageableArea Letter/Letter: "" + *de.ImageableArea Letter/Letter: "" + *es.ImageableArea Letter/Letter: "" +@@ -2625,7 +2625,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea LetterSmall/信纸 (小): "" + *zh_TW.ImageableArea LetterSmall/Letter (小): "" + +-*ImageableArea Executive/Executive: "6.00 6.00 516.00 750.00" ++*ImageableArea Executive/Executive: "12.00 12.00 509.76 743.76" + *da.ImageableArea Executive/Executive: "" + *de.ImageableArea Executive/Executive: "" + *es.ImageableArea Executive/Exec: "" +@@ -2641,7 +2641,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea Executive/Executive: "" + *zh_TW.ImageableArea Executive/Executive: "" + +-*ImageableArea Legal/Legal: "6.00 6.00 606.00 1002.00" ++*ImageableArea Legal/Legal: "12.00 12.00 599.76 995.76" + *da.ImageableArea Legal/Legal: "" + *de.ImageableArea Legal/Legal: "" + *es.ImageableArea Legal/Legal: "" +@@ -2673,7 +2673,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea LegalSmall/Legal (小): "" + *zh_TW.ImageableArea LegalSmall/Legal (小): "" + +-*ImageableArea Tabloid/11x17: "6.00 6.00 786.00 1218.00" ++*ImageableArea Tabloid/11x17: "12.00 12.00 779.76 1211.76" + *da.ImageableArea Tabloid/11x17: "" + *de.ImageableArea Tabloid/11x17 Zoll: "" + *es.ImageableArea Tabloid/11x17: "" +@@ -2689,7 +2689,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea Tabloid/11x17: "" + *zh_TW.ImageableArea Tabloid/11x17 : "" + +-*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "6.00 6.00 836.00 1268.00" ++*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "12.00 12.00 829.68 1261.68" + *da.ImageableArea w842h1274/11x17 (overstr. 297 x 450 mm): "" + *de.ImageableArea w842h1274/11x17 Zoll (Übergröße 11,7x17,7 Zoll): "" + *es.ImageableArea w842h1274/11x17 (Extra 11,7x17,7) : "" +@@ -2705,7 +2705,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w842h1274/11x17 (超大尺寸 11.7x17.7): "" + *zh_TW.ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "" + +-*ImageableArea A3/A3: "6.00 6.00 836.00 1185.00" ++*ImageableArea A3/A3: "12.00 12.00 829.44 1178.16" + *da.ImageableArea A3/A3: "" + *de.ImageableArea A3/A3: "" + *es.ImageableArea A3/A3: "" +@@ -2721,7 +2721,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A3/A3: "" + *zh_TW.ImageableArea A3/A3: "" + +-*ImageableArea A4/A4: "6.00 6.00 589.00 836.00" ++*ImageableArea A4/A4: "12.00 12.00 582.96 829.44" + *da.ImageableArea A4/A4: "" + *de.ImageableArea A4/A4: "" + *es.ImageableArea A4/A4: "" +@@ -2753,7 +2753,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A4Small/A4 (小): "" + *zh_TW.ImageableArea A4Small/A4 (小): "" + +-*ImageableArea A5/A5: "6.00 6.00 414.00 589.00" ++*ImageableArea A5/A5: "12.00 12.00 407.28 582.96" + *da.ImageableArea A5/A5: "" + *de.ImageableArea A5/A5: "" + *es.ImageableArea A5/A5: "" +@@ -2769,7 +2769,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A5/A5: "" + *zh_TW.ImageableArea A5/A5: "" + +-*ImageableArea B4/JIS B4: "6.00 6.00 723.00 1026.00" ++*ImageableArea B4/JIS B4: "12.00 12.00 716.16 1019.52" + *da.ImageableArea B4/JIS B4: "" + *de.ImageableArea B4/B4 (JIS): "" + *es.ImageableArea B4/JIS B4: "" +@@ -2785,7 +2785,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea B4/JIS B4: "" + *zh_TW.ImageableArea B4/JIS B4: "" + +-*ImageableArea B5/JIS B5: "6.00 6.00 510.00 723.00" ++*ImageableArea B5/JIS B5: "12.00 12.00 503.52 716.16" + *da.ImageableArea B5/JIS B5: "" + *de.ImageableArea B5/JIS B5: "" + *es.ImageableArea B5/JIS B5: "" +@@ -2801,7 +2801,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea B5/JIS B5: "" + *zh_TW.ImageableArea B5/JIS B5: "" + +-*ImageableArea DoublePostcard/Double Postcard (JIS): "6.00 6.00 413.50 561.00" ++*ImageableArea DoublePostcard/Double Postcard (JIS): "12.00 12.00 407.28 554.64" + *da.ImageableArea DoublePostcard/Dobbelt postkort (JIS): "" + *de.ImageableArea DoublePostcard/Doppelte Postkarte (JIS): "" + *es.ImageableArea DoublePostcard/Tarjeta postal doble (JIS): "" +@@ -2817,7 +2817,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea DoublePostcard/大号明信片 (JIS): "" + *zh_TW.ImageableArea DoublePostcard/雙聯明信片(JIS): "" + +-*ImageableArea w612h935/Executive (JIS): "6.00 6.00 606.00 929.00" ++*ImageableArea w612h935/Executive (JIS): "12.00 12.00 599.76 922.76" + *da.ImageableArea w612h935/Executive (JIS): "" + *de.ImageableArea w612h935/Executive (JIS): "" + *es.ImageableArea w612h935/Exec (JIS): "" +@@ -2833,7 +2833,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w612h935/Executive (JIS): "" + *zh_TW.ImageableArea w612h935/Executive (JIS): "" + +-*ImageableArea w558h774/16K: "6.00 6.00 552.00 768.00" ++*ImageableArea w558h774/16K: "12.00 12.00 545.76 761.76" + *da.ImageableArea w558h774/16K: "" + *de.ImageableArea w558h774/16K: "" + *es.ImageableArea w558h774/16K: "" +@@ -2849,7 +2849,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w558h774/16K: "" + *zh_TW.ImageableArea w558h774/16K: "" + +-*ImageableArea w774h1116/8K: "6.00 6.00 768.00 1110.00" ++*ImageableArea w774h1116/8K: "12.00 12.00 761.76 1103.76" + *da.ImageableArea w774h1116/8K: "" + *de.ImageableArea w774h1116/8K: "" + *es.ImageableArea w774h1116/8K: "" +@@ -2865,7 +2865,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w774h1116/8K: "" + *zh_TW.ImageableArea w774h1116/8K: "" + +-*ImageableArea Env10/Env Comm10: "11.00 11.00 286.00 673.00" ++*ImageableArea Env10/Env Comm10: "12.00 12.00 284.64 671.76" + *da.ImageableArea Env10/Konvolut Comm10: "" + *de.ImageableArea Env10/Umschlag Comm10: "" + *es.ImageableArea Env10/Sobre Comm10: "" +diff -up hplip-3.14.3/prnt/ps/hp-laserjet_9000_series-ps.ppd.ImageableArea hplip-3.14.3/prnt/ps/hp-laserjet_9000_series-ps.ppd +--- hplip-3.14.3/prnt/ps/hp-laserjet_9000_series-ps.ppd.ImageableArea 2014-03-06 06:11:09.000000000 +0100 ++++ hplip-3.14.3/prnt/ps/hp-laserjet_9000_series-ps.ppd 2014-03-07 10:26:54.408913567 +0100 +@@ -2660,7 +2660,7 @@ currentpagedevice /MediaProcessing known + *CloseUI: *PageRegion + + *DefaultImageableArea: Letter +-*ImageableArea Letter/Letter: "6.00 6.00 606.00 786.00" ++*ImageableArea Letter/Letter: "12.00 12.00 599.76 779.76" + *da.ImageableArea Letter/Letter: "" + *de.ImageableArea Letter/Letter: "" + *es.ImageableArea Letter/Letter: "" +@@ -2692,7 +2692,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea LetterSmall/信纸 (小): "" + *zh_TW.ImageableArea LetterSmall/Letter (小): "" + +-*ImageableArea Executive/Executive: "6.00 6.00 516.00 750.00" ++*ImageableArea Executive/Executive: "12.00 12.00 509.76 743.76" + *da.ImageableArea Executive/Executive: "" + *de.ImageableArea Executive/Executive: "" + *es.ImageableArea Executive/Exec: "" +@@ -2708,7 +2708,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea Executive/Executive: "" + *zh_TW.ImageableArea Executive/Executive: "" + +-*ImageableArea Legal/Legal: "6.00 6.00 606.00 1002.00" ++*ImageableArea Legal/Legal: "12.00 12.00 599.76 995.76" + *da.ImageableArea Legal/Legal: "" + *de.ImageableArea Legal/Legal: "" + *es.ImageableArea Legal/Legal: "" +@@ -2740,7 +2740,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea LegalSmall/Legal (小): "" + *zh_TW.ImageableArea LegalSmall/Legal (小): "" + +-*ImageableArea Tabloid/11x17: "6.00 6.00 786.00 1218.00" ++*ImageableArea Tabloid/11x17: "12.00 12.00 779.76 1211.76" + *da.ImageableArea Tabloid/11x17: "" + *de.ImageableArea Tabloid/11x17 Zoll: "" + *es.ImageableArea Tabloid/11x17: "" +@@ -2756,7 +2756,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea Tabloid/11x17: "" + *zh_TW.ImageableArea Tabloid/11x17 : "" + +-*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "6.00 6.00 836.00 1268.00" ++*ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "12.00 12.00 829.68 1261.68" + *da.ImageableArea w842h1274/11x17 (overstr. 297 x 450 mm): "" + *de.ImageableArea w842h1274/11x17 Zoll (Übergröße 11,7x17,7 Zoll): "" + *es.ImageableArea w842h1274/11x17 (Extra 11,7x17,7) : "" +@@ -2772,7 +2772,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w842h1274/11x17 (超大尺寸 11.7x17.7): "" + *zh_TW.ImageableArea w842h1274/11x17 (Oversize 11.7x17.7): "" + +-*ImageableArea A3/A3: "6.00 6.00 836.00 1185.00" ++*ImageableArea A3/A3: "12.00 12.00 829.44 1178.16" + *da.ImageableArea A3/A3: "" + *de.ImageableArea A3/A3: "" + *es.ImageableArea A3/A3: "" +@@ -2788,7 +2788,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A3/A3: "" + *zh_TW.ImageableArea A3/A3: "" + +-*ImageableArea A4/A4: "6.00 6.00 589.00 836.00" ++*ImageableArea A4/A4: "12.00 12.00 582.96 829.44" + *da.ImageableArea A4/A4: "" + *de.ImageableArea A4/A4: "" + *es.ImageableArea A4/A4: "" +@@ -2820,7 +2820,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A4Small/A4 (小): "" + *zh_TW.ImageableArea A4Small/A4 (小): "" + +-*ImageableArea A5/A5: "6.00 6.00 414.00 589.00" ++*ImageableArea A5/A5: "12.00 12.00 407.28 582.96" + *da.ImageableArea A5/A5: "" + *de.ImageableArea A5/A5: "" + *es.ImageableArea A5/A5: "" +@@ -2836,7 +2836,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea A5/A5: "" + *zh_TW.ImageableArea A5/A5: "" + +-*ImageableArea B4/JIS B4: "6.00 6.00 723.00 1026.00" ++*ImageableArea B4/JIS B4: "12.00 12.00 716.16 1019.52" + *da.ImageableArea B4/JIS B4: "" + *de.ImageableArea B4/B4 (JIS): "" + *es.ImageableArea B4/JIS B4: "" +@@ -2852,7 +2852,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea B4/JIS B4: "" + *zh_TW.ImageableArea B4/JIS B4: "" + +-*ImageableArea B5/JIS B5: "6.00 6.00 510.00 723.00" ++*ImageableArea B5/JIS B5: "12.00 12.00 503.52 716.16" + *da.ImageableArea B5/JIS B5: "" + *de.ImageableArea B5/JIS B5: "" + *es.ImageableArea B5/JIS B5: "" +@@ -2868,7 +2868,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea B5/JIS B5: "" + *zh_TW.ImageableArea B5/JIS B5: "" + +-*ImageableArea DoublePostcard/Double Postcard (JIS): "6.00 6.00 413.50 561.00" ++*ImageableArea DoublePostcard/Double Postcard (JIS): "12.00 12.00 407.28 554.64" + *da.ImageableArea DoublePostcard/Dobbelt postkort (JIS): "" + *de.ImageableArea DoublePostcard/Doppelte Postkarte (JIS): "" + *es.ImageableArea DoublePostcard/Tarjeta postal doble (JIS): "" +@@ -2884,7 +2884,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea DoublePostcard/大号明信片 (JIS): "" + *zh_TW.ImageableArea DoublePostcard/雙聯明信片(JIS): "" + +-*ImageableArea w612h935/Executive (JIS): "6.00 6.00 606.00 929.00" ++*ImageableArea w612h935/Executive (JIS): "12.00 12.00 599.76 922.76" + *da.ImageableArea w612h935/Executive (JIS): "" + *de.ImageableArea w612h935/Executive (JIS): "" + *es.ImageableArea w612h935/Exec (JIS): "" +@@ -2900,7 +2900,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w612h935/Executive (JIS): "" + *zh_TW.ImageableArea w612h935/Executive (JIS): "" + +-*ImageableArea w558h774/16K: "6.00 6.00 552.00 768.00" ++*ImageableArea w558h774/16K: "12.00 12.00 545.76 761.76" + *da.ImageableArea w558h774/16K: "" + *de.ImageableArea w558h774/16K: "" + *es.ImageableArea w558h774/16K: "" +@@ -2916,7 +2916,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w558h774/16K: "" + *zh_TW.ImageableArea w558h774/16K: "" + +-*ImageableArea w774h1116/8K: "6.00 6.00 768.00 1110.00" ++*ImageableArea w774h1116/8K: "12.00 12.00 761.76 1103.76" + *da.ImageableArea w774h1116/8K: "" + *de.ImageableArea w774h1116/8K: "" + *es.ImageableArea w774h1116/8K: "" +@@ -2932,7 +2932,7 @@ currentpagedevice /MediaProcessing known + *zh_CN.ImageableArea w774h1116/8K: "" + *zh_TW.ImageableArea w774h1116/8K: "" + +-*ImageableArea Env10/Env Comm10: "11.00 11.00 286.00 673.00" ++*ImageableArea Env10/Env Comm10: "12.00 12.00 284.64 671.76" + *da.ImageableArea Env10/Konvolut Comm10: "" + *de.ImageableArea Env10/Umschlag Comm10: "" + *es.ImageableArea Env10/Sobre Comm10: "" diff --git a/SOURCES/hplip-pstotiff-is-rubbish.patch b/SOURCES/hplip-pstotiff-is-rubbish.patch new file mode 100644 index 0000000..014e2cf --- /dev/null +++ b/SOURCES/hplip-pstotiff-is-rubbish.patch @@ -0,0 +1,65 @@ +diff -up hplip-3.15.2/fax/filters/pstotiff.pstotiff-is-rubbish hplip-3.15.2/fax/filters/pstotiff +--- hplip-3.15.2/fax/filters/pstotiff.pstotiff-is-rubbish 2015-02-04 09:40:43.169147058 +0100 ++++ hplip-3.15.2/fax/filters/pstotiff 2015-02-04 09:47:20.786983832 +0100 +@@ -1,45 +1,16 @@ +-#!/usr/bin/env python +- +-import os +-import os.path +-import time +-import sys +-import tempfile +- +-PY3 = sys.version_info[0] == 3 +- +-READ_SIZE = 8192 +- +-total_bytes_read = 0 +-temp_in_file = "-" +- +-if (len(sys.argv) > 6): +- temp_in_file = sys.argv[6] +- +-temp_out_handle, temp_out_fname = tempfile.mkstemp() +- +-font = "-I/usr/share/cups/fonts" +-device = "-sDEVICE=tiffg4 -dMaxStripSize=0 -r204x196 -dNOPAUSE -dBATCH -dSAFER -dPARANOIDSAFER -dSHORTERRORS -dWRITESYSTEMDICT -dGHOSTSCRIPT -sstdout=%stderr -sOutputFile=" + temp_out_fname + " " + temp_in_file +- +-gs_command = "/usr/bin/gs" + " " + font + " " + device +- +-exit_code = os.system(gs_command) +- +-file_len = os.stat(temp_out_fname).st_size +-if (file_len < READ_SIZE): +- READ_SIZE = file_len +- +-os.close(temp_out_handle) +- +-out_handle = open(temp_out_fname, mode='rb') +-while (total_bytes_read < file_len): +- data = out_handle.read(READ_SIZE) +- if PY3: +- sys.stdout.buffer.write(data) +- else: +- sys.stdout.write(data) +- total_bytes_read += READ_SIZE +-out_handle.close() +- +-os.remove(temp_out_fname) +-sys.exit(0) ++#!/bin/sh ++if [ $# -lt 6 ]; then ++ IN=-_ ++else ++ IN="$6" ++fi ++ ++TMPFILE=`mktemp /tmp/pstotiff.XXXXXX` || exit 1 ++gs -I/usr/share/cups/fonts -sDEVICE=tiffg4 -dMaxStripSize=0 -r204x196 \ ++ -dNOPAUSE -dBATCH -dSAFER -dPARANOIDSAFER \ ++ -dSHORTERRORS -dWRITESYSTEMDICT -dGHOSTSCRIPT \ ++ -sstdout=%stderr -sOutputFile="$TMPFILE" "$IN" ++RET=$? ++cat "$TMPFILE" ++rm -f "$TMPFILE" ++exit $RET diff --git a/SOURCES/hplip-repack.sh b/SOURCES/hplip-repack.sh new file mode 100755 index 0000000..7639dbe --- /dev/null +++ b/SOURCES/hplip-repack.sh @@ -0,0 +1,22 @@ +#!/usr/bin/bash + + +VERSION=$1 + +if [ "${VERSION:="*"}" == "*" ] +then + echo "Define a version of hplip as an argument." + exit 1 +fi + +# extract the original tarball +tar -xaf hplip-$VERSION.tar.gz || exit 1 + +# remove unwanted files +rm hplip-$VERSION/prnt/hpcups/ErnieFilter.{cpp,h} hplip-$VERSION/prnt/hpijs/ernieplatform.h || exit 1 + +# compress into a new tarball +tar -cjvf hplip-$VERSION-repack.tar.gz hplip-$VERSION || exit 1 + +# upload a new source tarball +#fedpkg new-sources hplip-$VERSION-repack.tar.gz || exit 1 diff --git a/SOURCES/hplip-retry-open.patch b/SOURCES/hplip-retry-open.patch new file mode 100644 index 0000000..3667108 --- /dev/null +++ b/SOURCES/hplip-retry-open.patch @@ -0,0 +1,16 @@ +diff -up hplip-3.9.12/prnt/backend/hp.c.retry-open hplip-3.9.12/prnt/backend/hp.c +--- hplip-3.9.12/prnt/backend/hp.c.retry-open 2010-01-05 15:14:30.000000000 +0000 ++++ hplip-3.9.12/prnt/backend/hp.c 2010-01-05 15:16:03.521911780 +0000 +@@ -741,12 +741,6 @@ int main(int argc, char *argv[]) + goto bugout; + } + +- if (stat != HPMUD_R_DEVICE_BUSY) +- { +- BUG("ERROR: open device failed stat=%d: %s\n", stat, argv[0]); +- goto bugout; +- } +- + /* Display user error. */ + device_event(argv[0], printer, 5000+stat, argv[2], argv[1], argv[3]); + diff --git a/SOURCES/hplip-revert-plugins.patch b/SOURCES/hplip-revert-plugins.patch new file mode 100644 index 0000000..823fb14 --- /dev/null +++ b/SOURCES/hplip-revert-plugins.patch @@ -0,0 +1,1178 @@ +diff -up hplip-3.20.9/data/models/models.dat.revert-plugins hplip-3.20.9/data/models/models.dat +--- hplip-3.20.9/data/models/models.dat.revert-plugins 2020-10-02 07:44:26.873416731 +0200 ++++ hplip-3.20.9/data/models/models.dat 2020-10-02 08:49:32.418280169 +0200 +@@ -2123,7 +2123,7 @@ ppd-name=hp-laserjet_100_color_mfp_m175- + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=64 + power-settings=0 + pq-diag-type=0 +@@ -3373,7 +3373,7 @@ model1=HP LaserJet Pro MFP M125r + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3416,7 +3416,7 @@ model1=HP LaserJet Pro MFP M125s + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3459,7 +3459,7 @@ model1=HP LaserJet Pro MFP M125a + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3502,7 +3502,7 @@ model1=HP LaserJet Pro MFP M125nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3545,7 +3545,7 @@ model1=HP LaserJet Pro MFP M125rnw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3588,7 +3588,7 @@ model1=HP LaserJet Pro MFP M125nr + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3631,7 +3631,7 @@ model1=HP LaserJet Pro MFP M126a + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3674,7 +3674,7 @@ model1=HP LaserJet Pro MFP M126nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3717,7 +3717,7 @@ model1=HP LaserJet Pro MFP M127fp + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3760,7 +3760,7 @@ model1=HP LaserJet Pro MFP M127fn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3846,7 +3846,7 @@ model1=HP LaserJet Pro MFP M128fn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3889,7 +3889,7 @@ model1=HP LaserJet Pro MFP M128fp + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -3932,7 +3932,7 @@ model1=HP LaserJet Pro MFP M128fw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -4225,7 +4225,7 @@ model1=HP Color LaserJet Pro MPF M177fw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -4277,8 +4277,8 @@ model1=HP LaserJet Pro 200 color MFP M27 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4331,8 +4331,8 @@ model1=HP LaserJet 200 Color MFP M275s + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m275-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4385,8 +4385,8 @@ model1=HP LaserJet 200 Color MFP M275u + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m275-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4439,8 +4439,8 @@ model1=HP LaserJet 200 Color MFP M275t + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m275-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4492,8 +4492,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4545,8 +4545,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4598,8 +4598,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4652,8 +4652,8 @@ model1=HP LaserJet Pro 200 color MFP M27 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4705,8 +4705,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4758,8 +4758,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4811,8 +4811,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4864,8 +4864,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4917,8 +4917,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -4970,8 +4970,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -5023,8 +5023,8 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m276-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -5077,8 +5077,8 @@ model1=HP LaserJet 200 Color MFP M275nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_200_colormfp_m275-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -6214,7 +6214,7 @@ model1=HP LaserJet Pro MFP M225rdn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=2112 + power-settings=0 + ppd-name=hp-laserjet_pro_mfp_m225_m226-ps.ppd +@@ -6257,7 +6257,7 @@ model1=HP LaserJet Pro MFP M225dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=2112 + power-settings=0 + ppd-name=hp-laserjet_pro_mfp_m225_m226-ps.ppd +@@ -6298,7 +6298,7 @@ model1=HP LaserJet Pro MFP M225dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=2112 + power-settings=0 + ppd-name=hp-laserjet_pro_mfp_m225_m226-ps.ppd +@@ -6339,7 +6339,7 @@ model1=HP LaserJet Pro MFP M226dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=2112 + power-settings=0 + ppd-name=hp-laserjet_pro_mfp_m225_m226-ps.ppd +@@ -6381,7 +6381,7 @@ model1=HP LaserJet Pro MFP M226dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=2112 + power-settings=0 + ppd-name=hp-laserjet_pro_mfp_m225_m226-ps.ppd +@@ -6830,8 +6830,8 @@ model1=HP LaserJet 300 Color MFP M375nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-lj_300_400_color_mfp_m375_m475-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -8227,8 +8227,8 @@ model1=HP LaserJet 400 Color MFP M475dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-lj_300_400_color_mfp_m375_m475-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -8371,8 +8371,8 @@ model1=HP LaserJet 400 MFP M425dw + monitor-type=1 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_400_mfp_m425-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -8416,8 +8416,8 @@ model1=HP Laserjet 400 MFP M425dn + monitor-type=1 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_400_mfp_m425-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -8804,8 +8804,8 @@ model1=HP LaserJet 400 Color MFP M475dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-lj_300_400_color_mfp_m375_m475-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -9115,8 +9115,8 @@ model1=HP LaserJet Pro MFP M435nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -9738,8 +9738,8 @@ model1=HP Color Laserjet Pro MFP M476dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m476-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -9780,8 +9780,8 @@ model1=HP Color Laserjet Pro MFP M476nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m476-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -9822,8 +9822,8 @@ model1=HP Color Laserjet Pro MFP M476dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m476-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -10118,8 +10118,8 @@ model1=HP LaserJet Pro 500 color MFP M57 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_500_color_mfp_m570-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -10172,8 +10172,8 @@ model1=HP LaserJet Pro 500 color MFP M57 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_500_color_mfp_m570-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -10747,8 +10747,8 @@ model1=HP LaserJet Pro M521dn Multifunct + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_mfp_m521-ps.ppd + family-ppd=hp-postscript-laserjet.ppd +@@ -10792,8 +10792,8 @@ model1=HP LaserJet Pro M521dw Multifunct + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_mfp_m521-ps.ppd + family-ppd=hp-postscript-laserjet.ppd +@@ -18353,7 +18353,7 @@ model1=HP LaserJet Pro CP1025 Color Prin + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -18989,7 +18989,7 @@ model1=HP LaserJet Professional P 1102w + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19032,7 +19032,7 @@ model1=HP Laserjet Professional P1106w P + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19075,7 +19075,7 @@ model1=HP Laserjet Professional P1106 Pr + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19118,7 +19118,7 @@ model1=HP LaserJet Professional P1107 Pr + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19161,7 +19161,7 @@ model1=HP LaserJet Professional P1107w P + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19204,7 +19204,7 @@ model1=HP Laserjet Professional P1108w P + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19247,7 +19247,7 @@ model1=HP Laserjet Professional P1108 Pr + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19290,7 +19290,7 @@ model1=HP LaserJet Professional P1109w P + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19333,7 +19333,7 @@ model1=HP LaserJet Professional P1109 Pr + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -19683,7 +19683,7 @@ model2=HP LaserJet Professional M1132s M + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -19726,7 +19726,7 @@ model1=HP Laserjet Professional M1136 Mu + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -19769,7 +19769,7 @@ model1=HP LaserJet Professional M1137 Mu + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -19812,7 +19812,7 @@ model1=HP LaserJet Professional M1138 Mu + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -19855,7 +19855,7 @@ model1=HP LaserJet Professional M1139 Mu + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20447,7 +20447,7 @@ model1=HP LaserJet Professional M1212nf + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20490,7 +20490,7 @@ model1=HP LaserJet Professional M1213nf + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20533,7 +20533,7 @@ model1=HP LaserJet Professional M1214nfh + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20675,7 +20675,7 @@ model1=HP LaserJet Professional M1216nfh + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20718,7 +20718,7 @@ model1=HP Color LaserJet CP1217 Printer + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -20813,7 +20813,7 @@ model1=HP Laserjet M1210 MFP Series + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20903,7 +20903,7 @@ model1=HP HotSpot LaserJet Pro M1218nfs + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20945,7 +20945,7 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -20987,7 +20987,7 @@ linefeed-cal-type=0 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -21030,7 +21030,7 @@ model1=HP LaserJet Professional M1219nf + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -22320,8 +22320,8 @@ model1=HP LaserJet Professional CM1411fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22373,8 +22373,8 @@ model1=HP LaserJet Professional CM1412fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22426,8 +22426,8 @@ model1=HP LaserJet Professional CM1413fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22479,8 +22479,8 @@ model1=HP LaserJet Professional CM1415fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22532,8 +22532,8 @@ model1=HP LaserJet Professional CM1415fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22585,8 +22585,8 @@ model1=HP LaserJet Professional CM1416fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22638,8 +22638,8 @@ model1=HP LaserJet Professional CM1417fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -22691,8 +22691,8 @@ model1=HP LaserJet Professional CM1418fn + monitor-type=0 + panel-check-type=1 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_cm1410_series-ps.ppd + pq-diag-type=0 +@@ -23889,8 +23889,8 @@ model1=HP LaserJet M1536dnf MFP + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_m1530_mfp_series-ps.ppd + family-ppd=hp-postscript-laserjet.ppd +@@ -23934,8 +23934,8 @@ model1=HP LaserJet M1537dnf MFP + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_m1530_mfp_series-ps.ppd + pq-diag-type=0 +@@ -23978,8 +23978,8 @@ model1=HP LaserJet M1538dnf MFP + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_m1530_mfp_series-ps.ppd + pq-diag-type=0 +@@ -24022,8 +24022,8 @@ model1=HP LaserJet M1539dnf MFP + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_m1530_mfp_series-ps.ppd + pq-diag-type=0 +@@ -24109,7 +24109,7 @@ model1=HP LaserJet Professional P1567 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24152,7 +24152,7 @@ model1=HP LaserJet Professional P1568 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24195,7 +24195,7 @@ model1=HP LaserJet Professional P1569 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24631,7 +24631,7 @@ model1=HP LaserJet Professional P1606dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24674,7 +24674,7 @@ model1=HP LaserJet Professional P1607dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24717,7 +24717,7 @@ model1=HP LaserJet Professional P1608dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -24760,7 +24760,7 @@ model1=HP LaserJet Professional P1609dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -29946,8 +29946,8 @@ ppd-name=hp-color_laserjet_2800-ps.ppd + monitor-type=0 + panel-check-type=1 + pcard-type=2 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -30068,8 +30068,8 @@ ppd-name=hp-color_laserjet_2820-ps.ppd + monitor-type=0 + panel-check-type=1 + pcard-type=2 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -53138,8 +53138,8 @@ model1=HP Color LaserJet MFP M277n + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_mfp_m277 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -53192,8 +53192,8 @@ model1=HP Color LaserJet MFP M277dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m277 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -53933,8 +53933,8 @@ model1=HP Color LaserJet Pro MFP M274n + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_mfp_m274-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54716,8 +54716,8 @@ model1=HP Laserjet Pro MFP M426fdn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=laserjet_mfp_m426_m427 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54761,8 +54761,8 @@ model1=HP Laserjet Pro MFP M426fdw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=laserjet_mfp_m426_m427 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54806,8 +54806,8 @@ model1=HP Laserjet Pro MFP M427dn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=laserjet_mfp_m426_m427 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54851,8 +54851,8 @@ model1=HP Laserjet Pro MFP M427fdw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=laserjet_mfp_m426_m427 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54896,8 +54896,8 @@ model1=HP Laserjet Pro MFP M426dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=laserjet_mfp_m426_m427 + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -54941,8 +54941,8 @@ model1=HP Laserjet Pro MFP M427dw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-laserjet_mfp_m426_m427-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -55271,8 +55271,8 @@ model1=HP Color Laserjet Pro MFP M477 fn + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m477-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -55313,8 +55313,8 @@ model1=HP Color Laserjet Pro MFP M477 fd + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=color_laserjet_pro_mfp_m477d + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -55355,8 +55355,8 @@ model1=HP Color Laserjet Pro MFP M477 fd + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m477d-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -55437,7 +55437,7 @@ model1=HP LaserJet Pro MFP M127fs + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=65 + power-settings=0 + pq-diag-type=0 +@@ -56513,8 +56513,8 @@ model1=HP Color Laserjet MFP M377 fnw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m377-ps.ppd + family-ppd=hp-postscript-laserjet-pro.ppd +@@ -57475,8 +57475,8 @@ model1=HP Color LaserJet MFP M277c6 + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + ppd-name=hp-color_laserjet_pro_mfp_m277-ps.ppd + pq-diag-type=0 +@@ -60453,7 +60453,7 @@ model1=HP LaserJet Pro MFP M26a + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -60493,7 +60493,7 @@ model1=HP LaserJet Pro MFP M26nw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -60653,7 +60653,7 @@ model1=HP LaserJet Pro MFP M27cnw + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 ++plugin=1 + plugin-reason=1 + power-settings=0 + pq-diag-type=0 +@@ -65387,8 +65387,8 @@ model1=HP Smart Tank Plus 570 series + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -67470,8 +67470,8 @@ model2=HP DeskJet Ink Advantage 2700 All + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -67510,8 +67510,8 @@ model1=HP DeskJet Plus 4100 All-in-One P + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 +@@ -67632,8 +67632,8 @@ model2=HP DeskJet Ink Advantage 2300 All + monitor-type=0 + panel-check-type=0 + pcard-type=0 +-plugin=0 +-plugin-reason=0 ++plugin=1 ++plugin-reason=64 + power-settings=0 + pq-diag-type=0 + r-type=0 diff --git a/SOURCES/hplip-scan-tmp.patch b/SOURCES/hplip-scan-tmp.patch new file mode 100644 index 0000000..552a112 --- /dev/null +++ b/SOURCES/hplip-scan-tmp.patch @@ -0,0 +1,25 @@ +diff -up hplip-3.18.12/scan.py.scan-tmp hplip-3.18.12/scan.py +--- hplip-3.18.12/scan.py.scan-tmp 2019-01-08 12:48:20.194815147 +0100 ++++ hplip-3.18.12/scan.py 2019-01-08 12:50:47.942620000 +0100 +@@ -1887,7 +1887,7 @@ try: + if ('editor' in dest or 'viewer' in dest or 'email' in dest or 'print' in dest) \ + and not file_saved: + +- output_fd, output = utils.make_temp_file(suffix='.png') ++ output_fd, output = utils.make_temp_file(dir='/var/tmp', suffix='.png') + try: + '''pyPlatform = platform.python_version() + num = pyPlatform.split('.') +diff -up hplip-3.18.12/scan/sane.py.scan-tmp hplip-3.18.12/scan/sane.py +--- hplip-3.18.12/scan/sane.py.scan-tmp 2018-12-03 08:10:22.000000000 +0100 ++++ hplip-3.18.12/scan/sane.py 2019-01-08 12:48:20.194815147 +0100 +@@ -425,7 +425,8 @@ class ScanThread(threading.Thread): + self.dev = device + self.update_queue = update_queue + self.event_queue = event_queue +- self.buffer_fd, self.buffer_path = utils.make_temp_file(prefix='hpscan') ++ self.buffer_fd, self.buffer_path = utils.make_temp_file(dir='/var/tmp', ++ prefix='hpscan') + self.buffer = os.fdopen(self.buffer_fd, "w+b") + self.format = -1 + self.format_name = '' diff --git a/SOURCES/hplip-silence-ioerror.patch b/SOURCES/hplip-silence-ioerror.patch new file mode 100644 index 0000000..013931b --- /dev/null +++ b/SOURCES/hplip-silence-ioerror.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.15.2/base/logger.py.silence-ioerror hplip-3.15.2/base/logger.py +--- hplip-3.15.2/base/logger.py.silence-ioerror 2015-03-16 16:48:12.750337907 +0000 ++++ hplip-3.15.2/base/logger.py 2015-03-16 16:48:34.850253564 +0000 +@@ -199,6 +199,8 @@ class Logger(object): + out.write('\n') + + out.flush() ++ except IOError: ++ pass + finally: + self._lock.release() + diff --git a/SOURCES/hplip-snmp-quirks.patch b/SOURCES/hplip-snmp-quirks.patch new file mode 100644 index 0000000..3f7be41 --- /dev/null +++ b/SOURCES/hplip-snmp-quirks.patch @@ -0,0 +1,21 @@ +diff -up hplip-3.19.6/prnt/drv/hpcups.drv.in.snmp-quirks hplip-3.19.6/prnt/drv/hpcups.drv.in +--- hplip-3.19.6/prnt/drv/hpcups.drv.in.snmp-quirks 2019-07-12 08:38:36.362527348 +0200 ++++ hplip-3.19.6/prnt/drv/hpcups.drv.in 2019-07-12 08:46:28.236417835 +0200 +@@ -10334,6 +10334,8 @@ Manufacturer "HP" + Attribute "NickName" "" "HP Officejet Pro 8500 a909a, hpcups $Version" + Attribute "ShortNickName" "" "HP OJ Pro 8500 a909a hpijs" + Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet pro 8500 a909a;DES:officejet pro 8500 a909a;" ++ // This device lies about its supplies capacity. ++ Attribute "cupsSNMPQuirks" "" "capacity" + PCFileName "hp-officejet_pro_8500_a909a.ppd" + Attribute "Product" "" "(HP Officejet Pro 8500 All-in-one Printer - a909a)" + } +@@ -10342,6 +10344,8 @@ Manufacturer "HP" + Attribute "NickName" "" "HP Officejet Pro 8500 a909g, hpcups $Version" + Attribute "ShortNickName" "" "HP OJ Pro 8500 a909g hpijs" + Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet pro 8500 a909g;DES:officejet pro 8500 a909g;" ++ // This device lies about its supplies capacity. ++ Attribute "cupsSNMPQuirks" "" "capacity" + PCFileName "hp-officejet_pro_8500_a909g.ppd" + Attribute "Product" "" "(HP Officejet Pro 8500 Wireless All-in-one Printer - a909g)" + } diff --git a/SOURCES/hplip-strncpy.patch b/SOURCES/hplip-strncpy.patch new file mode 100644 index 0000000..eac29b8 --- /dev/null +++ b/SOURCES/hplip-strncpy.patch @@ -0,0 +1,48 @@ +diff -up hplip-3.14.10/prnt/hpcups/HPCupsFilter.cpp.strncpy hplip-3.14.10/prnt/hpcups/HPCupsFilter.cpp +--- hplip-3.14.10/prnt/hpcups/HPCupsFilter.cpp.strncpy 2015-01-21 16:52:44.066497631 +0000 ++++ hplip-3.14.10/prnt/hpcups/HPCupsFilter.cpp 2015-01-21 16:59:46.216434376 +0000 +@@ -203,6 +203,7 @@ HPCupsFilter::HPCupsFilter() : m_pPrinte + adj_k_width = 0; + black_raster = NULL; + color_raster = NULL; ++ memset (&m_JA, 0, sizeof (m_JA)); + } + + HPCupsFilter::~HPCupsFilter() +@@ -384,9 +385,9 @@ DRIVER_ERROR HPCupsFilter::startPage (cu + m_JA.media_attributes.physical_height = cups_header->PageSize[1]; + m_JA.media_attributes.printable_width = ((cups_header->ImagingBoundingBox[2]-cups_header->ImagingBoundingBox[0]) * horz_res) / 72; + m_JA.media_attributes.printable_height = ((cups_header->ImagingBoundingBox[3]-cups_header->ImagingBoundingBox[1]) * vert_res) / 72; +- strncpy(m_JA.media_attributes.PageSizeName, &cups_header->cupsString[0][0], sizeof(m_JA.media_attributes.PageSizeName)); +- strncpy(m_JA.media_attributes.MediaTypeName, cups_header->MediaType, sizeof(m_JA.media_attributes.MediaTypeName)); +- strncpy(m_JA.quality_attributes.hbpl1_print_quality, cups_header->OutputType, sizeof(m_JA.quality_attributes.hbpl1_print_quality)); ++ strncpy(m_JA.media_attributes.PageSizeName, &cups_header->cupsString[0][0], sizeof(m_JA.media_attributes.PageSizeName)-1); ++ strncpy(m_JA.media_attributes.MediaTypeName, cups_header->MediaType, sizeof(m_JA.media_attributes.MediaTypeName)-1); ++ strncpy(m_JA.quality_attributes.hbpl1_print_quality, cups_header->OutputType, sizeof(m_JA.quality_attributes.hbpl1_print_quality)-1); + m_JA.color_mode = cups_header->cupsRowStep; + } + else { +diff -up hplip-3.14.10/prnt/hpijs/hpijs.cpp.strncpy hplip-3.14.10/prnt/hpijs/hpijs.cpp +--- hplip-3.14.10/prnt/hpijs/hpijs.cpp.strncpy 2015-01-21 17:00:03.225512410 +0000 ++++ hplip-3.14.10/prnt/hpijs/hpijs.cpp 2015-01-21 17:04:59.308870785 +0000 +@@ -605,7 +605,7 @@ int main (int argc, char *argv[], char * + } + + if (argc > 2) +- strncpy(user_name, argv[2], sizeof(user_name)); ++ strncpy(user_name, argv[2], sizeof(user_name) - 1); + + #ifdef HAVE_LIBHPIP + char *pDev; +diff -up hplip-3.14.10/prnt/hpijs/hpijsfax.cpp.strncpy hplip-3.14.10/prnt/hpijs/hpijsfax.cpp +--- hplip-3.14.10/prnt/hpijs/hpijsfax.cpp.strncpy 2015-01-21 17:05:06.585904171 +0000 ++++ hplip-3.14.10/prnt/hpijs/hpijsfax.cpp 2015-01-21 17:05:15.787946389 +0000 +@@ -282,7 +282,7 @@ int hpijsFaxServer (int argc, char **arg + char user_name[32]={0,}; + + if (argc > 2) +- strncpy(user_name, argv[2], sizeof(user_name)); ++ strncpy(user_name, argv[2], sizeof(user_name) - 1); + + snprintf(hpFileName,sizeof(hpFileName),"%s/hp_%s_ijsfax_Log_XXXXXX",CUPS_TMP_DIR, user_name); + diff --git a/SOURCES/hplip-strstr-const.patch b/SOURCES/hplip-strstr-const.patch new file mode 100644 index 0000000..f2ac91b --- /dev/null +++ b/SOURCES/hplip-strstr-const.patch @@ -0,0 +1,50 @@ +diff -up hplip-3.9.6b/prnt/hpijs/dj3320.cpp.strstr-const hplip-3.9.6b/prnt/hpijs/dj3320.cpp +--- hplip-3.9.6b/prnt/hpijs/dj3320.cpp.strstr-const 2009-06-25 21:02:29.000000000 +0100 ++++ hplip-3.9.6b/prnt/hpijs/dj3320.cpp 2009-07-27 16:14:52.868542337 +0100 +@@ -405,7 +405,7 @@ DISPLAY_STATUS DJ3320::ParseError (BYTE + { + DRIVER_ERROR err = NO_ERROR; + BYTE byDevIDBuffer[DevIDBuffSize]; +- char *pcStr = NULL; ++ const char *pcStr = NULL; + BYTE byStatus1, byStatus2; + + memset(byDevIDBuffer, 0, sizeof(byDevIDBuffer)); +diff -up hplip-3.9.6b/prnt/hpijs/registry.cpp.strstr-const hplip-3.9.6b/prnt/hpijs/registry.cpp +--- hplip-3.9.6b/prnt/hpijs/registry.cpp.strstr-const 2009-06-25 21:02:29.000000000 +0100 ++++ hplip-3.9.6b/prnt/hpijs/registry.cpp 2009-07-27 16:18:41.583417187 +0100 +@@ -290,14 +290,14 @@ DRIVER_ERROR DeviceRegistry::SelectDevic + err = pSS->GetDeviceID(DevIDBuffer, DevIDBuffSize, FALSE); + ERRCHECK; // should be either NO_ERROR or BAD_DEVICE_ID + +- char *cmdStr = (char *) strstr ((const char *) DevIDBuffer+2, "CMD:"); ++ char *cmdStr = strstr ((char *) DevIDBuffer+2, "CMD:"); + char *cmdStrEnd; + if ((strstr((const char *) DevIDBuffer+2,"CMD:LDL"))) + { + device = eDJ3320; + match = TRUE; + } +- if (!match && cmdStr && (cmdStrEnd = (char *) strstr (cmdStr, ";"))) ++ if (!match && cmdStr && (cmdStrEnd = strstr (cmdStr, ";"))) + { + *cmdStrEnd = '\0'; + if (strstr (cmdStr, "LDL")) +@@ -309,12 +309,12 @@ DRIVER_ERROR DeviceRegistry::SelectDevic + } + if (!match && !cmdStr) + { +- cmdStr = (char *) strstr ((const char *) DevIDBuffer+2, "COMMAND SET:"); ++ cmdStr = strstr ((char *) DevIDBuffer+2, "COMMAND SET:"); + } +- if (!match && cmdStr && (strstr ((const char *) cmdStr+4, "POSTSCRIPT") || +- strstr ((const char *) cmdStr+4, "PostScript") || +- strstr ((const char *) cmdStr+4, "Postscript") || +- strstr ((const char *) cmdStr+4, "postscript") )) ++ if (!match && cmdStr && (strstr (cmdStr+4, "POSTSCRIPT") || ++ strstr (cmdStr+4, "PostScript") || ++ strstr (cmdStr+4, "Postscript") || ++ strstr (cmdStr+4, "postscript") )) + { + device = ePScript; + match = TRUE; diff --git a/SOURCES/hplip-systray-blockerror.patch b/SOURCES/hplip-systray-blockerror.patch new file mode 100644 index 0000000..92a8cdf --- /dev/null +++ b/SOURCES/hplip-systray-blockerror.patch @@ -0,0 +1,20 @@ +diff --git a/systray.py b/systray.py +index 07db0fa..3a35b30 100644 +--- a/systray.py ++++ b/systray.py +@@ -89,7 +89,14 @@ if __name__ == '__main__': + log.debug("Creating pipe: hpssd (%d) ==> systemtray (%d)" % (w1, r1)) + + parent_pid = os.getpid() +- child_pid1 = os.fork() ++ try: ++ child_pid1 = os.fork() ++ except BlockingIOErrror as e: ++ log.error("hp-systray: error during fork - %s" % e) ++ os.close(w1) ++ os.close(r1) ++ mod.unlockInstance() ++ sys.exit(1) + + if child_pid1: + # parent (UI) diff --git a/SOURCES/hplip-thread-isalive-removed.patch b/SOURCES/hplip-thread-isalive-removed.patch new file mode 100644 index 0000000..080b8fd --- /dev/null +++ b/SOURCES/hplip-thread-isalive-removed.patch @@ -0,0 +1,93 @@ +diff --git a/copier/copier.py b/copier/copier.py +index a595baa..7794f48 100644 +--- a/copier/copier.py ++++ b/copier/copier.py +@@ -73,13 +73,13 @@ class PMLCopyDevice(device.Device): + + def isCopyActive(self): + if self.copy_thread is not None: +- return self.copy_thread.isAlive() ++ return self.copy_thread.is_alive() + else: + return False + + def waitForCopyThread(self): + if self.copy_thread is not None and \ +- self.copy_thread.isAlive(): ++ self.copy_thread.is_alive(): + + self.copy_thread.join() + +diff --git a/fax/fax.py b/fax/fax.py +index 3d69226..0878a64 100644 +--- a/fax/fax.py ++++ b/fax/fax.py +@@ -478,13 +478,13 @@ class FaxDevice(device.Device): + + def isSendFaxActive(self): + if self.send_fax_thread is not None: +- return self.send_fax_thread.isAlive() ++ return self.send_fax_thread.is_alive() + else: + return False + + def waitForSendFaxThread(self): + if self.send_fax_thread is not None and \ +- self.send_fax_thread.isAlive(): ++ self.send_fax_thread.is_alive(): + + try: + self.send_fax_thread.join() +diff --git a/fax/pmlfax.py b/fax/pmlfax.py +index b68ff6a..b1020d0 100644 +--- a/fax/pmlfax.py ++++ b/fax/pmlfax.py +@@ -179,13 +179,13 @@ class PMLFaxDevice(FaxDevice): + + def isUploadLogActive(self): + if self.upload_log_thread is not None: +- return self.upload_log_thread.isAlive() ++ return self.upload_log_thread.is_alive() + else: + return False + + def waitForUploadLogThread(self): + if self.upload_log_thread is not None and \ +- self.upload_log_thread.isAlive(): ++ self.upload_log_thread.is_alive(): + + self.upload_log_thread.join() + +diff --git a/scan/sane.py b/scan/sane.py +index b6c4acd..e8f8db8 100755 +--- a/scan/sane.py ++++ b/scan/sane.py +@@ -378,14 +378,14 @@ class ScanDevice: + + def isScanActive(self): + if self.scan_thread is not None: +- return self.scan_thread.isAlive() and self.scan_thread.scan_active ++ return self.scan_thread.is_alive() and self.scan_thread.scan_active + else: + return False + + + def waitForScanDone(self): + if self.scan_thread is not None and \ +- self.scan_thread.isAlive() and \ ++ self.scan_thread.is_alive() and \ + self.scan_thread.scan_active: + + try: +@@ -398,9 +398,9 @@ class ScanDevice: + #time.sleep(0.5) + if self.scan_thread is not None: + while True: +- #print self.scan_thread.isAlive() ++ #print self.scan_thread.is_alive() + #print self.scan_thread.scan_active +- if self.scan_thread.isAlive() and \ ++ if self.scan_thread.is_alive() and \ + self.scan_thread.scan_active: + return + diff --git a/SOURCES/hplip-timeb-removed.patch b/SOURCES/hplip-timeb-removed.patch new file mode 100644 index 0000000..1dc9aff --- /dev/null +++ b/SOURCES/hplip-timeb-removed.patch @@ -0,0 +1,12 @@ +diff --git a/prnt/hpcups/CommonDefinitions.h b/prnt/hpcups/CommonDefinitions.h +index 082aec9..86763d4 100644 +--- a/prnt/hpcups/CommonDefinitions.h ++++ b/prnt/hpcups/CommonDefinitions.h +@@ -48,7 +48,6 @@ + #include + #include + #include +-#include + #include + + #ifndef _GNU_SOURCE diff --git a/SOURCES/hplip-typo.patch b/SOURCES/hplip-typo.patch new file mode 100644 index 0000000..4d93801 --- /dev/null +++ b/SOURCES/hplip-typo.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.20.11/firmware.py.typo hplip-3.20.11/firmware.py +--- hplip-3.20.11/firmware.py.typo 2021-02-03 10:53:34.311743805 +0100 ++++ hplip-3.20.11/firmware.py 2021-02-03 10:54:13.229386257 +0100 +@@ -99,7 +99,7 @@ try: + if mode == GUI_MODE and (ui_toolkit == 'qt4' or ui_toolkit == 'qt5'): + if not utils.canEnterGUIMode4(): + log.error("%s -u/--gui requires Qt4/Qt5 GUI support. Entering interactive mode." % __mod__) +- mode = INTERACTIVE_MODE4 ++ mode = INTERACTIVE_MODE + + elif mode == GUI_MODE and ui_toolkit == 'qt3': + if not utils.canEnterGUIMode(): diff --git a/SOURCES/hplip-udev-rules.patch b/SOURCES/hplip-udev-rules.patch new file mode 100644 index 0000000..4836054 --- /dev/null +++ b/SOURCES/hplip-udev-rules.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.17.11/Makefile.am.udev-rules hplip-3.17.11/Makefile.am +--- hplip-3.17.11/Makefile.am.udev-rules 2017-12-07 13:44:04.472414453 +0100 ++++ hplip-3.17.11/Makefile.am 2017-12-07 15:20:18.544755557 +0100 +@@ -132,7 +132,7 @@ dist_rulessystem_DATA =data/rules/hplip- + + # hpmud.rules + if !HPLIP_CLASS_DRIVER +-rulesdir = /etc/udev/rules.d ++rulesdir = /usr/lib/udev/rules.d + if UDEV_SYSFS_RULES + dist_rules_DATA = data/rules/56-hpmud_sysfs.rules + else diff --git a/SOURCES/hplip-ui-optional.patch b/SOURCES/hplip-ui-optional.patch new file mode 100644 index 0000000..4b3f525 --- /dev/null +++ b/SOURCES/hplip-ui-optional.patch @@ -0,0 +1,96 @@ +diff --git a/base/module.py b/base/module.py +index dd3efa3..04ac5b8 100644 +--- a/base/module.py ++++ b/base/module.py +@@ -432,6 +432,12 @@ class Module(object): + if show_usage is not None: + sys.exit(0) + ++ if mode == GUI_MODE: ++ if not utils.canEnterGUIMode4(): ++ log.warn("GUI mode not available - switching to interactive mode.") ++ mode = INTERACTIVE_MODE ++ ui_toolkit = 'none' ++ + self.mode = mode + return opts, device_uri, printer_name, mode, ui_toolkit, lang + +diff --git a/base/utils.py b/base/utils.py +index 98437a3..9b8813b 100644 +--- a/base/utils.py ++++ b/base/utils.py +@@ -722,6 +722,15 @@ def canEnterGUIMode4(): # qt4 + log.warn(e) + return False + ++ try: ++ import ui4 ++ except ImportError: ++ try: ++ import ui5 ++ except ImportError as e: ++ log.warn(e) ++ return False ++ + return True + + +@@ -734,6 +743,11 @@ def checkPyQtImport(): # qt3 + if os.getenv('DISPLAY') and os.getenv('STARTED_FROM_MENU'): + no_qt_message_gtk() + ++ try: ++ import ui ++ except ImportError: ++ return False ++ + log.error("PyQt not installed. GUI not available. Exiting.") + return False + +@@ -781,11 +795,13 @@ def checkPyQtImport4(): + import PyQt4 + import ui4 + except ImportError: +- import PyQt5 +- import ui5 +- else: +- log.debug("HPLIP is not installed properly or is installed without graphical support. Please reinstall HPLIP again") +- return False ++ try: ++ import PyQt5 ++ import ui5 ++ except ImportError: ++ log.debug('GUI not available.') ++ return False ++ + return True + + # def checkPyQtImport5(): +diff --git a/fab.py b/fab.py +index 5577af5..194ceed 100755 +--- a/fab.py ++++ b/fab.py +@@ -776,14 +776,15 @@ mod.setUsage(module.USAGE_FLAG_NONE) + opts, device_uri, printer_name, mode, ui_toolkit, loc = \ + mod.parseStdOpts(handle_device_printer=False) + +-if ui_toolkit == 'qt3': +- if not utils.canEnterGUIMode(): +- log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__) +- mode = INTERACTIVE_MODE +-else: +- if not utils.canEnterGUIMode4(): +- log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__) +- mode = INTERACTIVE_MODE ++if ui_toolkit != 'none': ++ if ui_toolkit == 'qt3': ++ if not utils.canEnterGUIMode(): ++ log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__) ++ mode = INTERACTIVE_MODE ++ else: ++ if not utils.canEnterGUIMode4(): ++ log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__) ++ mode = INTERACTIVE_MODE + + + if mode == GUI_MODE: diff --git a/SOURCES/hplip-unicodeerror.patch b/SOURCES/hplip-unicodeerror.patch new file mode 100644 index 0000000..f98c7a3 --- /dev/null +++ b/SOURCES/hplip-unicodeerror.patch @@ -0,0 +1,18 @@ +diff --git a/base/sixext.py b/base/sixext.py +index 0bf4fc4..311bf72 100644 +--- a/base/sixext.py ++++ b/base/sixext.py +@@ -110,11 +110,11 @@ if PY3: + + + 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 --git a/SOURCES/hplip-use-binary-str.patch b/SOURCES/hplip-use-binary-str.patch new file mode 100644 index 0000000..319f1d6 --- /dev/null +++ b/SOURCES/hplip-use-binary-str.patch @@ -0,0 +1,40 @@ +diff -up hplip-3.18.5/base/utils.py.use-binary-str hplip-3.18.5/base/utils.py +--- hplip-3.18.5/base/utils.py.use-binary-str 2018-05-28 13:52:32.698082273 +0200 ++++ hplip-3.18.5/base/utils.py 2018-05-28 13:53:20.563707314 +0200 +@@ -961,10 +961,7 @@ else: + + + def printable(s): +- if s: +- return s.translate(identity, unprintable) +- else: +- return "" ++ return s.translate(identity, unprintable) + + + def any(S,f=lambda x:x): +diff -up hplip-3.18.5/fax/pmlfax.py.use-binary-str hplip-3.18.5/fax/pmlfax.py +--- hplip-3.18.5/fax/pmlfax.py.use-binary-str 2018-05-24 06:34:40.000000000 +0200 ++++ hplip-3.18.5/fax/pmlfax.py 2018-05-28 13:52:05.752293151 +0200 +@@ -143,8 +143,8 @@ class PMLFaxDevice(FaxDevice): + + def getPhoneNum(self): + if PY3: +- data = utils.printable(self.getPML(pml.OID_FAX_LOCAL_PHONE_NUM)[1]) +- return data ++ data = utils.printable(self.getPML(pml.OID_FAX_LOCAL_PHONE_NUM)[1].encode('utf-8')) ++ return data.decode('utf-8') + else: + return utils.printable(self.getPML(pml.OID_FAX_LOCAL_PHONE_NUM)[1]) + phone_num = property(getPhoneNum, setPhoneNum, doc="OID_FAX_LOCAL_PHONE_NUM") +@@ -155,8 +155,8 @@ class PMLFaxDevice(FaxDevice): + + def getStationName(self): + if PY3: +- data = utils.printable(self.getPML(pml.OID_FAX_STATION_NAME)[1]) +- return data ++ data = utils.printable(self.getPML(pml.OID_FAX_STATION_NAME)[1].encode('utf-8')) ++ return data.decode('utf-8') + else: + return utils.printable(self.getPML(pml.OID_FAX_STATION_NAME)[1]) + diff --git a/SOURCES/hplip-wifisetup.patch b/SOURCES/hplip-wifisetup.patch new file mode 100644 index 0000000..7247b01 --- /dev/null +++ b/SOURCES/hplip-wifisetup.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.19.6/ui5/wifisetupdialog.py.wifisetup-bad-call-fix hplip-3.19.6/ui5/wifisetupdialog.py +--- hplip-3.19.6/ui5/wifisetupdialog.py.wifisetup-bad-call-fix 2019-07-12 08:46:56.873167869 +0200 ++++ hplip-3.19.6/ui5/wifisetupdialog.py 2019-07-12 08:49:36.813769803 +0200 +@@ -570,7 +570,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog + try: + self.ip,_,addressmode, subnetmask, gateway, pridns, sec_dns= self.wifiObj.getIPConfiguration(self.dev, self.adapterName) + if self.ip == "0.0.0.0": +- self.ip, subnetmask, gateway, pri_dns, sec_dns, addressmode = self.wifiObj.getwifiotherdetails(self.dev,self.adapterName) ++ self.ip, subnetmask, gateway, pridns, sec_dns, addressmode = self.wifiObj.getwifiotherdetails(self.dev,self.adapterName) + vsa_codes = self.wifiObj.getVSACodes(self.dev, self.adapterName) + ss_max, ss_min, ss_val, ss_dbm = self.wifiObj.getSignalStrength(self.dev, self.adapterName,self.network, self.adaptor_id) + self.hn = self.wifiObj.getHostname(self.dev) diff --git a/SOURCES/hplip.appdata.xml b/SOURCES/hplip.appdata.xml new file mode 100644 index 0000000..9c0b711 --- /dev/null +++ b/SOURCES/hplip.appdata.xml @@ -0,0 +1,54 @@ + + + + HP-hplip.desktop + CC0-1.0 + GPL-2.0 and MIT and BSD-2-Clause + HPLIP Graphic Tools + HPLIP GUI tools and GUI part of other HPLIP tools + +

The HPLIP GUI subpackage provides graphic tools for the management of supported HP printers. These tools are not capable to run without graphical user interface, or they have unremoveable dependency on GUI modules.

+
    +
  • hp-check - tool for checking dependencies,
  • +
  • hp-print - UI frontend for printing,
  • +
  • hp-systray - tool for monitoring HP device status,
  • +
  • hp-toolbox - HP Device Manager,
  • +
  • hp-devicesettings - device settings tool,
  • +
  • hp-faxsetup - fax device setup tool,
  • +
  • hp-linefeedcal - line feed calibration tool,
  • +
  • hp-makecopies - tool for making copies for HP AiO and MFP devices,
  • +
  • hp-printsettings - printer settings tool,
  • +
  • and hp-wificonfig - Wifi/Wireless/802.11 configuration tool for connecting HP printer to Wifi
  • +
+

This subpackage also provides GUI parts for tools shipped by the HPLIP base package:

+
    +
  • hp-align - cartridge alignment tool for HP inkjet printers,
  • +
  • hp-clean - printhead cleaning tool for HP inkjet printers,
  • +
  • hp-colorcal - color calibration tool for HP inkjet printers,
  • +
  • hp-diagnose_queues - auto config tool for HP MFP to diagnose queues configuration,
  • +
  • hp-fab - simple fax address book,
  • +
  • hp-firmware - tool for download firmware for HP device,
  • +
  • hp-info - tool for querying a HP printer about static model information, dynamic status information, and CUPS printer queue settings,
  • +
  • hp-plugin - HP proprietary plugin download and install tool,
  • +
  • hp-sendfax - PC send fax tool for HP MFP printers,
  • +
  • hp-setup - tool for installing printers and faxes in the CUPS spooler,
  • +
  • hp-testpage - tool for printing testpage,
  • +
  • and hp-unload - tool for accessing inserted photo cards on supported HP printers (alternative for devices without USB mass storage support or for access to photo cards over a network).
  • +
+

The tools that do not need GUI for its functionality must be run with the '-i' option when the hplip-gui package is not installed.

+

The Launch button does not work because this subpackage is set of tools and it is not set which tool to launch from Gnome Software.

+
+ + + https://raw.githubusercontent.com/zdohnal/hplip/master/hplip1.png + + + https://raw.githubusercontent.com/zdohnal/hplip/master/hplip2.png + + + https://raw.githubusercontent.com/zdohnal/hplip/master/hplip3.png + + + http://hplipopensource.com/ + richard_at_hughsie.com +
diff --git a/SPECS/hplip.spec b/SPECS/hplip.spec new file mode 100644 index 0000000..f1ecedf --- /dev/null +++ b/SPECS/hplip.spec @@ -0,0 +1,2579 @@ +# we don't want to provide private python extension libs +%{?filter_setup: +%filter_provides_in %{python3_sitearch}/.*\.so$ +%filter_setup +} + +Summary: HP Linux Imaging and Printing Project +Name: hplip +Version: 3.21.2 +Release: 6%{?dist} +License: GPLv2+ and MIT and BSD and IJG and Public Domain and GPLv2+ with exceptions and ISC + +Url: https://developers.hp.com/hp-linux-imaging-and-printing +# Original source tarball +# Source0: http://downloads.sourceforge.net/sourceforge/hplip/hplip-%%{version}.tar.gz +# +# Repacked source tarball without redundant files - always repack +# the original tarball once a new version arrives by: +# +# ./hplip-repack.sh +# + +Source0: hplip-%{version}-repack.tar.gz +Source1: hpcups-update-ppds.sh +Source2: copy-deviceids.py +Source3: %{name}.appdata.xml +Source4: hp-laserjet_cp_1025nw.ppd.gz +Source5: hp-laserjet_professional_p_1102w.ppd.gz +Source6: hplip-repack.sh + +Patch1: hplip-pstotiff-is-rubbish.patch +Patch2: hplip-strstr-const.patch +Patch3: hplip-ui-optional.patch +Patch4: hplip-no-asm.patch +Patch5: hplip-deviceIDs-drv.patch +Patch6: hplip-udev-rules.patch +Patch7: hplip-retry-open.patch +Patch8: hplip-snmp-quirks.patch +Patch9: hplip-hpijs-marker-supply.patch +Patch10: hplip-clear-old-state-reasons.patch +Patch11: hplip-hpcups-sigpipe.patch +Patch12: hplip-logdir.patch +Patch13: hplip-bad-low-ink-warning.patch +Patch14: hplip-deviceIDs-ppd.patch +Patch15: hplip-ppd-ImageableArea.patch +Patch16: hplip-scan-tmp.patch +Patch17: hplip-log-stderr.patch +Patch18: hplip-avahi-parsing.patch +Patch20: hplip-dj990c-margin.patch +Patch21: hplip-strncpy.patch +Patch22: hplip-no-write-bytecode.patch +Patch23: hplip-silence-ioerror.patch +Patch24: hplip-3165-sourceoption.patch +Patch25: hplip-noernie.patch +Patch26: hplip-appdata.patch +Patch27: hplip-check-cups.patch +Patch30: hplip-typo.patch +# python3 - recent HP release removed encoding/decoding to utf-8 in fax/pmlfax.py - +# that results in text string going into translate function in base/utils.py, which +# expects binary string because of parameters. Remove this patch if base/utils.py +# code gets fixed. +Patch31: hplip-use-binary-str.patch +# m278-m281 doesn't work correctly again +Patch32: hplip-error-print.patch +Patch33: hplip-hpfax-importerror-print.patch +Patch34: hplip-wifisetup.patch +# pgp.mit.edu keyserver got bad connection, so we need to have pool of keyservers +# to choose (Bz#1641100, launchpad#1799212) +Patch35: hplip-keyserver.patch +# QMessagebox call was copy-pasted from Qt4 version, but Qt5 has different arguments, +# This patch solves most of them +Patch36: 0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch +# HP upstream introduced new binary blob, which is not open-source, so it violates +# FPG by two ways - shipping binary blob and non open source code - so it needs to be removed. +# Patch is taken from Debian. +Patch37: 0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch +# In hplip-3.18.10 some parts of UI code was commented out, which leaved hp-toolbox +# unusable (crashed on the start). The patch removes usages of variables, which were +# commented out. +# The patch is taken from Debian. +Patch38: 0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch +# hp-setup crashed when user wanted to define a path to PPD file. It was due +# byte + string variables incompatibility and it is fixed by decoding the +# bytes-like variable +# part of https://bugzilla.redhat.com/show_bug.cgi?id=1666076 +# reported upstream https://bugs.launchpad.net/hplip/+bug/1814272 +Patch39: hplip-add-ppd-crash.patch +# external scripts, which are downloaded and run by hp-plugin, try to create links +# in non-existing dirs. These scripts ignore errors, so plugin is installed fine +# but then internal hp-plugin can check for plugin state, where links are checked too. +# It results in corrupted plugin state, which breaks printer installation by GUI hp-setup. +# Temporary workaround is to ignore these bad links and real fix should come from HP, +# because their external scripts try to create links in non-existing dirs. +# Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1671513 +# Reported upstream: https://bugs.launchpad.net/hplip/+bug/1814574 +Patch40: hplip-missing-links.patch +# change in 3.18.9 in scanext.c caused broken scanning for HP LaserJet 3052. Since I cannot figure +# it out what author wanted by the change (it sets option number 9 to true, but different handles +# have different options, so I'm not sure what author wanted to set). +# Remove the change for now, it works for user and me. +Patch41: hplip-hplj-3052.patch +# hpmud parses mdns txt record badly +# upstream tickets: https://bugs.launchpad.net/hplip/+bug/1797501 +# https://bugs.launchpad.net/hplip/+bug/1817214 +# https://bugs.launchpad.net/hplip/+bug/1821932 +# with no response from upstream +# Patch taken from Debian https://lists.debian.org/debian-printing/2018/11/msg00049.html +Patch42: hplip-hpmud-string-parse.patch +# Part of https://bugzilla.redhat.com/show_bug.cgi?id=1694663 +# It was found out that specific device needs plugin for scanning +# Reported upstream as https://bugs.launchpad.net/hplip/+bug/1822762 +Patch43: hplip-m278-m281-needs-plugin.patch +# hpcups crashes when a printer needs a plugin and does not have one installed +# it crashes in destructor, because pointer is not initialized +# bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=1695716 +# reported upstream +Patch44: hplip-hpcups-crash.patch +# Fixing the issues found by coverity scan +# reported upstream https://bugs.launchpad.net/hplip/+bug/1808145 +Patch45: hplip-covscan.patch +# Segfault during logging to syslog because argument are switched +# bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=1727162 +# upstream https://bugs.launchpad.net/hplip/+bug/1837846 +Patch46: hplip-logging-segfault.patch +# Traceback in hp-systray when there are no resource +# wanted to report upstream, but launchpad ends with timeout error +# bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=1738321 +Patch47: hplip-systray-blockerror.patch +# several printers were removed in 3.19.1, but actually someone still uses them +# reported upstream https://bugs.launchpad.net/hplip/+bug/1843592 +# bugzillas 1742949, 1740132, 1739855 +Patch48: hplip-missing-drivers.patch +# laserjet 2200 and other devices have different device id than HP expects... +# https://bugzilla.redhat.com/show_bug.cgi?id=1772698 +# reported upstream https://bugs.launchpad.net/hplip/+bug/1853002 +Patch49: hplip-model-mismatch.patch +# sixext has problems with python3 strings (bz#1573430) +# reported https://bugs.launchpad.net/bugs/1480152 +Patch50: hplip-unicodeerror.patch +# error with new gcc, already reported in upstream as +# https://bugs.launchpad.net/hplip/+bug/1836735 +Patch51: hplip-fix-Wreturn-type-warning.patch +# upstream check for python clears OS build system +# CFLAGS +# https://bugs.launchpad.net/hplip/+bug/1879445 +Patch52: hplip-configure-python.patch +# taken from hplip upstream report - toolbox uses deprecated method +# setMargin(), which generates an exception, resulting in a infinite loop +# of request on cupsd +# https://bugs.launchpad.net/hplip/+bug/1880275 +Patch53: hplip-dialog-infinite-loop.patch +# searching algorithm did not expect '-' in model name and thought it is a new PDL +# it resulted in incorrect PPD match, so e.g. hpijs driver was used instead of hpcups +# bug: https://bugzilla.redhat.com/show_bug.cgi?id=1590014 +# reported upstream: https://bugs.launchpad.net/hplip/+bug/1881587 +Patch54: hplip-find-driver.patch +# hp-clean didn't work for Photosmart C1410 because it was comparing +# string length with buffer size for string object, which is different, +# causing cleaning to fail - the fix is to make the object bytes-like, +# then buffer size is the same as the length. +# Thanks to Stefan Assmann we were able to fix level 1 cleaning +# for the device, but there can be similar issues with other devices +# bug https://bugzilla.redhat.com/show_bug.cgi?id=1833308 +# reported upstream https://bugs.launchpad.net/hplip/+bug/1882193 +Patch55: hplip-clean-ldl.patch +# 3.20.6 turned off requirement for most devices which needed it +# - it will cause malfunction of printing and scanning for them +# https://bugs.launchpad.net/hplip/+bug/1883898 +Patch56: hplip-revert-plugins.patch +# python3.9 removes threading.Thread.isAlive() and it is substituted +# by threading.Thread.is_alive() +# https://bugzilla.redhat.com/show_bug.cgi?id=1861055 +# reported upstream https://bugs.launchpad.net/fedora/+bug/1889280 +Patch57: hplip-thread-isalive-removed.patch +# glibc moved timeb.h into compat package and it will be removed in the future +# the code doesn't use anything from timeb.h, so it is safe to remove it +# reported upstream https://bugs.launchpad.net/hplip/+bug/1900977 +Patch58: hplip-timeb-removed.patch +# non-sudoers cannot authenticate +# reported upstream https://bugs.launchpad.net/hplip/+bug/1904888 +Patch59: hplip-check-userperms.patch +# 1919556 - hp-fab crashed: QFileDialog.getOpenFileName is not used correctly +# getOpenFileName returns a tuple, but hp-fab expects a simple variable +# reported upstream as https://bugs.launchpad.net/hplip/+bug/1914743 +Patch60: hplip-fab-import.patch +# if an user tries to install scanner via hp-setup (printer/fax utility) +# it fails further down - break out earlier with a message +# reported upstream as https://bugs.launchpad.net/hplip/+bug/1916114 +Patch61: hplip-hpsetup-noscanjets.patch + +%if 0%{?fedora} || 0%{?rhel} <= 8 +# mention hplip-gui if you want to have GUI +Patch1000: hplip-fedora-gui.patch +%endif + + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +%if 0%{?rhel} <= 8 || 0%{?fedora} +Requires: python3-pillow +%endif +Requires: cups +Requires: wget +Requires: python3-dbus +# set require directly to /usr/bin/gpg, because gnupg2 and gnupg ships it, +# but gnupg will be deprecated in the future +Requires: %{_bindir}/gpg +# /usr/lib/udev/rules.d +Requires: systemd +# 1733449 - Scanner on an HP AIO printer is not detected unless libsane-hpaio is installed +Requires: libsane-hpaio +# 1788643 - Fedora minimal does not ship tar by default +Requires: tar + +# require coreutils, because timeout binary is needed in post scriptlet, +# because hpcups-update-ppds script can freeze in certain situation and +# stop the update +Requires(post): coreutils + +# gcc and gcc-c++ are no longer in buildroot by default + +# gcc is needed for compilation of HPAIO scanning backend, HP implementation of +# IPP and MDNS protocols, hpps driver, hp backend, hpip (image processing +# library), multipoint transport driver hpmud +BuildRequires: gcc +# gcc-c++ is needed for hpijs, hpcups drivers +BuildRequires: gcc-c++ +# uses make +BuildRequires: make + +BuildRequires: autoconf automake libtool +BuildRequires: net-snmp-devel +BuildRequires: pkgconfig(avahi-client) +BuildRequires: pkgconfig(avahi-core) +BuildRequires: cups-devel +BuildRequires: python3-devel +BuildRequires: libjpeg-devel +BuildRequires: desktop-file-utils +BuildRequires: libusb1-devel +BuildRequires: openssl-devel +BuildRequires: sane-backends-devel +BuildRequires: pkgconfig(dbus-1) + +# Make sure we get postscriptdriver tags - need cups and python3-cups. +BuildRequires: cups +BuildRequires: python3-cups + +# macros: %%{_tmpfilesdir}, %%{_udevrulesdir} +BuildRequires: systemd + +%description +The Hewlett-Packard Linux Imaging and Printing Project provides +drivers for HP printers and multi-function peripherals. + +%package common +Summary: Files needed by the HPLIP printer and scanner drivers +License: GPLv2+ + +%description common +Files needed by the HPLIP printer and scanner drivers. + +%package libs +Summary: HPLIP libraries +License: GPLv2+ and MIT +Requires: %{name}-common%{?_isa} = %{version}-%{release} +Requires: python3 + +%description libs +Libraries needed by HPLIP. + +%if 0%{?rhel} <= 8 || 0%{?fedora} +%package gui +Summary: HPLIP graphical tools +License: BSD +BuildRequires: libappstream-glib +Requires: python3-qt5 +Requires: python3-reportlab +# hpssd.py +Requires: python3-gobject +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libsane-hpaio%{?_isa} = %{version}-%{release} + +%description gui +HPLIP graphical tools. +%endif + +%package -n libsane-hpaio +Summary: SANE driver for scanners in HP's multi-function devices +License: GPLv2+ +Requires: sane-backends +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description -n libsane-hpaio +SANE driver for scanners in HP's multi-function devices (from HPOJ). + +%prep +%setup -q + +# The pstotiff filter is rubbish so replace it (launchpad #528394). +%patch1 -p1 -b .pstotiff-is-rubbish + +# Fix compilation. +%patch2 -p1 -b .strstr-const + +# Make utils.checkPyQtImport() look for the gui sub-package (bug #243273). +%patch3 -p1 -b .ui-optional + +# Make sure to avoid handwritten asm. +%patch4 -p1 -b .no-asm + +# Corrected several IEEE 1284 Device IDs using foomatic data. +# Color LaserJet 2500 series (bug #659040) +# LaserJet 4100 Series/2100 Series (bug #659039) +%patch5 -p1 -b .deviceIDs-drv +chmod +x %{SOURCE2} +mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs} +%{SOURCE2} prnt/drv/hpcups.drv.in \ + prnt/drv/hpijs.drv.in.deviceIDs-drv-hpijs \ + > prnt/drv/hpijs.drv.in + +# Move udev rules from /etc/ to /usr/lib/ (bug #748208). +%patch6 -p1 -b .udev-rules + +# Retry when connecting to device fails (bug #532112). +%patch7 -p1 -b .retry-open + +# Mark SNMP quirks in PPD for HP OfficeJet Pro 8500 (bug #581825). +%patch8 -p1 -b .snmp-quirks + +# Fixed bogus low ink warnings from hpijs driver (bug #643643). +%patch9 -p1 -b .hpijs-marker-supply + +# Clear old printer-state-reasons we used to manage (bug #510926). +%patch10 -p1 -b .clear-old-state-reasons + +# Avoid busy loop in hpcups when backend has exited (bug #525944). +%patch11 -p1 -b .hpcups-sigpipe + +# CUPS filters should use TMPDIR when available (bug #865603). +%patch12 -p1 -b .logdir + +# Fixed Device ID parsing code in hpijs's dj9xxvip.c (bug #510926). +%patch13 -p1 -b .bad-low-ink-warning + +# Add Device ID for +# HP LaserJet Color M451dn (bug #1159380) +for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4); +do + gunzip ${ppd_file#*/}.gz +done +%patch14 -p1 -b .deviceIDs-ppd +for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4); +do + gzip -n ${ppd_file#*/} +done + +# Fix ImageableArea for Laserjet 8150/9000 (bug #596298). +for ppd_file in $(grep '^diff' %{PATCH15} | cut -d " " -f 4); +do + gunzip ${ppd_file#*/}.gz +done +%patch15 -p1 -b .ImageableArea +for ppd_file in $(grep '^diff' %{PATCH15} | cut -d " " -f 4); +do + gzip -n ${ppd_file#*/} +done + +# Scan to /var/tmp instead of /tmp (bug #1076954). +%patch16 -p1 -b .scan-tmp + +# Treat logging before importing of logger module (bug #984699). +%patch17 -p1 -b .log-stderr + +# Fix parsing of avahi-daemon output (bug #1096939). +%patch18 -p1 -b .parsing + +# Fixed left/right margins for HP DeskJet 990C (LP #1405212). +%patch20 -p1 -b .dj990c-margin + +# Fixed uses of strncpy throughout. +%patch21 -p1 -b .strncpy + +# Don't try to write bytecode cache for hpfax backend (bug #1192761) +# or hp-config_usb_printer (bug #1266903) +# or hpps filter (bug #1241548). +%patch22 -p1 -b .no-write-bytecode + +# Ignore IOError when logging output (bug #712537). +%patch23 -p1 -b .silence-ioerror + +# [abrt] hplip: hp-scan:663::NameError: name 'source_option' is not defined (bug #1341304) +%patch24 -p1 -b .sourceoption + +# hplip license problem (bug #1364711) +%patch25 -p1 -b .no-ernie + +# hplip appdata +%patch26 -p1 -b .appdata + +# hp-check shows 'CUPS incompatible or not running' even if CUPS is running (bug #1456467) +%patch27 -p1 -b .check-cups + +# hp-firmware:NameError: name 'INTERACTIVE_MODE4' is not defined (bug #1533869) +%patch30 -p1 -b .typo + +%patch31 -p1 -b .use-binary-str + +# TypeError: 'Error' object does not support indexing (bug #1564770) +# upstream bug: https://bugs.launchpad.net/ubuntu/+source/hplip/+bug/1718129 +# in python2 it was possible to acces Exception message by index [0]. +# in python3 this is no longer possible and it causes TypeError. +%patch32 -p1 -b .error-print-fix + +# TypeError: not all arguments converted during string formatting (bug #1566938) +# upstream bug: https://bugs.launchpad.net/ubuntu/+source/hplip/+bug/616450 +# bug caused by more arguments than argument specifiers in formatted string +%patch33 -p1 -b .hpfax-import-error-print + +# 'WifiSetupDialog' object has no attribute 'wifiobj' (bug #1626877) +# upstream bug: https://bugs.launchpad.net/hplip/+bug/1752060 +# bug caused by typo in wifisetupdialog wifiObj property call +%patch34 -p1 -b .wifisetup-bad-call-fix + +# have pool of keyservers to choose +%patch35 -p1 -b .keyserver + +# TypeError: argument 5 has unexpected type 'StandardButtons' (bug #1594602) +# upstream bug: https://bugs.launchpad.net/ubuntu/+source/hplip/+bug/1745383 +# bug caused by typo in QMessageBox constructor call +# this patch fixes more of those typos - some fixed by tkorbar, some taken from ubuntu fix +%patch36 -p1 -b .qmsgbox-typos-fix + +# removal of non open source code, taken from ubuntu +%patch37 -p1 -b .libimageprocessor-removal + +%{_bindir}/rm prnt/hpcups/libImageProcessor-x86* + +%patch38 -p1 -b .toolbox-crash +# part of https://bugzilla.redhat.com/show_bug.cgi?id=1666076 +%patch39 -p1 -b .add-ppd-crash +# 1671513 - after 'successful' plugin installation it is not installed +%patch40 -p1 -b .missing-links +# 1684434 - Scanning broken for HP LaserJet 3052 +%patch41 -p1 -b .hp-laserjet-3052-broken-scanning +# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 1) +%patch42 -p1 -b .hpmud-string-parse +# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 2) +%patch43 -p1 -b .m278-m281-needs-plugin +# 1695716 - hpcups crashes in Compressor destructor +%patch44 -p1 -b .hpcups-crash +# fixing issues found by coverity scan +%patch45 -p1 -b .covscan +# segfault during logging (1727162) +%patch46 -p1 -b .logging-segfault +# 1738321 - [abrt] hp-systray:BlockingIOError: [Errno 11] Resource temporarily unavailable +%patch47 -p1 -b .systray-blockerror +# 1742949, 1740132, 1739855 - missing drivers +%patch48 -p1 -b .missing-drivers +# 1772698 - Can't setup printer (HP LJ 2200): no attributes found in model.dat +%patch49 -p1 -b .model-mismatch +# 1573430 - sixext.py:to_string_utf8:UnicodeDecodeError: 'utf-8' codec can't decode bytes +%patch50 -p1 -b .unicodeerror +%patch51 -p1 -b .Wreturn-fix +%patch52 -p1 -b .configure-python +%patch53 -p1 -b .dialog-infinite-loop +# 1590014 - hplip PPD search doesn't expect '-' in device name +%patch54 -p1 -b .find-driver +# 1833308 - hp-clean cannot clean HP PSC1410 - Device I/O error +%patch55 -p1 -b .clean-ldl +%patch56 -p1 -b .revert-plugins +# 1861055 - hplip: remove threading.Thread.isAlive method calls - use threading.Thread.is_alive() +%patch57 -p1 -b .thread-isalive-removed +# timed.h is removed from glibc +%patch58 -p1 -b .timed-removed +# 1899410 - non-sudoers cannot authenticate because of bad username in prompt +%patch59 -p1 -b .check-userperms +# 1919556 - hp-fab crashed: QFileDialog.getOpenFileName is not used correctly +%patch60 -p1 -b .fab-import +# if an user tries to install scanner via hp-setup (printer/fax utility) +# it fails further down - break out earlier with a message +%patch61 -p1 -b .hpsetup-noscanjets + +%if 0%{?fedora} || 0%{?rhel} <= 8 +# mention hplip-gui should be installed if you want GUI +%patch1000 -p1 -b .fedora-gui +%endif + +sed -i.duplex-constraints \ + -e 's,\(UIConstraints.* \*Duplex\),//\1,' \ + prnt/drv/hpcups.drv.in + +# Change shebang /usr/bin/env python -> /usr/bin/python3 (bug #618351). +find -name '*.py' -print0 | xargs -0 \ + sed -i.env-python -e 's,^#!/usr/bin/env python,#!%{__python3},' +sed -i.env-python -e 's,^#!/usr/bin/env python,#!%{__python3},' \ + prnt/filters/hpps \ + fax/filters/pstotiff + +rm locatedriver + +cp -p %{SOURCE4} %{SOURCE5} ppd/hpcups + +%build +# Work-around Makefile.am imperfections. +sed -i 's|^AM_INIT_AUTOMAKE|AM_INIT_AUTOMAKE([foreign])|g' configure.in +# Upstream uses old libtool, which causes problems (due to libhpmud requiring +# libhpdiscovery) when we try to remove rpath from it. +# Regenerating all autotools files works-around these rpath issues. +autoreconf --verbose --force --install + +%configure \ + --enable-scan-build --enable-gui-build --enable-fax-build \ + --disable-foomatic-rip-hplip-install --enable-pp-build \ + --disable-qt4 --enable-qt5 \ + --enable-hpcups-install --enable-cups-drv-install \ + --enable-foomatic-drv-install \ + --enable-hpijs-install \ + --disable-policykit --with-mimedir=%{_datadir}/cups/mime PYTHON=%{__python3} + +%make_build + + +%install +mkdir -p %{buildroot}%{_bindir} +%make_install PYTHON=%{__python3} + +# Create /run/hplip & /var/lib/hp +mkdir -p %{buildroot}/run/hplip +mkdir -p %{buildroot}%{_sharedstatedir}/hp + +# install /usr/lib/tmpfiles.d/hplip.conf (bug #1015831) +mkdir -p %{buildroot}%{_tmpfilesdir} +cat > %{buildroot}%{_tmpfilesdir}/hplip.conf < 8 +rm -rf %{buildroot}%{_bindir}/hp-check \ + %{buildroot}%{_bindir}/hp-devicesettings \ + %{buildroot}%{_bindir}/hp-diagnose_plugin \ + %{buildroot}%{_bindir}/hp-faxsetup \ + %{buildroot}%{_bindir}/hp-linefeedcal \ + %{buildroot}%{_bindir}/hp-makecopies \ + %{buildroot}%{_bindir}/hp-print \ + %{buildroot}%{_bindir}/hp-printsettings \ + %{buildroot}%{_bindir}/hp-systray \ + %{buildroot}%{_bindir}/hp-scan \ + %{buildroot}%{_bindir}/hp-toolbox \ + %{buildroot}%{_bindir}/hp-uiscan \ + %{buildroot}%{_bindir}/hp-wificonfig \ + %{buildroot}%{_datadir}/applications/*.desktop \ + %{buildroot}%{_datadir}/metainfo/hplip.appdata.xml \ + %{buildroot}%{_datadir}/icons/hicolor/*/apps/* \ + %{buildroot}%{_datadir}/hplip/base/imageprocessing.py* \ + %{buildroot}%{_datadir}/hplip/check.py* \ + %{buildroot}%{_datadir}/hplip/devicesettings.py* \ + %{buildroot}%{_datadir}/hplip/diagnose_plugin.py* \ + %{buildroot}%{_datadir}/hplip/faxsetup.py* \ + %{buildroot}%{_datadir}/hplip/linefeedcal.py* \ + %{buildroot}%{_datadir}/hplip/makecopies.py* \ + %{buildroot}%{_datadir}/hplip/print.py* \ + %{buildroot}%{_datadir}/hplip/printsettings.py* \ + %{buildroot}%{_datadir}/hplip/systray.py* \ + %{buildroot}%{_datadir}/hplip/scan.py* \ + %{buildroot}%{_datadir}/hplip/toolbox.py* \ + %{buildroot}%{_datadir}/hplip/uiscan.py* \ + %{buildroot}%{_datadir}/hplip/wificonfig.py* \ + %{buildroot}%{_datadir}/hplip/data/images \ + %{buildroot}%{_datadir}/hplip/scan \ + %{buildroot}%{_datadir}/hplip/ui5 \ + %{buildroot}%{_docdir}/hplip/hpscan.html \ + doc/hpscan.html +%endif + +%if 0%{?rhel} <= 8 || 0%{?fedora} +mkdir -p %{buildroot}%{_datadir}/metainfo +cp %{SOURCE3} %{buildroot}%{_datadir}/metainfo/ + +mkdir -p %{buildroot}%{_datadir}/icons/hicolor/{16x16,32x32,64x64}/apps +install -p -m644 %{buildroot}%{_datadir}/hplip/data/images/16x16/hp_logo.png \ + %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/hp_logo.png +install -p -m644 %{buildroot}%{_datadir}/hplip/data/images/32x32/hp_logo.png \ + %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/hp_logo.png +install -p -m644 %{buildroot}%{_datadir}/hplip/data/images/64x64/hp_logo.png \ + %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/hp_logo.png + +mkdir -p %{buildroot}%{_datadir}/applications +sed -i -e '/^Categories=/d' hplip.desktop +# Encoding key is deprecated +sed -i -e '/^Encoding=/d' hplip.desktop +desktop-file-validate hplip.desktop + +desktop-file-install \ + --dir %{buildroot}/%{_datadir}/applications \ + --add-category System \ + --add-category Settings \ + --add-category HardwareSettings \ + hplip.desktop + +appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml + +# install hp-uiscan desktop file +sed -i 's/\/usr\/share\/icons\/Humanity\/devices\/48\/printer\.svg/hp_logo/' hp-uiscan.desktop + +desktop-file-validate hp-uiscan.desktop + +desktop-file-install \ + --dir %{buildroot}/%{_datadir}/applications \ + --add-category Graphics \ + --add-category Scanning \ + --add-category Application \ + hp-uiscan.desktop +%endif + +# Regenerate hpcups PPDs on upgrade if necessary (bug #579355). +install -p -m755 %{SOURCE1} %{buildroot}%{_bindir}/hpcups-update-ppds + +%{__mkdir_p} %{buildroot}%{_sysconfdir}/sane.d/dll.d +echo hpaio > %{buildroot}%{_sysconfdir}/sane.d/dll.d/hpaio + +# Images in docdir should not be executable (bug #440552). +find doc/images -type f -exec chmod 644 {} \; + +# Create an empty plugins directory to make sure it gets the right +# SELinux file context (bug #564551). +%{__mkdir_p} %{buildroot}%{_datadir}/hplip/prnt/plugins + +# Remove files we don't want to package. +rm -f %{buildroot}%{_datadir}/hplip/hpaio.desc +rm -f %{buildroot}%{_datadir}/hplip/hplip-install +rm -rf %{buildroot}%{_datadir}/hplip/install.* +rm -f %{buildroot}%{_datadir}/hplip/uninstall.* +rm -f %{buildroot}%{_bindir}/hp-uninstall +rm -f %{buildroot}%{_datadir}/hplip/upgrade.* +rm -f %{buildroot}%{_bindir}/hp-upgrade +rm -f %{buildroot}%{_datadir}/hplip/hpijs.drv.in.template +rm -f %{buildroot}%{_datadir}/cups/mime/pstotiff.types +rm -f %{buildroot}%{_datadir}/hplip/fax/pstotiff* +rm -f %{buildroot}%{_unitdir}/hplip-printer@.service + +# The systray applet doesn't work properly (displays icon as a +# window), so don't ship the launcher yet. +rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop + +%post +# timeout is to prevent possible freeze during update +%{_bindir}/timeout 10m -k 15m %{_bindir}/hpcups-update-ppds &>/dev/null ||: + +%ldconfig_scriptlets libs + + +%files +%doc COPYING doc/* +# ex-hpijs +%{_bindir}/hpijs +# ex-hpijs +%{_bindir}/hpcups-update-ppds +%{_bindir}/hp-align +%{_bindir}/hp-clean +%{_bindir}/hp-colorcal +%{_bindir}/hp-config_usb_printer +%{_bindir}/hp-diagnose_queues +%{_bindir}/hp-fab +%{_bindir}/hp-firmware +%{_bindir}/hp-info +%{_bindir}/hp-levels +%{_bindir}/hp-makeuri +%{_bindir}/hp-plugin +%{_bindir}/hp-probe +%{_bindir}/hp-query +%if 0%{?rhel} <= 8 || 0%{?fedora} +%{_bindir}/hp-scan +%endif +%{_bindir}/hp-sendfax +%{_bindir}/hp-setup +%{_bindir}/hp-testpage +%{_bindir}/hp-timedate +%{_bindir}/hp-unload +%{_cups_serverbin}/backend/hp +%{_cups_serverbin}/backend/hpfax +# ex-hpijs +%{_cups_serverbin}/filter/hpcups +%{_cups_serverbin}/filter/hpcupsfax +%{_cups_serverbin}/filter/hpps +%{_cups_serverbin}/filter/pstotiff +# ex-hpijs +%{_datadir}/cups/drv/* +%{_datadir}/cups/mime/pstotiff.convs +# Files +%{_datadir}/hplip/align.py* +%{_datadir}/hplip/check-plugin.py* +%{_datadir}/hplip/clean.py* +%{_datadir}/hplip/colorcal.py* +%{_datadir}/hplip/config_usb_printer.py* +%{_datadir}/hplip/diagnose_queues.py* +%{_datadir}/hplip/fab.py* +%{_datadir}/hplip/fax +%{_datadir}/hplip/firmware.py* +%{_datadir}/hplip/hpdio.py* +%{_datadir}/hplip/hplip_clean.sh +%{_datadir}/hplip/hpssd* +%{_datadir}/hplip/info.py* +%{_datadir}/hplip/__init__.py* +%{_datadir}/hplip/levels.py* +%{_datadir}/hplip/makeuri.py* +%{_datadir}/hplip/plugin.py* +%{_datadir}/hplip/probe.py* +%{_datadir}/hplip/query.py* +%if 0%{?rhel} <= 8 || 0%{?fedora} +%{_datadir}/hplip/scan.py* +%endif +%{_datadir}/hplip/sendfax.py* +%{_datadir}/hplip/setup.py* +%{_datadir}/hplip/testpage.py* +%{_datadir}/hplip/timedate.py* +%{_datadir}/hplip/unload.py* +# Directories +%{_datadir}/hplip/base +%{_datadir}/hplip/copier +%{_datadir}/hplip/data/ldl +%{_datadir}/hplip/data/localization +%{_datadir}/hplip/data/pcl +%{_datadir}/hplip/data/ps +%{_datadir}/hplip/installer +%{_datadir}/hplip/pcard +%{_datadir}/hplip/prnt +%if 0%{?rhel} <= 8 || 0%{?fedora} +%{_datadir}/hplip/scan +%endif +%{_datadir}/ppd +%{_sharedstatedir}/hp +%dir %attr(0775,root,lp) /run/hplip +%{_tmpfilesdir}/hplip.conf +%{_udevrulesdir}/56-hpmud.rules + +%files common +%license COPYING +%dir %{_sysconfdir}/hp +%config(noreplace) %{_sysconfdir}/hp/hplip.conf +%dir %{_datadir}/hplip +%dir %{_datadir}/hplip/data +%{_datadir}/hplip/data/models + +%files libs +%{_libdir}/libhpip.so.0 +%{_libdir}/libhpip.so.0.0.1 +%{_libdir}/libhpipp.so.0 +%{_libdir}/libhpipp.so.0.0.1 +%{_libdir}/libhpdiscovery.so.0 +%{_libdir}/libhpdiscovery.so.0.0.1 +%{_libdir}/libhpmud.so.0 +%{_libdir}/libhpmud.so.0.0.6 +# Python extension +%{python3_sitearch}/* + +%if 0%{?rhel} <= 8 || 0%{?fedora} +%files gui +%{_bindir}/hp-check +%{_bindir}/hp-devicesettings +%{_bindir}/hp-diagnose_plugin +%{_bindir}/hp-faxsetup +%{_bindir}/hp-linefeedcal +%{_bindir}/hp-makecopies +%{_bindir}/hp-print +%{_bindir}/hp-printsettings +%{_bindir}/hp-systray +%{_bindir}/hp-toolbox +%{_bindir}/hp-uiscan +%{_bindir}/hp-wificonfig +%{_datadir}/applications/*.desktop +%{_datadir}/metainfo/hplip.appdata.xml +# Files +%{_datadir}/icons/hicolor/*/apps/* +%{_datadir}/hplip/check.py* +%{_datadir}/hplip/devicesettings.py* +%{_datadir}/hplip/diagnose_plugin.py* +%{_datadir}/hplip/faxsetup.py* +%{_datadir}/hplip/linefeedcal.py* +%{_datadir}/hplip/makecopies.py* +%{_datadir}/hplip/print.py* +%{_datadir}/hplip/printsettings.py* +%{_datadir}/hplip/systray.py* +%{_datadir}/hplip/toolbox.py* +%{_datadir}/hplip/uiscan.py* +%{_datadir}/hplip/wificonfig.py* +# Directories +%{_datadir}/hplip/data/images +%{_datadir}/hplip/ui5 +%endif + +%files -n libsane-hpaio +%{_libdir}/sane/libsane-*.so +%{_libdir}/sane/libsane-*.so.1 +%{_libdir}/sane/libsane-*.so.1.0.0 +%config(noreplace) %{_sysconfdir}/sane.d/dll.d/hpaio + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 3.21.2-6 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Wed Jun 16 2021 Mohan Boddu - 3.21.2-5 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 09 2021 Zdenek Dohnal - 3.21.2-4 +- add hplip-repack.sh as a source + +* Wed Jun 09 2021 Zdenek Dohnal - 3.21.2-3 +- 1969767 - remove redundant files + +* Fri Apr 16 2021 Mohan Boddu - 3.21.2-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Fri Feb 19 2021 Zdenek Dohnal - 3.21.2-1 +- 1929977 - hplip-3.21.2 is available + +* Fri Feb 19 2021 Zdenek Dohnal - 3.20.11-6 +- get out of hp-setup if the device is a standalone scanner + +* Thu Feb 18 2021 Zdenek Dohnal - 3.20.11-6 +- remove the old search algorithm + +* Fri Feb 05 2021 Zdenek Dohnal - 3.20.11-5 +- 1925259 - %pre scriptlet enables and starts cups.service, which is unnecessary +- 1919556 - hp-fab crashed: QFileDialog.getOpenFileName is not used correctly + +* Tue Feb 02 2021 Zdenek Dohnal - 3.20.11-4 +- 1912147 - Enable matching for '_series' drivers in PPD search algorithm +- rework optional gui messages + +* Tue Jan 26 2021 Fedora Release Engineering - 3.20.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Jan 14 2021 Zdenek Dohnal - 3.20.11-2 +- apply eln changes + +* Wed Dec 02 2020 Zdenek Dohnal - 3.20.11-1 +- 1903029 - hplip-3.20.11 is available + +* Thu Nov 19 2020 Zdenek Dohnal - 3.20.9-4 +- 1899410 - non-sudoers cannot authenticate because of bad username in prompt + +* Thu Nov 05 2020 Zdenek Dohnal - 3.20.9-3 +- make is no longer in buildroot by default + +* Thu Oct 22 2020 Zdenek Dohnal - 3.20.9-2 +- timeb is removed from glibc + +* Tue Oct 13 2020 Zdenek Dohnal - 3.20.9-2 +- downloading gpg key for plugin can take some time and wayland can + kill the connection, work it around to prefer more stable keyservers + +* Mon Oct 12 2020 Zdenek Dohnal - 3.20.9-2 +- fix the patch for adding uncompressed ppd via CLI +- fix the patch for GUI too + +* Fri Oct 02 2020 Zdenek Dohnal - 3.20.9-1 +- 3.20.9 + +* Wed Sep 30 2020 Zdenek Dohnal - 3.20.6-13 +- fix bashisms in hplip-configure-python.patch +- thanks for Daniel Pielmeier from Gentoo for review + +* Fri Sep 11 2020 Zdenek Dohnal - 3.20.6-12 +- move ifdef for removing hplip-gui a little in install phase + +* Thu Aug 27 2020 Josef Ridky - 3.20.6-11 +- Rebuilt for new net-snmp release + +* Tue Aug 25 2020 Zdenek Dohnal - 3.20.6-10 +- fix eln build - remove unpackaged files + +* Tue Aug 25 2020 Zdenek Dohnal - 3.20.6-9 +- 1772698 - dont use uninitialized value as an index + +* Mon Aug 24 2020 Zdenek Dohnal - 3.20.6-8 +- typo in hplip-model-mismatch.patch causes regression for 1772698 + +* Wed Aug 05 2020 Zdenek Dohnal - 3.20.6-7 +- don't build gui for newer RHELs + +* Sat Aug 01 2020 Fedora Release Engineering - 3.20.6-6 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Zdenek Dohnal - 3.20.6-5 +- 1861055 - hplip: remove threading.Thread.isAlive method calls - use threading.Thread.is_alive() + +* Tue Jul 28 2020 Fedora Release Engineering - 3.20.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 3.20.6-3 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Tue Jun 23 2020 Zdenek Dohnal - 3.20.6-2 +- appdata.xml needs to be in %%{_datadir}/metainfo + +* Wed Jun 17 2020 Zdenek Dohnal - 3.20.6-1 +- 3.20.6 + +* Tue Jun 16 2020 Zdenek Dohnal - 3.20.5-6 +- remove the check for scripts which are only in hplip-gui + +* Tue Jun 16 2020 Zdenek Dohnal - 3.20.5-5 +- fix the optional GUI + +* Fri Jun 05 2020 Zdenek Dohnal - 3.20.5-4 +- 1833308 - hp-clean cannot clean HP PSC1410 - Device I/O error + +* Mon Jun 01 2020 Zdenek Dohnal - 3.20.5-4 +- 1794147 - HP-setup crashes with Python3 ui5 module not found error +- 1590014 - hplip PPD search doesn't expect '-' in device name + +* Tue May 26 2020 Miro Hrončok - 3.20.5-3 +- Rebuilt for Python 3.9 + +* Mon May 25 2020 Zdenek Dohnal - 3.20.5-2 +- fix infinite loop in password dialog in hp-toolbox + +* Thu May 14 2020 Zdenek Dohnal - 3.20.5-1 +- 3.20.5 + +* Wed Apr 15 2020 Zdenek Dohnal - 3.20.3-5 +- model mismatch during scanning due 'HP_' string + +* Tue Apr 07 2020 Zdenek Dohnal - 3.20.3-4 +- add keyserver.ubuntu.com too (1821469) + +* Tue Apr 07 2020 Zdenek Dohnal - 3.20.3-3 +- 1821469 - use list of keyservers when trying to download gpg keys + +* Wed Mar 25 2020 Tom Stellard - 3.20.3-2 +- Fix some -Wreturn-type warnings +- clang treates these as errors, so this fixes the build with clang. + +* Tue Mar 10 2020 Zdenek Dohnal - 3.20.3-1 +- 3.20.3 + +* Wed Mar 04 2020 Zdenek Dohnal - 3.20.2-1 +- 3.20.2 + +* Mon Feb 17 2020 Zdenek Dohnal - 3.19.12-4 +- 1573430 - sixext.py:to_string_utf8:UnicodeDecodeError: 'utf-8' codec can't decode bytes +- fix pillow version check + +* Wed Jan 29 2020 Fedora Release Engineering - 3.19.12-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 08 2020 Zdenek Dohnal - 3.19.12-2 +- 1788643 - hp-plugin needs explicit requirement for tar + +* Thu Dec 12 2019 Zdenek Dohnal - 3.19.12-1 +- 3.19.12 + +* Thu Nov 28 2019 Zdenek Dohnal - 3.19.11-1 +- 3.19.11 + +* Thu Nov 28 2019 Zdenek Dohnal - 3.19.10-3 +- 1777457 - hplip-3.19.10-2 breaks support for devices with '_series' in device id + +* Mon Nov 18 2019 Zdenek Dohnal - 3.19.10-2 +- 1773345 - Problems with HP M281fdw LaserJet + +* Fri Nov 15 2019 Zdenek Dohnal - 3.19.10-2 +- 1772698 - missing HP LaserJet 2200 driver + +* Fri Nov 01 2019 Zdenek Dohnal - 3.19.10-1 +- 3.19.10 + +* Tue Oct 01 2019 Zdenek Dohnal - 3.19.8-2 +- hp-check traceback due change in python-pillow + +* Tue Oct 01 2019 Zdenek Dohnal - 3.19.8-1 +- 3.19.8 + +* Tue Sep 10 2019 Zdenek Dohnal - 3.19.6-9 +- 1739855, 1740132, 1742949 - missing drivers + +* Mon Sep 09 2019 Zdenek Dohnal - 3.19.6-8 +- 1750111 - [abrt] hplip: syntax(): unindent does not match any outer indentation level + +* Fri Sep 06 2019 Zdenek Dohnal - 3.19.6-7 +- 1745317 - hp-plugin is broken on Rawhide + +* Mon Aug 19 2019 Miro Hrončok - 3.19.6-6 +- Rebuilt for Python 3.8 + +* Thu Aug 08 2019 Zdenek Dohnal - 3.19.6-5 +- 1738321 - [abrt] hp-systray:BlockingIOError: [Errno 11] Resource temporarily unavailable + +* Thu Aug 01 2019 Zdenek Dohnal - 3.19.6-4 +- sks-keyservers.net seems more reliable + +* Mon Jul 29 2019 Zdenek Dohnal - 3.19.6-3 +- 1733449 - Scanner on an HP AIO printer is not detected unless libsane-hpaio is installed + +* Thu Jul 25 2019 Zdenek Dohnal - 3.19.6-2 +- 1727162 - [abrt] hplip: strlen(): hp killed by SIGSEGV + +* Fri Jul 12 2019 Zdenek Dohnal - 3.19.6-1 +- 3.19.6 + +* Fri Jul 12 2019 Zdenek Dohnal - 3.18.12-16 +- fixing issues found by coverity scan + +* Thu Jul 11 2019 Zdenek Dohnal - 3.18.12-15 +- ignore symlinks when installing plugins, because they are ubuntu-specific + and are not used, but its checking breaks plugin installation + +* Tue Jul 09 2019 Zdenek Dohnal - 3.18.12-14 +- remove old obsoletes and provides for hpijs, libsane-hpoj and hplip-compat-libs + +* Wed Jun 26 2019 Zdenek Dohnal - 3.18.12-13 +- fix #1722222 without downstream patch, just call desktop-install-file with + other parameters + +* Thu Jun 20 2019 Zdenek Dohnal - 3.18.12-12 +- 1722222 - Broken hp-uiscan.desktop (upstream bug) + +* Thu May 16 2019 Zdenek Dohnal - 3.18.12-11 +- 1706233 - hplip FTBFS with python38 + +* Mon Apr 15 2019 Zdenek Dohnal - 3.18.12-10 +- fix several desktop issues reported in bodhi + +* Thu Apr 04 2019 Zdenek Dohnal - 3.18.12-9 +- 1695716 - hpcups crashes in Compressor destructor + +* Mon Apr 01 2019 Zdenek Dohnal - 3.18.12-8 +- 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O + +* Mon Apr 01 2019 Zdenek Dohnal - 3.18.12-7 +- 1694569 - hp-uiscan does not have interactive mode + +* Mon Mar 25 2019 Zdenek Dohnal - 3.18.12-6 +- 1684434 - Scanning broken for HP LaserJet 3052 + +* Mon Mar 04 2019 Zdenek Dohnal - 3.18.12-5 +- 1684792 - devel-file-in-non-devel-package /usr/lib64/libhpmud.so + +* Tue Feb 05 2019 Zdenek Dohnal - 3.18.12-4 +- 1671513 - after 'successful' plugin installation it is not installed + +* Fri Feb 01 2019 Zdenek Dohnal - 3.18.12-3 +- m277-m281 printer support got some fixes, so try to do not use our downstream patch +- hpcups-update-ppds can freeze sometimes, add timeout for to be sure +- fixed hp-setup crash when user wants to define path to PPD file + +* Fri Feb 01 2019 Fedora Release Engineering - 3.18.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 08 2019 Zdenek Dohnal - 3.18.12-1 +- 3.18.12 + +* Mon Dec 03 2018 Zdenek Dohnal - 3.18.6-12 +- Built with new net-snmp + +* Tue Nov 13 2018 Zdenek Dohnal - 3.18.6-11 +- 1641100 - Retrieval of signing keys for plugin verification should use a server pool + +* Mon Nov 12 2018 Zdenek Dohnal - 3.18.6-10 +- 1645815 - hp-check --runtime crashes involving FileNotFoundError + +* Mon Oct 01 2018 Tomas Korbar - 3.18.6-9 +- 1594602 - Fix typos in QMessageBox constructor calls + +* Mon Oct 01 2018 Tomas Korbar - 3.18.6-8 +- 1626877 - Fix AttributeError when connecting to printer via wifi + +* Tue Sep 25 2018 Tomas Korbar - 3.18.6-7 +- 1566938 - Fix TypeError when printing ImportError message in hpfax + +* Tue Sep 18 2018 Tomas Korbar - 3.18.6-6 +- 1564770 - Fix TypeError when printing error object message + +* Tue Jul 24 2018 Zdenek Dohnal - 3.18.6-5 +- correcting license + +* Sat Jul 21 2018 Kevin Fenzi - 3.18.6-4 +- Rebuild for new net-snmp + +* Fri Jul 13 2018 Fedora Release Engineering - 3.18.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Miro Hrončok - 3.18.6-2 +- Rebuilt for Python 3.7 + +* Mon Jun 11 2018 Zdenek Dohnal - 3.18.6-1 +- 3.18.6, have cups running because hp tools + +* Fri May 25 2018 Zdenek Dohnal - 3.18.5-2 +- hp-setup fails on fax setup - use binary strings +- m278-m281 doesn;t work correctly again + +* Thu May 24 2018 Zdenek Dohnal - 3.18.5-1 +- 3.18.5 + +* Thu May 24 2018 Zdenek Dohnal - 3.18.4-3 +- revert 1544912 + +* Fri May 11 2018 Zdenek Dohnal - 3.18.4-2 +- 1577078 - add other trap for missing gui + +* Thu Apr 26 2018 Zdenek Dohnal - 3.18.4-1 +- 3.18.4 + +* Tue Apr 24 2018 Zdenek Dohnal - 3.18.3-3 +- 1544912 - hp colorlaserjet m278-m281 doesn't install correctly + +* Wed Apr 18 2018 Zdenek Dohnal - 3.18.3-2 +- set dependency directly to /usr/bin/gpg + +* Mon Mar 12 2018 Zdenek Dohnal - 3.18.3-1 +- 3.18.3 + +* Wed Feb 28 2018 Zdenek Dohnal - 3.17.11-10 +- name libraries explicitly + +* Mon Feb 19 2018 Zdenek Dohnal - 3.17.11-9 +- gcc and gcc-c++ are no longer in buildroot by default + +* Tue Feb 13 2018 Zdenek Dohnal - 3.17.11-8 +- 1544788 - HP ColorLaserjet MFP M278-M281 - missing family class + +* Tue Feb 13 2018 Zdenek Dohnal - 3.17.11-7 +- Rebuild for mass rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 3.17.11-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Jan 12 2018 Zdenek Dohnal - 3.17.11-5 +- 1533869 - hp-firmware:NameError: name 'INTERACTIVE_MODE4' is not defined + +* Thu Jan 11 2018 Igor Gnatenko - 3.17.11-4 +- Remove obsolete scriptlets + +* Mon Jan 08 2018 Zdenek Dohnal - 3.17.11-3 +- fixing 1528851 for option -xraw + +* Tue Jan 02 2018 Zdenek Dohnal - 3.17.11-2 +- 1528851 - Unable to scan and save jpg with color with hp-scan + +* Thu Dec 07 2017 Zdenek Dohnal - 3.17.11-1 +- 3.17.11 + +* Mon Nov 06 2017 Zdenek Dohnal - 3.17.10-3 +- 1509394 - Add support for HP ColorLaserjet MFP M278-M281 + +* Thu Oct 26 2017 Zdenek Dohnal - 3.17.10-2 +- changing url + +* Fri Oct 20 2017 Zdenek Dohnal - 3.17.10-1 +- rebase to 3.17.10 + +* Wed Oct 04 2017 Zdenek Dohnal - 3.17.9-2 +- 1498487 - Add missing Exec line in desktop file + +* Wed Sep 20 2017 Zdenek Dohnal - 3.17.9-1 +- rebase to 3.17.9 + +* Fri Aug 04 2017 Zdenek Dohnal - 3.17.6-1 +- rebase to 3.17.6 +- adding hplip-rebase.sh script for testing if plugin is available - removing its testing from spec + +* Wed Aug 02 2017 Fedora Release Engineering - 3.17.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.17.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 07 2017 Igor Gnatenko - 3.17.4-5 +- Rebuild due to bug in RPM (RHBZ #1468476) + +* Mon May 29 2017 Zdenek Dohnal - 3.17.4-4 +- 1456467 - hp-check shows 'CUPS incompatible or not running' even if CUPS is running + +* Tue May 09 2017 Zdenek Dohnal - 3.17.4-3 +- added appdata.xml, several tools moved into gui subpackage because they don't have CLI variant and use only GUI, hp-pqdiag was removed because it is deprecated and not functional + +* Wed Apr 26 2017 Zdenek Dohnal - 3.17.4-2 +- 1440502 - hp 8610 Filter failed when trying to print on fedora 26 - redo hplip-noernie.patch + +* Mon Apr 24 2017 Zdenek Dohnal - 3.17.4-1 +- rebase to 3.17.4 + +* Fri Feb 10 2017 Fedora Release Engineering - 3.16.11-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 13 2017 Zdenek Dohnal - 3.16.11-6 +- reverting previous commit + +* Wed Jan 11 2017 Zdenek Dohnal - 3.16.11-5 +- added Requires: python3-qt5 + +* Mon Dec 19 2016 Miro Hrončok - 3.16.11-4 +- Rebuild for Python 3.6 + +* Tue Nov 29 2016 Zdenek Dohnal - 3.16.11-3 +- fixing requires for hpplugincheck + +* Mon Nov 28 2016 Zdenek Dohnal - 3.16.11-2 +- adding spec switch hpplugincheck - for testing if new hp plugin is available + +* Fri Nov 25 2016 Zdenek Dohnal - 3.16.11-1 +- rebase to 3.16.11 + +* Mon Oct 31 2016 Zdenek Dohnal - 3.16.10-1 +- rebase to 3.16.10, removed include-ppdh patch + +* Mon Oct 24 2016 Zdenek Dohnal - 3.16.9-2 +- changing url to http://hplipopensource.com/ + +* Thu Sep 22 2016 Zdenek Dohnal - 3.16.9-1 +- rebase to 3.16.9 + +* Thu Sep 01 2016 Zdenek Dohnal - 3.16.8-2 +- bad whitespaces (bug #1372343) + +* Tue Aug 30 2016 Zdenek Dohnal - 3.16.8-1 +- rebase to 3.16.8 + +* Fri Aug 12 2016 Zdenek Dohnal - 3.16.7-4 +- adding jpopelka's patch into hplip-ui-optional.patch (launchpad #1612132) + +* Wed Aug 10 2016 Zdenek Dohnal - 3.16.7-3 +- editing previous commit + +* Wed Aug 10 2016 Zdenek Dohnal - 3.16.7-2 +- 1361968 - adding error message when hp-setup fails because of missing hplip-gui + +* Mon Aug 08 2016 Zdenek Dohnal - 3.16.7-2 +- hplip license problem - removing proprietary ErnieFilters.{cpp,h} + ernieplatform.h, disabling PCL3GUI2 driver (because of using proprietary ErnieFilters) + +* Thu Jul 21 2016 Zdenek Dohnal - 3.16.7-1 +- 1358761 - Rebase 3.16.7 + +* Tue Jul 19 2016 Fedora Release Engineering - 3.16.5-4 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Mon Jul 11 2016 Zdenek Dohnal - 3.16.5-3 +- including cups/ppd.h into HPCupsFilter.h and hpcupsfax.h + +* Wed Jun 22 2016 Zdenek Dohnal - 3.16.5-2 +- bug 1341304 - name 'source_option' is not defined + +* Thu May 19 2016 Jiri Popelka - 3.16.5-1 +- 3.16.5 (gui moves from Qt4 to Qt5) + +* Fri Mar 18 2016 zdohnal - 3.16.3-1 +- 3.16.3 + +* Tue Feb 09 2016 Jiri Popelka - 3.16.2-1 +- 3.16.2 + +* Wed Feb 03 2016 Fedora Release Engineering - 3.15.11-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 27 2016 Jiri Popelka - 3.15.11-6 +- updated patch for bug #1249414 + +* Fri Jan 22 2016 Jiri Popelka - 3.15.11-5 +- hp-plugin hangs on 'su' (bug #1249414). + +* Mon Jan 04 2016 Jiri Popelka - 3.15.11-4 +- Don't try to write bytecode cache for hpps filter (bug #1241548). + +* Thu Dec 10 2015 Jiri Popelka - 3.15.11-3 +- move 56-hpmud.rules into main package completely (bug #1033952) + +* Wed Nov 18 2015 Jiri Popelka - 3.15.11-2 +- run autoreconf instead of patching libtool script to work-around rpath issues + +* Mon Nov 16 2015 Jiri Popelka - 3.15.11-1 +- 3.15.11 + +* Tue Nov 10 2015 Fedora Release Engineering - 3.15.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Thu Nov 05 2015 Jiri Popelka - 3.15.9-4 +- Rebuilt for Python3.5 rebuild + +* Fri Oct 23 2015 Tim Waugh - 3.15.9-3 +- Don't try to write bytecode cache for hp-config_usb_printer (bug #1266903). + +* Fri Sep 25 2015 Jiri Popelka - 3.15.9-2 +- Don't specify python version in hplip-printer@.service (bug #1266423) + +* Tue Sep 15 2015 Jiri Popelka - 3.15.9-1 +- 3.15.9 + +* Tue Aug 18 2015 Jiri Popelka - 3.15.7-5 +- remove compat-libs subpackage (bug #1196237) +- make copy-deviceid.py Python 3 compatible + +* Tue Aug 11 2015 Jiri Popelka - 3.15.7-4 +- Upstream fix for 'Stopped "Filter Failed"' (Launchpad #1476920) + +* Thu Jul 30 2015 Jiri Popelka - 3.15.7-3 +- fix hpijs Obsoletes & Provides +- remove Group tag + +* Wed Jul 29 2015 Jiri Popelka - 3.15.7-2 +- merge hpijs into main package (#1033952#14) +- ship hp-config_usb_printer in main package along with + udev rule and unit file (#1033952#11) + +* Wed Jul 15 2015 Jiri Popelka - 3.15.7-1 +- 3.15.7 + +* Wed Jun 17 2015 Fedora Release Engineering - 3.15.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Jiri Popelka - 3.15.6-1 +- 3.15.6 + +* Thu Apr 16 2015 Jiri Popelka - 3.15.4-1 +- 3.15.4 + +* Mon Mar 23 2015 Jiri Popelka - 3.15.2-9 +- Build and ship also Python 2 modules for hp-plugin (bug #1196237). + +* Fri Mar 20 2015 Tim Waugh - 3.15.2-7 +- filters: don't use 'env' when starting Python (bug #1202451). + +* Mon Mar 16 2015 Tim Waugh - 3.15.2-6 +- Ignore IOError when logging output (bug #712537). + +* Fri Mar 13 2015 Tim Waugh - 3.15.2-5 +- Requires python3-PyQt4, not PyQt4. + +* Thu Mar 12 2015 Jiri Popelka - 3.15.2-4 +- Make reportlab.patch Python3 compatible (bug #1201088). + +* Tue Mar 3 2015 Tim Waugh - 3.15.2-3 +- Move PPDs requiring hpps to the main package along with the filter + itself (bug #1194186). +- Don't try to write bytecode cache for hpfax backend (bug #1192761). + +* Thu Feb 12 2015 Tim Waugh - 3.15.2-2 +- Don't ship hp-logcapture or hp-doctor (bug #1192090). They are not + useful in Fedora. + +* Wed Feb 04 2015 Jiri Popelka - 3.15.2-1 +- 3.15.2 + +* Wed Jan 21 2015 Tim Waugh - 3.14.10-8 +- No need to remove hpcac as it is no longer provided upstream. + +* Wed Jan 21 2015 Tim Waugh - 3.14.10-7 +- Fixed uses of strncpy throughout. + +* Wed Jan 14 2015 Tim Waugh - 3.14.10-6 +- Requires python3-cups to get postscriptdriver() tags. + +* Tue Dec 23 2014 Tim Waugh - 3.14.10-5 +- Fixed left/right margins for HP DeskJet 990C (LP #1405212). + +* Tue Nov 4 2014 Tim Waugh - 3.14.10-4 +- IEEE 1284 Device ID for HP LaserJet Professional M1132 MFP + (bug #1158743 comment #5). +- IEEE 1284 Device ID for HP LaserJet Color M451dn (bug #1159380). + +* Fri Oct 31 2014 Tim Waugh - 3.14.10-3 +- Fixed build against libjpeg-turbo 1.3.90. + +* Fri Oct 31 2014 Tim Waugh - 3.14.10-2 +- Fixed incorrect name in function call in makeURI when a parallel + port device is used (bug #1159161). + +* Tue Oct 07 2014 Jiri Popelka - 3.14.10-1 +- 3.14.10 + +* Tue Aug 26 2014 Tim Waugh - 3.14.6-7 +- Reverted previous change as it didn't help (bug #1076954). + +* Sat Aug 16 2014 Fedora Release Engineering - 3.14.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Jul 21 2014 Tim Waugh - 3.14.6-5 +- Main package requires gnupg (bug #1118724). +- Fixed version comparisons for x.y.z-style versions such as + reportlab (bug #1121433). + +* Wed Jul 9 2014 Tim Waugh - 3.14.6-4 +- Bumped release. + +* Wed Jul 9 2014 Tim Waugh - 3.14.6-3 +- Another fix for commafy() (bug #984167/bug #1076954 comment #21). + +* Tue Jun 17 2014 Jiri Popelka - 3.14.6-2 +- Fix parsing of avahi-daemon output (bug #1096939). + +* Sat Jun 07 2014 Fedora Release Engineering - 3.14.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Jun 05 2014 Jiri Popelka - 3.14.6-1 +- 3.14.6 + +* Thu May 22 2014 Jiri Popelka - 3.14.4-5 +- Treat logging before importing of logger module (bug #984699). + +* Tue Apr 29 2014 Tim Waugh - 3.14.4-4 +- Fixed scan-tmp patch (bug #1076954). + +* Tue Apr 22 2014 Tim Waugh - 3.14.4-3 +- Fix for last fix (bug #984167). + +* Wed Apr 16 2014 Tim Waugh - 3.14.4-2 +- Fixed codec issue (bug #984167). + +* Wed Apr 09 2014 Jiri Popelka - 3.14.4-1 +- 3.14.4 + +* Fri Apr 4 2014 Tim Waugh - 3.14.3-3 +- Scan to /var/tmp instead of /tmp (bug #1076954). + +* Mon Mar 10 2014 Jiri Popelka - 3.14.3-2 +- BuildRequires: pkgconfig(dbus-1) instead of dbus-devel + +* Fri Mar 07 2014 Jiri Popelka - 3.14.3-1 +- 3.14.3 +- --enable-udev-acl-rules configure flag has been removed upstream + +* Thu Jan 09 2014 Jiri Popelka - 3.14.1-1 +- 3.14.1 + +* Wed Nov 27 2013 Jiri Popelka - 3.13.11-4 +- do not %%ghost /run/hplip (bug #1034928) + +* Mon Nov 25 2013 Tim Waugh - 3.13.11-3 +- Moved hp-doctor to gui sub-package as it requires check module + (bug #1015441). + +* Thu Nov 21 2013 Jiri Popelka - 3.13.11-2 +- create /usr/lib/tmpfiles.d/hplip.conf (bug #1015831). + +* Wed Nov 06 2013 Jiri Popelka - 3.13.11-1 +- 3.13.11 + +* Tue Oct 15 2013 Jaromír Končický - 3.13.10-1 +- 3.13.10: 8 patches applied upstream, big changes in tmp and log dirs, removed hp-mkuri +- Fixed Incorrect IEEE 1284 MFG value for LaserJet Professional P1102 (bug #1018826). + +* Wed Sep 18 2013 Tim Waugh - 3.13.9-2 +- Applied patch to avoid unix-process authorization subject when using + polkit as it is racy (bug #1009541, CVE-2013-4325). + +* Tue Sep 10 2013 Jiri Popelka - 3.13.9-1 +- 3.13.9: hplipjs filter removed, several patches applied upstream + +* Wed Aug 14 2013 Tim Waugh - 3.13.8-2 +- Moved hpps filter to hpijs sub-package (bug #996852). +- Fixed typo in systemtray.py (bug #991638). + +* Tue Aug 13 2013 Jiri Popelka - 3.13.8-1 +- 3.13.8 + +* Sat Aug 03 2013 Fedora Release Engineering - 3.13.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jul 23 2013 Jiri Popelka - 3.13.7-1 +- 3.13.7 +- Device IDs for CM4540 (bug #968177) and cp4005 (bug #980976). + + +* Mon Jun 24 2013 Jiri Popelka - 3.13.6-2 +- add one more arch-specific dependency. + +* Mon Jun 24 2013 Jiri Popelka - 3.13.6-1 +- 3.13.6 +- hplip-ipp-accessors.patch merged upstream +- /etc/cron.daily/hplip_cron -> /usr/share/hplip/hplip_clean.sh + +* Wed May 29 2013 Tim Waugh - 3.13.5-2 +- Avoid several bugs in createTempFile (bug #925032). + +* Tue May 14 2013 Jiri Popelka - 3.13.5-1 +- 3.13.5 +- change udev rule to not add printer queue, just check plugin. + +* Fri May 10 2013 Jiri Popelka - 3.13.4-3 +- Device ID for HP LaserJet 2200 (bug #873123#c8). + +* Thu Apr 11 2013 Tim Waugh - 3.13.4-2 +- Fixed changelog dates. +- Device ID for HP LaserJet P1005 (bug #950776). +- mark cron job file as config(noreplace) + +* Tue Apr 09 2013 Jiri Popelka - 3.13.4-1 +- 3.13.4 + +* Fri Mar 15 2013 Jiri Popelka - 3.13.3-3 +- Remove unused Requires. + +* Thu Mar 14 2013 Tim Waugh - 3.13.3-2 +- Moved hpfax pipe to /var/run/hplip (bug #917756). + +* Fri Mar 08 2013 Jiri Popelka - 3.13.3-1 +- 3.13.3 + +* Thu Feb 14 2013 Jiri Popelka - 3.13.2-1 +- 3.13.2 + +* Thu Feb 14 2013 Fedora Release Engineering - 3.12.11-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 22 2013 Jiri Popelka - 3.12.11-7 +- No need to run update-desktop-database (and require desktop-file-utils) + because there are no MimeKey lines in the desktop files. + +* Fri Jan 18 2013 Adam Tkac - 3.12.11-6 +- rebuild due to "jpeg8-ABI" feature drop + +* Fri Jan 18 2013 Jiri Popelka 3.12.11-5 +- Use arch-specific dependencies. +- Don't provide private python extension libs. + +* Wed Jan 16 2013 Jiri Popelka 3.12.11-4 +- hpijs no longer requires net-snmp (bug #376641, bug #895643). + +* Tue Jan 15 2013 Jiri Popelka 3.12.11-3 +- Use the form of import of PIL that is pillow compatible (bug #895266). + +* Fri Dec 07 2012 Jiri Popelka 3.12.11-2 +- desktop file: remove deprecated Encoding key and Application category + +* Tue Nov 27 2012 Jiri Popelka 3.12.11-1 +- 3.12.11 +-- release-parport.patch merged upstream + +* Thu Nov 22 2012 Tim Waugh 3.12.10-5.a +- Make 'hp-check' check for hpaio set-up correctly (bug #683007). + +* Wed Oct 17 2012 Tim Waugh 3.12.10-4.a +- Some more CUPS filters using the wrong temporary directory + (bug #865603). + +* Tue Oct 16 2012 Tim Waugh 3.12.10-3.a +- CUPS filters should use TMPDIR when available (bug #865603). + +* Thu Oct 11 2012 Jiri Popelka 3.12.10-2.a +- 3.12.10a + +* Thu Oct 04 2012 Jiri Popelka 3.12.10-1 +- 3.12.10 + +* Tue Oct 02 2012 Jiri Popelka 3.12.9-6 +- Ship %%{_localstatedir}/log/hp/tmp directory (bug #859658) + +* Thu Sep 27 2012 Jiri Popelka 3.12.9-5 +- remove useless Conflicts:, Obsoletes: and Provides: fields +- remove %%pre section (stopping&disabling of hplip service on upgrade) +- make hplip_cron work with non-english locale + +* Mon Sep 24 2012 Jiri Popelka 3.12.9-4 +- amend hplip-notification-exception.patch (bug #859543). + +* Thu Sep 20 2012 Jiri Popelka 3.12.9-3 +- Support IEEE 1284.4 protocol over USB (bug #858861). + +* Fri Sep 07 2012 Jiri Popelka 3.12.9-2 +- build against CUPS-1.6 + +* Fri Sep 07 2012 Jiri Popelka 3.12.9-1 +- 3.12.9 +-- no longer needed: fax-ppd.patch + +* Fri Jul 27 2012 Fedora Release Engineering - 3.12.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jun 19 2012 Jiri Popelka 3.12.6-1 +- 3.12.6 + +* Tue Jun 05 2012 Jiri Popelka 3.12.4-3 +- Require systemd instead of udev. + +* Mon Apr 30 2012 Tim Waugh 3.12.4-2 +- The hpijs sub-package no longer requires cupsddk-drivers (which no + longer exists as a real package), but cups >= 1.4. + +* Thu Apr 12 2012 Jiri Popelka 3.12.4-1 +- 3.12.4 + +* Wed Mar 21 2012 Tim Waugh 3.12.2-4 +- Release parport if unsupported model connected (bug #699052). + +* Wed Feb 29 2012 Tim Waugh 3.12.2-3 +- Added another IEEE 1284 Device ID for Color LaserJet CP2025dn to + cope with its DNS-SD response, which has no usb_* keys (bug #651509). + +* Wed Feb 22 2012 Tim Waugh 3.12.2-2 +- Added IEEE 1284 Device ID for LaserJet Professional P1102w (bug #795958). + +* Tue Feb 07 2012 Jiri Popelka 3.12.2-1 +- 3.12.2 + +* Wed Jan 18 2012 Jiri Popelka 3.11.12-3 +- Added IEEE 1284 Device ID for LaserJet P2035. + +* Wed Jan 11 2012 Tim Waugh 3.11.12-2 +- When copying Device IDs from hpcups to hpijs, use ModelName as the + key instead of ShortNickName (bug #651509 comment #7). + +* Mon Dec 19 2011 Jiri Popelka 3.11.12-1 +- 3.11.12 + +* Mon Nov 21 2011 Tim Waugh 3.11.10-11 +- Added IEEE 1284 Device ID for Designjet T770 (bug #747957). + +* Wed Nov 16 2011 Tim Waugh 3.11.10-10 +- Corrected IEEE 1284 Device ID for LaserJet M1120 MFP (bug #754139). + +* Wed Nov 16 2011 Jiri Popelka 3.11.10-9 +- revert prnt/hpcups/HPCupsFilter.cpp 3.11.5->3.11.7 change (bug #738089). + +* Wed Oct 26 2011 Fedora Release Engineering - 3.11.10-8 +- Rebuilt for glibc bug#747377 + +* Tue Oct 25 2011 Tim Waugh 3.11.10-7 +- Catch DBusException in hp-systray (bug #746024). + +* Mon Oct 24 2011 Jiri Popelka 3.11.10-6 +- Move udev rules to /lib/udev/rules.d (bug #748208). + +* Thu Oct 20 2011 Tim Waugh 3.11.10-5 +- Pay attention to the SANE localOnly flag in hpaio (bug #743593). + +* Mon Oct 17 2011 Tim Waugh 3.11.10-4 +- Corrected IEEE 1284 Device ID for LaserJet M1319f MFP (bug #746614) + +* Wed Oct 12 2011 Tim Waugh 3.11.10-3 +- Corrected IEEE 1284 Device ID for LaserJet M1522nf MFP (bug #745498). + +* Fri Oct 7 2011 Tim Waugh 3.11.10-2 +- Corrected IEEE 1284 Device IDs: + - LaserJet M1536dnf MFP (bug #743915) + - PSC 1600 series (bug #743821) + +* Tue Oct 04 2011 Jiri Popelka 3.11.10-1 +- 3.11.10 +- Use _cups_serverbin macro from cups-devel for where to put driver executables. +- No need to define BuildRoot and clean it in clean and install section anymore. +- Corrected IEEE 1284 Device IDs: + Officejet 6300 series (bug #689378) + LaserJet Professional M1212nf MFP (bug #742490) + +* Fri Sep 23 2011 Tim Waugh 3.11.7-5 +- Fixed broken patch for pstotiff. + +* Tue Sep 06 2011 Jiri Popelka 3.11.7-4 +- Fixed xsane crash when doing a multi-image scan (bug #725878) + +* Fri Sep 2 2011 Tim Waugh 3.11.7-3 +- Fixed hpcups crash when required plugin missing (bug #733461). + +* Thu Aug 18 2011 Tim Waugh 3.11.7-2 +- Create debugging files securely (CVE-2011-2722, bug #725830). + +* Mon Jul 25 2011 Jiri Popelka 3.11.7-1 +- 3.11.7 + +* Mon Jul 11 2011 Jiri Popelka 3.11.5-5 +- rebuilt against new net-snmp-5.7 + +* Tue Jun 28 2011 Tim Waugh 3.11.5-4 +- Added Device ID for HP LaserJet Professional P1606dn (bug #708472). +- Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv. + +* Fri Jun 10 2011 Tim Waugh 3.11.5-3 +- Fix building against CUPS 1.5. +- Re-create installed hpcups PPDs unconditionally (bug #712241). + +* Thu May 19 2011 Jiri Popelka 3.11.5-2 +- Main package requires wget to avoid + misleading errors about network connectivity (bug #705843). + +* Thu May 12 2011 Jiri Popelka 3.11.5-1 +- 3.11.5 + +* Fri Apr 1 2011 Tim Waugh 3.11.3a-2 +- Some rpmlint fixes for obsoletes/provides tags. + +* Thu Mar 31 2011 Tim Waugh 3.11.3a-1 +- 3.11.3a. + +* Fri Mar 18 2011 Jiri Popelka 3.11.3-1 +- 3.11.3 (new hpps filter) + +* Tue Mar 1 2011 Jiri Popelka 3.11.1-5 +- Avoid KeyError in ui4/wifisetupdialog.py (bug #680939). +- Corrected IEEE 1284 Device IDs: + LaserJet 1300 (bug #670548) + LaserJet 3390 (bug #678565) + LaserJet P1505 (bug #680951) + +* Tue Feb 22 2011 Tim Waugh - 3.11.1-4 +- Ship hpijs.drv to give another driver option in case of problems + with hpcups. + +* Wed Feb 09 2011 Fedora Release Engineering - 3.11.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Feb 4 2011 Tim Waugh - 3.11.1-2 +- Fixed typo causing ";marker-supply-low-warning" state reason to be + reported by hpijs (bug #675151). + +* Mon Jan 24 2011 Jiri Popelka 3.11.1-1 +- 3.11.1 + +* Mon Jan 17 2011 Tim Waugh - 3.10.9-14 +- Applied patch to fix CVE-2010-4267, remote stack overflow + vulnerability (bug #670252). + +* Wed Jan 12 2011 Tim Waugh - 3.10.9-13 +- Removed unused hpcac filter to avoid unnecessary perl dependency. + +* Wed Jan 12 2011 Tim Waugh - 3.10.9-12 +- Removed duplicate pstotiff files. + +* Wed Jan 12 2011 Tim Waugh - 3.10.9-11 +- Fixed "CUPS Web Interface" button (bug #633899). +- Set mimedir explicitly via configure. + +* Wed Jan 05 2011 Jiri Popelka 3.10.9-10 +- Catch GError exception when notification showing failed (bug #665577). + +* Wed Dec 15 2010 Tim Waugh - 3.10.9-9 +- Enable D-Bus threading (and require pygobject2) (bug #600932). +- Fixed incorrect signal name in setup dialog (bug #653626). +- Another missing newline in filter output (Ubuntu #418053). +- Prevent hpaio segfaulting on invalid URIs (bug #649092). +- Catch D-Bus exceptions in fax dialog (bug #645316). + +* Fri Dec 03 2010 Jiri Popelka 3.10.9-8 +- Corrected IEEE 1284 Device IDs: + HP Color LaserJet CP2025dn (bug #651509). + HP Color LaserJet CM3530 MFP (bug #659381). + +* Fri Dec 03 2010 Jiri Popelka 3.10.9-7 +- The pycups requirement is now python-cups. +- Corrected IEEE 1284 Device IDs: + HP LaserJet 4050/4100/2100 Series/2420/4200/4300/4350/5100/8000 + M3027 MFP/M3035 MFP/P3005/P3010/P4014/P4515 (bug #659039). + HP Color LaserJet 2500/2550 series/3700/4550/4600/4650/4700/5550 + CP1515n/CP3525/CP4520/CM2320nf MFP (bug #659040). + HP Color LaserJet CM4730 MFP (bug #658831). + +* Fri Nov 12 2010 Tim Waugh - 3.10.9-6 +- Call cupsSetUser in cupsext's addPrinter method before connecting so + that we can get an authentication callback (bug #538352). +- Prevent hp-fab traceback when run as root. + +* Thu Nov 11 2010 Jiri Popelka 3.10.9-5 +- Don't emit SIGNALs in ui4.setupdialog.SetupDialog the PyQt3 way (bug #623834). + +* Sun Oct 24 2010 Jiri Popelka 3.10.9-4 +- Avoid UnicodeDecodeError in printsettingstoolbox.py (bug #645739). + +* Mon Oct 18 2010 Tim Waugh - 3.10.9-3 +- Fixed traceback on error condition in device.py (bug #628125). +- Fixed bogus low ink warnings from hpijs driver (bug #643643). + +* Thu Oct 14 2010 Jiri Popelka - 3.10.9-2 +- Fixed utils.addgroup() to return array instead of string (bug #642771). + +* Mon Oct 04 2010 Jiri Popelka - 3.10.9-1 +- 3.10.9. + +* Thu Sep 30 2010 Tim Waugh - 3.10.6-7 +- More fixes from package review: + - Avoided another macro in comment. + - Use python_sitearch macro throughout. + +* Wed Sep 29 2010 jkeating - 3.10.6-6 +- Rebuilt for gcc bug 634757 + +* Mon Sep 20 2010 Jiri Popelka - 3.10.6-5 +- Increased timeouts for curl, wget, ping for high latency networks (bug #635388). + +* Sat Sep 18 2010 Dan Horák - 3.10.6-4 +- drop the ExcludeArch for s390(x) + +* Wed Sep 15 2010 Tim Waugh +- Fixes from package review: + - Main package and hpijs sub-package require cups for directories. + - The common sub-package requires udev for directories. + - The libs sub-package requires python for directories. + - Avoided macro in comment. + - The lib sub-package now runs ldconfig for post/postun. + - Use python_sitearch macro. + +* Mon Sep 13 2010 Jiri Popelka +- Added IEEE 1284 Device ID for HP LaserJet 4000 (bug #633227). + +* Fri Aug 20 2010 Tim Waugh - 3.10.6-3 +- Added another SNMP quirk for an OfficeJet Pro 8500 variant. + +* Thu Aug 12 2010 Tim Waugh - 3.10.6-2 +- Use correct fax PPD name for Qt3 UI. + +* Tue Jul 27 2010 Jiri Popelka - 3.10.6-1 +- 3.10.6. +- Changed shebang /usr/bin/env python -> /usr/bin/python (bug #618351). +- Corrected IEEE 1284 Device IDs: + - HP Color LaserJet CP1518ni (bug #613689). + - HP Color LaserJet 2600n (bug #613712). + +* Mon Jul 26 2010 Tim Waugh +- Removed selinux-policy version conflict as it is no longer + necessary. + +* Wed Jul 21 2010 David Malcolm - 3.10.5-8 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Thu Jun 24 2010 Jiri Popelka - 3.10.5-7 +- Added COPYING to common sub-package. + +* Thu Jun 24 2010 Jiri Popelka - 3.10.5-6 +- Main package requires explicit version of hplip-libs. + +* Thu Jun 17 2010 Tim Waugh - 3.10.5-5 +- Fixed marker-supply attributes in hpijs (bug #605269). + +* Wed Jun 9 2010 Tim Waugh - 3.10.5-4 +- Mark SNMP quirks in PPD for HP OfficeJet Pro 8500 (bug #581825). + +* Mon Jun 07 2010 Jiri Popelka - 3.10.5-3 +- hplip-gui requires libsane-hpaio + +* Thu Jun 03 2010 Jiri Popelka - 3.10.5-2 +- Fix ImageableArea for Laserjet 8150/9000 (#596298) + +* Mon May 17 2010 Jiri Popelka - 3.10.5-1 +- 3.10.5. No longer need tray-icon-crash.patch +- Increase the timeout for system tray availability checking (bug #569969). + +* Wed May 12 2010 Jiri Popelka - 3.10.2-16 +- Prevent segfault in cupsext when opening PPD file (bug #572775). + +* Wed May 12 2010 Jiri Popelka - 3.10.2-15 +- Added/corrected more IEEE 1284 Device IDs: + - HP LaserJet 4250 (bug #585499). + - HP Color LaserJet 2605dn (bug #583953). + - HP LaserJet P1007 (bug #585272). + +* Wed May 12 2010 Jiri Popelka - 3.10.2-14 +- Wait for max 30s to see if a system tray becomes available (bug #569969). + +* Wed Apr 28 2010 Tim Waugh - 3.10.2-13 +- Clear old printer-state-reasons we used to manage (bug #510926). + +* Tue Apr 27 2010 Jiri Popelka - 3.10.2-12 +- Added missing newline to string argument in dbglog() call (bug #585275). + +* Fri Apr 16 2010 Tim Waugh - 3.10.2-11 +- Added/corrected more IEEE 1284 Device IDs: + - HP Color LaserJet CM1312nfi (bug #581005). + - HP Color LaserJet 3800 (bug #581935). + - HP Color LaserJet 2840 (bug #582215). + - HP PSC 2400 (bug #583103). + +* Fri Apr 16 2010 Jiri Popelka - 3.10.2-10 +- Fixed black/blank lines in ljcolor hpcups output (bug #579461). + Work-around is to send entire blank raster lines instead of skipping them. + +* Fri Apr 9 2010 Jiri Popelka - 3.10.2-9.1 +- Added/Corrected several IEEE 1284 Device IDs + (bugs #577262, #577282, #577282, #577288, #577292, #577302, + ,#577306, #577308, #577898, #579920, #580231) + +* Wed Apr 7 2010 Tim Waugh - 3.10.2-8 +- Regenerate hpcups PPDs on upgrade if necessary (bug #579355). + +* Fri Mar 26 2010 Jiri Popelka - 3.10.2-6 +- Add Device ID for HP LaserJet 2300 (#576928) + +* Tue Mar 23 2010 Tim Waugh - 3.10.2-5 +- Explicitly destroy tray icon on exit (bug #543286). + +* Thu Mar 4 2010 Tim Waugh - 3.10.2-4 +- Main package doesn't require hal. +- Sub-package common requires udev. + +* Wed Mar 3 2010 Tim Waugh - 3.10.2-3 +- Set defattr in gui sub-package file manifest. +- Avoid mixed use of spaces and tabs. + +* Mon Mar 1 2010 Tim Waugh - 3.10.2-2 +- Removed SYSFS use in udev rules and actually made them work + (bug #560754). +- Use a temporary file in pstotiff to allow gs random access. + +* Fri Feb 26 2010 Tim Waugh - 3.10.2-1 +- 3.10.2. No longer need preferences-crash patch. +- The pstotiff filter is rubbish so replace it (launchpad #528394). +- Stopped hpcups pointlessly trying to read spool files + directly (bug #552572). + +* Sat Feb 20 2010 Tim Waugh - 3.9.12-8 +- Corrected several IEEE 1284 Device IDs using foomatic data + (launchpad bug #523259). + +* Tue Feb 16 2010 Tim Waugh - 3.9.12-7 +- Ship %%{_datadir}/hplip/prnt/plugins directory (bug #564551). + +* Fri Feb 5 2010 Tim Waugh - 3.9.12-6 +- Build requires cups for postscriptdriver tags for .drv file. + +* Thu Feb 4 2010 Tim Waugh - 3.9.12-5 +- Rebuild for postscriptdriver tags. + +* Wed Jan 20 2010 Tim Waugh - 3.9.12-4 +- Fixed crash when using Preferences dialog (bug #555979). + +* Tue Jan 12 2010 Tim Waugh - 3.9.12-3 +- Do ship pkit module even though the PolicyKit mechanism is not + shipped (bug #554817). + +* Tue Jan 5 2010 Tim Waugh - 3.9.12-2 +- Retry when connecting to device fails (bug #532112). +- Don't ship PolicyKit mechanism (bug #551773). + +* Tue Dec 22 2009 Tim Waugh - 3.9.12-1 +- 3.9.12. No longer need hpcups-plugin patch. + +* Thu Dec 10 2009 Tim Waugh - 3.9.10-5 +- Reverted fix for bug #533462 until bug #541604 is solved. + +* Thu Nov 26 2009 Tim Waugh 3.9.10-4 +- Fixed Device ID parsing code in hpijs's dj9xxvip.c (bug #510926). + +* Thu Nov 26 2009 Tim Waugh 3.9.10-3 +- Removed duplex constraints on page sizes with imageable areas larger + than possible when duplexing (bug #541572). +- Fixed duplex reverse sides being horizontally flipped (bug #541604). + +* Wed Nov 18 2009 Tim Waugh 3.9.10-2 +- Fixed duplex handling in hpcups.drv (bug #533462). + +* Wed Nov 4 2009 Tim Waugh 3.9.10-1 +- 3.9.10. No longer need clear-previous-state-reasons, + hpcups-reorder, non-scripts, parenths, plugin-error, + requirespageregion or state-reasons-newline patches. + +* Mon Nov 2 2009 Tim Waugh 3.9.8-21 +- Added 'requires proprietary plugin' to appropriate model names + (bug #513283). + +* Fri Oct 30 2009 Tim Waugh 3.9.8-20 +- Reverted retry patch until it can be tested some more. + +* Thu Oct 29 2009 Tim Waugh 3.9.8-19 +- Retry when connecting to device fails (bug #528483). +- Avoid busy loop in hpcups when backend has exited (bug #525944). + +* Wed Oct 28 2009 Tim Waugh 3.9.8-18 +- Set a printer-state-reason when there's a missing required plugin + (bug #531330). + +* Tue Sep 29 2009 Tim Waugh 3.9.8-17 +- Give up trying to print a job to a reconnected device (bug #515481). + +* Wed Sep 23 2009 Tim Waugh 3.9.8-16 +- Enable parallel port support when configuring (bug #524979). + +* Wed Sep 16 2009 Tim Waugh 3.9.8-15 +- Fixed hp-setup traceback when discovery page is skipped (bug #523685). + +* Fri Aug 28 2009 Tim Waugh 3.9.8-14 +- Include missing base files. + +* Fri Aug 28 2009 Tim Waugh 3.9.8-13 +- Use dll.d file instead of post scriptlet for hpaio (bug #519988). +- Fixed RequiresPageRegion patch (bug #518756). + +* Thu Aug 27 2009 Tomas Mraz - 3.9.8-12 +- rebuilt with new openssl + +* Wed Aug 26 2009 Tim Waugh 3.9.8-11 +- Set RequiresPageRegion in hpcups PPDs (bug #518756). + +* Tue Aug 25 2009 Tim Waugh 3.9.8-10 +- Removed never-used definition of BREAKPOINT in scan/sane/common.h + in hope of fixing the build. + +* Tue Aug 25 2009 Tim Waugh 3.9.8-9 +- New common sub-package for udev rules and config file (bug #516459). +- Don't install base/*.py with executable bit set. + +* Mon Aug 24 2009 Tim Waugh 3.9.8-8 +- Fixed typos in page sizes (bug #515469). +- Build no longer requires libudev-devel. +- Fixed state reasons handling problems (bug #501338). + +* Wed Aug 19 2009 Tim Waugh 3.9.8-6 +- Make sure to avoid handwritten asm. +- Don't use obsolete configure options. + +* Wed Aug 19 2009 Tim Waugh 3.9.8-5 +- Use upstream udev rules instead of hal policy (bug #518172). +- Removed unnecessary dependency on PyQt as we only use PyQt4 now. + +* Wed Aug 12 2009 Tim Waugh 3.9.8-4 +- Upstream patch to fix paper size order and LJColor device class + color space. + +* Wed Aug 12 2009 Tim Waugh 3.9.8-3 +- The python-reportlab dependency was in the wrong sub-package. + +* Thu Aug 6 2009 Tim Waugh 3.9.8-2 +- Removed access_control.grant_group line from HAL fdi file. + +* Wed Aug 5 2009 Tim Waugh 3.9.8-1 +- 3.9.8. + +* Tue Aug 4 2009 Tim Waugh 3.9.6b-5 +- Fix hpcups fax PPDs (bug #515356) + +* Tue Jul 28 2009 Tim Waugh 3.9.6b-4 +- Fixed ui-optional patch for qt4 code path (bug #500473). +- Fixed HWResolution for 'Normal' output from the hpcups driver + (laundpad bug #405400). + +* Mon Jul 27 2009 Tim Waugh 3.9.6b-2 +- 3.9.6b. + +* Fri Jul 24 2009 Fedora Release Engineering - 3.9.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 23 2009 Tim Waugh 3.9.2-8 +- Use existing libusb-using routines to try fetching Device ID. + +* Thu Jul 23 2009 Tim Waugh 3.9.2-7 +- Error checking in the libudev device-id fallback code. + +* Tue Jul 21 2009 Tim Waugh 3.9.2-6 +- Fixed device-id reporting. + +* Wed Jun 24 2009 Tim Waugh 3.9.2-5 +- Set disc media for disc page sizes (bug #495672). + +* Mon Mar 9 2009 Tim Waugh 3.9.2-4 +- Ship libhpmud.so (bug #489059). +- Fixed no-root-config patch (bug #489055). + +* Tue Feb 24 2009 Fedora Release Engineering - 3.9.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 20 2009 Tim Waugh 3.9.2-2 +- 3.9.2. No longer need systray or quit patches. + +* Tue Jan 27 2009 Tim Waugh 2.8.12-7 +- Only ship compressed PPD files. + +* Fri Jan 16 2009 Tomas Mraz 2.8.12-6 +- rebuild with new openssl + +* Tue Jan 13 2009 Tim Waugh 2.8.12-5 +- Fixed Quit menu item in device manager (bug #479751). + +* Tue Jan 13 2009 Tim Waugh 2.8.12-4 +- Prevent crash when DEVICE_URI/PRINTER environment variables are not + set (bug #479808 comment 6). + +* Tue Jan 13 2009 Tim Waugh 2.8.12-3 +- Make --qt4 the default for the systray applet, so that it appears + in the right place, again (bug #479751). +- Removed hal preprobe rules as they were causing breakage + (bug #479648). + +* Mon Jan 12 2009 Tim Waugh 2.8.12-2 +- Don't write to system-wide configuration file (bug #479178). + +* Tue Dec 23 2008 Tim Waugh 2.8.12-1 +- 2.8.12. + +* Thu Dec 11 2008 Tim Waugh 2.8.10-2 +- Rediff libsane patch. + +* Thu Dec 11 2008 Tim Waugh 2.8.10-1 +- 2.8.10. No longer need gzip-n or quiet patches. + +* Thu Dec 11 2008 Tim Waugh 2.8.7-5 +- Prevent backend crash when D-Bus not running (bug #474362). + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.8.7-4 +- Rebuild for Python 2.6 + +* Tue Oct 21 2008 Tim Waugh 2.8.7-3 +- Ship PPDs in the correct location (bug #343841). + +* Fri Sep 26 2008 Tim Waugh 2.8.7-2 +- Moved Python extension into libs sub-package (bug #461236). + +* Mon Aug 4 2008 Tim Waugh 2.8.7-1 +- 2.8.7. +- Avoid hard-coded rpaths. +- New libs sub-package (bug #444016). + +* Thu Jul 31 2008 Tim Waugh +- Move libhpip.so* to the main package to avoid libsane-hpaio + depending on hpijs (bug #457440). + +* Thu Jul 31 2008 Tom "spot" Callaway 2.8.6b-2 +- fix license tag + +* Mon Jul 28 2008 Tim Waugh 2.8.6b-1 +- 2.8.6b. + +* Mon Jun 23 2008 Tim Waugh 2.8.6-1 +- 2.8.6. No longer need libm patch. + +* Fri Jun 6 2008 Tim Waugh 2.8.5-2 +- Make --qt4 the default for the systray applet, so that it appears + in the right place. Requires PyQt4. + +* Tue Jun 3 2008 Tim Waugh 2.8.5-1 +- 2.8.5. +- Configure with --enable-dbus. Build requires dbus-devel. +- Fix chmod 644 line. +- Ship hp-systray in the gui sub-package, but don't ship the desktop + launcher yet as the systray applet is quite broken. +- Don't run autoconf. + +* Tue May 13 2008 Tim Waugh 2.8.2-3 +- Move installer directory to main package (bug #446171). + +* Fri Apr 4 2008 Tim Waugh 2.8.2-2 +- Update hplip.fdi for Fedora 9: info.bus -> info.subsystem. +- Images in docdir should not be executable (bug #440552). + +* Tue Mar 4 2008 Tim Waugh 2.8.2-1 +- 2.8.2. No longer need alloc, unload-traceback or media-empty patches. +- Ship cupsddk driver. The hpijs sub-package now requires cupsddk-drivers. + +* Tue Mar 4 2008 Tim Waugh 2.7.12-6 +- Fixed marker-supply-low strings. + +* Wed Feb 13 2008 Tim Waugh 2.7.12-5 +- Rebuild for GCC 4.3. + +* Fri Jan 25 2008 Tim Waugh 2.7.12-4 +- The hpijs compression module doesn't allocate enough memory (bug #428536). + +* Wed Jan 23 2008 Tim Waugh 2.7.12-3 +- Really grant the ACL for the lp group (bug #424331). + +* Fri Jan 18 2008 Tim Waugh 2.7.12-2 +- Ship installer directory (bug #428246). +- Avoid multilib conflict (bug #341531). +- The hpijs sub-package requires net-snmp (bug #376641). + +* Fri Jan 18 2008 Tim Waugh 2.7.12-1 +- 2.7.12. No longer need ljdot4 patch. + +* Fri Jan 4 2008 Tim Waugh 2.7.10-2 +- Don't ship udev rules; instead, grant an ACL for group lp (bug #424331). + +* Fri Dec 07 2007 Release Engineering - 2.7.10-2 +- Rebuild for deps + +* Mon Oct 22 2007 Tim Waugh 2.7.10-1 +- 2.7.10. + +* Fri Oct 12 2007 Tim Waugh 2.7.9-3 +- Applied patch to fix remnants of CVE-2007-5208 (bug #329111). + +* Tue Oct 9 2007 Tim Waugh 2.7.9-2 +- Use raw instead of 1284.4 communication for LJ4000 series (bug #249191). +- Build requires openssl-devel. + +* Wed Oct 3 2007 Tim Waugh 2.7.9-1 +- 2.7.9. +- Adjusted udev rules to be less permissive. We use ConsoleKit to add + ACLs to the device nodes, so world-writable device nodes can be avoided. + +* Tue Sep 25 2007 Tim Waugh 2.7.7-5 +- Prevent hpfax trying to load configuration files as user lp. + +* Thu Sep 6 2007 Tim Waugh 2.7.7-4 +- Reverted udev rules change. +- Ship a HAL FDI file to get correct access control on the USB device + nodes (bug #251470). +- Make libsane-hpaio requires the main hplip package, needed for + libhpip.so (bug #280281). + +* Thu Aug 30 2007 Tim Waugh 2.7.7-3 +- Updated udev rules to allow scanning by console user. + +* Wed Aug 29 2007 Tim Waugh 2.7.7-2 +- Better buildroot tag. +- More specific license tag. + +* Fri Aug 3 2007 Tim Waugh 2.7.7-1 +- 2.7.7. + +* Mon Jul 23 2007 Tim Waugh 2.7.6-10 +- Move libhpmud to hpijs package (bug #248978). + +* Fri Jul 20 2007 Tim Waugh 2.7.6-9 +- Remove hplip service on upgrade. +- Updated selinux-policy conflict for bug #249014. +- Fixed the udev rules file (bug #248740, bug #249025). + +* Tue Jul 17 2007 Tim Waugh 2.7.6-8 +- Fixed hp-toolbox desktop file (bug #248560). + +* Mon Jul 16 2007 Tim Waugh 2.7.6-7 +- Low ink is a warning condition, not an error. + +* Wed Jul 11 2007 Tim Waugh 2.7.6-6 +- Add hp-check back, but in the gui sub-package. +- Show the HP Toolbox menu entry again. + +* Mon Jul 9 2007 Tim Waugh 2.7.6-5 +- Read system config when run as root (bug #242974). + +* Mon Jul 9 2007 Tim Waugh 2.7.6-4 +- Moved reportlab requirement to gui sub-package (bug #189030). +- Patchlevel 1. + +* Sat Jul 7 2007 Tim Waugh 2.7.6-3 +- Fixed pre scriptlet (bug #247349, bug #247322). + +* Fri Jul 6 2007 Tim Waugh 2.7.6-2 +- Main package requires python-reportlab for hp-sendfax (bug #189030). +- Explicitly enable scanning. +- Main package requires python-imaging for hp-scan (bug #247210). + +* Mon Jul 2 2007 Tim Waugh +- Updated selinux-policy conflict for bug #246257. + +* Fri Jun 29 2007 Tim Waugh 2.7.6-1 +- 2.7.6. + +* Thu Jun 28 2007 Tim Waugh 1.7.4a-3 +- Another go at avoiding AVC messages on boot (bug #244205). + +* Thu Jun 14 2007 Tim Waugh 1.7.4a-2 +- Don't try to write a /root/.hplip.conf file when running as a CUPS + backend (bug #244205). + +* Wed Jun 13 2007 Tim Waugh 1.7.4a-1 +- Don't put the version in the desktop file; let desktop-file-install do it. +- 1.7.4a. No longer need marker-supply or faxing-with-low-supplies + patches. Cheetah and cherrypy directories no longer shipped in source + tarball. + +* Mon Jun 11 2007 Tim Waugh +- Don't ship hp-check (bug #243273). +- Moved hp-setup back to the base package, and put code in + utils.checkPyQtImport() to check for the gui sub-package as well as + PyQt (bug #243273). + +* Fri Jun 8 2007 Tim Waugh +- Moved hp-setup to the ui package (bug #243273). +- Prevent SELinux audit message from the CUPS backends (bug #241776) + +* Thu May 10 2007 Tim Waugh 1.7.2-10 +- Prevent a traceback when unloading a photo card (bug #238617). + +* Fri May 4 2007 Tim Waugh 1.7.2-9 +- When faxing, low ink/paper is not a problem (bug #238664). + +* Tue Apr 17 2007 Tim Waugh 1.7.2-8 +- Update desktop database on %%postun as well (bug #236163). + +* Mon Apr 16 2007 Tim Waugh 1.7.2-7 +- Some parts can run without GUI support after all (bug #236161). +- Added /sbin/service and /sbin/chkconfig requirements for the scriptlets + (bug #236445). +- Fixed %%post scriptlet's condrestart logic (bug #236445). + +* Fri Apr 13 2007 Tim Waugh 1.7.2-6 +- Fixed dangling symlinks (bug #236156). +- Move all fax bits to the gui package (bug #236161). +- Don't ship fax PPD and backend twice (bug #236092). +- Run update-desktop-database in the gui package's %%post scriptlet + (bug #236163). +- Moved desktop-file-utils requirement to gui package (bug #236163). +- Bumped selinux-policy conflict version (bug #236092). + +* Thu Apr 5 2007 Tim Waugh 1.7.2-5 +- Better media-empty-error state handling: always set the state. + +* Wed Apr 4 2007 Tim Waugh 1.7.2-4 +- Clear the media-empty-error printer state. + +* Wed Apr 4 2007 Tim Waugh 1.7.2-3 +- Fixed typo in marker-supply-low patch. + +* Wed Apr 4 2007 Tim Waugh 1.7.2-2 +- Split out a gui sub-package (bug #193661). +- Build requires sane-backends-devel (bug #234813). + +* Tue Apr 3 2007 Tim Waugh +- Change 'Hidden' to 'NoDisplay' in the desktop file, and use the System + category instead of Utility (bug #170762). +- Link libsane-hpaio against libsane (bug #234813). + +* Fri Mar 30 2007 Tim Waugh +- Use marker-supply-low IPP message. + +* Thu Mar 1 2007 Tim Waugh 1.7.2-1 +- 1.7.2. + +* Wed Feb 14 2007 Tim Waugh 1.7.1-1 +- 1.7.1. + +* Wed Jan 10 2007 Tim Waugh 1.6.12-1 +- 1.6.12. No longer need broken-conf, loop, out-of-paper or + sane-debug patches. + +* Thu Dec 7 2006 Jeremy Katz - 1.6.10-7 +- rebuild against python 2.5 + +* Wed Dec 6 2006 Tim Waugh +- Minor state fixes for out-of-paper patch. + +* Thu Nov 23 2006 Tim Waugh 1.6.10-6 +- Report out-of-paper and offline conditions in CUPS backend (bug #216477). + +* Wed Nov 1 2006 Tim Waugh 1.6.10-5 +- Fixed debugging patch. + +* Wed Nov 1 2006 Tim Waugh 1.6.10-4 +- Allow debugging of the SANE backend. + +* Mon Oct 30 2006 Tim Waugh 1.6.10-3 +- IPv6 support (bug #198377). Local-only sockets are IPv4, and ought + to be changed to unix domain sockets in future. + +* Fri Oct 27 2006 Tim Waugh 1.6.10-2 +- 1.6.10. No longer need compile patch. +- Fixed default config file (bug #211072). +- Moved libhpip to hpijs sub-package (bug #212531). + +* Fri Sep 29 2006 Tim Waugh 1.6.7-4 +- Don't wake up every half a second (bug #204725). + +* Mon Sep 25 2006 Tim Waugh +- Fixed package URL. + +* Mon Aug 21 2006 Tim Waugh 1.6.7-3 +- Don't look up username in PWDB in the fax backend (removed redundant code). + +* Mon Aug 7 2006 Tim Waugh 1.6.7-2 +- 1.6.7. +- Conflict with selinux-policy < 2.3.4 to make sure new port numbers are + known about (bug #201357). + +* Wed Jul 12 2006 Jesse Keating - (none):1.6.6a-3.1 +- rebuild + +* Tue Jul 4 2006 Tim Waugh 1.6.6a-3 +- libhpip should link against libm (bug #197599). + +* Wed Jun 28 2006 Tim Waugh 1.6.6a-2 +- 1.6.6a. + +* Mon Jun 26 2006 Tim Waugh +- Patchlevel 1. +- Fixed libsane-hpaio %%post scriptlet (bug #196663). + +* Fri Jun 16 2006 Tim Waugh 1.6.6-2 +- 1.6.6. + +* Mon Jun 12 2006 Tim Waugh 0.9.11-6 +- Build requires autoconf (bug #194682). + +* Fri May 26 2006 Tim Waugh 0.9.11-5 +- Include doc files (bug #192790). + +* Mon May 15 2006 Tim Waugh 0.9.11-4 +- Patchlevel 2. + +* Wed May 10 2006 Tim Waugh 0.9.11-3 +- Move hpijs to 0.9.11 too. + +* Wed May 10 2006 Tim Waugh 0.9.11-2 +- 0.9.11. +- Keep hpijs at 0.9.8 for now. + +* Fri Apr 21 2006 Tim Waugh 0.9.10-6 +- Patchlevel 2. + +* Wed Apr 19 2006 Tim Waugh +- Don't package COPYING twice (bug #189162). + +* Tue Apr 18 2006 Tim Waugh 0.9.10-5 +- Patchlevel 1. +- Fixed another case-sensitive match. +- Require hpijs sub-package (bug #189140). +- Don't package unneeded files (bug #189162). +- Put fax PPD in the right place (bug #186213). + +* Tue Apr 4 2006 Tim Waugh 0.9.10-4 +- Use case-insensitive matching. 0.9.8 gave all-uppercase in some + situations. +- Last known working hpijs comes from 0.9.8, so use that. + +* Tue Mar 28 2006 Tim Waugh 0.9.10-3 +- Always use /usr/lib/cups/backend. + +* Tue Mar 28 2006 Tim Waugh 0.9.10-2 +- 0.9.10. +- Ship PPDs. + +* Fri Mar 24 2006 Tim Waugh 0.9.9-7 +- Include hpfax. +- Build requires libusb-devel. + +* Thu Mar 23 2006 Tim Waugh 0.9.9-6 +- CUPS backend directory is always in /usr/lib. + +* Mon Mar 13 2006 Tim Waugh 0.9.9-4 +- Quieten hpssd on startup. + +* Sat Mar 11 2006 Tim Waugh 0.9.9-3 +- Patchlevel 1. + +* Thu Mar 9 2006 Tim Waugh 0.9.9-2 +- 0.9.9. No longer need quiet or 0.9.8-4 patches. + +* Wed Mar 01 2006 Karsten Hopp 0.9.8-6 +- Buildrequires: desktop-file-utils + +* Mon Feb 27 2006 Tim Waugh 0.9.8-5 +- Patchlevel 4. + +* Tue Feb 14 2006 Tim Waugh 0.9.8-4 +- Added Obsoletes: hpoj tags back in (bug #181476). + +* Fri Feb 10 2006 Jesse Keating - (none):0.9.8-3.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 7 2006 Tim Waugh 0.9.8-3 +- Patchlevel 3. + +* Fri Feb 3 2006 Tim Waugh 0.9.8-2 +- Patchlevel 2. + +* Thu Feb 2 2006 Tim Waugh 0.9.8-1 +- 0.9.8. +- No longer need initscript patch. +- Don't package hpfax yet. + +* Wed Jan 18 2006 Tim Waugh 0.9.7-8 +- Don't package PPD files. + +* Thu Jan 5 2006 Tim Waugh 0.9.7-7 +- Fix initscript (bug #176966). + +* Mon Jan 2 2006 Tim Waugh 0.9.7-6 +- Rebuild. + +* Fri Dec 23 2005 Tim Waugh 0.9.7-5 +- Rebuild. + +* Wed Dec 21 2005 Tim Waugh 0.9.7-4 +- Build requires python-devel, libjpeg-devel (bug #176317). + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Wed Dec 7 2005 Tim Waugh 0.9.7-3 +- Use upstream patch 0.9.7-2. +- No longer need lpgetstatus or compile patches. + +* Fri Nov 25 2005 Tim Waugh 0.9.7-2 +- Prevent LPGETSTATUS overrunning format buffer. + +* Thu Nov 24 2005 Tim Waugh 0.9.7-1 +- 0.9.7. + +* Fri Nov 18 2005 Tim Waugh 0.9.6-7 +- Fix compilation. + +* Wed Nov 9 2005 Tomas Mraz 0.9.6-6 +- rebuilt against new openssl + +* Mon Nov 7 2005 Tim Waugh 0.9.6-5 +- Rebuilt. + +* Wed Oct 26 2005 Tim Waugh 0.9.6-4 +- Ship initscript in %%{_sysconfdir}/rc.d/init.d. + +* Fri Oct 14 2005 Tim Waugh +- Install the desktop file with Hidden=True (bug #170762). + +* Fri Oct 14 2005 Tim Waugh 0.9.6-3 +- Don't install desktop file (bug #170762). +- Quieten the hpssd daemon at startup (bug #170762). + +* Wed Oct 12 2005 Tim Waugh 0.9.6-2 +- 0.9.6. + +* Tue Sep 20 2005 Tim Waugh 0.9.5-3 +- Apply upstream patch to fix scanning in LaserJets and parallel InkJets. + +* Mon Sep 19 2005 Tim Waugh 0.9.5-2 +- 0.9.5. +- No longer need condrestart patch. +- Fix compile errors. + +* Tue Jul 26 2005 Tim Waugh 0.9.4-3 +- Fix condrestart in the initscript. + +* Mon Jul 25 2005 Tim Waugh 0.9.4-2 +- Use 'condrestart' not 'restart' in %%post scriptlet. + +* Fri Jul 22 2005 Tim Waugh 0.9.4-1 +- forward-decl patch not needed. +- 0.9.4. + +* Fri Jul 1 2005 Tim Waugh 0.9.3-8 +- Removed Obsoletes: hpoj tags (bug #162222). + +* Thu Jun 30 2005 Tim Waugh 0.9.3-7 +- Rebuild to get Python modules precompiled. + +* Wed Jun 22 2005 Tim Waugh 0.9.3-6 +- For libsane-hpaio ExcludeArch: s390 s390x, because it requires + sane-backends. + +* Wed Jun 15 2005 Tim Waugh 0.9.3-5 +- Use static IP ports (for SELinux policy). + +* Tue Jun 14 2005 Tim Waugh 0.9.3-4 +- Conflicts: hpijs from before this package provided it. +- Conflicts: system-config-printer < 0.6.132 (i.e. before HPLIP support + was added) + +* Thu Jun 9 2005 Tim Waugh 0.9.3-3 +- Added Obsoletes: for xojpanel and hpoj-devel (but we don't actually package + devel files yet). + +* Thu Jun 9 2005 Tim Waugh 0.9.3-2 +- Add 'hpaio' to SANE config file, not 'hpoj' (bug #159954). + +* Thu Jun 9 2005 Tim Waugh 0.9.3-1 +- Use /usr/share/applications for putting desktop files in (bug #159932). +- Requires PyQt (bug #159932). + +* Tue Jun 7 2005 Tim Waugh 0.9.3-0.1 +- Initial package, based on Mandriva spec file.