added extra/hplip

This commit is contained in:
Kevin Mihelich 2021-05-17 17:10:26 +00:00
parent d450c3672d
commit 2fbccc6e1f
8 changed files with 487 additions and 0 deletions

View file

@ -0,0 +1,50 @@
From b3a7fa4d4a573cfe0073ae50197f679af7e3a0ac Mon Sep 17 00:00:00 2001
From: Till Kamppeter <till.kamppeter@canonical.com>
Date: Sat, 24 Sep 2016 10:37:20 +0200
Subject: Add 'include <cups/ppd.h>' in various places as CUPS 2.2 moved some
definitions to ppd.h
---
configure.in | 2 +-
prnt/hpcups/HPCupsFilter.h | 2 ++
prnt/hpijs/hpcupsfax.cpp | 1 +
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/configure.in b/configure.in
index d3a1ddb..eabe14a 100755
--- a/configure.in
+++ b/configure.in
@@ -554,7 +554,7 @@ fi
if test "$hpijs_only_build" = "no" && test "$hpcups_only_build" = "no"; then
AC_CHECK_LIB([cups], [cupsDoFileRequest], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libcups support], 9)])
- AC_CHECK_HEADERS(cups/cups.h, ,[AC_MSG_ERROR([cannot find cups-devel support], 3)])
+ AC_CHECK_HEADERS(cups/cups.h cups/ppd.h, ,[AC_MSG_ERROR([cannot find cups-devel support], 3)])
if test "$libusb01_build" = "yes"; then
AC_CHECK_LIB([usb], [usb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb support], 2)])
AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])
diff --git a/prnt/hpcups/HPCupsFilter.h b/prnt/hpcups/HPCupsFilter.h
index ff5548e..c517989 100644
--- a/prnt/hpcups/HPCupsFilter.h
+++ b/prnt/hpcups/HPCupsFilter.h
@@ -38,6 +38,8 @@
#include "dbuscomm.h"
+#include <cups/ppd.h>
+
#define DBITMAPFILEHEADER 14
#define DBITMAPINFOHEADER 40
diff --git a/prnt/hpijs/hpcupsfax.cpp b/prnt/hpijs/hpcupsfax.cpp
index 8514775..994e50f 100644
--- a/prnt/hpijs/hpcupsfax.cpp
+++ b/prnt/hpijs/hpcupsfax.cpp
@@ -43,6 +43,7 @@
#include <arpa/inet.h>
#include <math.h>
#include <cups/cups.h>
+#include <cups/ppd.h>
#include <cups/raster.h>
#include <string>
#ifdef FALSE

View file

@ -0,0 +1,29 @@
From 04b5a1ddac1dd90c5a392f23aaf7df42eae32918 Mon Sep 17 00:00:00 2001
From: Gaurav Sood <gaurav-sood@invalid-email.launchpad.net>
Date: Thu, 4 May 2017 18:32:08 +0200
Subject: Fix handling of unicode filenames in sixext.py
LP: #1480152
Closes: #861731
---
base/sixext.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/base/sixext.py b/base/sixext.py
index 0bf4fc4f4..311bf72c6 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):

View file

@ -0,0 +1,47 @@
From: Didier Raboud <odyx@debian.org>
Date: Tue, 21 Aug 2018 18:18:10 +0200
Subject: Remove ImageProcessor binary installs
---
Makefile.am | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index c707e1e..0d8b692 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_SCRIPTS += dat2drv.py install.py hplip-install init-suse-firewall init-iptables-firewall class_rpm_build.sh hplipclassdriver.spec createPPD.sh Makefile_dat2drv hpijs-drv
if !HPLIP_CLASS_DRIVER
@@ -595,7 +595,7 @@ hpcups_SOURCES = prnt/hpcups/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 !HPLIP_CLASS_DRIVER
# If scanner build, add hpaio entry to sane dll.conf.
if [ "$(scan_build)" = "yes" ]; then \

110
extra/hplip/PKGBUILD Normal file
View file

