summaryrefslogtreecommitdiff
path: root/libre/hplip/PKGBUILD
blob: c6ea4b5ebb100f968d798c987108af898b596471 (plain)
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"
}