1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
# Maintainer: David P. <megver83@parabola.nu>
# Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Rémy Oudompheng <remy@archlinux.org>
# Contributor: Morgan LEFIEUX <comete@archlinuxfr.org>
# Contributor: André Silva <emulatorman@hyperbola.info>
# Contributor: Márcio Silva <coadde@hyperbola.info>
# Contributor: Jorge López <jorginho@hyperbola.info>
# Maintainer (arch): Kevin Mihelich <kevin@archlinuxarm.org>
# Contributor: bill-auger <bill-auger@programmer.net>
# parabola changes and rationale:
# - remove recommendations and downloads of non-free binaries
# - disable auto-upgrade download and other online features
pkgname=hplip
pkgver=3.23.12
pkgrel=2
pkgrel+=.parabola1
epoch=1
pkgdesc="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet"
arch=('x86_64')
arch+=('i686' 'armv7h')
url="https://hplipopensource.com"
license=('GPL2' 'GPL3' 'custom:MIT' 'custom:BSD3') # arch license array is incomplete
depends=('python-dbus' 'python-distro' 'ghostscript' 'net-snmp'
'foomatic-db-engine' 'python-gobject' 'libxcrypt'
'libjpeg-turbo' 'dbus' 'gcc-libs' 'avahi' 'python'
'xdg-utils' 'zlib' 'libcups' 'glibc')
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')
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
0003-models.dat-Re-add-drivers-missing-from-3.19.1.patch
0018-Allow-non-JPEG-scanning-on-the-HP-DeskJet-3520-All-i.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
# use the one from Fedora
hplip-configure-python.patch
python3.diff
reproducible-gzip.patch)
source_armv7h=(0001-Remove-ImageProcessor.patch) # x86-only
sha512sums=('7461ffec38be68421e4204021f53d2b1641e7a67c14f205390d45f487a1af90956fd221f7e1561635508103ae944f19e04d6052d3f8928f2c9685fdcdcf515df'
'SKIP'
'a12aaeece5285ffb86bdbc24871bf512fbc1f29da44ae51ded314378032662074a42b8aca23bebb378bf78ed15bb7f99da59bfb4cd456f3458e7a5ef42a900f8'
'f79b3f09d022178099f38b9eae1792396e730eb5352a03d088e6610d92b3895f3f65bb92089ce7f5b21d794f9716ceb176d29ca7283e8a48bb04cf6aba305a2f'
'93e29a9ef893636b2b84443e75525c4ed42531d6e68a182dfbb725c3919c77b966b5e7d9381a34d3b5853423995a7b15efb69ce3e500ec72b25b65b2ad6bd64c'
'22aeb5b851f78bc6bc62e0bc3da99fecaf42d7604af41e2f3343f8d3666541f7b06b7d1a7d0ddf24f1731ac7b12dfe582375a98e3b94dfa323d6ce954549ca67'
'763949a0bc460dcc9faefc86f2a91cf342781bfce696ed0c3826758572dd03ac266bbeb7b6a4f9376ac298d7d3c9c4def42d94921a8e1d1695e39396e36d95ff'
'089c102357ea5fd55d81ae76aaff62713f780fd84500c3b92ecd6b2bb11ccdc3a162978548e9a5f9e98a8354a5be3997e416c52daa18eda4621ed79a29d6fea8'
'b8a4c860e90a52ec566ca5a9c7f3a5ecb7386ae76e17b2c6c878073e60eeaf0cb63883b740b4725794be9914e1ab8fc91313efb288395f3095f599c07f54cf14'
'379fcbe9dc2986da828a174a0ac4e71a1da43a98408894d5e713e09d7d9cba1e9fac30f9602b81d48d992abe6b65b6402b8a07664efe97400c5d839be33cf15f')
sha512sums_armv7h=('7f402ed13341ac9a01f28ecdb97effcd15f5fa9d123e554d4dd78e9f5ed01bcf7b4fe7400c53ddf5e7068f9ffd858d8fefe060e2fcacea0a0524145d78e315cc')
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
# fix model support / Debian patch / FS#74942
patch -Np1 -i "${srcdir}"/0003-models.dat-Re-add-drivers-missing-from-3.19.1.patch
# https://bugs.launchpad.net/hplip/+bug/1879445
# broken scanning - https://bugs.archlinux.org/task/66704
patch -Np1 -i ../hplip-configure-python.patch
# allow non-jpeg scanning on all-in-one devices - FS#78135
patch -Np1 -i ../0018-Allow-non-JPEG-scanning-on-the-HP-DeskJet-3520-All-i.patch
# make gzip creation reproducible by removing the timestamp
patch -Np1 -i ../reproducible-gzip.patch
# remove imageprocessor
[[ "${CARCH}" != armv7h ]] || patch -Np1 -i "${srcdir}"/0001-Remove-ImageProcessor.patch
## parabola changes ##
echo "re-wording non-free recommendations/errors and disabling online features"
# Removing printers not supported with free drivers from the database
# from: https://gitlab.trisquel.org/trisquel/package-helpers/raw/aramo/helpers/make-hplip
local tmp=printers.tmp
local output=printers.out
local printers='data/models/models.dat'
# Keep header license
sed '/\[/,99999d' $printers > $output
for model in $(grep '\[' $printers | /bin/sed 's/\[//; s/\]//'); do
sed -n "/\[$model\]/,/^$/p;" $printers > $tmp
grep '^download=True' -q $tmp && continue
grep '^plugin=1' -q $tmp && continue
grep '^support-type=0' -q $tmp && continue
cat $tmp >> $output
done
cp $output $printers
# Set plugin-optional entries to not-required
/bin/sed -i 's/plugin=2/plugin=0/g' $printers
rm $tmp $output
# re-word non-free firmware recommendations and error messages
# and disable online features (phone-home, plugin/firmware downlaoder, etc)
local match_rxs=( # ASSERT: aligns with '$replace_rxs'
', requires proprietary plugin'
'Device requires a proprietary binary Plug-in, run hp-plugin'
'Your HP Device requires to install HP proprietary plugin\\n'
"Device proprietary plug-in is missing. Click 'Next' to continue plug-in installation. In case of plugin download failure, run 'hp-plugin' command from the terminal manually."
"Device requires proprietary plug-in which is missing. Click 'Next' to continue plug-in installation"
"def download(self, pluginPath='',callback = None):"
'def download_from_network(weburl, outputFile = None, useURLLIB=False):'
'def download_via_wget(target):'
'def download_via_curl(target):'
'def check_network_via_ping(target):'
'def check_network_connection(url=HTTP_CHECK_TARGET, ping_server=PING_CHECK_TARGET):'
'def download(mode, passwordObj):'
'Network connection not detected.'
)
local replace_rxs=( # ASSERT: aligns with '$match_rxs'
', (non-free/unsupported)'
'Device is non-free/unsupported'
''
'Device is non-free/unsupported./'
'Device is non-free/unsupported./'
'&\n return 1'
'&\n return -1, ""'
'&\n return -1'
'&\n return -1'
'&\n return -1'
'&\n return -1'
'&\n return ERROR_NO_NETWORK'
'Parabola has disabled the networking features of this application.'
)
local rx_n
for (( rx_n = 0 ; rx_n < ${#match_rxs[@]} ; ++rx_n ))
do sed -i "s|${match_rxs[$rx_n]}|${replace_rxs[$rx_n]}|" $(grep -rlI "${match_rxs[$rx_n]}")
done
# verify libre patching
local patch_msg='HPLIP upgrade is disabled by Archlinux for security reasons,'
local err_msg="ERROR: 'disable_upgrade.patch' not applied"
grep -A 1 "$patch_msg" upgrade.py | tail -n 1 | grep -q 'clean_exit(1)' ||
! echo "$err_msg" || return 1
## END parabola changes ##
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"
}
|