diff --git a/.gitignore b/.gitignore index ad84041..ae142e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -SOURCES/hplip-3.18.4.tar.gz +hp-laserjet_cp_1025nw.ppd.gz +hp-laserjet_professional_p_1102w.ppd.gz +hplip-3.23.12-repack.tar.gz diff --git a/.hplip.metadata b/.hplip.metadata deleted file mode 100644 index c340c54..0000000 --- a/.hplip.metadata +++ /dev/null @@ -1 +0,0 @@ -ecffcd8287f1bc1491b47e25377ca5d086250798 SOURCES/hplip-3.18.4.tar.gz diff --git a/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch b/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch new file mode 100644 index 0000000..7c61d77 --- /dev/null +++ b/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch @@ -0,0 +1,39 @@ +diff --git a/Makefile.am b/Makefile.am +index f65afea..12317dc 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -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_DATA += prnt/ipp-usb/HPLIP.conf + dist_noinst_SCRIPTS += dat2drv.py install.py hplip-install init-suse-firewall init-iptables-firewall class_rpm_build.sh hplipclassdriver.spec createPPD.sh Makefile_dat2drv hpijs-drv +@@ -597,7 +597,7 @@ hpcups_SOURCES = prnt/hpcups/HPCupsFilter.cpp prnt/hpcups/HPCupsFilter.h prnt/hp + prnt/hpcups/ImageProcessor.h + + hpcups_CXXFLAGS = $(APDK_ENDIAN_FLAG) $(DBUS_CFLAGS) +-hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lImageProcessor -lcups -lcupsimage -lz $(DBUS_LIBS) ++hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lcups -lcupsimage -lz $(DBUS_LIBS) + #else + #hpcupsdir = $(cupsfilterdir) + #hpcups_PROGRAMS = hpcups +@@ -687,16 +687,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 [ -d "/usr/share/ipp-usb/quirks/" ]; then \ + echo "ipp-usb directory exists"; \ + cp prnt/ipp-usb/HPLIP.conf /usr/share/ipp-usb/quirks/ ; \ diff --git a/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch b/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch new file mode 100644 index 0000000..c0b26ec --- /dev/null +++ b/0026-Call-QMessageBox-constructors-of-PyQT5-with-the-corr.patch @@ -0,0 +1,417 @@ +diff -up hplip-3.23.3/ui5/devmgr5.py.qmsgbox-typos-fix hplip-3.23.3/ui5/devmgr5.py +--- hplip-3.23.3/ui5/devmgr5.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui5/devmgr5.py 2023-05-29 13:48:48.429731297 +0200 +@@ -144,8 +144,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: +@@ -154,8 +153,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 -up hplip-3.23.3/ui5/fabwindow.py.qmsgbox-typos-fix hplip-3.23.3/ui5/fabwindow.py +--- hplip-3.23.3/ui5/fabwindow.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui5/fabwindow.py 2023-05-29 13:48:48.429731297 +0200 +@@ -344,7 +344,7 @@ class FABWindow(QMainWindow, Ui_MainWin + 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 -up hplip-3.23.3/ui5/nodevicesdialog.py.qmsgbox-typos-fix hplip-3.23.3/ui5/nodevicesdialog.py +--- hplip-3.23.3/ui5/nodevicesdialog.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui5/nodevicesdialog.py 2023-05-29 13:48:48.429731297 +0200 +@@ -64,8 +64,7 @@ class NoDevicesDialog(QDialog, Ui_NoDevi + 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 -up hplip-3.23.3/ui5/plugindialog.py.qmsgbox-typos-fix hplip-3.23.3/ui5/plugindialog.py +--- hplip-3.23.3/ui5/plugindialog.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui5/plugindialog.py 2023-05-29 13:48:48.429731297 +0200 +@@ -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 -up hplip-3.23.3/ui5/queuesconf.py.qmsgbox-typos-fix hplip-3.23.3/ui5/queuesconf.py +--- hplip-3.23.3/ui5/queuesconf.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui5/queuesconf.py 2023-05-29 13:48:48.430731291 +0200 +@@ -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 -up hplip-3.23.3/ui5/setupdialog.py.qmsgbox-typos-fix hplip-3.23.3/ui5/setupdialog.py +--- hplip-3.23.3/ui5/setupdialog.py.qmsgbox-typos-fix 2023-05-29 13:48:48.430731291 +0200 ++++ hplip-3.23.3/ui5/setupdialog.py 2023-05-29 13:54:03.236851925 +0200 +@@ -886,7 +886,7 @@ class SetupDialog(QDialog, Ui_Dialog): + self.windowTitle(), + warn_text, + QMessageBox.Yes | +- QMessageBox.No | ++ QMessageBox.No, + QMessageBox.NoButton) == QMessageBox.Yes): + i = 2 + while True: +@@ -1171,7 +1171,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 +@@ -1223,7 +1223,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 -up hplip-3.23.3/ui/devmgr4.py.qmsgbox-typos-fix hplip-3.23.3/ui/devmgr4.py +--- hplip-3.23.3/ui/devmgr4.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/devmgr4.py 2023-05-29 13:48:48.424731328 +0200 +@@ -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 -up hplip-3.23.3/ui/faxaddrbookform.py.qmsgbox-typos-fix hplip-3.23.3/ui/faxaddrbookform.py +--- hplip-3.23.3/ui/faxaddrbookform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/faxaddrbookform.py 2023-05-29 13:48:48.424731328 +0200 +@@ -228,7 +228,7 @@ class FaxAddrBookGroupsForm(FaxAddrBookG + 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_ba + 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_ba + QMessageBox.critical(self, + self.caption(), + QString(error_text), +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff -up hplip-3.23.3/ui/faxsendjobform.py.qmsgbox-typos-fix hplip-3.23.3/ui/faxsendjobform.py +--- hplip-3.23.3/ui/faxsendjobform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/faxsendjobform.py 2023-05-29 13:48:48.424731328 +0200 +@@ -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 -up hplip-3.23.3/ui/firmwaredialog.py.qmsgbox-typos-fix hplip-3.23.3/ui/firmwaredialog.py +--- hplip-3.23.3/ui/firmwaredialog.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/firmwaredialog.py 2023-05-29 13:48:48.424731328 +0200 +@@ -109,7 +109,7 @@ class FirmwareDialog(QDialog, FirmwareDi + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff -up hplip-3.23.3/ui/makecopiesform.py.qmsgbox-typos-fix hplip-3.23.3/ui/makecopiesform.py +--- hplip-3.23.3/ui/makecopiesform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/makecopiesform.py 2023-05-29 13:48:48.424731328 +0200 +@@ -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 -up hplip-3.23.3/ui/nodevicesform.py.qmsgbox-typos-fix hplip-3.23.3/ui/nodevicesform.py +--- hplip-3.23.3/ui/nodevicesform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/nodevicesform.py 2023-05-29 13:48:48.424731328 +0200 +@@ -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 -up hplip-3.23.3/ui/pluginform2.py.qmsgbox-typos-fix hplip-3.23.3/ui/pluginform2.py +--- hplip-3.23.3/ui/pluginform2.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/pluginform2.py 2023-05-29 13:48:48.424731328 +0200 +@@ -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 -up hplip-3.23.3/ui/printerform.py.qmsgbox-typos-fix hplip-3.23.3/ui/printerform.py +--- hplip-3.23.3/ui/printerform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/printerform.py 2023-05-29 13:48:48.425731321 +0200 +@@ -154,7 +154,7 @@ class PrinterForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff -up hplip-3.23.3/ui/settingsdialog.py.qmsgbox-typos-fix hplip-3.23.3/ui/settingsdialog.py +--- hplip-3.23.3/ui/settingsdialog.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/settingsdialog.py 2023-05-29 13:48:48.425731321 +0200 +@@ -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 -up hplip-3.23.3/ui/setupform.py.qmsgbox-typos-fix hplip-3.23.3/ui/setupform.py +--- hplip-3.23.3/ui/setupform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/setupform.py 2023-05-29 13:48:48.425731321 +0200 +@@ -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 -up hplip-3.23.3/ui/unloadform.py.qmsgbox-typos-fix hplip-3.23.3/ui/unloadform.py +--- hplip-3.23.3/ui/unloadform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/unloadform.py 2023-05-29 13:48:48.425731321 +0200 +@@ -135,7 +135,7 @@ class UnloadForm(QMainWindow): + QMessageBox.critical(self, + self.caption(), + error_text, +- QMessageBox.Ok, ++ QMessageBox.Ok |\ + QMessageBox.NoButton, + QMessageBox.NoButton) + +diff -up hplip-3.23.3/ui/upgradeform.py.qmsgbox-typos-fix hplip-3.23.3/ui/upgradeform.py +--- hplip-3.23.3/ui/upgradeform.py.qmsgbox-typos-fix 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/ui/upgradeform.py 2023-05-29 13:48:48.425731321 +0200 +@@ -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/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch b/0027-Fixed-incomplete-removal-of-hp-toolbox-features-whic.patch new file mode 100644 index 0000000..04fc19d --- /dev/null +++ b/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/hplip-colorlaserjet-mfp-m278-m281.patch b/SOURCES/hplip-colorlaserjet-mfp-m278-m281.patch deleted file mode 100644 index b30cd1d..0000000 --- a/SOURCES/hplip-colorlaserjet-mfp-m278-m281.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff -up hplip-3.17.11/data/models/models.dat.colorlaserjet-mfp-m278-m281 hplip-3.17.11/data/models/models.dat ---- hplip-3.17.11/data/models/models.dat.colorlaserjet-mfp-m278-m281 2017-11-23 13:10:17.000000000 +0100 -+++ hplip-3.17.11/data/models/models.dat 2018-01-19 08:24:21.554788787 +0100 -@@ -58516,6 +58516,59 @@ usb-pid=3c2a - usb-vid=3f0 - wifi-config=3 - -+[colorlaserjet_mfp_m278-m281] -+align-type=0 -+clean-type=0 -+color-cal-type=0 -+copy-type=0 -+embedded-server-type=1 -+fax-type=7 -+fw-download=False -+icon=hp_color_laserjet_cm1312_mfp.png -+io-mfp-mode=1 -+io-mode=1 -+io-support=14 -+job-storage=0 -+linefeed-cal-type=0 -+model1=HP Color LaserJet MFP M278-281 -+monitor-type=0 -+panel-check-type=0 -+pcard-type=0 -+plugin=1 -+plugin-reason=64 -+power-settings=0 -+ppd-name=hp-color_laserjet_pro_mfp_m277 -+pq-diag-type=0 -+r-type=0 -+r0-agent1-kind=4 -+r0-agent1-sku=CF400A/CF400X -+r0-agent1-type=1 -+r0-agent2-kind=4 -+r0-agent2-sku=CF401A -+r0-agent2-type=4 -+r0-agent3-kind=4 -+r0-agent3-sku=CF403A -+r0-agent3-type=5 -+r0-agent4-kind=4 -+r0-agent4-sku=CF402A -+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=48c3 -+support-type=2 -+support-ver=3.15.4 -+tech-class=Postscript -+family-class=Undefined -+tech-subclass=Normal -+tech-type=4 -+usb-pid=3c2a -+usb-vid=3f0 -+wifi-config=3 -+ - [hp_color_laserjet_m553] - align-type=0 - clean-type=0 diff --git a/SOURCES/hplip-keyserver.patch b/SOURCES/hplip-keyserver.patch deleted file mode 100644 index b734dea..0000000 --- a/SOURCES/hplip-keyserver.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up hplip-3.18.6/base/validation.py.keyserver hplip-3.18.6/base/validation.py ---- hplip-3.18.6/base/validation.py.keyserver 2018-11-13 17:35:38.085322569 +0100 -+++ hplip-3.18.6/base/validation.py 2018-11-13 17:36:18.026991983 +0100 -@@ -42,7 +42,7 @@ class DigiSign_Verification(object): - - - class GPG_Verification(DigiSign_Verification): -- def __init__(self, pgp_site = 'pgp.mit.edu', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9): -+ def __init__(self, pgp_site = 'pool.sks-keyservers.net', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9): - self.__pgp_site = pgp_site - self.__key = key - self.__gpg = utils.which('gpg',True) diff --git a/SOURCES/hplip-ui-optional.patch b/SOURCES/hplip-ui-optional.patch deleted file mode 100644 index fa64da8..0000000 --- a/SOURCES/hplip-ui-optional.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -up hplip-3.16.7/base/utils.py.ui-optional hplip-3.16.7/base/utils.py ---- hplip-3.16.7/base/utils.py.ui-optional 2016-07-15 12:12:28.000000000 +0200 -+++ hplip-3.16.7/base/utils.py 2016-08-12 10:12:24.599398769 +0200 -@@ -733,6 +733,13 @@ def checkPyQtImport(): # qt3 - if os.getenv('DISPLAY') and os.getenv('STARTED_FROM_MENU'): - no_qt_message_gtk() - -+ # hplip-gui sub-package (Fedora) -+ try: -+ import ui -+ except ImportError: -+ log.error("hplip-gui not installed. GUI not available. Exiting.") -+ return False -+ - log.error("PyQt not installed. GUI not available. Exiting.") - return False - -@@ -783,7 +790,8 @@ def checkPyQtImport4(): - import PyQt5 - import ui5 - else: -- log.debug("HPLIP is not installed properly or is installed without graphical support. Please reinstall HPLIP again") -+ # hplip-gui sub-package (Fedora) requires python3-qt5 -+ log.error("Install the hplip-gui package for graphical support.") - return False - return True - -@@ -2434,6 +2442,7 @@ def checkPyQtImport45(): - except ImportError as e: - log.debug(e) - -+ log.error("Install the hplip-gui package for graphical support.") - raise ImportError("GUI Modules PyQt4 and PyQt5 are not installed") - - -@@ -2455,6 +2464,7 @@ def import_dialog(ui_toolkit): - return (QApplication, "ui4") - except ImportError as e: - log.error(e) -+ log.error("Unable to load Qt support. Is hplip-gui package installed?") - sys.exit(1) - elif ui_toolkit == "qt5": - try: -@@ -2463,9 +2473,7 @@ def import_dialog(ui_toolkit): - return (QApplication, "ui5") - except ImportError as e: - log.error(e) -- sys.exit(1) -- else: -- log.error("Unable to load Qt support. Is it installed?") -+ log.error("Unable to load Qt support. Is hplip-gui package installed?") - sys.exit(1) - - diff --git a/SOURCES/copy-deviceids.py b/copy-deviceids.py similarity index 100% rename from SOURCES/copy-deviceids.py rename to copy-deviceids.py diff --git a/hp-plugin.in b/hp-plugin.in new file mode 100755 index 0000000..1c0a827 --- /dev/null +++ b/hp-plugin.in @@ -0,0 +1,62 @@ +#!/usr/bin/bash + +# get version from base hplip rpm - it is always in the second column +VER=$(@bindir@/rpm -q hplip | @bindir@/awk -F '-' '{print $2}') + +if test "x$VER" = "x" +then + @bindir@/echo "Version was not acquired - exiting..." + exit 1 +fi + +# plugin name +PLUGIN_FILE="hplip-${VER}-plugin.run" + +download() +{ + SOURCE="$1" + + @bindir@/curl --create-dirs -O --output-dir ~/.hplip --location ${SOURCE} +} + +# link to the plugin +PLUGIN_SOURCE="https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/${PLUGIN_FILE}" +FALLBACK_SOURCE="https://developers.hp.com/sites/default/files/${PLUGIN_FILE}" + +# create a hidden hplip dir to store a file indicating the plugin version after successful install +# the directory can be used by other hplip tools, so we don't have to remove it if the failure happens +if [ ! -d ~/.hplip ] +then + @bindir@/mkdir ~/.hplip || (@bindir@/echo "Cannot create the ~/.hplip dir, exiting" && exit 1) +fi + +for link in ${PLUGIN_SOURCE} ${FALLBACK_SOURCE} +do + download ${link} + + if test "x$(file --mime ~/.hplip/${PLUGIN_FILE} | grep -o 'text/x-shellscript')" = "xtext/x-shellscript" + then + break + fi +done + +if test "x$(file --mime ~/.hplip/${PLUGIN_FILE} | grep -o 'text/x-shellscript')" = "x" +then + @bindir@/echo "The downloaded file does not exist or is not a shell script - error during downloading, exiting..." + exit 1 +fi + +@bindir@/bash ~/.hplip/${PLUGIN_FILE} + +if [ $? -ne 0 ] +then + @bindir@/echo "Plugin installation failed, exiting..." + @bindir@/rm -f ~/.hplip/${PLUGIN_FILE} &> /dev/null + exit 1 +fi + +@bindir@/rm -f ~/.hplip/${PLUGIN_FILE} &> /dev/null +@bindir@/rm -f ~/.hplip/plugin-installed-* &> /dev/null +@bindir@/touch ~/.hplip/plugin-installed-$VER + +exit 0 diff --git a/SOURCES/hpcups-update-ppds.sh b/hpcups-update-ppds.sh old mode 100644 new mode 100755 similarity index 100% rename from SOURCES/hpcups-update-ppds.sh rename to hpcups-update-ppds.sh diff --git a/SOURCES/hplip-CVE-2026-8631-osh.patch b/hplip-CVE-2026-8631-osh.patch similarity index 100% rename from SOURCES/hplip-CVE-2026-8631-osh.patch rename to hplip-CVE-2026-8631-osh.patch diff --git a/SOURCES/hplip-CVE-2026-8632.patch b/hplip-CVE-2026-8632.patch similarity index 100% rename from SOURCES/hplip-CVE-2026-8632.patch rename to hplip-CVE-2026-8632.patch diff --git a/hplip-add-ppd-crash.patch b/hplip-add-ppd-crash.patch new file mode 100644 index 0000000..798630a --- /dev/null +++ b/hplip-add-ppd-crash.patch @@ -0,0 +1,30 @@ +diff -up hplip-3.23.3/setup.py.add-ppd-crash hplip-3.23.3/setup.py +--- hplip-3.23.3/setup.py.add-ppd-crash 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/setup.py 2023-05-29 13:55:03.443497903 +0200 +@@ -553,6 +553,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 -up hplip-3.23.3/ui5/setupdialog.py.add-ppd-crash hplip-3.23.3/ui5/setupdialog.py +--- hplip-3.23.3/ui5/setupdialog.py.add-ppd-crash 2023-05-29 13:55:03.443497903 +0200 ++++ hplip-3.23.3/ui5/setupdialog.py 2023-05-29 13:57:19.014700721 +0200 +@@ -765,10 +765,9 @@ class SetupDialog(QDialog, Ui_Dialog): + pass + + 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/hplip-appdata.patch similarity index 100% rename from SOURCES/hplip-appdata.patch rename to hplip-appdata.patch diff --git a/SOURCES/hplip-avahi-parsing.patch b/hplip-avahi-parsing.patch similarity index 100% rename from SOURCES/hplip-avahi-parsing.patch rename to hplip-avahi-parsing.patch diff --git a/SOURCES/hplip-bad-low-ink-warning.patch b/hplip-bad-low-ink-warning.patch similarity index 100% rename from SOURCES/hplip-bad-low-ink-warning.patch rename to hplip-bad-low-ink-warning.patch diff --git a/SOURCES/hplip-check-cups.patch b/hplip-check-cups.patch similarity index 73% rename from SOURCES/hplip-check-cups.patch rename to hplip-check-cups.patch index 053eb50..e0f1570 100644 --- a/SOURCES/hplip-check-cups.patch +++ b/hplip-check-cups.patch @@ -1,16 +1,17 @@ -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): +diff --git a/installer/core_install.py b/installer/core_install.py +index a6654e2..0bd1e9c 100644 +--- a/installer/core_install.py ++++ b/installer/core_install.py +@@ -362,9 +362,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), ++ 'cups': (True, ['base', 'prnt'], CUPS_STR, self.check_cups, DEPENDENCY_RUN_TIME, '-', None, EXTERNALDEP), ++ 'cups-devel': (True, ['base', 'prnt'], CUPS_DEV_STR, self.check_cups_devel, DEPENDENCY_COMPILE_TIME, '1.1', 'pkgconf --modversion cups', GENERALDEP), ++ 'cups-image': (True, ['base', 'prnt'], CUPS_IMG_STR, self.check_cups_image, DEPENDENCY_COMPILE_TIME, '1.1', 'pkgconf --modversion cups', 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/hplip-clean-ldl.patch b/hplip-clean-ldl.patch new file mode 100644 index 0000000..89553ec --- /dev/null +++ b/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/hplip-clear-old-state-reasons.patch similarity index 100% rename from SOURCES/hplip-clear-old-state-reasons.patch rename to hplip-clear-old-state-reasons.patch diff --git a/hplip-configure-python.patch b/hplip-configure-python.patch new file mode 100644 index 0000000..2ae7620 --- /dev/null +++ b/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/hplip-covscan.patch similarity index 64% rename from SOURCES/hplip-covscan.patch rename to hplip-covscan.patch index 3ce9af1..6c88581 100644 --- a/SOURCES/hplip-covscan.patch +++ b/hplip-covscan.patch @@ -1,38 +1,6 @@ -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 +diff -up hplip-3.23.3/common/utils.c.covscan hplip-3.23.3/common/utils.c +--- hplip-3.23.3/common/utils.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/common/utils.c 2023-05-29 13:58:10.969395214 +0200 @@ -1,5 +1,9 @@ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE @@ -44,11 +12,10 @@ index d8ecee9..def4e47 100644 #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) +diff -up hplip-3.23.3/io/hpmud/hpmud.c.covscan hplip-3.23.3/io/hpmud/hpmud.c +--- hplip-3.23.3/io/hpmud/hpmud.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/io/hpmud/hpmud.c 2023-05-29 13:58:10.970395208 +0200 +@@ -759,6 +759,7 @@ enum HPMUD_RESULT hpmud_get_dstat(HPMUD_ } strncpy(ds->uri, msp->device[dd].uri, sizeof(ds->uri)); @@ -56,10 +23,9 @@ index 0eb6fff..358f279 100644 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 +diff -up hplip-3.23.3/io/hpmud/jd.c.covscan hplip-3.23.3/io/hpmud/jd.c +--- hplip-3.23.3/io/hpmud/jd.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/io/hpmud/jd.c 2023-05-29 13:58:10.970395208 +0200 @@ -31,6 +31,7 @@ #endif @@ -68,10 +34,9 @@ index 06f5072..20df27a 100644 #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 +diff -up hplip-3.23.3/io/hpmud/model.c.covscan hplip-3.23.3/io/hpmud/model.c +--- hplip-3.23.3/io/hpmud/model.c.covscan 2023-05-29 13:58:10.958395279 +0200 ++++ hplip-3.23.3/io/hpmud/model.c 2023-05-29 13:58:10.970395208 +0200 @@ -117,6 +117,7 @@ static int ReadConfig() if (rcbuf[0] == '[') { @@ -88,11 +53,10 @@ index 4ea8990..a917d69 100644 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) +diff -up hplip-3.23.3/io/hpmud/musb.c.covscan hplip-3.23.3/io/hpmud/musb.c +--- hplip-3.23.3/io/hpmud/musb.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/io/hpmud/musb.c 2023-05-29 13:58:10.970395208 +0200 +@@ -776,7 +776,7 @@ static int device_id(int fd, unsigned ch len = size-1; /* leave byte for zero termination */ if (len > 2) len -= 2; @@ -101,11 +65,10 @@ index 6e99c15..755493e 100644 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) +diff -up hplip-3.23.3/io/hpmud/pp.c.covscan hplip-3.23.3/io/hpmud/pp.c +--- hplip-3.23.3/io/hpmud/pp.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/io/hpmud/pp.c 2023-05-29 13:58:10.970395208 +0200 +@@ -632,7 +632,7 @@ static int device_id(int fd, char *buffe len = size-1; /* leave byte for zero termination */ if (len > 2) len -= 2; @@ -114,10 +77,39 @@ index 74c5fdc..021d627 100644 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 +diff -up hplip-3.23.3/Makefile.am.covscan hplip-3.23.3/Makefile.am +--- hplip-3.23.3/Makefile.am.covscan 2023-05-29 13:58:10.944395361 +0200 ++++ hplip-3.23.3/Makefile.am 2023-05-29 13:58:10.969395214 +0200 +@@ -3,7 +3,7 @@ + # + # (c) 2004-2015 Copyright HP Development Company, LP + # Author: David Suffield, Naga Samrat Chowdary Narla, Sarbeswar Meher +-INCLUDES = -Iip -Iio/hpmud -Iscan/sane -Iprnt/hpijs -Icommon/ ++INCLUDES = -Iip -Iio/hpmud -Iscan/sane -Iprnt/hpijs -Icommon/ -Iprotocol + CFLAGS+= -DCONFDIR=\"$(hplip_confdir)\" + CXXFLAGS+= -DCONFDIR=\"$(hplip_confdir)\" + +@@ -310,7 +310,7 @@ dist_pcard_DATA = pcard/__init__.py pcar + pcardextdir = $(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 +@@ -322,7 +322,7 @@ lib_LTLIBRARIES += libhpipp.la + #hpipp_LTLIBRARIES = hpipp.la + #hpipp_la_LDFLAGS = -module -avoid-version + libhpipp_la_SOURCES = protocol/hp_ipp.c protocol/hp_ipp.h protocol/hp_ipp_i.h +-libhpipp_la_CFLAGS = -DCONFDIR=\"$(hplip_confdir)\" ++libhpipp_la_CFLAGS = -DCONFDIR=\"$(hplip_confdir)\" -D_GNU_SOURCE + libhpipp_la_LDFLAGS = -version-info 0:1:0 + libhpipp_la_LIBADD = libhpmud.la + +diff -up hplip-3.23.3/pcard/fat.c.covscan hplip-3.23.3/pcard/fat.c +--- hplip-3.23.3/pcard/fat.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/pcard/fat.c 2023-05-29 13:58:10.971395203 +0200 @@ -519,14 +519,17 @@ int FatFreeSpace(void) int FatDiskAttributes( PHOTO_CARD_ATTRIBUTES * pa ) @@ -147,48 +139,9 @@ index caa383f..e1425c0 100644 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 +diff -up hplip-3.23.3/prnt/hpijs/context2.cpp.covscan hplip-3.23.3/prnt/hpijs/context2.cpp +--- hplip-3.23.3/prnt/hpijs/context2.cpp.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/prnt/hpijs/context2.cpp 2023-05-29 13:58:10.971395203 +0200 @@ -1302,6 +1302,7 @@ DRIVER_ERROR PrintContext::SelectDevice if(0 == strnlen((const char *)pSS->strDevID, DevIDBuffSize)) { @@ -197,11 +150,10 @@ index c3df482..19490b1 100644 } 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) +diff -up hplip-3.23.3/prnt/hpijs/systemservices.cpp.covscan hplip-3.23.3/prnt/hpijs/systemservices.cpp +--- hplip-3.23.3/prnt/hpijs/systemservices.cpp.covscan 2023-03-28 09:26:27.000000000 +0200 ++++ hplip-3.23.3/prnt/hpijs/systemservices.cpp 2023-05-29 13:58:10.971395203 +0200 +@@ -396,7 +396,10 @@ void SystemServices::AdjustIO(IO_MODE IM IOMode.bDevID =IM.bDevID && IOMode.bDevID; if (model) @@ -212,11 +164,10 @@ index 95f5a64..f5b4bb5 100644 } 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) +diff -up hplip-3.23.3/prnt/hpps/hppsfilter.c.covscan hplip-3.23.3/prnt/hpps/hppsfilter.c +--- hplip-3.23.3/prnt/hpps/hppsfilter.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/prnt/hpps/hppsfilter.c 2023-05-29 13:58:10.972395197 +0200 +@@ -274,13 +274,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=")); @@ -233,40 +184,24 @@ index 5879a70..d246041 100644 hpwrite(buffer, strlen(buffer)); fprintf(stderr, "HP PS filter func = WriteHeader : WRITING PJL HEADER INFO\n"); return; -diff --git a/protocol/discovery/mdns.c b/protocol/discovery/mdns.c -index abca295..8dd6fa5 100644 ---- a/protocol/discovery/mdns.c -+++ b/protocol/discovery/mdns.c -@@ -31,6 +31,10 @@ - #include - #include - #include -+#include -+#include -+#include -+#include - #include "mdns.h" - - /* Convert "www.google.com" to "3www6google3com". */ -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); +diff -up hplip-3.23.3/protocol/hp_ipp.h.covscan hplip-3.23.3/protocol/hp_ipp.h +--- hplip-3.23.3/protocol/hp_ipp.h.covscan 2023-05-29 13:58:10.972395197 +0200 ++++ hplip-3.23.3/protocol/hp_ipp.h 2023-05-29 13:59:03.645085468 +0200 +@@ -168,6 +168,11 @@ HPIPP_RESULT parseResponseHeader(char* h + HPIPP_RESULT prepend_http_header(raw_ipp *raw_request,const char *resource); enum HPMUD_RESULT sendUSBRequest(char *buf, int size, raw_ipp *responseptr, char * device_uri); + enum HPMUD_RESULT sendUSBFileRequest(char *buf, int size, int fileHandle,raw_ipp *responseptr, char *device_uri); +void _releaseCupsInstance(); +int addCupsPrinter(char *name, char *device_uri, char *location, char *ppd_file, char *model, char *info); +int delCupsPrinter(char *pr_name); +int setDefaultCupsPrinter(char *pr_name); +int controlCupsPrinter(char *pr_name, int op); - # 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 + ipp_t * createFaxDetailRequest(const char *printer_name); + ipp_t * getDeviceFaxModemAttributes(char* device_uri,char* printer_name, int *count); +diff -up hplip-3.23.3/scan/sane/bb_ledm.c.covscan hplip-3.23.3/scan/sane/bb_ledm.c +--- hplip-3.23.3/scan/sane/bb_ledm.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/bb_ledm.c 2023-05-29 13:58:10.972395197 +0200 @@ -26,6 +26,7 @@ # include "http.h" # include "xml.h" @@ -275,10 +210,9 @@ index b233d1e..7ba0edf 100644 # 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 +diff -up hplip-3.23.3/scan/sane/common.h.covscan hplip-3.23.3/scan/sane/common.h +--- hplip-3.23.3/scan/sane/common.h.covscan 2023-05-29 13:58:10.727396637 +0200 ++++ hplip-3.23.3/scan/sane/common.h 2023-05-29 13:58:10.972395197 +0200 @@ -36,7 +36,7 @@ #define _STRINGIZE(x) #x #define STRINGIZE(x) _STRINGIZE(x) @@ -288,11 +222,10 @@ index 0f67542..e496a74 100644 #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 +diff -up hplip-3.23.3/scan/sane/escl.c.covscan hplip-3.23.3/scan/sane/escl.c +--- hplip-3.23.3/scan/sane/escl.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/escl.c 2023-05-29 13:58:10.972395197 +0200 +@@ -849,7 +849,7 @@ SANE_Status escl_control_option(SANE_Han //DBG8("escl_control_option (option=%s) action=%d\n", ps->option[option].name, action); if (stat != SANE_STATUS_GOOD) { @@ -301,7 +234,7 @@ index af45bff..4f59b21 100644 } return stat; -@@ -1102,7 +1102,7 @@ void escl_close(SANE_Handle handle) +@@ -1159,7 +1159,7 @@ void escl_close(SANE_Handle handle) if (ps == NULL || ps != session) { @@ -310,22 +243,9 @@ index af45bff..4f59b21 100644 return; } -diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c -index ae34cfb..ffde2ad 100644 ---- a/scan/sane/hpaio.c -+++ b/scan/sane/hpaio.c -@@ -41,6 +41,7 @@ - #include "soap.h" - #include "soapht.h" - #include "marvell.h" -+#include "mdns.h" - #include "hpaio.h" - #include "ledm.h" - #include "sclpml.h" -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 +diff -up hplip-3.23.3/scan/sane/http.c.covscan hplip-3.23.3/scan/sane/http.c +--- hplip-3.23.3/scan/sane/http.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/http.c 2023-05-29 13:58:10.973395191 +0200 @@ -36,6 +36,7 @@ #include #include @@ -334,11 +254,10 @@ index 800df91..45668cd 100644 #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) +diff -up hplip-3.23.3/scan/sane/io.c.covscan hplip-3.23.3/scan/sane/io.c +--- hplip-3.23.3/scan/sane/io.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/io.c 2023-05-29 13:58:10.973395191 +0200 +@@ -50,7 +50,7 @@ int __attribute__ ((visibility ("hidden" if (dbus_error_is_set(&dbus_err)) { @@ -347,7 +266,7 @@ index 4508458..7bbddea 100755 dbus_error_free(&dbus_err); } -@@ -79,7 +79,7 @@ int __attribute__ ((visibility ("hidden"))) SendScanEvent(char *device_uri, int +@@ -79,7 +79,7 @@ int __attribute__ ((visibility ("hidden" if (NULL == msg) { @@ -356,7 +275,7 @@ index 4508458..7bbddea 100755 return 0; } -@@ -94,7 +94,7 @@ int __attribute__ ((visibility ("hidden"))) SendScanEvent(char *device_uri, int +@@ -94,7 +94,7 @@ int __attribute__ ((visibility ("hidden" if (!dbus_connection_send(dbus_conn, msg, NULL)) { @@ -365,11 +284,10 @@ index 4508458..7bbddea 100755 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 +diff -up hplip-3.23.3/scan/sane/ledm.c.covscan hplip-3.23.3/scan/sane/ledm.c +--- hplip-3.23.3/scan/sane/ledm.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/ledm.c 2023-05-29 13:58:10.973395191 +0200 +@@ -813,7 +813,7 @@ SANE_Status ledm_control_option(SANE_Han if (stat != SANE_STATUS_GOOD) { @@ -378,7 +296,7 @@ index 9a1ff02..07ab5b0 100644 } return stat; -@@ -1067,7 +1067,7 @@ void ledm_close(SANE_Handle handle) +@@ -1078,7 +1078,7 @@ void ledm_close(SANE_Handle handle) if (ps == NULL || ps != session) { @@ -387,11 +305,10 @@ index 9a1ff02..07ab5b0 100644 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 +diff -up hplip-3.23.3/scan/sane/marvell.c.covscan hplip-3.23.3/scan/sane/marvell.c +--- hplip-3.23.3/scan/sane/marvell.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/marvell.c 2023-05-29 13:58:10.976395173 +0200 +@@ -134,7 +134,7 @@ static int get_ip_data(struct marvell_se if (!ps->ip_handle) { @@ -400,7 +317,7 @@ index ad267a3..236f7c9 100644 goto bugout; } -@@ -335,7 +335,7 @@ static struct marvell_session *create_session() +@@ -335,7 +335,7 @@ static struct marvell_session *create_se if ((ps = malloc(sizeof(struct marvell_session))) == NULL) { @@ -409,7 +326,7 @@ index ad267a3..236f7c9 100644 return NULL; } memset(ps, 0, sizeof(struct marvell_session)); -@@ -402,7 +402,7 @@ SANE_Status marvell_open(SANE_String_Const device, SANE_Handle *handle) +@@ -402,7 +402,7 @@ SANE_Status marvell_open(SANE_String_Con if (session) { @@ -418,7 +335,7 @@ index ad267a3..236f7c9 100644 return SANE_STATUS_DEVICE_BUSY; } -@@ -431,7 +431,7 @@ SANE_Status marvell_open(SANE_String_Const device, SANE_Handle *handle) +@@ -431,7 +431,7 @@ SANE_Status marvell_open(SANE_String_Con if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK) { @@ -427,7 +344,7 @@ index ad267a3..236f7c9 100644 goto bugout; free(session); -@@ -441,7 +441,7 @@ SANE_Status marvell_open(SANE_String_Const device, SANE_Handle *handle) +@@ -441,7 +441,7 @@ SANE_Status marvell_open(SANE_String_Con if (hpmud_open_channel(session->dd, HPMUD_S_MARVELL_SCAN_CHANNEL, &session->cd) != HPMUD_R_OK) { @@ -445,7 +362,7 @@ index ad267a3..236f7c9 100644 return; } -@@ -849,7 +849,7 @@ SANE_Status marvell_control_option(SANE_Handle handle, SANE_Int option, SANE_Act +@@ -849,7 +849,7 @@ SANE_Status marvell_control_option(SANE_ stat = SANE_STATUS_GOOD; break; } @@ -454,7 +371,7 @@ index ad267a3..236f7c9 100644 } else { /* Set default. */ -@@ -866,7 +866,7 @@ SANE_Status marvell_control_option(SANE_Handle handle, SANE_Int option, SANE_Act +@@ -866,7 +866,7 @@ SANE_Status marvell_control_option(SANE_ if (stat != SANE_STATUS_GOOD) { @@ -463,7 +380,7 @@ index ad267a3..236f7c9 100644 action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto"); } -@@ -905,7 +905,7 @@ SANE_Status marvell_start(SANE_Handle handle) +@@ -905,7 +905,7 @@ SANE_Status marvell_start(SANE_Handle ha if (set_extents(ps)) { @@ -472,7 +389,7 @@ index ad267a3..236f7c9 100644 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) +@@ -963,7 +963,7 @@ SANE_Status marvell_start(SANE_Handle ha /* Open image processor. */ if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE) { @@ -481,7 +398,7 @@ index ad267a3..236f7c9 100644 stat = SANE_STATUS_INVAL; goto bugout; } -@@ -1023,7 +1023,7 @@ SANE_Status marvell_read(SANE_Handle handle, SANE_Byte *data, SANE_Int maxLength +@@ -1023,7 +1023,7 @@ SANE_Status marvell_read(SANE_Handle han if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR)) { @@ -490,10 +407,9 @@ index ad267a3..236f7c9 100644 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 +diff -up hplip-3.23.3/scan/sane/sclpml.c.covscan hplip-3.23.3/scan/sane/sclpml.c +--- hplip-3.23.3/scan/sane/sclpml.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/sclpml.c 2023-05-29 13:58:10.976395173 +0200 @@ -30,6 +30,7 @@ #include #include @@ -511,11 +427,10 @@ index 9a5975f..dc8b32c 100644 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 +diff -up hplip-3.23.3/scan/sane/soap.c.covscan hplip-3.23.3/scan/sane/soap.c +--- hplip-3.23.3/scan/sane/soap.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/soap.c 2023-05-29 13:58:10.977395167 +0200 +@@ -142,7 +142,7 @@ static int get_ip_data(struct soap_sessi if (!ps->ip_handle) { @@ -524,7 +439,7 @@ index 07106fe..0d22e52 100644 goto bugout; } -@@ -219,7 +219,7 @@ static struct soap_session *create_session() +@@ -219,7 +219,7 @@ static struct soap_session *create_sessi if ((ps = malloc(sizeof(struct soap_session))) == NULL) { @@ -533,7 +448,7 @@ index 07106fe..0d22e52 100644 return NULL; } memset(ps, 0, sizeof(struct soap_session)); -@@ -418,7 +418,7 @@ SANE_Status soap_open(SANE_String_Const device, SANE_Handle *handle) +@@ -418,7 +418,7 @@ SANE_Status soap_open(SANE_String_Const if (session) { @@ -542,7 +457,7 @@ index 07106fe..0d22e52 100644 return SANE_STATUS_DEVICE_BUSY; } -@@ -434,7 +434,7 @@ SANE_Status soap_open(SANE_String_Const device, SANE_Handle *handle) +@@ -434,7 +434,7 @@ SANE_Status soap_open(SANE_String_Const if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK) { @@ -560,7 +475,7 @@ index 07106fe..0d22e52 100644 return; } -@@ -824,7 +824,7 @@ SANE_Status soap_control_option(SANE_Handle handle, SANE_Int option, SANE_Action +@@ -824,7 +824,7 @@ SANE_Status soap_control_option(SANE_Han if (stat != SANE_STATUS_GOOD) { @@ -569,7 +484,7 @@ index 07106fe..0d22e52 100644 action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto"); } -@@ -862,7 +862,7 @@ SANE_Status soap_start(SANE_Handle handle) +@@ -862,7 +862,7 @@ SANE_Status soap_start(SANE_Handle handl ps->user_cancel = 0; if (set_extents(ps)) { @@ -578,7 +493,7 @@ index 07106fe..0d22e52 100644 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) +@@ -913,7 +913,7 @@ SANE_Status soap_start(SANE_Handle handl /* Open image processor. */ if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE) { @@ -587,7 +502,7 @@ index 07106fe..0d22e52 100644 stat = SANE_STATUS_INVAL; goto bugout; } -@@ -955,7 +955,7 @@ SANE_Status soap_start(SANE_Handle handle) +@@ -955,7 +955,7 @@ SANE_Status soap_start(SANE_Handle handl if (ret & (IP_INPUT_ERROR | IP_FATAL_ERROR | IP_DONE)) { @@ -596,7 +511,7 @@ index 07106fe..0d22e52 100644 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 +@@ -1007,7 +1007,7 @@ SANE_Status soap_read(SANE_Handle handle if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR)) { @@ -605,11 +520,10 @@ index 07106fe..0d22e52 100644 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 +diff -up hplip-3.23.3/scan/sane/soapht.c.covscan hplip-3.23.3/scan/sane/soapht.c +--- hplip-3.23.3/scan/sane/soapht.c.covscan 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/scan/sane/soapht.c 2023-05-29 13:58:10.977395167 +0200 +@@ -136,7 +136,7 @@ static int get_ip_data(struct soap_sessi if (!ps->ip_handle) { @@ -618,7 +532,7 @@ index 269ab21..139100d 100644 goto bugout; } -@@ -435,7 +435,7 @@ static struct soap_session *create_session() +@@ -435,7 +435,7 @@ static struct soap_session *create_sessi if ((ps = malloc(sizeof(struct soap_session))) == NULL) { @@ -627,7 +541,7 @@ index 269ab21..139100d 100644 return NULL; } memset(ps, 0, sizeof(struct soap_session)); -@@ -459,7 +459,7 @@ SANE_Status soapht_open(SANE_String_Const device, SANE_Handle *handle) +@@ -459,7 +459,7 @@ SANE_Status soapht_open(SANE_String_Cons if (session) { @@ -636,7 +550,7 @@ index 269ab21..139100d 100644 return SANE_STATUS_DEVICE_BUSY; } -@@ -475,7 +475,7 @@ SANE_Status soapht_open(SANE_String_Const device, SANE_Handle *handle) +@@ -475,7 +475,7 @@ SANE_Status soapht_open(SANE_String_Cons if (hpmud_open_device(session->uri, ma.mfp_mode, &session->dd) != HPMUD_R_OK) { @@ -654,7 +568,7 @@ index 269ab21..139100d 100644 return; } -@@ -904,7 +904,7 @@ SANE_Status soapht_control_option(SANE_Handle handle, SANE_Int option, SANE_Acti +@@ -904,7 +904,7 @@ SANE_Status soapht_control_option(SANE_H if (stat != SANE_STATUS_GOOD) { @@ -663,7 +577,7 @@ index 269ab21..139100d 100644 action==SANE_ACTION_GET_VALUE ? "get" : action==SANE_ACTION_SET_VALUE ? "set" : "auto"); } -@@ -946,7 +946,7 @@ SANE_Status soapht_start(SANE_Handle handle) +@@ -946,7 +946,7 @@ SANE_Status soapht_start(SANE_Handle han if (set_extents(ps)) { @@ -672,7 +586,7 @@ index 269ab21..139100d 100644 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) +@@ -1032,7 +1032,7 @@ SANE_Status soapht_start(SANE_Handle han /* Open image processor. */ if ((ret = ipOpen(pXform-xforms, xforms, 0, &ps->ip_handle)) != IP_DONE) { @@ -681,7 +595,7 @@ index 269ab21..139100d 100644 stat = SANE_STATUS_INVAL; goto bugout; } -@@ -1075,7 +1075,7 @@ SANE_Status soapht_start(SANE_Handle handle) +@@ -1075,7 +1075,7 @@ SANE_Status soapht_start(SANE_Handle han if (ret & (IP_INPUT_ERROR | IP_FATAL_ERROR | IP_DONE)) { @@ -690,7 +604,7 @@ index 269ab21..139100d 100644 stat = SANE_STATUS_IO_ERROR; goto bugout; } -@@ -1124,7 +1124,7 @@ SANE_Status soapht_read(SANE_Handle handle, SANE_Byte *data, SANE_Int maxLength, +@@ -1124,7 +1124,7 @@ SANE_Status soapht_read(SANE_Handle hand if(ret & (IP_INPUT_ERROR | IP_FATAL_ERROR)) { diff --git a/SOURCES/hplip-deviceIDs-drv.patch b/hplip-deviceIDs-drv.patch similarity index 88% rename from SOURCES/hplip-deviceIDs-drv.patch rename to hplip-deviceIDs-drv.patch index 363c59d..258b414 100644 --- a/SOURCES/hplip-deviceIDs-drv.patch +++ b/hplip-deviceIDs-drv.patch @@ -1,6 +1,6 @@ -diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/drv/hpcups.drv.in ---- hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv 2017-12-07 09:31:48.721626277 +0100 -+++ hplip-3.17.11/prnt/drv/hpcups.drv.in 2017-12-07 13:40:30.703164179 +0100 +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" @@ -65,24 +65,6 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d Attribute "Product" "" "(HP Deskjet 970cxi Printer)" Attribute "Product" "" "(HP Deskjet 970cse Printer)" @@ -665,7 +665,7 @@ Manufacturer "HP" - ModelName "HP Officejet 5105" - Attribute "NickName" "" "HP Officejet 5105, hpcups $Version" - Attribute "ShortNickName" "" "HP Officejet 5105 hpijs" -- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 5105;DES:officejet 5105;" -+ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet 5105;DES:Hewlett-Packard OfficeJet 5100 Series;" - PCFileName "hp-officejet_5105.ppd" - Attribute "Product" "" "(HP Officejet 5105 All-in-one Printer)" - } -@@ -682,7 +682,7 @@ Manufacturer "HP" - ModelName "HP Officejet 5110v" - Attribute "NickName" "" "HP Officejet 5110v, hpcups $Version" - Attribute "ShortNickName" "" "HP Officejet 5110v hpijs" -- Attribute "1284DeviceID" "" "MFG:HP;MDL:officejet 5110v;DES:officejet 5110v;" -+ Attribute "1284DeviceID" "" "MFG:Hewlett-Packard;MDL:OfficeJet 5110v;DES:Hewlett-Packard OfficeJet 5100 Series;" - PCFileName "hp-officejet_5110v.ppd" - Attribute "Product" "" "(HP Officejet 5110v All-in-one Printer)" - } -@@ -690,7 +690,7 @@ Manufacturer "HP" ModelName "HP Officejet g55" Attribute "NickName" "" "HP Officejet g55, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet g55 hpijs" @@ -91,7 +73,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_g55.ppd" Attribute "Product" "" "(HP Officejet g55 All-in-one Printer)" } -@@ -706,7 +706,7 @@ Manufacturer "HP" +@@ -681,7 +681,7 @@ Manufacturer "HP" ModelName "HP Officejet g85" Attribute "NickName" "" "HP Officejet g85, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet g85 hpijs" @@ -100,7 +82,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_g85.ppd" Attribute "Product" "" "(HP Officejet g85 All-in-one Printer)" } -@@ -722,7 +722,7 @@ Manufacturer "HP" +@@ -697,7 +697,7 @@ Manufacturer "HP" ModelName "HP Officejet g95" Attribute "NickName" "" "HP Officejet g95, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet g95 hpijs" @@ -109,7 +91,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_g95.ppd" Attribute "Product" "" "(HP Officejet g95 All-in-one Printer)" } -@@ -770,7 +770,7 @@ Manufacturer "HP" +@@ -745,7 +745,7 @@ Manufacturer "HP" ModelName "HP Officejet v40" Attribute "NickName" "" "HP Officejet v40, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet v40 hpijs" @@ -118,7 +100,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_v40.ppd" Attribute "Product" "" "(HP Officejet v40 All-in-one Printer)" Attribute "Product" "" "(HP Officejet v40s All-in-one Printer)" -@@ -779,7 +779,7 @@ Manufacturer "HP" +@@ -754,7 +754,7 @@ Manufacturer "HP" ModelName "HP Officejet v40xi" Attribute "NickName" "" "HP Officejet v40xi, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet v40xi hpijs" @@ -127,7 +109,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_v40xi.ppd" Attribute "Product" "" "(HP Officejet v40xi All-in-one Printer)" } -@@ -795,7 +795,7 @@ Manufacturer "HP" +@@ -770,7 +770,7 @@ Manufacturer "HP" ModelName "HP Photosmart p1000" Attribute "NickName" "" "HP Photosmart p1000, hpcups $Version" Attribute "ShortNickName" "" "HP Photosmart p1000 hpijs" @@ -136,7 +118,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-photosmart_p1000.ppd" Attribute "Product" "" "(HP Photosmart p1000/1000 Printer)" Attribute "Product" "" "(HP Photosmart p1000xi Printer)" -@@ -804,7 +804,7 @@ Manufacturer "HP" +@@ -779,7 +779,7 @@ Manufacturer "HP" ModelName "HP Photosmart p1100" Attribute "NickName" "" "HP Photosmart p1100, hpcups $Version" Attribute "ShortNickName" "" "HP Photosmart p1100 hpijs" @@ -145,7 +127,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-photosmart_p1100.ppd" Attribute "Product" "" "(HP Photosmart p1100 Printer)" Attribute "Product" "" "(HP Photosmart p1100xi Printer)" -@@ -821,7 +821,7 @@ Manufacturer "HP" +@@ -796,7 +796,7 @@ Manufacturer "HP" ModelName "HP PSC 750" Attribute "NickName" "" "HP PSC 750, hpcups $Version" Attribute "ShortNickName" "" "HP PSC 750 hpijs" @@ -154,7 +136,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_750.ppd" Attribute "Product" "" "(HP PSC 750 All-in-one Printer)" } -@@ -829,7 +829,7 @@ Manufacturer "HP" +@@ -804,7 +804,7 @@ Manufacturer "HP" ModelName "HP PSC 750xi" Attribute "NickName" "" "HP PSC 750xi, hpcups $Version" Attribute "ShortNickName" "" "HP PSC 750xi hpijs" @@ -163,7 +145,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_750xi.ppd" Attribute "Product" "" "(HP PSC 750xi All-in-one Printer)" } -@@ -861,7 +861,7 @@ Manufacturer "HP" +@@ -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" @@ -172,7 +154,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_900_series.ppd" Attribute "Product" "" "(HP PSC 900 All-in-one Printer)" } -@@ -935,7 +935,7 @@ Manufacturer "HP" +@@ -910,7 +910,7 @@ Manufacturer "HP" ModelName "HP Deskjet 1220c" Attribute "NickName" "" "HP Deskjet 1220c, hpcups $Version" Attribute "ShortNickName" "" "HP Deskjet 1220c hpijs" @@ -181,7 +163,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_1220c.ppd" Attribute "Product" "" "(HP Deskjet 1220c Printer)" Attribute "Product" "" "(HP Deskjet 1220cse Printer)" -@@ -1125,7 +1125,7 @@ Manufacturer "HP" +@@ -1100,7 +1100,7 @@ Manufacturer "HP" ModelName "HP 2000c" Attribute "NickName" "" "HP 2000c, hpcups $Version" Attribute "ShortNickName" "" "HP 2000c hpijs" @@ -190,7 +172,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-2000c.ppd" Attribute "Product" "" "(HP 2000cse Printer)" Attribute "Product" "" "(HP 2000c Printer)" -@@ -1589,7 +1589,7 @@ Manufacturer "HP" +@@ -1564,7 +1564,7 @@ Manufacturer "HP" ModelName "HP Deskjet 960c" Attribute "NickName" "" "HP Deskjet 960c, hpcups $Version" Attribute "ShortNickName" "" "HP Deskjet 960c hpijs" @@ -199,7 +181,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_960c.ppd" Attribute "Product" "" "(HP Deskjet 960cse Printer)" Attribute "Product" "" "(HP Deskjet 960cxi Printer)" -@@ -1599,7 +1599,7 @@ Manufacturer "HP" +@@ -1574,7 +1574,7 @@ Manufacturer "HP" ModelName "HP Deskjet 980c" Attribute "NickName" "" "HP Deskjet 980c, hpcups $Version" Attribute "ShortNickName" "" "HP Deskjet 980c hpijs" @@ -208,7 +190,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_980c.ppd" Attribute "Product" "" "(HP Deskjet 980cxi Printer)" Attribute "Product" "" "(HP Deskjet 980c Printer)" -@@ -1608,7 +1608,7 @@ Manufacturer "HP" +@@ -1583,7 +1583,7 @@ Manufacturer "HP" ModelName "HP Deskjet 990c" Attribute "NickName" "" "HP Deskjet 990c, hpcups $Version" Attribute "ShortNickName" "" "HP Deskjet 990c hpijs" @@ -217,16 +199,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_990c.ppd" Attribute "Product" "" "(HP Deskjet 990cxi Printer)" Attribute "Product" "" "(HP Deskjet 990cse Printer)" -@@ -1638,7 +1638,7 @@ Manufacturer "HP" - ModelName "HP Color Inkjet cp1700" - Attribute "NickName" "" "HP Color Inkjet cp1700, hpcups $Version" - Attribute "ShortNickName" "" "HP Color Inkjet cp1700 hpijs" -- Attribute "1284DeviceID" "" "MFG:HP;MDL:hp color inkjet cp1700;DES:hp color inkjet cp1700;" -+ Attribute "1284DeviceID" "" "MFG:HEWLETT-PACKARD;MDL:HP Color Inkjet CP1700;DES:HP Color Inkjet CP1700;" - PCFileName "hp-color_inkjet_cp1700.ppd" - Attribute "Product" "" "(HP Color Inkjet cp1700 Printer)" - } -@@ -1646,7 +1646,7 @@ Manufacturer "HP" +@@ -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" @@ -235,7 +208,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_7100_series.ppd" Attribute "Product" "" "(HP Officejet 7100 All-in-one Printer)" Attribute "Product" "" "(HP Officejet 7110 All-in-one Printer)" -@@ -1661,7 +1661,7 @@ Manufacturer "HP" +@@ -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" @@ -244,7 +217,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_d_series.ppd" Attribute "Product" "" "(HP Officejet d125xi All-in-one Printer)" Attribute "Product" "" "(HP Officejet d135 All-in-one Printer)" -@@ -1708,7 +1708,7 @@ Manufacturer "HP" +@@ -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" @@ -253,7 +226,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_2100_series.ppd" Attribute "Product" "" "(HP PSC 2105 All-in-one Printer)" Attribute "Product" "" "(HP PSC 2108 All-in-one Printer)" -@@ -1721,7 +1721,7 @@ Manufacturer "HP" +@@ -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" @@ -262,7 +235,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_2150_series.ppd" Attribute "Product" "" "(HP PSC 2150 All-in-one Printer)" } -@@ -1729,7 +1729,7 @@ Manufacturer "HP" +@@ -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" @@ -271,7 +244,16 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_2170_series.ppd" Attribute "Product" "" "(HP PSC 2170 All-in-one Printer)" Attribute "Product" "" "(HP PSC 2171 All-in-one Printer)" -@@ -1951,7 +1951,7 @@ Manufacturer "HP" +@@ -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" @@ -280,7 +262,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2200.ppd" Attribute "Product" "" "(HP Business Inkjet 2200 Printer)" Attribute "Product" "" "(HP Business Inkjet 2200se Printer)" -@@ -1961,7 +1961,7 @@ Manufacturer "HP" +@@ -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" @@ -289,7 +271,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2230.ppd" Attribute "Product" "" "(HP Business Inkjet 2230 Printer)" } -@@ -1969,7 +1969,7 @@ Manufacturer "HP" +@@ -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" @@ -298,7 +280,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2250-pcl3.ppd" Attribute "Product" "" "(HP Business Inkjet 2250 Printer)" Attribute "Product" "" "(HP Business Inkjet 2250tn Printer)" -@@ -1978,7 +1978,7 @@ Manufacturer "HP" +@@ -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" @@ -307,7 +289,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2280-pcl3.ppd" Attribute "Product" "" "(HP Business Inkjet 2280 Printer)" Attribute "Product" "" "(HP Business Inkjet 2280tn Printer)" -@@ -2740,7 +2740,7 @@ Manufacturer "HP" +@@ -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" @@ -316,7 +298,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_7200_series.ppd" Attribute "Product" "" "(HP Officejet 7205 All-in-one Printer)" Attribute "Product" "" "(HP Officejet 7208 All-in-one Printer)" -@@ -2764,7 +2764,7 @@ Manufacturer "HP" +@@ -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" @@ -325,7 +307,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_7400_series.ppd" Attribute "Product" "" "(HP Officejet 7408 All-in-one Printer)" Attribute "Product" "" "(HP Officejet 7410 All-in-one Printer)" -@@ -2810,7 +2810,7 @@ Manufacturer "HP" +@@ -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" @@ -334,7 +316,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_j5700_series.ppd" Attribute "Product" "" "(HP Officejet j5725 All-in-one Printer)" Attribute "Product" "" "(HP Officejet j5785 All-in-one Printer)" -@@ -3488,7 +3488,7 @@ Manufacturer "HP" +@@ -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" @@ -343,7 +325,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_2200_series.ppd" Attribute "Product" "" "(HP PSC 2200 All-in-one Printer)" } -@@ -3506,7 +3506,7 @@ Manufacturer "HP" +@@ -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" @@ -352,7 +334,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d 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)" -@@ -3514,8 +3514,7 @@ Manufacturer "HP" +@@ -3417,8 +3417,7 @@ Manufacturer "HP" { ModelName "HP PSC 2350 Series" Attribute "NickName" "" "HP PSC 2350 Series, hpcups $Version" @@ -362,7 +344,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_2350_series.ppd" Attribute "Product" "" "(HP PSC 2350 All-in-one Printer)" Attribute "Product" "" "(HP PSC 2358 All-in-one Printer)" -@@ -3545,7 +3544,7 @@ Manufacturer "HP" +@@ -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" @@ -371,7 +353,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d 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)" -@@ -7134,7 +7133,7 @@ Manufacturer "HP" +@@ -7023,7 +7022,7 @@ Manufacturer "HP" ModelName "HP Officejet 6100" Attribute "NickName" "" "HP Officejet 6100, hpcups $Version" Attribute "ShortNickName" "" "HP Officejet 6100 hpijs" @@ -380,7 +362,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_6100.ppd" Attribute "Product" "" "(HP Officejet 6100 Eprinter h611a)" } -@@ -16828,7 +16827,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -389,7 +371,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d 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)" -@@ -16855,7 +16854,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -398,7 +380,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_4300_series.ppd" Attribute "Product" "" "(HP Officejet 4308 All-in-one Printer)" Attribute "Product" "" "(HP Officejet 4338 All-in-one Printer)" -@@ -16887,7 +16886,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -407,7 +389,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_1100_series.ppd" Attribute "Product" "" "(HP PSC 1110 All-in-one Printer)" Attribute "Product" "" "(HP PSC 1110v All-in-one Printer)" -@@ -16897,7 +16896,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -416,7 +398,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_1200_series.ppd" Attribute "Product" "" "(HP PSC 1200 All-in-one Printer)" Attribute "Product" "" "(HP PSC 1217 All-in-one Printer)" -@@ -17200,7 +17199,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -425,7 +407,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_4200_series.ppd" Attribute "Product" "" "(HP Officejet 4200 All-in-one Printer)" Attribute "Product" "" "(HP Officejet 4211 All-in-one Printer)" -@@ -17265,7 +17264,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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" @@ -434,7 +416,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_j3600_series.ppd" Attribute "Product" "" "(HP Officejet j3608 All-in-one Printer)" Attribute "Product" "" "(HP Officejet j3625 All-in-one Printer)" -@@ -17768,6 +17767,7 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -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;" @@ -442,7 +424,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-photosmart_380_series.ppd" Attribute "Product" "" "(HP Photosmart 385 Compact Photo Printer)" Attribute "Product" "" "(HP Photosmart 385xi Compact Photo Printer)" -@@ -19573,7 +19573,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -451,7 +433,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2300-pcl3.ppd" Attribute "Product" "" "(HP Business Inkjet 2300 Printer)" Attribute "Product" "" "(HP Business Inkjet 2300n Printer)" -@@ -19973,7 +19973,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -460,7 +442,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d 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)" -@@ -20057,7 +20057,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -469,7 +451,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-business_inkjet_2800-pcl3.ppd" Attribute "Product" "" "(HP Business Inkjet 2800 Printer)" Attribute "Product" "" "(HP Business Inkjet 2800dt Printer)" -@@ -20600,7 +20600,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -478,7 +460,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_lx.ppd" Attribute "Product" "" "(HP Officejet Lx All-in-one Printer)" } -@@ -20737,7 +20737,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -487,7 +469,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_540.ppd" Attribute "Product" "" "(HP Deskjet 540 Printer)" } -@@ -20745,7 +20745,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -496,7 +478,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_400.ppd" Attribute "Product" "" "(HP Deskjet 400 Printer)" Attribute "Product" "" "(HP Deskjet 400 Color Capable Printer)" -@@ -20762,7 +20762,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -505,7 +487,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_series_300.ppd" Attribute "Product" "" "(HP Officejet 300 All-in-one Printer)" } -@@ -20895,7 +20895,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -514,7 +496,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_630c.ppd" Attribute "Product" "" "(HP Deskjet 630c Printer)" } -@@ -20911,7 +20911,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -523,7 +505,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_656c.ppd" Attribute "Product" "" "(HP Deskjet 656c Printer)" Attribute "Product" "" "(HP Deskjet 656cvr Printer)" -@@ -21024,7 +21024,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -532,7 +514,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_600.ppd" Attribute "Product" "" "(HP Deskjet 600c Printer)" Attribute "Product" "" "(HP Deskjet 600 Printer)" -@@ -21065,7 +21065,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -541,7 +523,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_670c.ppd" Attribute "Product" "" "(HP Deskjet 670c Printer)" } -@@ -21137,7 +21137,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -550,7 +532,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_series_600.ppd" Attribute "Product" "" "(HP Officejet 600 All-in-one Printer)" } -@@ -21282,7 +21282,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -559,7 +541,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_610c.ppd" Attribute "Product" "" "(HP Deskjet 610c Printer)" } -@@ -21306,7 +21306,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -568,16 +550,16 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_640c.ppd" Attribute "Product" "" "(HP Deskjet 640c Lite Printer)" Attribute "Product" "" "(HP Deskjet 640c Printer)" -@@ -21335,7 +21335,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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)" - Attribute "Product" "" "(HP Deskjet 690c Printer)" -@@ -21386,7 +21386,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -586,7 +568,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_series_700.ppd" Attribute "Product" "" "(HP Officejet 700 All-in-one Printer)" } -@@ -21537,7 +21537,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -595,7 +577,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_812c.ppd" Attribute "Product" "" "(HP Deskjet 812c Printer)" } -@@ -21545,7 +21545,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -604,7 +586,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_815c.ppd" Attribute "Product" "" "(HP Deskjet 815c Printer)" } -@@ -21577,7 +21577,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -613,7 +595,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_840c.ppd" Attribute "Product" "" "(HP Deskjet 840c Printer)" } -@@ -21585,7 +21585,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -622,7 +604,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_841c.ppd" Attribute "Product" "" "(HP Deskjet 841c Printer)" } -@@ -21601,7 +21601,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -631,7 +613,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_843c.ppd" Attribute "Product" "" "(HP Deskjet 843c Printer)" Attribute "Product" "" "(HP Deskjet 843cxe Printer)" -@@ -21610,7 +21610,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -640,7 +622,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_880c.ppd" Attribute "Product" "" "(HP Deskjet 880c Printer)" } -@@ -21626,7 +21626,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -649,7 +631,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_895c.ppd" Attribute "Product" "" "(HP Deskjet 895cse Printer)" Attribute "Product" "" "(HP Deskjet 895c Printer)" -@@ -21636,7 +21636,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -658,7 +640,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_r40.ppd" Attribute "Product" "" "(HP Officejet r40 All-in-one Printer)" } -@@ -21660,7 +21660,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -667,7 +649,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_r60.ppd" Attribute "Product" "" "(HP Officejet r60 All-in-one Printer)" } -@@ -21668,7 +21668,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -676,7 +658,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_r65.ppd" Attribute "Product" "" "(HP Officejet r65 All-in-one Printer)" } -@@ -21676,7 +21676,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -685,16 +667,16 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-officejet_r80.ppd" Attribute "Product" "" "(HP Officejet r80 All-in-one Printer)" } -@@ -21692,7 +21692,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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)" -@@ -21703,7 +21703,7 @@ Group "RLT/HP Real Life Technologies" + 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" @@ -703,7 +685,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-psc_500.ppd" Attribute "Product" "" "(HP PSC 500 All-in-one Printer)" Attribute "Product" "" "(HP PSC 500xi All-in-one Printer)" -@@ -21819,7 +21819,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -712,7 +694,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_825c.ppd" Attribute "Product" "" "(HP Deskjet 825cvr Printer)" Attribute "Product" "" "(HP Deskjet 825c Printer)" -@@ -21828,7 +21828,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -721,7 +703,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_845c.ppd" Attribute "Product" "" "(HP Deskjet 845c Printer)" Attribute "Product" "" "(HP Deskjet 845cvr Printer)" -@@ -21939,7 +21939,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -730,7 +712,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_850c.ppd" Attribute "Product" "" "(HP Deskjet 850k Printer)" Attribute "Product" "" "(HP Deskjet 850c Printer)" -@@ -21958,7 +21958,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -739,7 +721,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_870c.ppd" Attribute "Product" "" "(HP Deskjet 870k Printer)" Attribute "Product" "" "(HP Deskjet 870c Printer)" -@@ -21969,7 +21969,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -748,7 +730,7 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d 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)" -@@ -22083,7 +22083,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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" @@ -757,10 +739,10 @@ diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.deviceIDs-drv hplip-3.17.11/prnt/d PCFileName "hp-deskjet_890c.ppd" Attribute "Product" "" "(HP Deskjet 890cse Printer)" Attribute "Product" "" "(HP Deskjet 890c Printer)" -@@ -22092,7 +22092,7 @@ Group "RLT/HP Real Life Technologies" +@@ -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 Officejet Pro 1170c Series hpijs" + 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" diff --git a/SOURCES/hplip-deviceIDs-ppd.patch b/hplip-deviceIDs-ppd.patch similarity index 100% rename from SOURCES/hplip-deviceIDs-ppd.patch rename to hplip-deviceIDs-ppd.patch diff --git a/hplip-dialog-infinite-loop.patch b/hplip-dialog-infinite-loop.patch new file mode 100644 index 0000000..cfd635b --- /dev/null +++ b/hplip-dialog-infinite-loop.patch @@ -0,0 +1,25 @@ +diff --git a/ui5/devmgr5.py b/ui5/devmgr5.py +index c23957a..48b248f 100644 +--- a/ui5/devmgr5.py ++++ b/ui5/devmgr5.py +@@ -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/hplip-dj990c-margin.patch similarity index 100% rename from SOURCES/hplip-dj990c-margin.patch rename to hplip-dj990c-margin.patch diff --git a/hplip-error-print.patch b/hplip-error-print.patch new file mode 100644 index 0000000..b7b1a6f --- /dev/null +++ b/hplip-error-print.patch @@ -0,0 +1,34 @@ +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/hplip-find-driver.patch b/hplip-find-driver.patch new file mode 100644 index 0000000..f991967 --- /dev/null +++ b/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/hplip-fix-Wreturn-type-warning.patch b/hplip-fix-Wreturn-type-warning.patch new file mode 100644 index 0000000..aa40e1a --- /dev/null +++ b/hplip-fix-Wreturn-type-warning.patch @@ -0,0 +1,100 @@ +--- 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/hplip-fix-parsing-lpstat.patch b/hplip-fix-parsing-lpstat.patch new file mode 100644 index 0000000..d6028ab --- /dev/null +++ b/hplip-fix-parsing-lpstat.patch @@ -0,0 +1,13 @@ +diff --git a/base/queues.py b/base/queues.py +index 2f56c8a..0818574 100755 +--- a/base/queues.py ++++ b/base/queues.py +@@ -101,7 +101,7 @@ def parseQueues(mode): + try: + match = LPSTAT_PATTERN.search(p) + printer_name = match.group(1) +- device_uri = match.group(2) ++ device_uri = match.group(3) + cups_printers.append((printer_name, device_uri)) + except AttributeError: + pass diff --git a/hplip-gpgdir-perms.patch b/hplip-gpgdir-perms.patch new file mode 100644 index 0000000..51475de --- /dev/null +++ b/hplip-gpgdir-perms.patch @@ -0,0 +1,13 @@ +diff --git a/base/validation.py b/base/validation.py +index 96e65be..35f22eb 100644 +--- a/base/validation.py ++++ b/base/validation.py +@@ -58,7 +58,7 @@ class GPG_Verification(DigiSign_Verification): + + if not os.path.exists(self.__gpg_dir): + try: +- os.mkdir(self.__gpg_dir, 0o755) ++ os.mkdir(self.__gpg_dir, 0o700) + except OSError: + log.error("Failed to create %s" % self.__gpg_dir) + self.__change_owner() diff --git a/hplip-hpaio-gcc14.patch b/hplip-hpaio-gcc14.patch new file mode 100644 index 0000000..f7d195e --- /dev/null +++ b/hplip-hpaio-gcc14.patch @@ -0,0 +1,114 @@ +diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c +index 57d1dde..3475929 100644 +--- a/scan/sane/hpaio.c ++++ b/scan/sane/hpaio.c +@@ -379,7 +379,7 @@ extern SANE_Status sane_hpaio_get_devices(const SANE_Device ***deviceList, SANE_ + ResetDeviceList(&DeviceList); + DevDiscovery(localOnly); + *deviceList = (const SANE_Device **)DeviceList; +- SANE_Device*** devList; ++ const SANE_Device*** devList; + orblite_get_devices(devList, localOnly); + + return SANE_STATUS_GOOD; +diff --git a/scan/sane/orblite.c b/scan/sane/orblite.c +index 2eb7aba..4eaa468 100644 +--- a/scan/sane/orblite.c ++++ b/scan/sane/orblite.c +@@ -64,28 +64,28 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_SCAN_TL_X, SANE_TITLE_SCAN_TL_X, SANE_DESC_SCAN_TL_X, // name, title, desc + SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeLeft // constraint_type, constraint ++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeLeft // constraint_type, constraint + }, + + { + SANE_NAME_SCAN_TL_Y, SANE_TITLE_SCAN_TL_Y, SANE_DESC_SCAN_TL_Y, // name, title, desc + SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeTop // constraint_type, constraint ++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeTop // constraint_type, constraint + }, + + { + SANE_NAME_SCAN_BR_X, SANE_TITLE_SCAN_BR_X, SANE_DESC_SCAN_BR_X, // name, title, desc + SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeRight // constraint_type, constraint ++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeRight // constraint_type, constraint + }, + + { + SANE_NAME_SCAN_BR_Y, SANE_TITLE_SCAN_BR_Y, SANE_DESC_SCAN_BR_Y, // name, title, desc + SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeBottom // constraint_type, constraint ++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeBottom // constraint_type, constraint + }, + + // optResolution, // resolution group +@@ -93,7 +93,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_SCAN_RESOLUTION, SANE_TITLE_SCAN_RESOLUTION, SANE_DESC_SCAN_RESOLUTION, // name, title, desc + SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size, + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint ++ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint + }, + + // optMode, // color/depth group +@@ -101,7 +101,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_SCAN_MODE, SANE_TITLE_SCAN_MODE, SANE_DESC_SCAN_MODE, // name, title, desc + SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size, + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_modes // constraint type, constraint ++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_modes // constraint type, constraint + }, + + // optSource, +@@ -109,7 +109,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_SCAN_SOURCE, SANE_TITLE_SCAN_SOURCE, SANE_DESC_SCAN_SOURCE, // name, title, desc + SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size, + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_sources // constraint type, constraint ++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_sources // constraint type, constraint + }, + + // optPaperSize, +@@ -117,7 +117,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc + SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size, + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_paper_sizes // constraint type, constraint ++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_paper_sizes // constraint type, constraint + }, + + // optPaperSize, +@@ -125,7 +125,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = { + SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc + SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size, + SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability) +- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint ++ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint + }, + #ifdef NOTDEF + // default template +@@ -274,6 +274,7 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle) + SANE_Auth_Callback authorize; + const SANE_Device *** device_list; + SANE_Bool local_only; ++ void * temp_handle; + + + // Allocate handle, set all handle values to zero +@@ -305,7 +306,9 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle) + if (stat != SANE_STATUS_GOOD) + return stat; + +- stat = g_handle->bb_orblite_open(devicename, &g_handle); ++ temp_handle = g_handle; ++ stat = g_handle->bb_orblite_open(devicename, &temp_handle); ++ g_handle = temp_handle; + if (stat == SANE_STATUS_GOOD) + *handle = g_handle; + diff --git a/hplip-hpcups-crash.patch b/hplip-hpcups-crash.patch new file mode 100644 index 0000000..28f34f7 --- /dev/null +++ b/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-CVE-2026-8631.patch b/hplip-hpcups-integer-overflow.patch similarity index 88% rename from SOURCES/hplip-CVE-2026-8631.patch rename to hplip-hpcups-integer-overflow.patch index 2799f56..846a355 100644 --- a/SOURCES/hplip-CVE-2026-8631.patch +++ b/hplip-hpcups-integer-overflow.patch @@ -1,17 +1,11 @@ -From 19eb9648f9878e07bf85f93bbbb5e1f5a567ca62 Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal -Date: Wed, 10 Jun 2026 16:43:42 +0200 -Subject: [PATCH] CVE-2026-8631: Fix integer overflow in hpcups +commit cc245a1117ae478e916662a7d9bded65b55765b8 +Author: Zdenek Dohnal +Date: Mon May 25 15:27:09 2026 +0200 ---- - common/utils.h | 50 ++++++++++++++++++ - prnt/hpcups/Hbpl1.cpp | 95 ++++++++++++++++++++++++++--------- - prnt/hpcups/Hbpl1_Wrapper.cpp | 65 ++++++++++++++++++------ - prnt/hpcups/genPCLm.cpp | 80 ++++++++++++++++++++++------- - 4 files changed, 231 insertions(+), 59 deletions(-) + 3.26.4 diff --git a/common/utils.h b/common/utils.h -index 566058a..37ec465 100644 +index 97742bd93..579821078 100644 --- a/common/utils.h +++ b/common/utils.h @@ -4,6 +4,10 @@ @@ -25,7 +19,7 @@ index 566058a..37ec465 100644 //#include "hpmud.h" #define _STRINGIZE(x) #x -@@ -53,6 +57,52 @@ enum UTILS_PLUGIN_LIBRARY_TYPE +@@ -54,6 +58,52 @@ enum UTILS_PLUGIN_LIBRARY_TYPE }; @@ -79,7 +73,7 @@ index 566058a..37ec465 100644 extern "C" { #endif diff --git a/prnt/hpcups/Hbpl1.cpp b/prnt/hpcups/Hbpl1.cpp -index 7f965f0..12a11da 100644 +index 74a67f04a..d25b36142 100644 --- a/prnt/hpcups/Hbpl1.cpp +++ b/prnt/hpcups/Hbpl1.cpp @@ -130,8 +130,19 @@ DRIVER_ERROR Hbpl1::StartJob(SystemServices *pSystemServices, JobAttributes *pJA @@ -101,7 +95,7 @@ index 7f965f0..12a11da 100644 + return err; + } + } - + if (m_PrintinGrayscale == ON){ //Grayscale = ON m_ColorMode = COLORTYPE_BOTH; @@ -156,8 +167,15 @@ DRIVER_ERROR Hbpl1::EndJob() @@ -140,57 +134,47 @@ index 7f965f0..12a11da 100644 return err; } -@@ -183,28 +208,50 @@ DRIVER_ERROR Hbpl1::sendBlankBands() - +@@ -188,29 +213,51 @@ And will reset scan lines counter to zero for next page(HPLIP-1041). + ************************************************************************************/ DRIVER_ERROR Hbpl1::FormFeed () { + DRIVER_ERROR err = NO_ERROR; if (0 != m_numScanLines && m_pbyStripData && 0 != m_nStripSize) -- { -- ++m_nBandCount; + { + ++m_nBandCount; - m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); - sendBuffer(m_pOutBuffer, m_OutBuffSize); -- memset(m_pbyStripData,0xFF,m_nStripSize); -- } -- -- while(m_nBandCount < m_numStrips) -- { -- ++m_nBandCount; ++ err = m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); ++ if (err != NO_ERROR) ++ return err; ++ if (m_pOutBuffer != NULL && m_OutBuffSize > 0) ++ { ++ err = sendBuffer(m_pOutBuffer, m_OutBuffSize); ++ if (err != NO_ERROR) ++ return err; ++ } + memset(m_pbyStripData,0xFF,m_nStripSize); + } + + while(m_nBandCount < m_numStrips) + { + ++m_nBandCount; - m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); - sendBuffer(m_pOutBuffer, m_OutBuffSize); -- } -- ++ err = m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); ++ if (err != NO_ERROR) ++ return err; ++ if (m_pOutBuffer != NULL && m_OutBuffSize > 0) ++ { ++ err = sendBuffer(m_pOutBuffer, m_OutBuffSize); ++ if (err != NO_ERROR) ++ return err; ++ } + } + - m_pHbpl1Wrapper->EndPage((void**)&m_pOutBuffer, &m_OutBuffSize); - sendBuffer(m_pOutBuffer, m_OutBuffSize); -+ { -+ ++m_nBandCount; -+ err = m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); -+ if (err != NO_ERROR) -+ return err; -+ if (m_pOutBuffer != NULL && m_OutBuffSize > 0) -+ { -+ err = sendBuffer(m_pOutBuffer, m_OutBuffSize); -+ if (err != NO_ERROR) -+ return err; -+ } -+ memset(m_pbyStripData,0xFF,m_nStripSize); -+ } -+ -+ while(m_nBandCount < m_numStrips) -+ { -+ ++m_nBandCount; -+ err = m_pHbpl1Wrapper->Encapsulate(m_pbyStripData, m_nStripSize, m_nStripHeight, (void**)&m_pOutBuffer, &m_OutBuffSize); -+ if (err != NO_ERROR) -+ return err; -+ if (m_pOutBuffer != NULL && m_OutBuffSize > 0) -+ { -+ err = sendBuffer(m_pOutBuffer, m_OutBuffSize); -+ if (err != NO_ERROR) -+ return err; -+ } -+ } -+ + err = m_pHbpl1Wrapper->EndPage((void**)&m_pOutBuffer, &m_OutBuffSize); + if (err != NO_ERROR) + return err; @@ -201,8 +185,8 @@ index 7f965f0..12a11da 100644 + return err; + } m_pHbpl1Wrapper->FreeBuffer(m_pOutBuffer,m_OutBuffSize); -- m_nBandCount = 0; -+ m_nBandCount = 0; + m_nBandCount = 0; + m_numScanLines = 0; - return NO_ERROR; + return err; @@ -210,10 +194,10 @@ index 7f965f0..12a11da 100644 } diff --git a/prnt/hpcups/Hbpl1_Wrapper.cpp b/prnt/hpcups/Hbpl1_Wrapper.cpp -index a02655f..fb2155f 100644 +index 996bfa9f2..9cbf69566 100644 --- a/prnt/hpcups/Hbpl1_Wrapper.cpp +++ b/prnt/hpcups/Hbpl1_Wrapper.cpp -@@ -77,19 +77,31 @@ void Hbpl1Wrapper::FreeStripBuffer(void) +@@ -81,19 +81,31 @@ void Hbpl1Wrapper::FreeStripBuffer(void) DRIVER_ERROR Hbpl1Wrapper::StartJob(void **pOutBuffer, int *pOutBufferSize) { @@ -253,9 +237,9 @@ index a02655f..fb2155f 100644 } -@@ -173,8 +185,15 @@ DRIVER_ERROR Hbpl1Wrapper::StartPage(void **pOutBuffer, int *pOutBufferSize) +@@ -177,8 +189,15 @@ DRIVER_ERROR Hbpl1Wrapper::StartPage(void **pOutBuffer, int *pOutBufferSize) - PCLmPageContent.duplexDisposition = simplex; + PCLmPageContent.duplexDisposition = (duplexDispositionEnum)o_Hbpl1->m_JA.args_duplex_mode; - m_pPCLmGenerator->StartPage(&PCLmSContent,true,pOutBuffer,pOutBufferSize); - @@ -271,7 +255,7 @@ index a02655f..fb2155f 100644 return err; } -@@ -182,9 +201,16 @@ DRIVER_ERROR Hbpl1Wrapper::StartPage(void **pOutBuffer, int *pOutBufferSize) +@@ -186,9 +205,16 @@ DRIVER_ERROR Hbpl1Wrapper::StartPage(void **pOutBuffer, int *pOutBufferSize) DRIVER_ERROR Hbpl1Wrapper::EndPage(void **pOutBuffer, int *pOutBufferSize) { @@ -291,7 +275,7 @@ index a02655f..fb2155f 100644 } -@@ -195,9 +221,16 @@ DRIVER_ERROR Hbpl1Wrapper::FormFeed() +@@ -199,9 +225,16 @@ DRIVER_ERROR Hbpl1Wrapper::FormFeed() DRIVER_ERROR Hbpl1Wrapper::Encapsulate (void *pInBuffer, int inBufferSize, int numLines, void **pOutBuffer, int *pOutBufferSize) { @@ -312,10 +296,10 @@ index a02655f..fb2155f 100644 DRIVER_ERROR Hbpl1Wrapper::SkipLines (int iSkipLines) diff --git a/prnt/hpcups/genPCLm.cpp b/prnt/hpcups/genPCLm.cpp -index 4db4bde..c330e40 100644 +index bae3010ad..0e1650cf0 100644 --- a/prnt/hpcups/genPCLm.cpp +++ b/prnt/hpcups/genPCLm.cpp -@@ -127,6 +127,7 @@ +@@ -131,6 +131,7 @@ #include #include #include @@ -323,7 +307,7 @@ index 4db4bde..c330e40 100644 #include //#include -@@ -1674,7 +1675,12 @@ int PCLmGenerator::StartPage(PCLmPageSetup *PCLmPageContent, void **pOutBuffer, +@@ -1670,7 +1671,12 @@ int PCLmGenerator::StartPage(PCLmPageSetup *PCLmPageContent, void **pOutBuffer, destColorSpace=PCLmPageContent->dstColorSpaceSpefication; // Calculate how large the output buffer needs to be based upon the page specifications @@ -337,7 +321,7 @@ index 4db4bde..c330e40 100644 if(tmp_outBuffSize>currOutBuffSize) { -@@ -1742,7 +1748,14 @@ int PCLmGenerator::StartPage(PCLmPageSetup *PCLmPageContent, void **pOutBuffer, +@@ -1738,7 +1744,14 @@ int PCLmGenerator::StartPage(PCLmPageSetup *PCLmPageContent, void **pOutBuffer, { // We need to pad the scratchBuffer size to allow for compression expansion (RLE can create // compressed segments that are slightly larger than the source. @@ -353,7 +337,7 @@ index 4db4bde..c330e40 100644 if(!scratchBuffer) return(errorOutAndCleanUp()); /*if(DebugIt2) -@@ -1798,7 +1811,9 @@ int PCLmGenerator::SkipLines(int iSkipLines) +@@ -1794,7 +1807,9 @@ int PCLmGenerator::SkipLines(int iSkipLines) int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeight, void **pOutBuffer, int *iOutBufferSize) { int result=0, numCompBytes; @@ -364,7 +348,7 @@ index 4db4bde..c330e40 100644 int compSize; // int numLinesThisCall=inBufferSize/(currSourceWidth*srcNumComponents); int numLinesThisCall=thisHeight; -@@ -1888,7 +1903,8 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh +@@ -1884,7 +1899,8 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh { colorConvertSource(sourceColorSpace, grayScale, (ubyte*)localInBuffer, currSourceWidth, numLinesThisCall); // Adjust the scanline width accordingly @@ -374,7 +358,7 @@ index 4db4bde..c330e40 100644 } if(leftMarginInPix) -@@ -1903,7 +1919,11 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh +@@ -1899,7 +1915,11 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh } #ifdef SUPPORT_WHITE_STRIPS @@ -387,7 +371,7 @@ index 4db4bde..c330e40 100644 if(DebugIt2) { if(whiteStrip){ -@@ -1922,9 +1942,14 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh +@@ -1918,9 +1938,14 @@ int PCLmGenerator::Encapsulate(void *pInBuffer, int inBufferSize, int thisHeigh if(firstStrip && topMarginInPix) { ubyte whitePt=0xff; @@ -404,7 +388,7 @@ index 4db4bde..c330e40 100644 for(sint32 stripCntr=0; stripCntrh, 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/hplip-hpmud-string-parse.patch b/hplip-hpmud-string-parse.patch new file mode 100644 index 0000000..58bf5dd --- /dev/null +++ b/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/hplip-hpsetup-noscanjets.patch b/hplip-hpsetup-noscanjets.patch new file mode 100644 index 0000000..52a4690 --- /dev/null +++ b/hplip-hpsetup-noscanjets.patch @@ -0,0 +1,46 @@ +diff -up hplip-3.23.3/setup.py.hpsetup-noscanjets hplip-3.23.3/setup.py +--- hplip-3.23.3/setup.py.hpsetup-noscanjets 2023-05-29 14:16:26.148133678 +0200 ++++ hplip-3.23.3/setup.py 2023-05-29 14:16:26.220133253 +0200 +@@ -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 -up hplip-3.23.3/ui5/setupdialog.py.hpsetup-noscanjets hplip-3.23.3/ui5/setupdialog.py +--- hplip-3.23.3/ui5/setupdialog.py.hpsetup-noscanjets 2023-05-29 14:16:26.220133253 +0200 ++++ hplip-3.23.3/ui5/setupdialog.py 2023-05-29 14:18:12.475041454 +0200 +@@ -1391,6 +1391,18 @@ class SetupDialog(QDialog, Ui_Dialog): + 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/hplip-keyserver.patch b/hplip-keyserver.patch new file mode 100644 index 0000000..9b457f1 --- /dev/null +++ b/hplip-keyserver.patch @@ -0,0 +1,56 @@ +diff --git a/base/tui.py b/base/tui.py +index 99bda7b..0f90f92 100644 +--- a/base/tui.py ++++ b/base/tui.py +@@ -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 --git a/base/validation.py b/base/validation.py +index ee6b05a..5e955dc 100644 +--- a/base/validation.py ++++ b/base/validation.py +@@ -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 = ['keyserver.ubuntu.com', ++ 'pgp.surf.nl', ++ '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_Verification): + + + 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/hplip-log-stderr.patch similarity index 100% rename from SOURCES/hplip-log-stderr.patch rename to hplip-log-stderr.patch diff --git a/SOURCES/hplip-logdir.patch b/hplip-logdir.patch similarity index 51% rename from SOURCES/hplip-logdir.patch rename to hplip-logdir.patch index bbfab9b..702d328 100644 --- a/SOURCES/hplip-logdir.patch +++ b/hplip-logdir.patch @@ -1,18 +1,18 @@ -diff -up hplip-3.15.2/prnt/hpcups/HPCupsFilter.cpp.logdir hplip-3.15.2/prnt/hpcups/HPCupsFilter.cpp ---- hplip-3.15.2/prnt/hpcups/HPCupsFilter.cpp.logdir 2015-02-04 14:22:43.838774401 +0100 -+++ hplip-3.15.2/prnt/hpcups/HPCupsFilter.cpp 2015-02-04 14:22:43.844774315 +0100 -@@ -619,7 +619,7 @@ int HPCupsFilter::processRasterData(cups +diff -up hplip-3.21.12/prnt/hpcups/HPCupsFilter.cpp.logdir hplip-3.21.12/prnt/hpcups/HPCupsFilter.cpp +--- hplip-3.21.12/prnt/hpcups/HPCupsFilter.cpp.logdir 2022-01-12 11:27:25.509348511 +0100 ++++ hplip-3.21.12/prnt/hpcups/HPCupsFilter.cpp 2022-01-12 11:29:11.507661838 +0100 +@@ -669,7 +669,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); - - - while (cupsRasterReadHeader2(cups_raster, &cups_header)) -diff -up hplip-3.15.2/prnt/hpcups/SystemServices.cpp.logdir hplip-3.15.2/prnt/hpcups/SystemServices.cpp ---- hplip-3.15.2/prnt/hpcups/SystemServices.cpp.logdir 2015-02-04 14:22:43.844774315 +0100 -+++ hplip-3.15.2/prnt/hpcups/SystemServices.cpp 2015-02-04 14:24:04.080626127 +0100 + #ifndef DISABLE_IMAGEPROCESSOR + image_processor_t* imageProcessor=NULL; + IMAGE_PROCESSOR_ERROR result; +diff -up hplip-3.21.12/prnt/hpcups/SystemServices.cpp.logdir hplip-3.21.12/prnt/hpcups/SystemServices.cpp +--- hplip-3.21.12/prnt/hpcups/SystemServices.cpp.logdir 2021-12-13 10:07:36.000000000 +0100 ++++ hplip-3.21.12/prnt/hpcups/SystemServices.cpp 2022-01-12 11:27:25.509348511 +0100 @@ -38,7 +38,7 @@ SystemServices::SystemServices(int iLogL if (iLogLevel & SAVE_OUT_FILE) { diff --git a/hplip-logging-segfault.patch b/hplip-logging-segfault.patch new file mode 100644 index 0000000..4d7d2f0 --- /dev/null +++ b/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/hplip-m278-m281-needs-plugin.patch b/hplip-m278-m281-needs-plugin.patch new file mode 100644 index 0000000..2a0783c --- /dev/null +++ b/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/hplip-missing-drivers.patch b/hplip-missing-drivers.patch new file mode 100644 index 0000000..bb9b759 --- /dev/null +++ b/hplip-missing-drivers.patch @@ -0,0 +1,602 @@ +diff -up hplip-3.22.2/cups_drv.inc.missing-drivers hplip-3.22.2/cups_drv.inc +--- hplip-3.22.2/cups_drv.inc.missing-drivers 2022-02-23 08:42:29.000000000 +0100 ++++ hplip-3.22.2/cups_drv.inc 2022-03-10 09:11:00.337315604 +0100 +@@ -411,6 +411,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_m109-m112.ppd.gz \ +@@ -527,6 +528,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-laserjet_tank_1020.ppd.gz \ + ppd/hpcups/hp-laserjet_tank_150x.ppd.gz \ +diff -up hplip-3.22.2/data/models/models.dat.missing-drivers hplip-3.22.2/data/models/models.dat +--- hplip-3.22.2/data/models/models.dat.missing-drivers 2022-03-10 09:10:13.601066235 +0100 ++++ hplip-3.22.2/data/models/models.dat 2022-03-10 09:10:13.622066347 +0100 +@@ -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.22.2/Makefile.in.missing-drivers hplip-3.22.2/Makefile.in +--- hplip-3.22.2/Makefile.in.missing-drivers 2022-02-23 08:42:31.000000000 +0100 ++++ hplip-3.22.2/Makefile.in 2022-03-10 09:11:45.915558795 +0100 +@@ -1613,6 +1613,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_m109-m112.ppd.gz \ +@@ -1729,6 +1730,7 @@ am__dist_ppd_DATA_DIST = prnt/ps/hp-lase + 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-laserjet_tank_1020.ppd.gz \ + ppd/hpcups/hp-laserjet_tank_150x.ppd.gz \ +@@ -4090,6 +4092,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_m109-m112.ppd.gz \ +@@ -4206,6 +4209,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-laserjet_tank_1020.ppd.gz \ + @HPLIP_CLASS_DRIVER_FALSE@ ppd/hpcups/hp-laserjet_tank_150x.ppd.gz \ +diff -up hplip-3.22.2/prnt/drv/hpcups.drv.in.missing-drivers hplip-3.22.2/prnt/drv/hpcups.drv.in +--- hplip-3.22.2/prnt/drv/hpcups.drv.in.missing-drivers 2022-03-10 09:10:13.554065984 +0100 ++++ hplip-3.22.2/prnt/drv/hpcups.drv.in 2022-03-10 09:10:13.629066384 +0100 +@@ -22693,6 +22693,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" +@@ -23126,6 +23134,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/hplip-missing-links.patch b/hplip-missing-links.patch new file mode 100644 index 0000000..0deab1f --- /dev/null +++ b/hplip-missing-links.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.21.12/installer/pluginhandler.py.missing-links hplip-3.21.12/installer/pluginhandler.py +--- hplip-3.21.12/installer/pluginhandler.py.missing-links 2022-01-12 16:55:39.761934879 +0100 ++++ hplip-3.21.12/installer/pluginhandler.py 2022-01-12 17:22:33.367435334 +0100 +@@ -167,7 +167,7 @@ class PluginHandle(object): + continue + if link != "": + if not utils.check_library(link): +- self.__plugin_state = PLUGIN_FILES_CORRUPTED ++ pass + + + def __getPluginInformation(self, callback=None): diff --git a/hplip-model-mismatch.patch b/hplip-model-mismatch.patch new file mode 100644 index 0000000..1dbe3c0 --- /dev/null +++ b/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/hplip-no-asm.patch similarity index 100% rename from SOURCES/hplip-no-asm.patch rename to hplip-no-asm.patch diff --git a/hplip-no-libhpmud-libm-warnings.patch b/hplip-no-libhpmud-libm-warnings.patch new file mode 100644 index 0000000..160b70e --- /dev/null +++ b/hplip-no-libhpmud-libm-warnings.patch @@ -0,0 +1,108 @@ +diff --git a/scan/sane/escl.c b/scan/sane/escl.c +index 9fbbcaf..bc9e0b5 100644 +--- a/scan/sane/escl.c ++++ b/scan/sane/escl.c +@@ -37,18 +37,12 @@ static int bb_load(struct escl_session *ps, const char *so) + int stat=1; + + /* Load hpmud manually with symbols exported. Otherwise the plugin will not find it. */ +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- { +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- goto bugout; +- } ++ if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) ++ goto bugout; + + /* Load math library manually with symbols exported (Ubuntu 8.04). Otherwise the plugin will not find it. */ +- if ((ps->math_handle = load_library("libm.so")) == NULL) +- { +- if ((ps->math_handle = load_library("libm.so.6")) == NULL) +- goto bugout; +- } ++ if ((ps->math_handle = load_library("libm.so.6")) == NULL) ++ goto bugout; + if ((ps->bb_handle = load_plugin_library(UTILS_SCAN_PLUGIN_LIBRARY, so)) == NULL) + { + SendScanEvent(ps->uri, EVENT_PLUGIN_FAIL); +diff --git a/scan/sane/marvell.c b/scan/sane/marvell.c +index 236f7c9..793104c 100644 +--- a/scan/sane/marvell.c ++++ b/scan/sane/marvell.c +@@ -60,18 +60,12 @@ static int bb_load(struct marvell_session *ps, const char *so) + int stat=1; + + /* Load hpmud manually with symbols exported. Otherwise the plugin will not find it. */ +- if ((ps->hpmud_handle = load_library("libhpmud.so")) == NULL) +- { +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- goto bugout; +- } ++ if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) ++ goto bugout; + + /* Load math library manually with symbols exported (Ubuntu 8.04). Otherwise the plugin will not find it. */ +- if ((ps->math_handle = load_library("libm.so")) == NULL) +- { +- if ((ps->math_handle = load_library("libm.so.6")) == NULL) +- goto bugout; +- } ++ if ((ps->math_handle = load_library("libm.so.6")) == NULL) ++ goto bugout; + + if ((ps->bb_handle = load_plugin_library(UTILS_SCAN_PLUGIN_LIBRARY, so)) == NULL) + { +diff --git a/scan/sane/soap.c b/scan/sane/soap.c +index 0d22e52..dcd8c7c 100644 +--- a/scan/sane/soap.c ++++ b/scan/sane/soap.c +@@ -68,18 +68,12 @@ static int bb_load(struct soap_session *ps, const char *so) + int stat=1; + + /* Load hpmud manually with symbols exported. Otherwise the plugin will not find it. */ +- if ((ps->hpmud_handle = load_library("libhpmud.so")) == NULL) +- { +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- goto bugout; +- } ++ if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) ++ goto bugout; + + /* Load math library manually with symbols exported (Ubuntu 8.04). Otherwise the plugin will not find it. */ +- if ((ps->math_handle = load_library("libm.so")) == NULL) +- { +- if ((ps->math_handle = load_library("libm.so.6")) == NULL) +- goto bugout; +- } ++ if ((ps->math_handle = load_library("libm.so.6")) == NULL) ++ goto bugout; + + if ((ps->bb_handle = load_plugin_library(UTILS_SCAN_PLUGIN_LIBRARY, so)) == NULL) + { +diff --git a/scan/sane/soapht.c b/scan/sane/soapht.c +index 139100d..74e8391 100644 +--- a/scan/sane/soapht.c ++++ b/scan/sane/soapht.c +@@ -62,18 +62,12 @@ static int bb_load(struct soap_session *ps, const char *so) + int stat=1; + + /* Load hpmud manually with symbols exported. Otherwise the plugin will not find it. */ +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- { +- if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) +- goto bugout; +- } ++ if ((ps->hpmud_handle = load_library("libhpmud.so.0")) == NULL) ++ goto bugout; + + /* Load math library manually with symbols exported (Ubuntu 8.04). Otherwise the plugin will not find it. */ +- if ((ps->math_handle = load_library("libm.so")) == NULL) +- { +- if ((ps->math_handle = load_library("libm.so.6")) == NULL) +- goto bugout; +- } ++ if ((ps->math_handle = load_library("libm.so.6")) == NULL) ++ goto bugout; + + if ((ps->bb_handle = load_plugin_library(UTILS_SCAN_PLUGIN_LIBRARY, so)) == NULL) + { diff --git a/hplip-no-readfp.patch b/hplip-no-readfp.patch new file mode 100644 index 0000000..35108e3 --- /dev/null +++ b/hplip-no-readfp.patch @@ -0,0 +1,26 @@ +diff --git a/base/g.py b/base/g.py +index 0aa0e2e..96b3131 100644 +--- a/base/g.py ++++ b/base/g.py +@@ -128,7 +128,7 @@ class ConfigBase(object): + try: + fp = open(self.filename, "r") + try: +- self.conf.readfp(fp) ++ self.conf.read_file(fp, self.filename) + except configparser.MissingSectionHeaderError: + print("") + log.error("Found No Section in %s. Please set the http proxy for root and try again." % self.filename) +diff --git a/ui5/devmgr5.py b/ui5/devmgr5.py +index 3110a0f..3761f89 100644 +--- a/ui5/devmgr5.py ++++ b/ui5/devmgr5.py +@@ -1072,7 +1072,7 @@ class DevMgr5(Ui_MainWindow_Derived, Ui_MainWindow, QMainWindow): + + hplip_conf = configparser.ConfigParser() + fp = open("/etc/hp/hplip.conf", "r") +- hplip_conf.readfp(fp) ++ hplip_conf.read_file(fp, "/etc/hp/hplip.conf") + fp.close() + + try: diff --git a/SOURCES/hplip-no-write-bytecode.patch b/hplip-no-write-bytecode.patch similarity index 100% rename from SOURCES/hplip-no-write-bytecode.patch rename to hplip-no-write-bytecode.patch diff --git a/SOURCES/hplip-noernie.patch b/hplip-noernie.patch similarity index 69% rename from SOURCES/hplip-noernie.patch rename to hplip-noernie.patch index 4ac83b4..47bb9d0 100644 --- a/SOURCES/hplip-noernie.patch +++ b/hplip-noernie.patch @@ -1,7 +1,7 @@ -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 +diff -up hplip-3.23.3/Makefile.am.no-ernie hplip-3.23.3/Makefile.am +--- hplip-3.23.3/Makefile.am.no-ernie 2023-05-29 13:15:58.008610471 +0200 ++++ hplip-3.23.3/Makefile.am 2023-05-29 13:15:58.134609689 +0200 +@@ -562,7 +562,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 \ @@ -10,9 +10,9 @@ diff -up hplip-3.17.4/Makefile.am.no-ernie hplip-3.17.4/Makefile.am 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 +diff -up hplip-3.23.3/prnt/hpcups/Pcl3Gui2.cpp.no-ernie hplip-3.23.3/prnt/hpcups/Pcl3Gui2.cpp +--- hplip-3.23.3/prnt/hpcups/Pcl3Gui2.cpp.no-ernie 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/prnt/hpcups/Pcl3Gui2.cpp 2023-05-29 13:17:02.468210361 +0200 @@ -30,7 +30,6 @@ #include "CommonDefinitions.h" @@ -26,7 +26,7 @@ diff -up hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp.no-ernie hplip-3.17.4/prnt/hpcups { speed_mech_enabled = true; - m_run_ernie_filter = true; - crd_type = eCrd_both; + crd_type = eCrd_color_only; // pcl3 printers support RGB only ref:hplip-1701 strcpy(m_szLanguage, "PCL3GUI"); } @@ -59,21 +57,6 @@ DRIVER_ERROR Pcl3Gui2::Configure(Pipelin @@ -51,9 +51,9 @@ diff -up hplip-3.17.4/prnt/hpcups/Pcl3Gui2.cpp.no-ernie hplip-3.17.4/prnt/hpcups 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 +diff -up hplip-3.23.3/prnt/hpcups/Pcl3Gui2.h.no-ernie hplip-3.23.3/prnt/hpcups/Pcl3Gui2.h +--- hplip-3.23.3/prnt/hpcups/Pcl3Gui2.h.no-ernie 2023-03-28 09:26:11.000000000 +0200 ++++ hplip-3.23.3/prnt/hpcups/Pcl3Gui2.h 2023-05-29 13:15:58.134609689 +0200 @@ -60,7 +60,6 @@ private: DRIVER_ERROR encapsulateRaster(BYTE *input_raster, unsigned int num_bytes, COLORTYPE c_type); bool speed_mech_enabled; diff --git a/hplip-pcardext-disable.patch b/hplip-pcardext-disable.patch new file mode 100644 index 0000000..adcac1d --- /dev/null +++ b/hplip-pcardext-disable.patch @@ -0,0 +1,34 @@ +The pcardext Python extension cannot be loaded because it has not been +ported to Python 3: + +>>> import pcardext +Traceback (most recent call last): + File "", line 1, in +ImportError: /usr/lib64/python3.11/site-packages/pcardext.so: undefined symbol: PyString_AsStringAndSize +>>> + +Stop building this extension because it breaks the build if the +compiler lacks support for implicit function declarations. + +Bug: + +Submitted upstream: + +diff --git a/Makefile.am b/Makefile.am +index ddac16a9dd514008..15d953af9150c09e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -306,13 +306,6 @@ if !HPLIP_CLASS_DRIVER + pcarddir = $(hplipdir)/pcard + dist_pcard_DATA = pcard/__init__.py pcard/photocard.py + +-# pcardext +-pcardextdir = $(pyexecdir) +-pcardext_LTLIBRARIES = pcardext.la +-pcardext_la_LDFLAGS = -module -avoid-version +-pcardext_la_SOURCES = pcard/pcardext/pcardext.c pcard/fat.c pcard/pcardext/pcardext.h +-pcardext_la_CFLAGS = -I$(PYTHONINCLUDEDIR) +- + # prnt + prntdir = $(hplipdir)/prnt + dist_prnt_DATA = prnt/cups.py prnt/__init__.py prnt/ldl.py prnt/pcl.py prnt/colorcal.py diff --git a/hplip-plugin-curl.patch b/hplip-plugin-curl.patch new file mode 100644 index 0000000..380ce9b --- /dev/null +++ b/hplip-plugin-curl.patch @@ -0,0 +1,58 @@ +diff --git a/installer/pluginhandler.py b/installer/pluginhandler.py +index 56683fb..031ceec 100755 +--- a/installer/pluginhandler.py ++++ b/installer/pluginhandler.py +@@ -185,14 +185,16 @@ class PluginHandle(object): + if self.__plugin_conf_file.startswith('file://'): + status, filename = utils.download_from_network(self.__plugin_conf_file, local_conf, True) + else: +- wget = utils.which("wget", True) +- if wget: +- status, output = utils.run("%s --tries=3 --timeout=60 --output-document=%s %s --cache=off" %(wget, local_conf, self.__plugin_conf_file)) ++ curl = utils.which("curl", True) ++ if curl: ++ cmd = "%s --retry 3 --max-time 10 --output %s --location %s" %(curl, local_conf, self.__plugin_conf_file) ++ log.debug(cmd) ++ status, output = utils.run(cmd) + if status: + log.error("Plugin download failed with error code = %d" %status) + return status, url, check_sum + else: +- log.error("Please install wget package to download the plugin.") ++ log.error("Please install curl package to download the plugin.") + return status, url, check_sum + except IOError as e: + log.error("I/O Error: %s" % e.strerror) +@@ -284,18 +284,18 @@ class PluginHandle(object): + if src.startswith('file://'): + status, filename = utils.download_from_network(src, plugin_file, True) + else: +- wget = utils.which("wget", True) +- if wget: +- cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) ++ curl = utils.which("curl", True) ++ if curl: ++ cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src) + log.debug(cmd) + status, output = utils.run(cmd) +- log.debug("wget returned: %d" % status) ++ log.debug("curl returned: %d" % status) + + #Check whether plugin is accessible in Openprinting.org website otherwise dowload plugin from alternate location. + if status != 0 or os_utils.getFileSize(plugin_file) <= 0: + src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name) + log.info("Plugin is not accessible. Trying to download it from fallback location: [%s]" % src) +- cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) ++ cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src) + log.debug(cmd) + status, output = utils.run(cmd) + +@@ -323,7 +323,7 @@ class PluginHandle(object): + if digsig_url.startswith('file://'): + status, filename = utils.download_from_network(digsig_url, digsig_file, True) + else: +- cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,digsig_url) ++ cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl, self.__plugin_path,digsig_url) + log.debug(cmd) + status, output = utils.run(cmd) + except IOError as e: diff --git a/hplip-plugin-script.patch b/hplip-plugin-script.patch new file mode 100755 index 0000000..9b3c196 --- /dev/null +++ b/hplip-plugin-script.patch @@ -0,0 +1,28 @@ +diff --git a/Makefile.am b/Makefile.am +index bb4195c..ddac16a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -680,6 +680,12 @@ if HPLIP_CLASS_DRIVER + filterdir=$(cupsfilterdir) + printpluginsdir=$(cupsfilterdir) + ++# ++# HP Plugin ++# ++ ++pkgplugindir=$(bindir) ++pkgplugin_DATA=hp-plugin + + dist_filter_DATA = hpcups hpps dat2drv + dist_printplugins_DATA = prnt/plugins/hbpl1-arm32.so prnt/plugins/hbpl1-arm64.so prnt/plugins/hbpl1-x86_32.so prnt/plugins/hbpl1-x86_64.so prnt/plugins/lj-arm32.so prnt/plugins/lj-arm64.so prnt/plugins/lj-x86_32.so prnt/plugins/lj-x86_64.so +diff --git a/configure.in b/configure.in +index f8f1a28..7fa5d12 100644 +--- a/configure.in ++++ b/configure.in +@@ -801,5 +801,5 @@ AC_SUBST(udev_sysfs_rules) + AC_SUBST(epm_class_driver) + AC_SUBST(epm_class_install) + +-AC_CONFIG_FILES(Makefile hplip.conf hplip.desktop hp-uiscan.desktop hplip-systray.desktop prnt/drv/hpijs.drv prnt/drv/hpcups.drv hplip.list data/policykit/com.hp.hplip.service) ++AC_CONFIG_FILES(Makefile hplip.conf hplip.desktop hp-uiscan.desktop hplip-systray.desktop prnt/drv/hpijs.drv prnt/drv/hpcups.drv hplip.list data/policykit/com.hp.hplip.service hp-plugin) + AC_OUTPUT diff --git a/hplip-plugin-udevissues.patch b/hplip-plugin-udevissues.patch new file mode 100644 index 0000000..3a35c6b --- /dev/null +++ b/hplip-plugin-udevissues.patch @@ -0,0 +1,26 @@ +diff --git a/installer/pluginhandler.py b/installer/pluginhandler.py +index 1af8d85..5c498ab 100755 +--- a/installer/pluginhandler.py ++++ b/installer/pluginhandler.py +@@ -403,7 +403,20 @@ class PluginHandle(object): + log.error("Target file %s does not exist. File copy failed." % trg) + continue + else: +- os.chmod(trg, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH) ++ if trg == '/etc/udev/rules.d/S99-2000S1.rules' or \ ++ trg == '/etc/udev/rules.d/40-libsane.rules': ++ os.chmod(trg, 0o644) ++ with open(trg, 'r') as udev_f: ++ content = udev_f.read() ++ ++ content = content.replace('libsane_rules_end', 'libsane_usb_rules_end') ++ content = content.replace('GROUP="scanner", ', '') ++ ++ with open(trg, 'w') as udev_f: ++ udev_f.write(content) ++ ++ else: ++ os.chmod(trg, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH) + + if link: + if os.path.exists(link): diff --git a/SOURCES/hplip-ppd-ImageableArea.patch b/hplip-ppd-ImageableArea.patch similarity index 100% rename from SOURCES/hplip-ppd-ImageableArea.patch rename to hplip-ppd-ImageableArea.patch diff --git a/hplip-pserror-c99.patch b/hplip-pserror-c99.patch new file mode 100644 index 0000000..747af3a --- /dev/null +++ b/hplip-pserror-c99.patch @@ -0,0 +1,17 @@ +prnt/pserror.c: Replace an implicit int with an explicit int + +Submitted upstream: + +diff --git a/prnt/hpps/pserror.c b/prnt/hpps/pserror.c +index 114d7e1b5fa364fb..493b49c27917a7e6 100644 +--- a/prnt/hpps/pserror.c ++++ b/prnt/hpps/pserror.c +@@ -24,7 +24,7 @@ extern char *program ; /* Defined by main program, giving program name */ + void message(int flags, char *format, ...) + { + va_list args ; +- static column = 0 ; /* current screen column for message wrap */ ++ static int column = 0 ; /* current screen column for message wrap */ + char msgbuf[MAX_MESSAGE] ; /* buffer in which to put the message */ + char *bufptr = msgbuf ; /* message buffer pointer */ + diff --git a/SOURCES/hplip-pstotiff-is-rubbish.patch b/hplip-pstotiff-is-rubbish.patch similarity index 94% rename from SOURCES/hplip-pstotiff-is-rubbish.patch rename to hplip-pstotiff-is-rubbish.patch index 014e2cf..901e6a2 100644 --- a/SOURCES/hplip-pstotiff-is-rubbish.patch +++ b/hplip-pstotiff-is-rubbish.patch @@ -57,8 +57,8 @@ diff -up hplip-3.15.2/fax/filters/pstotiff.pstotiff-is-rubbish hplip-3.15.2/fax/ +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" ++ -dSHORTERRORS -dGHOSTSCRIPT -sstdout=%stderr \ ++ -sOutputFile="$TMPFILE" "$IN" +RET=$? +cat "$TMPFILE" +rm -f "$TMPFILE" diff --git a/hplip-repack.sh b/hplip-repack.sh new file mode 100755 index 0000000..a67e7ee --- /dev/null +++ b/hplip-repack.sh @@ -0,0 +1,32 @@ +#!/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 - license-related ones reported here https://bugs.launchpad.net/hplip/+bug/2028938 +rm hplip-$VERSION/locatedriver + +# compress into a new tarball +tar -cjvf hplip-$VERSION-repack.tar.gz hplip-$VERSION || exit 1 + +# check whether plugin is available +wget -O hplip-plugin.run https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-$1-plugin.run || wget -O hplip-plugin.run https://developers.hp.com/sites/default/files/hplip-$1-plugin.run || exit 1 + +# check whether the file is sane +file --mime hplip-plugin.run | grep 'x-shellscript' || exit 1 + +echo "hplip-${VERSION}-repack.tar.gz is prepared for uploading..." + +exit 0 + +# upload a new source tarball +#fedpkg new-sources hplip-$VERSION-repack.tar.gz || exit 1 diff --git a/SOURCES/hplip-retry-open.patch b/hplip-retry-open.patch similarity index 100% rename from SOURCES/hplip-retry-open.patch rename to hplip-retry-open.patch diff --git a/hplip-revert-plugins.patch b/hplip-revert-plugins.patch new file mode 100644 index 0000000..823fb14 --- /dev/null +++ b/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/hplip-scan-hpaio-include.patch b/hplip-scan-hpaio-include.patch new file mode 100644 index 0000000..79d1d94 --- /dev/null +++ b/hplip-scan-hpaio-include.patch @@ -0,0 +1,19 @@ +scam/sane/hpaio.c: Include orblite.h for more function prototypes + +Otherwise the build fails with compilers which do not support +implicit function declarations. + +Submitted upstream: + +diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c +index d342626822fc2190..57d1ddea32fb5816 100644 +--- a/scan/sane/hpaio.c ++++ b/scan/sane/hpaio.c +@@ -50,6 +50,7 @@ + #include "sclpml.h" + #include "escl.h" + #include "io.h" ++#include "orblite.h" + #include "orblitei.h" + + diff --git a/hplip-scan-orblite-c99.patch b/hplip-scan-orblite-c99.patch new file mode 100644 index 0000000..c921f22 --- /dev/null +++ b/hplip-scan-orblite-c99.patch @@ -0,0 +1,21 @@ +diff --git a/scan/sane/orblite.c b/scan/sane/orblite.c +index ba86640..2eb7aba 100644 +--- a/scan/sane/orblite.c ++++ b/scan/sane/orblite.c +@@ -20,6 +20,7 @@ + #include "orblitei.h" + #include "orblite.h"//Added New + #include ++#include + #include "utils.h" + #include "io.h" + +@@ -195,7 +196,7 @@ bugout: + + static int bb_unload(SANE_THandle ps) + { +- _DBG("Calling orblite bb_unload: \n"); ++ DBG("Calling orblite bb_unload: \n"); + if (ps->bb_handle) + { + dlclose(ps->bb_handle); diff --git a/SOURCES/hplip-scan-tmp.patch b/hplip-scan-tmp.patch similarity index 60% rename from SOURCES/hplip-scan-tmp.patch rename to hplip-scan-tmp.patch index 39f2b96..552a112 100644 --- a/SOURCES/hplip-scan-tmp.patch +++ b/hplip-scan-tmp.patch @@ -1,18 +1,18 @@ -diff -up hplip-3.15.2/scan.py.scan-tmp hplip-3.15.2/scan.py ---- hplip-3.15.2/scan.py.scan-tmp 2015-02-04 15:27:20.423562999 +0100 -+++ hplip-3.15.2/scan.py 2015-02-04 15:34:59.170978476 +0100 -@@ -1080,7 +1080,7 @@ try: +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: - im.save(output) - except IOError as e: -diff -up hplip-3.15.2/scan/sane.py.scan-tmp hplip-3.15.2/scan/sane.py ---- hplip-3.15.2/scan/sane.py.scan-tmp 2015-01-29 13:20:21.000000000 +0100 -+++ hplip-3.15.2/scan/sane.py 2015-02-04 15:27:20.424562984 +0100 + '''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 diff --git a/hplip-sclpml-strcasestr.patch b/hplip-sclpml-strcasestr.patch new file mode 100644 index 0000000..daf86c8 --- /dev/null +++ b/hplip-sclpml-strcasestr.patch @@ -0,0 +1,16 @@ +Switch the whole libsane-hpaio to get proper definition of strcasestr() used in +sclpml.c + +diff --git a/Makefile.am b/Makefile.am +index 15d953a..7105f74 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -73,7 +73,7 @@ endif + # The following is a interlibrary dependency that must be compiled first. + libsane_hpaio_la_LIBADD = libhpip.la libhpmud.la libhpipp.la $(DBUS_LIBS) -lcups -ldl + #libsane_hpaio_la_CFLAGS = -DWITH_NONAMESPACES -DSOAP_DEBUG +-libsane_hpaio_la_CFLAGS = $(DBUS_CFLAGS) -Iprotocol ++libsane_hpaio_la_CFLAGS = $(DBUS_CFLAGS) -Iprotocol -D_GNU_SOURCE + + if NETWORK_BUILD + libsane_hpaio_la_LIBADD += libhpdiscovery.la diff --git a/SOURCES/hplip-silence-ioerror.patch b/hplip-silence-ioerror.patch similarity index 100% rename from SOURCES/hplip-silence-ioerror.patch rename to hplip-silence-ioerror.patch diff --git a/SOURCES/hplip-snmp-quirks.patch b/hplip-snmp-quirks.patch similarity index 61% rename from SOURCES/hplip-snmp-quirks.patch rename to hplip-snmp-quirks.patch index e31b698..3f7be41 100644 --- a/SOURCES/hplip-snmp-quirks.patch +++ b/hplip-snmp-quirks.patch @@ -1,18 +1,18 @@ -diff -up hplip-3.17.11/prnt/drv/hpcups.drv.in.snmp-quirks hplip-3.17.11/prnt/drv/hpcups.drv.in ---- hplip-3.17.11/prnt/drv/hpcups.drv.in.snmp-quirks 2017-12-07 15:21:34.149138400 +0100 -+++ hplip-3.17.11/prnt/drv/hpcups.drv.in 2017-12-07 15:33:32.443211804 +0100 -@@ -10831,6 +10831,8 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +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 Officejet Pro 8500 a909a hpijs" + 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)" } -@@ -10839,6 +10841,8 @@ CustomMedia "B5/B5 176x250mm" 498.96 708 +@@ -10342,6 +10344,8 @@ Manufacturer "HP" Attribute "NickName" "" "HP Officejet Pro 8500 a909g, hpcups $Version" - Attribute "ShortNickName" "" "HP Officejet Pro 8500 a909g hpijs" + 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" diff --git a/SOURCES/hplip-3165-sourceoption.patch b/hplip-sourceoption.patch similarity index 100% rename from SOURCES/hplip-3165-sourceoption.patch rename to hplip-sourceoption.patch diff --git a/SOURCES/hplip-strncpy.patch b/hplip-strncpy.patch similarity index 100% rename from SOURCES/hplip-strncpy.patch rename to hplip-strncpy.patch diff --git a/SOURCES/hplip-strstr-const.patch b/hplip-strstr-const.patch similarity index 100% rename from SOURCES/hplip-strstr-const.patch rename to hplip-strstr-const.patch diff --git a/hplip-systray-blockerror.patch b/hplip-systray-blockerror.patch new file mode 100644 index 0000000..92a8cdf --- /dev/null +++ b/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-typo.patch b/hplip-typo.patch similarity index 68% rename from SOURCES/hplip-typo.patch rename to hplip-typo.patch index f8a6aca..4d93801 100644 --- a/SOURCES/hplip-typo.patch +++ b/hplip-typo.patch @@ -1,6 +1,6 @@ -diff -up hplip-3.17.11/firmware.py.typo hplip-3.17.11/firmware.py ---- hplip-3.17.11/firmware.py.typo 2018-01-12 16:50:10.338366719 +0100 -+++ hplip-3.17.11/firmware.py 2018-01-12 16:50:33.563184939 +0100 +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(): diff --git a/SOURCES/hplip-udev-rules.patch b/hplip-udev-rules.patch similarity index 100% rename from SOURCES/hplip-udev-rules.patch rename to hplip-udev-rules.patch diff --git a/hplip-ui-optional.patch b/hplip-ui-optional.patch new file mode 100644 index 0000000..d724a30 --- /dev/null +++ b/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.setupdialog ++ 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.setupdialog ++ 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/hplip-unicodeerror.patch b/hplip-unicodeerror.patch new file mode 100644 index 0000000..f98c7a3 --- /dev/null +++ b/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/hplip-use-binary-str.patch b/hplip-use-binary-str.patch new file mode 100644 index 0000000..319f1d6 --- /dev/null +++ b/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/hplip-use-raw-strings.patch b/hplip-use-raw-strings.patch new file mode 100644 index 0000000..6777903 --- /dev/null +++ b/hplip-use-raw-strings.patch @@ -0,0 +1,398 @@ +diff --git a/base/LedmWifi.py b/base/LedmWifi.py +index f63a050..074d5a2 100644 +--- a/base/LedmWifi.py ++++ b/base/LedmWifi.py +@@ -31,7 +31,7 @@ from .g import * + from . import device, utils + from .sixext import to_bytes_utf8 + +-http_result_pat = re.compile("""HTTP/\d.\d\s(\d+)""", re.I) ++http_result_pat = re.compile(r"""HTTP/\d.\d\s(\d+)""", re.I) + HTTP_OK = 200 + HTTP_ACCEPTED = 202 + HTTP_NOCONTENT = 204 +diff --git a/base/device.py b/base/device.py +index fbe6c34..a551403 100644 +--- a/base/device.py ++++ b/base/device.py +@@ -47,7 +47,7 @@ from . import models, mdns, slp, avahi + from .strings import * + from .sixext import PY3, to_bytes_utf8, to_unicode, to_string_latin, to_string_utf8, xStringIO + +-http_result_pat = re.compile("""HTTP/\d.\d\s(\d+)""", re.I) ++http_result_pat = re.compile(r"""HTTP/\d.\d\s(\d+)""", re.I) + + HTTP_OK = 200 + HTTP_ERROR = 500 +diff --git a/base/g.py b/base/g.py +index 96b3131..023aeea 100644 +--- a/base/g.py ++++ b/base/g.py +@@ -302,7 +302,7 @@ prop.hpcups_build = to_bool(sys_conf.get('configure', 'hpcups-install', '0')) + prop.hpijs_build = to_bool(sys_conf.get('configure', 'hpijs-install', '0')) + + # Spinner, ala Gentoo Portage +-spinner = "\|/-\|/-" ++spinner = r"\|/-\|/-" + spinpos = 0 + enable_spinner = True + +@@ -352,7 +352,7 @@ def check_extension_module_env(ext_mod): + log.error('%s not present in the system. Please re-install HPLIP.' %ext_mod) + sys.exit(1) + +- m = re.search('python(\d(\.\d){0,2})', ext_path) #get the python version where the .so file is found ++ m = re.search(r'python(\d(\.\d){0,2})', ext_path) #get the python version where the .so file is found + ext_ver = xint(m.group(1)) + + if ext_ver[0] == 3: +diff --git a/base/logger.py b/base/logger.py +index dd92a9c..68e4f13 100644 +--- a/base/logger.py ++++ b/base/logger.py +@@ -437,10 +437,10 @@ class Logger(object): + start = start + " " + number_chars = number_chars + 1 + try: +- elem_start = re.findall("(\<\W{0,1}\w+) ?", line)[0] +- elem_finished = re.findall("([?|\]\]]*\>)", line)[0] ++ elem_start = re.findall(r"(\<\W{0,1}\w+) ?", line)[0] ++ elem_finished = re.findall(r"([?|\]\]]*\>)", line)[0] + #should not have * +- attrs = re.findall("(\S*?\=\".*?\")", line) ++ attrs = re.findall(r"(\S*?\=\".*?\")", line) + #output.write(start + elem_start) + self.log(start+elem_start, level, False) + number_chars = len(start + elem_start) +diff --git a/base/models.py b/base/models.py +index dc6cc39..48dd2ef 100644 +--- a/base/models.py ++++ b/base/models.py +@@ -35,7 +35,7 @@ except ImportError: + datetime = None + + +-pat_prod_num = re.compile("""(\d+)""", re.I) ++pat_prod_num = re.compile(r"""(\d+)""", re.I) + + TYPE_UNKNOWN = 0 + TYPE_STRING = 1 +@@ -427,25 +427,25 @@ class ModelData: + } + + self.RE_FIELD_TYPES = { +- re.compile('^r(\d+)-agent(\d+)-kind', re.IGNORECASE) : TYPE_INT, +- re.compile('^r(\d+)-agent(\d+)-type', re.IGNORECASE) : TYPE_INT, +- re.compile('^r(\d+)-agent(\d+)-sku', re.IGNORECASE) : TYPE_STR, +- re.compile('^agent(\d+)-desc', re.IGNORECASE) : TYPE_STR, +- re.compile('^agent(\d+)-virgin', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^agent(\d+)-dvc', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-kind', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-type', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-id', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-hp-ink', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^agent(\d+)-health-desc', re.IGNORECASE) : TYPE_STR, +- re.compile('^agent(\d+)-health$', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-known', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^agent(\d+)-level', re.IGNORECASE) : TYPE_INT, +- re.compile('^agent(\d+)-ack', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^agent(\d+)-sku', re.IGNORECASE) : TYPE_STR, +- re.compile('^in-tray(\d+)', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^out-tray(\d+)', re.IGNORECASE) : TYPE_BOOL, +- re.compile('^model(\d+)', re.IGNORECASE) : TYPE_STR, ++ re.compile(r'^r(\d+)-agent(\d+)-kind', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^r(\d+)-agent(\d+)-type', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^r(\d+)-agent(\d+)-sku', re.IGNORECASE) : TYPE_STR, ++ re.compile(r'^agent(\d+)-desc', re.IGNORECASE) : TYPE_STR, ++ re.compile(r'^agent(\d+)-virgin', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^agent(\d+)-dvc', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-kind', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-type', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-id', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-hp-ink', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^agent(\d+)-health-desc', re.IGNORECASE) : TYPE_STR, ++ re.compile(r'^agent(\d+)-health$', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-known', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^agent(\d+)-level', re.IGNORECASE) : TYPE_INT, ++ re.compile(r'^agent(\d+)-ack', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^agent(\d+)-sku', re.IGNORECASE) : TYPE_STR, ++ re.compile(r'^in-tray(\d+)', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^out-tray(\d+)', re.IGNORECASE) : TYPE_BOOL, ++ re.compile(r'^model(\d+)', re.IGNORECASE) : TYPE_STR, + } + + self.TYPE_CACHE = {} +diff --git a/base/password.py b/base/password.py +index 259bf82..a4ed107 100644 +--- a/base/password.py ++++ b/base/password.py +@@ -167,8 +167,8 @@ class Password(object): + + elif i == 1: # TIMEOUT + if('true' in cmd and self.__password_prompt_str == ""): # sudo true or su -c "true" +- cb = cb.replace("[", "\[") +- cb = cb.replace("]", "\]") ++ cb = cb.replace("[", r"\[") ++ cb = cb.replace("]", r"\]") + + self.__password_prompt_str = cb + try: +diff --git a/base/queues.py b/base/queues.py +index 0818574..8625f53 100755 +--- a/base/queues.py ++++ b/base/queues.py +@@ -46,7 +46,7 @@ HPPS = 3 + HPOTHER = 4 + + DEVICE_URI_PATTERN = re.compile(r"""(.*):/(.*?)/(\S*?)\?(?:serial=(\S*)|device=(\S*)|ip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^&]*)|zc=(\S+))(?:&port=(\d))?""", re.I) +-NICKNAME_PATTERN = re.compile(b'''\*NickName:\s*\"(.*)"''', re.MULTILINE) ++NICKNAME_PATTERN = re.compile(r'''\*NickName:\s*\"(.*)"''', re.MULTILINE) + NET_PATTERN = re.compile(r"""(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})""") + NET_ZC_PATTERN = re.compile(r'''zc=(.*)''',re.IGNORECASE) + NET_OTHER_PATTERN = re.compile(r'''(.*)://(.*)''',re.IGNORECASE) +@@ -149,7 +149,7 @@ def parseQueues(mode): + desc='' + else: + try: +- desc = to_string_utf8( NICKNAME_PATTERN.search(fileptr).group(1) ) ++ desc = to_string_utf8( NICKNAME_PATTERN.search(fileptr.decode('utf-8')).group(1) ) + except AttributeError: + desc = '' + +diff --git a/base/status.py b/base/status.py +index 37c774e..01f455d 100644 +--- a/base/status.py ++++ b/base/status.py +@@ -1341,7 +1341,7 @@ def MapPJLErrorCode(error_code, str_code=None): + return status_code + + +-pjl_code_pat = re.compile("""^CODE\s*=\s*(\d.*)$""", re.IGNORECASE) ++pjl_code_pat = re.compile(r"""^CODE\s*=\s*(\d.*)$""", re.IGNORECASE) + + + +diff --git a/base/tui.py b/base/tui.py +index 0f90f92..3b36c65 100644 +--- a/base/tui.py ++++ b/base/tui.py +@@ -217,7 +217,7 @@ class ProgressMeter(object): + self.progress = 0 + self.prompt = prompt + self.prev_length = 0 +- self.spinner = "\|/-\|/-*" ++ self.spinner = r"\|/-\|/-*" + self.spinner_pos = 0 + self.max_size = ttysize()[1] - len(prompt) - 25 + self.update(0) +diff --git a/base/utils.py b/base/utils.py +index 2b631ce..2fb57c4 100644 +--- a/base/utils.py ++++ b/base/utils.py +@@ -148,7 +148,7 @@ def get_cups_systemgroup_list(): + return lis + + try: +- lis = ((re.findall('SystemGroup [\w* ]*',fp.read()))[0].replace('SystemGroup ','')).split(' ') ++ lis = ((re.findall(r'SystemGroup [\w* ]*',fp.read()))[0].replace('SystemGroup ','')).split(' ') + except IndexError: + return lis + +@@ -1597,7 +1597,7 @@ def mixin(cls): + # ------------------------- Usage Help + USAGE_OPTIONS = ("[OPTIONS]", "", "heading", False) + USAGE_LOGGING1 = ("Set the logging level:", "-l or --logging=", 'option', False) +-USAGE_LOGGING2 = ("", ": none, info\*, error, warn, debug (\*default)", "option", False) ++USAGE_LOGGING2 = ("", r": none, info\*, error, warn, debug (\*default)", "option", False) + USAGE_LOGGING3 = ("Run in debug mode:", "-g (same as option: -ldebug)", "option", False) + USAGE_LOGGING_PLAIN = ("Output plain text only:", "-t", "option", False) + USAGE_ARGS = ("[PRINTER|DEVICE-URI]", "", "heading", False) +@@ -1605,13 +1605,13 @@ USAGE_ARGS2 = ("[PRINTER]", "", "heading", False) + USAGE_DEVICE = ("To specify a device-URI:", "-d or --device=", "option", False) + USAGE_PRINTER = ("To specify a CUPS printer:", "-p or --printer=", "option", False) + USAGE_BUS1 = ("Bus to probe (if device not specified):", "-b or --bus=", "option", False) +-USAGE_BUS2 = ("", ": cups\*, usb\*, net, bt, fw, par\* (\*defaults) (Note: bt and fw not supported in this release.)", 'option', False) ++USAGE_BUS2 = ("", r": cups\*, usb\*, net, bt, fw, par\* (\*defaults) (Note: bt and fw not supported in this release.)", 'option', False) + USAGE_HELP = ("This help information:", "-h or --help", "option", True) + USAGE_SPACE = ("", "", "space", False) + USAGE_EXAMPLES = ("Examples:", "", "heading", False) + USAGE_NOTES = ("Notes:", "", "heading", False) + USAGE_STD_NOTES1 = ("If device or printer is not specified, the local device bus is probed and the program enters interactive mode.", "", "note", False) +-USAGE_STD_NOTES2 = ("If -p\* is specified, the default CUPS printer will be used.", "", "note", False) ++USAGE_STD_NOTES2 = (r"If -p\* is specified, the default CUPS printer will be used.", "", "note", False) + USAGE_SEEALSO = ("See Also:", "", "heading", False) + USAGE_LANGUAGE = ("Set the language:", "--loc= or --lang=. Use --loc=? or --lang=? to see a list of available language codes.", "option", False) + USAGE_LANGUAGE2 = ("Set the language:", "--lang=. Use --lang=? to see a list of available language codes.", "option", False) +@@ -1839,7 +1839,7 @@ encoding: utf8 + + elif typ == 'man': + log.info('.TH "%s" 1 "%s" Linux "User Manuals"' % (crumb, version)) +- log.info(".SH NAME\n%s \- %s" % (crumb, title)) ++ log.info(r".SH NAME\n%s \- %s" % (crumb, title)) + + for line in text_list: + text1, text2, format, trailing_space = line +@@ -1938,7 +1938,7 @@ def unescape(text): + except KeyError: + pass + return text # leave as is +- return re.sub("&#?\w+;", fixup, text) ++ return re.sub(r"&#?\w+;", fixup, text) + + + # Adds HTML or XML character references and entities from a text string +@@ -1991,7 +1991,7 @@ def Is_HPLIP_older_version(installed_version, available_version): + log.debug("HPLIP Installed_version=%s Available_version=%s"%(installed_version,available_version)) + cnt = 0 + Is_older = False +- pat=re.compile('''(\d{1,})([a-z]{1,})''') ++ pat=re.compile(r'''(\d{1,})([a-z]{1,})''') + try: + while cnt or --port= (Valid values are 1\*, 2, and 3. \*default)", "option", False), ++ ("To specify the port on a multi-port JetDirect:", r"-p or --port= (Valid values are 1\*, 2, and 3. \*default)", "option", False), + ("Show the CUPS URI only (quiet mode):", "-c or --cups", "option", False), + ("Show the SANE URI only (quiet mode):", "-s or --sane", "option", False), + ("Show the HP Fax URI only (quiet mode):", "-f or --fax", "option", False), +diff --git a/prnt/cups.py b/prnt/cups.py +index 1ea3099..78b8adc 100644 +--- a/prnt/cups.py ++++ b/prnt/cups.py +@@ -168,7 +168,7 @@ CUPS_ERROR_BAD_NAME = 0x0f00 + CUPS_ERROR_BAD_PARAMETERS = 0x0f01 + + nickname_pat = re.compile(r'''\*NickName:\s*\"(.*)"''', re.MULTILINE) +-pat_cups_error_log = re.compile("""^loglevel\s?(debug|debug2|warn|info|error|none)""", re.I) ++pat_cups_error_log = re.compile(r"""^loglevel\s?(debug|debug2|warn|info|error|none)""", re.I) + ppd_pat = re.compile(r'''.*hp-(.*?)(-.*)*\.ppd.*''', re.I) + ppd_pat1 = re.compile(r'''.*hp-(.*?)(_.*)*\.ppd.*''', re.I) + +diff --git a/probe.py b/probe.py +index 2041fb6..2b43ece 100755 +--- a/probe.py ++++ b/probe.py +@@ -42,11 +42,11 @@ USAGE = [(__doc__, "", "name", True), + ("Usage: %s [OPTIONS]" % __mod__, "", "summary", True), + utils.USAGE_OPTIONS, + ("Bus to probe:", "-b or --bus=", "option", False), +- ("", ": cups, usb\*, net, bt, fw, par (\*default) (Note: bt and fw not supported in this release.)", "option", False), ++ ("", r": cups, usb\*, net, bt, fw, par (\*default) (Note: bt and fw not supported in this release.)", "option", False), + ("Set Time to Live (TTL):", "-t or --ttl= (Default is 4).", "option", False), + ("Set timeout:", "-o or --timeout=", "option", False), + ("Filter by functionality:", "-e or --filter=", "option", False), +- ("", ": comma separated list of one or more of: scan, pcard, fax, copy, or none\*. (\*none is the default)", "option", False), ++ ("", r": comma separated list of one or more of: scan, pcard, fax, copy, or none\*. (\*none is the default)", "option", False), + ("Search:", "-s or --search=", "option", False), + ("", " must be a valid regular expression (not case sensitive)", "option", False), + ("Network discovery method:", "-m or --method=: is 'slp'* or 'mdns'.", "option", False), +diff --git a/scan.py b/scan.py +index 0bfa6f5..27b8c2e 100755 +--- a/scan.py ++++ b/scan.py +@@ -249,9 +249,9 @@ try: + extra_options=[utils.USAGE_SPACE, + ("[OPTIONS] (General)", "", "header", False), + ("Scan destinations:", "-s or --dest=", "option", False), +- ("", "where is a comma separated list containing one or more of: 'file'\*, ", "option", False), ++ ("", r"where is a comma separated list containing one or more of: 'file'\*, ", "option", False), + ("", "'viewer', 'editor', 'pdf', or 'print'. Use only commas between values, no spaces.", "option", False), +- ("Scan mode:", "-m or --mode=. Where is 'gray'\*, 'color' or 'lineart'.", "option", False), ++ ("Scan mode:", r"-m or --mode=. Where is 'gray'\*, 'color' or 'lineart'.", "option", False), + ("Scanning resolution:", "-r or --res= or --resolution=", "option", False), + ("", "where 300 is default.", "option", False), + ("Image resize:", "--resize= (min=1%, max=400%, default=100%)", "option", False), +@@ -268,7 +268,7 @@ try: + utils.USAGE_SPACE, + ("[OPTIONS] (Scan area)", "", "header", False), + ("Specify the units for area/box measurements:", "-t or --units=", "option", False), +- ("", "where is 'mm'\*, 'cm', 'in', 'px', or 'pt' ('mm' is default).", "option", False), ++ ("", r"where is 'mm'\*, 'cm', 'in', 'px', or 'pt' ('mm' is default).", "option", False), + ("Scan area:", "-a,,, or --area=,,,", "option", False), + ("", "Coordinates are relative to the upper left corner of the scan area.", "option", False), + ("", "Units for tlx, tly, brx, and bry are specified by -t/--units (default is 'mm').", "option", False), +diff --git a/setup.py b/setup.py +index 98f57fd..1a74d6d 100755 +--- a/setup.py ++++ b/setup.py +@@ -79,11 +79,11 @@ USAGE = [ (__doc__, "", "name", True), + utils.USAGE_SPACE, + utils.USAGE_OPTIONS, + ("Automatic mode:", "-a or --auto (-i mode only)", "option", False), +- ("To specify the port on a multi-port JetDirect:", "--port= (Valid values are 1\*, 2, and 3. \*default)", "option", False), ++ ("To specify the port on a multi-port JetDirect:", r"--port= (Valid values are 1\*, 2, and 3. \*default)", "option", False), + ("No testpage in automatic mode:", "-x (-i mode only)", "option", False), + ("To specify a CUPS printer queue name:", "-p or --printer= (-i mode only)", "option", False), + ("To specify a CUPS fax queue name:", "-f or --fax= (-i mode only)", "option", False), +- ("Type of queue(s) to install:", "-t or --type=. : print*, fax\* (\*default) (-i mode only)", "option", False), ++ ("Type of queue(s) to install:", r"-t or --type=. : print*, fax\* (\*default) (-i mode only)", "option", False), + ("To specify the device URI to install:", "-d or --device= (--qt4 mode only)", "option", False), + ("Remove printers or faxes instead of setting-up:", "-r or --rm or --remove", "option", False), + utils.USAGE_LANGUAGE, diff --git a/hplip-wifisetup.patch b/hplip-wifisetup.patch new file mode 100644 index 0000000..a7dc21b --- /dev/null +++ b/hplip-wifisetup.patch @@ -0,0 +1,12 @@ +diff -up hplip-3.23.3/ui5/wifisetupdialog.py.wifisetup-bad-call-fix hplip-3.23.3/ui5/wifisetupdialog.py +--- hplip-3.23.3/ui5/wifisetupdialog.py.wifisetup-bad-call-fix 2023-05-29 13:45:35.830961640 +0200 ++++ hplip-3.23.3/ui5/wifisetupdialog.py 2023-05-29 13:48:05.939993288 +0200 +@@ -665,7 +665,7 @@ class WifiSetupDialog(QDialog, Ui_Dialog + self.ip,_,addressmode, subnetmask, gateway, pridns, sec_dns= self.wifiObj.getIPConfiguration(self.dev, self.adapterName) + if self.ip == "0.0.0.0": + if not self.wifiObj == CdmWifi: +- 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/hplip.appdata.xml similarity index 95% rename from SOURCES/hplip.appdata.xml rename to hplip.appdata.xml index 9c0b711..17ddd4a 100644 --- a/SOURCES/hplip.appdata.xml +++ b/hplip.appdata.xml @@ -1,9 +1,9 @@ - - HP-hplip.desktop + + hplip.desktop CC0-1.0 - GPL-2.0 and MIT and BSD-2-Clause + GPL-2.0+ HPLIP Graphic Tools HPLIP GUI tools and GUI part of other HPLIP tools diff --git a/SPECS/hplip.spec b/hplip.spec similarity index 60% rename from SPECS/hplip.spec rename to hplip.spec index b8532d2..7883a68 100644 --- a/SPECS/hplip.spec +++ b/hplip.spec @@ -6,15 +6,38 @@ Summary: HP Linux Imaging and Printing Project Name: hplip -Version: 3.18.4 -Release: 14%{?dist} -License: GPLv2+ and MIT and BSD and IJG and Public Domain and GPLv2+ with exceptions and ISC +Version: 3.23.12 +Release: 10%{?dist}.5 +# most files (base/*, *, ui*/...) - GPL2+ +# prnt/hpijs/ jpeg related files - IJG +# prnt/* - BSD-3-Clause-HP - it is modified a little, asked here https://gitlab.com/fedora/legal/fedora-license-data/-/issues/267 +# base/exif.py - BSD-2-Clause - reported as https://gitlab.com/fedora/legal/fedora-license-data/-/issues/268 +# base/ldif.py - python-ldap - reported https://gitlab.com/fedora/legal/fedora-license-data/-/issues/269 +# io/*, scan/* - MIT +# protocol/discovery/* - LGPL-2.1-or-later +# protocol/* - GPL2only +# scan/sane/sane.h - Public Domain +License: GPL-2.0-or-later AND MIT AND BSD-3-Clause-HP AND IJG AND GPL-2.0-only AND LGPL-2.1-or-later AND BSD-2-Clause AND LicenseRef-Fedora-Public-Domain AND python-ldap Url: https://developers.hp.com/hp-linux-imaging-and-printing -Source0: http://downloads.sourceforge.net/sourceforge/hplip/hplip-%{version}.tar.gz +# 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 +Source7: hp-plugin.in + Patch1: hplip-pstotiff-is-rubbish.patch Patch2: hplip-strstr-const.patch Patch3: hplip-ui-optional.patch @@ -33,69 +56,283 @@ 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 -Patch28: hplip-colorlaserjet-mfp-m278-m281.patch -Patch30: hplip-typo.patch -Patch31: hplip-keyserver.patch -Patch32: hplip-covscan.patch +Patch19: hplip-dj990c-margin.patch +Patch20: hplip-strncpy.patch +Patch21: hplip-no-write-bytecode.patch +Patch22: hplip-silence-ioerror.patch +Patch23: hplip-sourceoption.patch +Patch24: hplip-noernie.patch +Patch25: hplip-appdata.patch +Patch26: hplip-check-cups.patch +Patch27: 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. +Patch28: hplip-use-binary-str.patch +# m278-m281 doesn't work correctly again +Patch29: hplip-error-print.patch +Patch30: hplip-hpfax-importerror-print.patch +Patch31: hplip-wifisetup.patch +# pgp.mit.edu keyserver got bad connection, so we need to have pool of keyservers +# to choose (Bz#1641100, launchpad#1799212) +Patch32: hplip-keyserver.patch +# QMessagebox call was copy-pasted from Qt4 version, but Qt5 has different arguments, +# This patch solves most of them +Patch33: 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. +Patch34: 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. +Patch35: 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 +Patch36: 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 +Patch37: 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. +Patch38: 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 +Patch39: 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 +Patch40: 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 +Patch41: hplip-hpcups-crash.patch +# Fixing the issues found by coverity scan +# reported upstream https://bugs.launchpad.net/hplip/+bug/1808145 +Patch42: 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 +Patch43: 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 +Patch44: 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 +Patch45: 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 +Patch46: hplip-model-mismatch.patch +# sixext has problems with python3 strings (bz#1573430) +# reported https://bugs.launchpad.net/bugs/1480152 +Patch47: hplip-unicodeerror.patch +# error with new gcc, already reported in upstream as +# https://bugs.launchpad.net/hplip/+bug/1836735 +Patch48: hplip-fix-Wreturn-type-warning.patch +# upstream check for python clears OS build system +# CFLAGS +# https://bugs.launchpad.net/hplip/+bug/1879445 +Patch49: 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 +Patch50: 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 +Patch51: 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 +Patch52: 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 +Patch53: hplip-revert-plugins.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 +Patch54: hplip-hpsetup-noscanjets.patch +# 1963114 - patch for hplip firmware load timeout fix +# reported upstream https://bugs.launchpad.net/hplip/+bug/1922404 +Patch55: hplip-hpfirmware-timeout.patch +# 1985251 - Incorrect permission for gpg directory +# reported upstream https://bugs.launchpad.net/hplip/+bug/1938442 +Patch56: hplip-gpgdir-perms.patch +# 1987141 - hp-plugin installs malformed udev files +# reported upstream https://bugs.launchpad.net/hplip/+bug/1847477 +Patch57: hplip-plugin-udevissues.patch +# 2080235 - Misleading errors about missing shared libraries when scanning +# downstream patch to prevent errors: +# - when loading libhpmud.so - unversioned .so files belong into devel packages, +# but dlopen() in hplip was set to load the unversioned .so - so to remove rpmlint +# error (when libhpmud.so is in non-devel package) and prevent runtime dependency on -devel +# package (if libhpmud.so had been moved to -devel) the dlopen on unversioned .so file was +# removed +# - /lib64/libm.so is not symlink but ld script, which cannot be used in dlopen() +Patch58: hplip-no-libhpmud-libm-warnings.patch +Patch60: hplip-plugin-script.patch +# C99 compatibility fixes by fweimer - use explicit int +# Submitted upstream: +Patch61: hplip-pserror-c99.patch +# C99 compatibility patch by fweimer - several undefined functions in hpaio +# backend are declared in orblite.h +# Submitted upstream: +Patch62: hplip-scan-hpaio-include.patch +# C99 compatibility patch by fweimer - undefined _DBG() and dynamic linking funcs in orblite.c +# - _DBG() looks like typo and new header is added for funcs +# Submitted upstream: +Patch63: hplip-scan-orblite-c99.patch +# C99 compatibility patch by fweimer: +# PyString_AsStringAndSize is removed in Python3, remove its compilation for now +# in case there is a request for compiling it again, there is a possible solution +# for the function py3 alternative https://opendev.org/openstack/pyeclib/commit/19c8313986 +# - disabling removes hp-unload and /usr/share/hplip/pcard as well +# Submitted upstream: +Patch64: hplip-pcardext-disable.patch +# undefined strcasestr() in sclpml.c - build with _GNU_SOURCE +# Submitted upstream: +Patch65: hplip-sclpml-strcasestr.patch +# 2192131 - parseQueues() doesn't get device uri from 'lpstat -v', because parsing pattern changed +# https://bugs.launchpad.net/hplip/+bug/2027972 +Patch67: hplip-fix-parsing-lpstat.patch +# switch to curl by downstream patch from wget to workaround openstack dropping IPv6 +# which causes great delays... +# Remove this once internal openstack handles IPv6 better - test by pinging IPv6 in OpenStack, +# it should not hang. +Patch68: hplip-plugin-curl.patch +# 2221311 - [python3.12] hplip tools/binaries crash due depending on removed configparser.readfp() +# Upstream https://bugs.launchpad.net/hplip/+bug/2028001 +Patch69: hplip-no-readfp.patch +# fix SyntaxWarning from python3.12 +# https://bugs.launchpad.net/hplip/+bug/2029480 +Patch70: hplip-use-raw-strings.patch +# FTBFS GCC 14 +# https://bugs.launchpad.net/hplip/+bug/2048780 +Patch71: hplip-hpaio-gcc14.patch # CVE-2026-8632 - Privilege escalation and arbitrary code execution # via operating system command injection in Is_Process_Running() -# https://redhat.atlassian.net/browse/RHEL-178359 -Patch33: hplip-CVE-2026-8632.patch -# CVE-2026-8631 - Arbitrary code execution and privilege escalation -# via integer overflow in hpcups -# https://redhat.atlassian.net/browse/RHEL-178718 -Patch34: hplip-CVE-2026-8631.patch +# https://redhat.atlassian.net/browse/RHEL-178352 +Patch72: hplip-CVE-2026-8632.patch +# CVE-2026-8631 hplip: HPLIP: Arbitrary code execution and privilege escalation via integer overflow in hpcups +# https://redhat.atlassian.net/browse/RHEL-178715 +Patch73: hplip-hpcups-integer-overflow.patch # OSH fixes after CVE-2026-8631 -Patch35: hplip-CVE-2026-8631-osh.patch +Patch74: hplip-CVE-2026-8631-osh.patch -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: python3-pillow -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 +%if 0%{?fedora} || 0%{?rhel} <= 8 +# mention hplip-gui if you want to have GUI +Patch1000: hplip-fedora-gui.patch +%endif + +# uses automatic creation of configure +BuildRequires: autoconf +# uses automatic creation of Makefile +BuildRequires: automake +# Make sure we get postscriptdriver tags - need cups and python3-cups. +BuildRequires: cups +# uses functions from CUPS in filters, backends and libraries defining them +BuildRequires: cups-devel +%if 0%{?rhel} <= 8 || 0%{?fedora} +# needed for desktop file validation in spec file +BuildRequires: desktop-file-utils +%endif # 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 +# 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++ - -BuildRequires: autoconf automake libtool -BuildRequires: net-snmp-devel -BuildRequires: cups-devel -BuildRequires: python3-devel +# support for JPEG file formats in hp-scan BuildRequires: libjpeg-devel -BuildRequires: desktop-file-utils +# uses libtool for autorconf +BuildRequires: libtool +# implements support for USB devices BuildRequires: libusb1-devel +# uses make +BuildRequires: make +# SLP device discovery is based on SNMP +BuildRequires: net-snmp-devel +# wasn't able to find out why, but SO libraries in hplip-libs require them... BuildRequires: openssl-devel -BuildRequires: sane-backends-devel +# supports mDNS device discovery via Avahi +BuildRequires: pkgconfig(avahi-client) +BuildRequires: pkgconfig(avahi-core) BuildRequires: pkgconfig(dbus-1) - -# Make sure we get postscriptdriver tags. -BuildRequires: python3-cups, cups - +BuildRequires: python3-cups +# implements C Python extensions like hpmudext, cupsext, scanext +BuildRequires: python3-devel +# distutils are removed in Python3.12, use setuptools +BuildRequires: python3-setuptools +# SANE backend hpaio uses function from SANE API +BuildRequires: sane-backends-devel # macros: %%{_tmpfilesdir}, %%{_udevrulesdir} BuildRequires: systemd -# hpijs was merged into main package in 3.15.7-2 -Obsoletes: hpijs < 1:%{version}-%{release} -Provides: hpijs = 1:%{version}-%{release} +# uses avahi-browse for discovering IPP-over-USB printers +Recommends: avahi-tools +# 1733449 - Scanner on an HP AIO printer is not detected unless libsane-hpaio is installed +Recommends: libsane-hpaio%{?_isa} = %{version}-%{release} +# downloaded plugin requires python3-gobject to work even via CLI... +# but make it weak dependency, so users which don't need the plugin and have servers +# can remove the python3-gobject which is used by desktop apps +Recommends: python3-gobject + +Requires: cups +# switch to curl by downstream patch from wget to workaround openstack dropping IPv6 +# which causes great delays... +Requires: curl +# for bash script acting as hp-plugin (Source7) +Requires: gawk +# set require directly to /usr/bin/gpg, because gnupg2 and gnupg ships it, +# but gnupg will be deprecated in the future +Requires: %{_bindir}/gpg +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: python3-dbus +%if 0%{?rhel} <= 8 || 0%{?fedora} +Requires: python3-pillow +%endif +# /usr/lib/udev/rules.d +Requires: systemd +# 1788643 - Fedora minimal does not ship tar by default +Requires: tar +# require usbutils, hp-diagnose_queues needs lsusb +Requires: usbutils + +# 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 %description The Hewlett-Packard Linux Imaging and Printing Project provides @@ -103,40 +340,42 @@ 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} -Obsoletes: %{name}-compat-libs < %{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 + +# for avahi-browse - looks for devices on local network +Recommends: avahi-tools +Recommends: libsane-hpaio%{?_isa} = %{version}-%{release} +# for hp-check +Recommends: pkgconf + +Requires: %{name}%{?_isa} = %{version}-%{release} # hpssd.py Requires: python3-gobject -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: libsane-hpaio%{?_isa} = %{version}-%{release} +Requires: python3-reportlab +Requires: python3-qt5 %description gui HPLIP graphical tools. +%endif %package -n libsane-hpaio Summary: SANE driver for scanners in HP's multi-function devices -License: GPLv2+ -Obsoletes: libsane-hpoj < 0.91 -Provides: libsane-hpoj = 0.91 + Requires: sane-backends Requires: %{name}-libs%{?_isa} = %{version}-%{release} @@ -147,21 +386,21 @@ SANE driver for scanners in HP's multi-function devices (from HPOJ). %setup -q # The pstotiff filter is rubbish so replace it (launchpad #528394). -%patch1 -p1 -b .pstotiff-is-rubbish +%patch -P 1 -p1 -b .pstotiff-is-rubbish # Fix compilation. -%patch2 -p1 -b .strstr-const +%patch -P 2 -p1 -b .strstr-const # Make utils.checkPyQtImport() look for the gui sub-package (bug #243273). -%patch3 -p1 -b .ui-optional +%patch -P 3 -p1 -b .ui-optional # Make sure to avoid handwritten asm. -%patch4 -p1 -b .no-asm +%patch -P 4 -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 +%patch -P 5 -p1 -b .deviceIDs-drv chmod +x %{SOURCE2} mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs} %{SOURCE2} prnt/drv/hpcups.drv.in \ @@ -169,28 +408,28 @@ mv 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 +%patch -P 6 -p1 -b .udev-rules # Retry when connecting to device fails (bug #532112). -%patch7 -p1 -b .retry-open +%patch -P 7 -p1 -b .retry-open # Mark SNMP quirks in PPD for HP OfficeJet Pro 8500 (bug #581825). -%patch8 -p1 -b .snmp-quirks +%patch -P 8 -p1 -b .snmp-quirks # Fixed bogus low ink warnings from hpijs driver (bug #643643). -%patch9 -p1 -b .hpijs-marker-supply +%patch -P 9 -p1 -b .hpijs-marker-supply # Clear old printer-state-reasons we used to manage (bug #510926). -%patch10 -p1 -b .clear-old-state-reasons +%patch -P 10 -p1 -b .clear-old-state-reasons # Avoid busy loop in hpcups when backend has exited (bug #525944). -%patch11 -p1 -b .hpcups-sigpipe +%patch -P 11 -p1 -b .hpcups-sigpipe # CUPS filters should use TMPDIR when available (bug #865603). -%patch12 -p1 -b .logdir +%patch -P 12 -p1 -b .logdir # Fixed Device ID parsing code in hpijs's dj9xxvip.c (bug #510926). -%patch13 -p1 -b .bad-low-ink-warning +%patch -P 13 -p1 -b .bad-low-ink-warning # Add Device ID for # HP LaserJet Color M451dn (bug #1159380) @@ -198,7 +437,7 @@ for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4); do gunzip ${ppd_file#*/}.gz done -%patch14 -p1 -b .deviceIDs-ppd +%patch -P 14 -p1 -b .deviceIDs-ppd for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4); do gzip -n ${ppd_file#*/} @@ -209,66 +448,171 @@ for ppd_file in $(grep '^diff' %{PATCH15} | cut -d " " -f 4); do gunzip ${ppd_file#*/}.gz done -%patch15 -p1 -b .ImageableArea +%patch -P 15 -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 +%patch -P 16 -p1 -b .scan-tmp # Treat logging before importing of logger module (bug #984699). -%patch17 -p1 -b .log-stderr +%patch -P 17 -p1 -b .log-stderr # Fix parsing of avahi-daemon output (bug #1096939). -%patch18 -p1 -b .parsing +%patch -P 18 -p1 -b .parsing # Fixed left/right margins for HP DeskJet 990C (LP #1405212). -%patch20 -p1 -b .dj990c-margin +%patch -P 19 -p1 -b .dj990c-margin # Fixed uses of strncpy throughout. -%patch21 -p1 -b .strncpy +%patch -P 20 -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 +%patch -P 21 -p1 -b .no-write-bytecode # Ignore IOError when logging output (bug #712537). -%patch23 -p1 -b .silence-ioerror +%patch -P 22 -p1 -b .silence-ioerror # [abrt] hplip: hp-scan:663::NameError: name 'source_option' is not defined (bug #1341304) -%patch24 -p1 -b .sourceoption +%patch -P 23 -p1 -b .sourceoption # hplip license problem (bug #1364711) -%patch25 -p1 -b .no-ernie +%patch -P 24 -p1 -b .no-ernie # hplip appdata -%patch26 -p1 -b .appdata - -rm prnt/hpcups/ErnieFilter.{cpp,h} prnt/hpijs/ernieplatform.h +%patch -P 25 -p1 -b .appdata # hp-check shows 'CUPS incompatible or not running' even if CUPS is running (bug #1456467) -%patch27 -p1 -b .check-cups - -# Add support for HP ColorLaserjet MFP M278-M281 (bug #1509394) -%patch28 -p1 -b .colorlaserjet-mfp-m278-m281 +%patch -P 26 -p1 -b .check-cups # hp-firmware:NameError: name 'INTERACTIVE_MODE4' is not defined (bug #1533869) -%patch30 -p1 -b .typo +%patch -P 27 -p1 -b .typo -# 1649487 - Retrieve public key from pool of keyservers -%patch31 -p1 -b .keyserver +%patch -P 28 -p1 -b .use-binary-str -# 1602547 - Please review important issues found by covscan in "hplip-3.18.4-2.el8+7" package -%patch32 -p1 -b .covscan +# 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. +%patch -P 29 -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 +%patch -P 30 -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 +%patch -P 31 -p1 -b .wifisetup-bad-call-fix + +# have pool of keyservers to choose +%patch -P 32 -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 +%patch -P 33 -p1 -b .qmsgbox-typos-fix + +# removal of non open source code, taken from ubuntu +%patch -P 34 -p1 -b .libimageprocessor-removal + +%{_bindir}/rm prnt/hpcups/libImageProcessor-x86* + +%patch -P 35 -p1 -b .toolbox-crash +# part of https://bugzilla.redhat.com/show_bug.cgi?id=1666076 +%patch -P 36 -p1 -b .add-ppd-crash +# 1671513 - after 'successful' plugin installation it is not installed +%patch -P 37 -p1 -b .missing-links +# 1684434 - Scanning broken for HP LaserJet 3052 +%patch -P 38 -p1 -b .hp-laserjet-3052-broken-scanning +# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 1) +%patch -P 39 -p1 -b .hpmud-string-parse +# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 2) +%patch -P 40 -p1 -b .m278-m281-needs-plugin +# 1695716 - hpcups crashes in Compressor destructor +%patch -P 41 -p1 -b .hpcups-crash +# fixing issues found by coverity scan +%patch -P 42 -p1 -b .covscan +# segfault during logging (1727162) +%patch -P 43 -p1 -b .logging-segfault +# 1738321 - [abrt] hp-systray:BlockingIOError: [Errno 11] Resource temporarily unavailable +%patch -P 44 -p1 -b .systray-blockerror +# 1742949, 1740132, 1739855 - missing drivers +%patch -P 45 -p1 -b .missing-drivers +# 1772698 - Can't setup printer (HP LJ 2200): no attributes found in model.dat +%patch -P 46 -p1 -b .model-mismatch +# 1573430 - sixext.py:to_string_utf8:UnicodeDecodeError: 'utf-8' codec can't decode bytes +%patch -P 47 -p1 -b .unicodeerror +%patch -P 48 -p1 -b .Wreturn-fix +%patch -P 49 -p1 -b .configure-python +%patch -P 50 -p1 -b .dialog-infinite-loop +# 1590014 - hplip PPD search doesn't expect '-' in device name +%patch -P 51 -p1 -b .find-driver +# 1833308 - hp-clean cannot clean HP PSC1410 - Device I/O error +%patch -P 52 -p1 -b .clean-ldl +%patch -P 53 -p1 -b .revert-plugins +# if an user tries to install scanner via hp-setup (printer/fax utility) +# it fails further down - break out earlier with a message +%patch -P 54 -p1 -b .hpsetup-noscanjets +# 1963114 - patch for hplip firmware load timeout fix +%patch -P 55 -p1 -b .hpfirmware-timeout +# 1985251 - Incorrect permission for gpg directory +%patch -P 56 -p1 -b .gpgdir-perms +# 1987141 - hp-plugin installs malformed udev files +%patch -P 57 -p1 -b .hpplugin-udevperms +# 2080235 - Misleading errors about missing shared libraries when scanning +%patch -P 58 -p1 -b .no-libm-libhpmud-warn +%patch -P 60 -p1 -b .plugin-patch +# C99 compatibility fixes by fweimer - use explicit int +# Submitted upstream: +%patch -P 61 -p1 -b .pserror-int +# C99 compatibility patch by fweimer - several undefined functions in hpaio +# backend are declared in orblite.h +# Submitted upstream: +%patch -P 62 -p1 -b .hpaio-orblite-defs +# C99 compatibility patch by fweimer - undefined _DBG() and dynamic linking funcs in orblite.c +# - _DBG() looks like typo and new header is added for funcs +# Submitted upstream: +%patch -P 63 -p1 -b .orblite-undefs +# C99 compatibility patch by fweimer - python2 PyString_AsStringAndSize in python3 code +# gives undefined reference - removed for now with dependent hp-unload +%patch -P 64 -p1 -b .pcardext-disable +# C99 compatibility patch by fweimer - undefined strcasestr() in sclpml.c - build with _GNU_SOURCE +%patch -P 65 -p1 -b .sclpml-strcasestr +# 2192131 - parseQueues() doesn't get device uri from 'lpstat -v', because parsing pattern changed +# https://bugs.launchpad.net/hplip/+bug/2027972 +%patch -P 67 -p1 -b .lpstat-parse +# switch to curl by downstream patch from wget to workaround openstack dropping IPv6 +# which causes great delays... +%patch -P 68 -p1 -b .curl-switch +# 2221311 - [python3.12] hplip tools/binaries crash due depending on removed configparser.readfp() +# Upstream https://bugs.launchpad.net/hplip/+bug/2028001 +%patch -P 69 -p1 -b .no-readfp +# fix warnings +# upstream https://bugs.launchpad.net/hplip/+bug/2029480 +%patch -P 70 -p1 -b .raw-strings +# FTBFS GCC 14 +# https://bugs.launchpad.net/hplip/+bug/2048780 +%patch -P 71 -p1 -b .hpaio-gcc14 # CVE-2026-8632 - command injection in Is_Process_Running() -%patch -P 33 -p1 -b .CVE-2026-8632 +%patch -P 72 -p1 -b .CVE-2026-8632 # CVE-2026-8631 - integer overflow in hpcups -%patch -P 34 -p1 -b .CVE-2026-8631 +%patch -P 73 -p1 -b .hpcups-integer-overflow # OSH fixes after CVE-2026-8631 -%patch -P 35 -p1 -b .CVE-2026-8631-osh +%patch -P 74 -p1 -b .cve-2026-8631-osh + +# Fedora specific patches now, don't put a generic patches under it +%if 0%{?fedora} || 0%{?rhel} <= 8 +# mention hplip-gui should be installed if you want GUI +%patch -P 1000 -p1 -b .fedora-gui +%endif + sed -i.duplex-constraints \ -e 's,\(UIConstraints.* \*Duplex\),//\1,' \ @@ -281,7 +625,11 @@ 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 + +# 2129849 - move hp-plugin script into srcdir +cp -p %{SOURCE7} . + %build # Work-around Makefile.am imperfections. @@ -292,20 +640,26 @@ sed -i 's|^AM_INIT_AUTOMAKE|AM_INIT_AUTOMAKE([foreign])|g' configure.in 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-fax-build \ --enable-foomatic-drv-install \ + --enable-gui-build \ + --enable-hpcups-install \ --enable-hpijs-install \ - --disable-policykit --with-mimedir=%{_datadir}/cups/mime PYTHON=%{__python3} + --enable-pp-build \ + --enable-qt5 \ + --enable-scan-build \ + --disable-foomatic-rip-hplip-install \ + --disable-imageProcessor-build \ + --disable-policykit \ + --disable-qt4 \ + --with-mimedir=%{_datadir}/cups/mime PYTHON=%{__python3} -make %{?_smp_mflags} +%make_build %install mkdir -p %{buildroot}%{_bindir} -make install DESTDIR=%{buildroot} PYTHON=%{__python3} +%make_install PYTHON=%{__python3} # Create /run/hplip & /var/lib/hp mkdir -p %{buildroot}/run/hplip @@ -325,8 +679,9 @@ rm -rf %{buildroot}%{_sysconfdir}/sane.d \ %{buildroot}%{_docdir} \ %{buildroot}%{_datadir}/hal/fdi \ %{buildroot}%{_datadir}/hplip/pkservice.py \ - %{buildroot}%{_bindir}/hp-pkservice \ - %{buildroot}%{_datadir}/hplip/locatedriver* \ + %{buildroot}%{_bindir}/hp-pkservice + +rm -rf %{buildroot}%{_datadir}/hplip/locatedriver* \ %{buildroot}%{_datadir}/hplip/dat2drv* rm -f %{buildroot}%{_bindir}/hp-logcapture \ @@ -341,6 +696,7 @@ rm -f %{buildroot}%{_bindir}/foomatic-rip \ %{buildroot}%{_libdir}/*.la \ %{buildroot}%{python3_sitearch}/*.la \ %{buildroot}%{_libdir}/libhpip.so \ + %{buildroot}%{_libdir}/libhpmud.so \ %{buildroot}%{_libdir}/libhpipp.so \ %{buildroot}%{_libdir}/libhpdiscovery.so \ %{buildroot}%{_libdir}/sane/*.la \ @@ -348,8 +704,76 @@ rm -f %{buildroot}%{_bindir}/foomatic-rip \ %{buildroot}%{_datadir}/applications/hplip.desktop \ %{buildroot}%{_datadir}/ppd/HP/*.ppd -mkdir -p %{buildroot}%{_datadir}/appdata -cp %{SOURCE3} %{buildroot}%{_datadir}/appdata/ +rm -f %{buildroot}%{_datadir}/hplip/hpaio.desc + +rm -rf %{buildroot}%{_datadir}/hplip/install.* \ + %{buildroot}%{_datadir}/hplip/uninstall.* \ + %{buildroot}%{_bindir}/hp-uninstall \ + %{buildroot}%{_datadir}/hplip/upgrade.* \ + %{buildroot}%{_bindir}/hp-upgrade \ + %{buildroot}%{_datadir}/hplip/hplip-install + +rm -f %{buildroot}%{_datadir}/hplip/hpijs.drv.in.template + +rm -f %{buildroot}%{_datadir}/cups/mime/pstotiff.types \ + %{buildroot}%{_datadir}/hplip/fax/pstotiff* + +rm -f %{buildroot}%{_datadir}/hplip/hplip-install + +rm -f %{buildroot}%{_unitdir}/hplip-printer@.service + +rm -f %{buildroot}%{_datadir}/ipp-usb/quirks/HPLIP.conf + +rm -rf %{buildroot}%{_bindir}/hp-unload \ + %{buildroot}%{_datadir}/%{name}/pcard + +# 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 + +%if 0%{?rhel} > 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 + +install -p -m755 hp-plugin %{buildroot}%{_bindir}/hp-plugin-download + +%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 \ @@ -365,14 +789,27 @@ sed -i -e '/^Categories=/d' hplip.desktop sed -i -e '/^Encoding=/d' hplip.desktop desktop-file-validate hplip.desktop -desktop-file-install --vendor HP \ +desktop-file-install \ --dir %{buildroot}/%{_datadir}/applications \ - --add-category System \ - --add-category Settings \ + --add-category System \ + --add-category Settings \ --add-category HardwareSettings \ hplip.desktop -appstream-util validate-relax --nonet %{buildroot}%{_datadir}/appdata/*.appdata.xml +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 @@ -387,34 +824,12 @@ find doc/images -type f -exec chmod 644 {} \; # 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 - -# hp tools needs to have cups service enabled and running for its functionality -%pre -%{_bindir}/systemctl start cups &>/dev/null ||: -%{_bindir}/systemctl enable cups &>/dev/null ||: - %post -%{_bindir}/hpcups-update-ppds &>/dev/null ||: +# timeout is to prevent possible freeze during update +%{_bindir}/timeout 10m -k 15m %{_bindir}/hpcups-update-ppds &>/dev/null ||: -%post libs -p /sbin/ldconfig +%ldconfig_scriptlets libs -%postun libs -p /sbin/ldconfig %files %doc COPYING doc/* @@ -426,7 +841,6 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_bindir}/hp-clean %{_bindir}/hp-colorcal %{_bindir}/hp-config_usb_printer -%{_bindir}/hp-diagnose_plugin %{_bindir}/hp-diagnose_queues %{_bindir}/hp-fab %{_bindir}/hp-firmware @@ -434,17 +848,20 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_bindir}/hp-levels %{_bindir}/hp-makeuri %{_bindir}/hp-plugin +%{_bindir}/hp-plugin-download %{_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/hpcdmfax %{_cups_serverbin}/filter/hpcups %{_cups_serverbin}/filter/hpcupsfax %{_cups_serverbin}/filter/hpps @@ -458,7 +875,6 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_datadir}/hplip/clean.py* %{_datadir}/hplip/colorcal.py* %{_datadir}/hplip/config_usb_printer.py* -%{_datadir}/hplip/diagnose_plugin.py* %{_datadir}/hplip/diagnose_queues.py* %{_datadir}/hplip/fab.py* %{_datadir}/hplip/fax @@ -473,7 +889,9 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_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* @@ -487,9 +905,10 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_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 @@ -511,16 +930,16 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_libdir}/libhpipp.so.0.0.1 %{_libdir}/libhpdiscovery.so.0 %{_libdir}/libhpdiscovery.so.0.0.1 -# The so symlink is required here (see bug #489059). -%{_libdir}/libhpmud.so %{_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 @@ -528,13 +947,15 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_bindir}/hp-printsettings %{_bindir}/hp-systray %{_bindir}/hp-toolbox +%{_bindir}/hp-uiscan %{_bindir}/hp-wificonfig %{_datadir}/applications/*.desktop -%{_datadir}/appdata/hplip.appdata.xml +%{_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* @@ -542,10 +963,12 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %{_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 @@ -554,47 +977,489 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop %config(noreplace) %{_sysconfdir}/sane.d/dll.d/hpaio %changelog -* Fri Jul 03 2026 Zdenek Dohnal - 3.18.4-14 -- RHEL-192009 CVE-2026-14544 hplip: Incomplete Fix for CVE-2026-8631 +* Fri Jul 03 2026 Zdenek Dohnal - 3.23.12-10.5 +- RHEL-192007 CVE-2026-14544 hplip: Incomplete Fix for CVE-2026-8631 -* Mon Jun 15 2026 Zdenek Dohnal - 3.18.4-13 +* Mon Jun 15 2026 Zdenek Dohnal - 3.23.12-10.4 - Fix more leaks in hpcups -* Fri Jun 12 2026 Zdenek Dohnal - 3.18.4-12 +* Fri Jun 12 2026 Zdenek Dohnal - 3.23.12-10.3 - OSH fixes after CVE-2026-8631 -* Tue Jun 09 2026 Zdenek Dohnal - 3.18.4-11 -- CVE-2026-8631 hplip: Arbitrary code execution and privilege escalation - via integer overflow in hpcups +* Tue Jun 09 2026 Zdenek Dohnal - 3.23.12-10.2 +- CVE-2026-8631 hplip: Arbitrary code execution and privilege escalation via + integer overflow in hpcups -* Wed May 27 2026 Zdenek Dohnal - 3.18.4-10 +* Wed May 27 2026 Zdenek Dohnal - 3.23.12-10.1 - CVE-2026-8632 hplip: Privilege escalation and arbitrary code execution via OS command injection in Is_Process_Running() -* Fri Jun 14 2019 Tomas Korbar - 3.18.4-9 -- update patch for covscan bug rhbz#1602547 +* Fri Jul 11 2025 Petr Dancak - 3.23.12-10 +- RHEL-102977 rpm -q --changelog hplip no longer lists changelog -* Wed Jun 12 2019 Tomas Korbar - 3.18.4-8 -- 1602547 - Please review important issues found by covscan in "hplip-3.18.4-2.el8+7" package +* Tue Jun 17 2025 Petr Dancak - 3.23.12-9 +- enable following links with curl in all use cases + Resolves: RHEL-84817 +- hp-plugin-download wrongly parsed file type + Resolves: RHEL-97437 -* Tue Dec 04 2018 Zdenek Dohnal - 3.18.4-7 -- fixing rpmdiff license error found during errata checks for rhbz#1633680 +* Tue Oct 29 2024 Troy Dawson - 3.23.12-8 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Wed Nov 14 2018 Zdenek Dohnal - 3.18.4-6 -- 1649487 - Retrieve public key from pool of keyservers +* Mon Jun 24 2024 Troy Dawson - 3.23.12-7 +- Bump release for June 2024 mass rebuild -* Thu Sep 20 2018 Tomas Orsava - 3.18.4-5 -- Require the Python interpreter directly instead of using the package name -- Related: rhbz#1619153 +* Tue May 07 2024 Zdenek Dohnal - 3.23.12-6 +- RHEL-35696 Remove/migrate additional license tags -* Thu Aug 09 2018 Josef Ridky - 3.18.4-4 -- Rebuild for Net-SNMP +* Thu Mar 21 2024 Zdenek Dohnal - 3.23.12-5 +- RHEL-29931 hp-plugin-download uses removed curl option -* Tue Jul 24 2018 Zdenek Dohnal - 3.18.4-3 +* Wed Jan 24 2024 Fedora Release Engineering - 3.23.12-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 3.23.12-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Zdenek Dohnal - 3.23.12-2 +- add fallback url to hp-plugin-download + +* Mon Jan 08 2024 Zdenek Dohnal - 3.23.12-1 +- 2252302 - hplip-3.23.12 is available + +* Tue Oct 03 2023 Zdenek Dohnal - 3.23.8-1 +- 2239465 - hplip-3.23.8 is available + +* Tue Oct 03 2023 Zdenek Dohnal - 3.23.5-10 +- BSD-3-Clause-HP and python-ldap are added into SPDX list + +* Thu Aug 24 2023 Zdenek Dohnal - 3.23.5-9 +- hp-check: use pkgconf when checking for cups version + +* Thu Aug 03 2023 Zdenek Dohnal - 3.23.5-8 +- fallback to using external plugin for Hbpl1 printers + +* Fri Jul 28 2023 Zdenek Dohnal - 3.23.5-7 +- SPDX migration + +* Thu Jul 27 2023 Zdenek Dohnal - 3.23.5-6 +- remove redundant files + +* Fri Jul 21 2023 Zdenek Dohnal - 3.23.5-6 +- fix syntax warnings + +* Thu Jul 20 2023 Fedora Release Engineering - 3.23.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 18 2023 Adam Williamson - 3.23.5-4 +- Require curl, not curl-minimal, due to conflicts + +* Mon Jul 17 2023 Zdenek Dohnal - 3.23.5-3 +- 2192131 - parseQueues() doesn't get device uri from 'lpstat -v', because parsing pattern changed +- switch to curl when downloading plugin +- 2221311 - [python3.12] hplip tools/binaries crash due depending on removed configparser.readfp() + +* Tue Jun 13 2023 Python Maint - 3.23.5-2 +- Rebuilt for Python 3.12 + +* Tue Jun 06 2023 Zdenek Dohnal - 3.23.5-1 +- 2184067 - hplip-3.23.5 is available + +* Thu Jan 19 2023 Fedora Release Engineering - 3.22.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 01 2022 Zdenek Dohnal - 3.22.10-3 +- 2148210 - hplip: pcardext Python extension broken +- stop shipping hp-unload, since it depends on pcardext + +* Thu Nov 24 2022 Florian Weimer - 3.22.10-2 +- C99 compatibility fixes +- Stop building the pcardext Python extension because it unusable (#2148210) + +* Wed Nov 23 2022 Zdenek Dohnal - 3.22.10-1 +- 2139309 - hplip-3.22.10 is available + +* Wed Oct 19 2022 Zdenek Dohnal - 3.22.6-5 +- distutils will be removed in Python3.12, use setuptools now + +* Thu Oct 13 2022 Zdenek Dohnal - 3.22.6-4 +- bump the NVR + +* Thu Oct 13 2022 Zdenek Dohnal - 3.22.6-3 +- 2129849 - hp-plugin unable to load plugin.conf - add a new backup download script + +* Thu Jul 21 2022 Fedora Release Engineering - 3.22.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jul 19 2022 Zdenek Dohnal - 3.22.6-1 +- 2101790 - hplip-3.22.6 is available + +* Mon Jul 18 2022 Zdenek Dohnal - 3.22.4-3 +- recommend libsane-hpaio - duplicated scanners are better than no scanner + +* Mon Jun 13 2022 Python Maint - 3.22.4-2 +- Rebuilt for Python 3.11 + +* Tue May 17 2022 Zdenek Dohnal - 3.22.4-1 +- 2080235 - Misleading errors about missing shared libraries when scanning + +* Wed May 11 2022 Zdenek Dohnal - 3.22.4-1 +- 2079740 - hplip-3.22.4 is available + +* Mon Mar 28 2022 Zdenek Dohnal - 3.22.2-2 +- make libsane-hpaio only suggested to prevent possible duplicated scanner devices + +* Thu Mar 10 2022 Zdenek Dohnal - 3.22.2-1 +- 2059085 - hplip-3.22.2 is available + +* Thu Jan 20 2022 Fedora Release Engineering - 3.21.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Jan 17 2022 Zdenek Dohnal - 3.21.12-1 +- 2015910 - [GUI] hp-setup crashes when loading smart_install module + +* Fri Jan 14 2022 Zdenek Dohnal - 3.21.12-1 +- 1959242 - hplip-3.21.12 is available + +* Fri Dec 03 2021 Zdenek Dohnal - 3.21.2-15 +- 2028697 - hp-setup trackbacks when hplip-gui RPM is not installed + +* Tue Nov 23 2021 Zdenek Dohnal - 3.21.2-14 +- 2025853 - hplip: double "and" in license + +* Tue Oct 26 2021 Zdenek Dohnal - 3.21.2-13 +- 2015428 - python3.10 has Callable in collections.abc +- GUI hp-setup uses avahi-browse +- adjust osname for CoreOS/Linux +- 2015428 - python3.10 doesn't do an implicit conversion for integer arguments + +* Tue Sep 14 2021 Sahana Prasad - 3.21.2-12 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Sep 03 2021 Zdenek Dohnal - 3.21.2-11 +- 1995647 - Hplip package shows as proprietary in Gnome Software + +* Fri Jul 30 2021 Zdenek Dohnal - 3.21.2-10 +- 1985251 - Incorrect permission for gpg directory +- 1987141 - hp-plugin installs malformed udev files +- fixed warning: redhatenterpriselinux distro is not found in AUTH_TYPES + +* Thu Jul 22 2021 Fedora Release Engineering - 3.21.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jul 02 2021 Zdenek Dohnal - 3.21.2-8 +- 1976465 - [hplip] PY_SSIZE_T_CLEAN macro must be defined for '#' formats +- require usbutils - needed by hp-diagnose_queues + +* Mon Jun 28 2021 Zdenek Dohnal - 3.21.2-7 +- sleep after utils.run() (related #1963114) + +* Fri Jun 11 2021 Zdenek Dohnal - 3.21.2-6 +- 1963114 - patch for hplip firmware load timeout fix + +* Wed Jun 09 2021 Zdenek Dohnal - 3.21.2-5 +- track hplip-repack.sh as source, to have it in srpm + +* Wed Jun 09 2021 Zdenek Dohnal - 3.21.2-4 +- remove redundant files + +* Fri Jun 04 2021 Python Maint - 3.21.2-3 +- Rebuilt for Python 3.10 + +* Thu Apr 22 2021 Zdenek Dohnal - 3.21.2-2 +- 1951922 - hp-systray doesn't support a valid --qt5 option + +* 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 -* Tue Jun 12 2018 Zdenek Dohnal - 3.18.4-2 -- hp tools needs to have cups service running for its functionality +* 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 diff --git a/sources b/sources new file mode 100644 index 0000000..a2cb7cc --- /dev/null +++ b/sources @@ -0,0 +1,3 @@ +SHA512 (hp-laserjet_cp_1025nw.ppd.gz) = d79aa8c777b6be434578febe4bdce6b208ea2f13a5be48c855ff4b74f008cf20fd24ba1c003fca6dc532d5c558e162333dd1d3ca2cc13d980c7668381e121ec1 +SHA512 (hp-laserjet_professional_p_1102w.ppd.gz) = 8c7e5cb2122bed3ee0d789297f60fd92836f947af486d986af60bf98fefb05c38093d62c8871e920ab6b0b31f2f71632a23c71c55be99746e3658959e083e888 +SHA512 (hplip-3.23.12-repack.tar.gz) = 7e4713e5769a59e686aeada778b91ec65a6f8a2e393bd13473fb77be4ef1e1c470ae355b22ffa13f4f2e2353533f6a855b9749a267543d2dfb1f630724fb7100