@ -0,0 +1,110 @@
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Maintainer: Tom Gundersen <teg@jklm.no>
# Contributor : Rémy Oudompheng <remy@archlinux.org>
# Contributor: Morgan LEFIEUX <comete@archlinuxfr.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - patch from debian to remove x86-only ImageProcessor
pkgname=hplip
pkgver=3.21.4
pkgrel=1
epoch=1
pkgdesc="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet"
arch=('x86_64')
url="https://hplipopensource.com"
license=('GPL2' 'custom')
depends=('python-dbus' 'python-distro' 'ghostscript' 'net-snmp' 'foomatic-db-engine' 'python-gobject' 'libxcrypt')
makedepends=('python-pyqt5' 'sane' 'rpcbind' 'cups' 'libusb')
optdepends=('cups: for printing support'
'sane: for scanner support'
'xsane: sane scanner frontend'
'python-pillow: for commandline scanning support'
'python-reportlab: for pdf output in hp-scan'
'rpcbind: for network support'
'python-pyqt5: for running GUI and hp-toolbox'
'libusb: for advanced usb support'
'wget: for network support')
# 'hplip-plugin: binary blobs for specific devices (AUR) or run hp-setup to download the plugin'
backup=('etc/hp/hplip.conf' 'etc/sane.d/dll.d/hpaio')
source=(https://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz{,.asc}
disable_upgrade.patch
0022-Add-include-cups-ppd.h-in-various-places-as-CUPS-2.2.patch
0023-Fix-handling-of-unicode-filenames-in-sixext.py.patch
0028-Remove-ImageProcessor-binary-installs.patch
# use the one from Fedora
hplip-configure-python.patch
python3.diff
reproducible-gzip.patch)
sha512sums=('3f22433b3d35013025b63163ccd879da203adcec821f9f90748ee8399b370a129ecdffb5889efa57da1dc5c3f45c42f7593d2198d9166240156baf839b55fce6'
'SKIP'
'ee0bd240568a7dbb4dc6ef64dba28ea84c4bedf7d688d054960c686666f8f0bc4562961c40845107ef0c936e60d3e676bffb2a1ba708039690bb0520cda3a525'
'22aeb5b851f78bc6bc62e0bc3da99fecaf42d7604af41e2f3343f8d3666541f7b06b7d1a7d0ddf24f1731ac7b12dfe582375a98e3b94dfa323d6ce954549ca67'
'763949a0bc460dcc9faefc86f2a91cf342781bfce696ed0c3826758572dd03ac266bbeb7b6a4f9376ac298d7d3c9c4def42d94921a8e1d1695e39396e36d95ff'
'43f6e66cba89b0b8e3dfd0d4d6e2bd6ed8fdaa9315222cefe6166606554d94dca4694ecda13251e38e5560662078d42cc7c895ec01be8e58686700a325d4eebf'
'089c102357ea5fd55d81ae76aaff62713f780fd84500c3b92ecd6b2bb11ccdc3a162978548e9a5f9e98a8354a5be3997e416c52daa18eda4621ed79a29d6fea8'
'5885b223f96706bc09a147b5c141d620846c9058563e986983ca2ab90922cabe891a651d90d5004d45549b3874c40f8a1570a8a79e067d66f1826681111c7e82'
'7bad907228b7c2f3c43128f087a2f8e03778760b7a26179ff441c1f60127e2fca08c94dff76baea2469d3a253a8f46b285d0af0f62a6d8738926caf7a10f670b')
validpgpkeys=('4ABA2F66DBD5A95894910E0673D770CDA59047B9') # HPLIP (HP Linux Imaging and Printing) <hplip@hp.com>
prepare() {
cd "$pkgname"-$pkgver
# disable insecure update - https://bugs.archlinux.org/task/38083
patch -Np0 -i "${srcdir}"/disable_upgrade.patch
# add missing 'include <cups/ppd.h>' at various places
patch -Np1 -i "${srcdir}"/0022-Add-include-cups-ppd.h-in-various-places-as-CUPS-2.2.patch
# fix some handling unicode file names FS#58412
patch -Np1 -i "${srcdir}"/0023-Fix-handling-of-unicode-filenames-in-sixext.py.patch
# Workaround patch for missing Python3 transition of the old
# (pre-USB-storage) photo memory card support (pcardext) - Debian patch
patch -Np1 -i "${srcdir}"/python3.diff
# remove imageprocessor
patch -Np1 -i "${srcdir}"/0028-Remove-ImageProcessor-binary-installs.patch
# https://bugs.launchpad.net/hplip/+bug/1879445
# broken scanning - https://bugs.archlinux.org/task/66704
patch -Np1 -i ../hplip-configure-python.patch
# make gzip creation reproducible by removing the timestamp
patch -Np1 -i ../reproducible-gzip.patch
export AUTOMAKE='automake --foreign'
autoreconf --force --install
}
build() {
cd "$pkgname"-$pkgver
./configure --prefix=/usr \
--enable-qt5 \
--disable-qt4 \
--enable-hpcups-install \
--enable-cups-drv-install \
--disable-imageProcessor-build \
--enable-pp-build #--help
sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
make
}
package() {
cd "$pkgname"-$pkgver
make -j1 rulesdir=/usr/lib/udev/rules.d DESTDIR="$pkgdir/" install
# remove config provided by sane and autostart of hp-daemon
rm -rf "$pkgdir"/etc/{sane.d,xdg}
install -dm755 "${pkgdir}"/etc/sane.d/dll.d
echo hpaio > "${pkgdir}"/etc/sane.d/dll.d/hpaio
# remove HAL .fdi file because HAL is no longer used
rm -vrf "$pkgdir"/usr/share/hal
# remove rc script
rm -vrf "$pkgdir"/etc/init.d
# add mixed license file
install -Dt "${pkgdir}"/usr/share/licenses/${pkgname} -m644 COPYING
# Compile Python bytecode:
python -m compileall -d /usr/share "$pkgdir/usr/share"
python -O -m compileall -d /usr/share "$pkgdir/usr/share"
}

View file

@ -0,0 +1,14 @@
--- upgrade.py.orig 2013-10-31 12:46:54.000000000 +0100
+++ upgrade.py 2013-12-04 14:58:03.000000000 +0100
@@ -134,6 +134,11 @@ except getopt.GetoptError, e:
if os.getenv("HPLIP_DEBUG"):
log.set_level('debug')
+
+log.error("HPLIP upgrade is disabled by Archlinux for security reasons, see https://bugs.archlinux.org/task/38083 - if you like to upgrade HPLIP, use the Archlinux software package manager pacman.")
+clean_exit(1)
+
+
for o, a in opts:
if o in ('-h', '--help'):
usage()

View file

@ -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)])

147
extra/hplip/python3.diff Normal file
View file

@ -0,0 +1,147 @@
From: Till Kamppeter <till.kamppeter@gmail.com>
Date: Fri, 22 Jul 2016 09:33:04 +0200
Subject: Workaround patch for missing Python3 transition of the old
(pre-USB-storage) photo memory card support (pcardext) as this part builds
in Python3 environments but with pointer-related warnings which are fatal
errors for Ubuntu's build servers. The patch silences the warnings but the
memory card support is dropped in Python3 environments. This patch is
supplied by the HPLIP upstream developers and will be replaced by a more
proper solution in the next upstream release of HPLIP (see LP: #1275353)
---
pcard/pcardext/pcardext.c | 59 +++++++++++++++++++++++++++++++++++++----------
pcard/photocard.py | 2 +-
unload.py | 5 ++++
3 files changed, 53 insertions(+), 13 deletions(-)
diff --git a/pcard/pcardext/pcardext.c b/pcard/pcardext/pcardext.c
index c1a8273..37d979b 100644
--- a/pcard/pcardext/pcardext.c
+++ b/pcard/pcardext/pcardext.c
@@ -20,7 +20,7 @@ pcardext - Python extension for HP photocard services
Requires:
Python 2.2+
-Author: Don Welch
+Author: Don Welch
\*****************************************************************************/
@@ -38,9 +38,37 @@ typedef int Py_ssize_t;
int verbose=0;
+#if PY_MAJOR_VERSION >= 3
+ #define MOD_ERROR_VAL NULL
+ #define MOD_SUCCESS_VAL(val) val
+ #define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void)
+ #define PyInt_AS_LONG PyLong_AS_LONG
+ #define MOD_DEF(ob, name, doc, methods) \
+ static struct PyModuleDef moduledef = { \
+ PyModuleDef_HEAD_INIT, name, doc, -1, methods, }; \
+ ob = PyModule_Create(&moduledef);
+
+
+ #define PY_String_Bytes PyBytes_FromStringAndSize
+ #define PY_AsString_Bytes PyBytes_AsStringAndSize
+
+#else
+ #define MOD_ERROR_VAL
+ #define MOD_SUCCESS_VAL(val)
+ #define MOD_INIT(name) void init##name(void)
+ #define MOD_DEF(ob, name, doc, methods) \
+ ob = Py_InitModule3(name, methods, doc);
+
+ #define PY_String_Bytes PyString_FromStringAndSize
+ #define PY_AsString_Bytes PyString_AsStringAndSize
+
+#endif
+
PyObject * readsectorFunc = NULL;
PyObject * writesectorFunc = NULL;
+
+
int ReadSector(int sector, int nsector, void *buf, int size)
{
PyObject * result;
@@ -56,9 +84,13 @@ int ReadSector(int sector, int nsector, void *buf, int size)
if( result )
{
Py_ssize_t len = 0;
- PyString_AsStringAndSize( result, &result_str, &len );
+
+ //PyString_AsStringAndSize( result, &result_str, &len );
+ //PyBytes_AsStringAndSize( result, &result_str, &len );
+ PY_AsString_Bytes( result, &result_str, &len );
- if( len < nsector*FAT_HARDSECT )
+
+ if( len < nsector*FAT_HARDSECT )
{
goto abort;
}
@@ -205,7 +237,9 @@ PyObject * pcardext_read( PyObject * self, PyObject * args )
if( FatReadFileExt( name, offset, len, buffer ) == len )
{
- return PyString_FromStringAndSize( (char *)buffer, len );
+ // return PyString_FromStringAndSize( (char *)buffer, len );
+ return PY_String_Bytes( (char *)buffer, len );
+ // return PyBytes_FromStringAndSize( (char *)buffer, len );
}
else
{
@@ -233,14 +267,15 @@ static PyMethodDef pcardext_methods[] =
static char pcardext_documentation[] = "Python extension for HP photocard services";
-void initpcardext( void )
-{
- PyObject * mod = Py_InitModule4( "pcardext", pcardext_methods,
- pcardext_documentation, (PyObject*)NULL,
- PYTHON_API_VERSION );
-
- if (mod == NULL)
- return;
+MOD_INIT(pcardext) {
+
+ PyObject* mod ;
+ MOD_DEF(mod, "pcardext", pcardext_documentation, pcardext_methods);
+ if (mod == NULL)
+ return MOD_ERROR_VAL;
+
+ return MOD_SUCCESS_VAL(mod);
+
}
diff --git a/pcard/photocard.py b/pcard/photocard.py
index 913dc4e..2c73158 100644
--- a/pcard/photocard.py
+++ b/pcard/photocard.py
@@ -30,7 +30,7 @@ from base.codes import *
from base import device, utils, exif
try:
- from . import pcardext
+ import pcardext
except ImportError:
if not os.getenv("HPLIP_BUILD"):
log.error("PCARDEXT could not be loaded. Please check HPLIP installation.")
diff --git a/unload.py b/unload.py
index 3fdd5a3..ce8b069 100755
--- a/unload.py
+++ b/unload.py
@@ -44,6 +44,11 @@ except ImportError:
# Local
from base.g import *
+from base.sixext import PY3
+if PY3:
+ log.error("This functionality is not spported in python3 environment.")
+ sys.exit(1)
+
from base import device, utils, tui, module
from prnt import cups

View file

@ -0,0 +1,38 @@
--- hplip-3.20.5/createPPD.sh 2020-05-11 15:34:06.000000000 +0200
+++ hplip-3.20.5.old/createPPD.sh 2020-05-27 12:02:44.089477299 +0200
@@ -54,15 +54,15 @@
else
cp prnt/ps/hp-postscript*.ppd ppd/classppd/ps
for i in ppd/classppd/ps/*.ppd; do
- gzip -c "$i" > "$i.gz"
+ gzip -nc "$i" > "$i.gz"
done
fi
#cp prnt/ps/hp-postscript*.ppd.gz ppd/classppd/ps
for i in ppd/classppd/hpcups/*.ppd; do
- gzip -c "$i" > "$i.gz"
+ gzip -nc "$i" > "$i.gz"
done
#for i in ppd/classppd/ps/*.ppd; do
- # gzip -c "$i" > "$i.gz"
+ # gzip -nc "$i" > "$i.gz"
#done
cat > class_cups_drv.inc <<EOF
@@ -81,14 +81,14 @@
install -d ppd/hpcups
ppdc -d ppd/hpcups prnt/drv/hpcups.drv
for i in ppd/hpcups/*.ppd; do
- gzip -c "$i" > "$i.gz"
+ gzip -nc "$i" > "$i.gz"
done
install -d ppd/hpijs
ppdc -d ppd/hpijs prnt/drv/hpijs.drv
echo "gzip ppd files..."
for i in ppd/hpijs/*.ppd; do
- gzip -c "$i" > "$i.gz"
+ gzip -nc "$i" > "$i.gz"
done
echo "building foomatic_drv.inc..."
./hpijs-drv > foomatic_drv.inc $shadow