PKGBUILD 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. # Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
  2. # Maintainer: David P. <megver83@parabola.nu>
  3. # Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>
  4. # Contributor: Tom Gundersen <teg@jklm.no>
  5. # Contributor: Rémy Oudompheng <remy@archlinux.org>
  6. # Contributor: Morgan LEFIEUX <comete@archlinuxfr.org>
  7. # Contributor: André Silva <emulatorman@hyperbola.info>
  8. # Contributor: Márcio Silva <coadde@hyperbola.info>
  9. # Contributor: Jorge López <jorginho@hyperbola.info>
  10. # Maintainer (arch): Kevin Mihelich <kevin@archlinuxarm.org>
  11. # Contributor: bill-auger <bill-auger@programmer.net>
  12. # parabola changes and rationale:
  13. # - remove recommendations and downloads of non-free binaries
  14. # - disable auto-upgrade download and other online features
  15. pkgname=hplip
  16. pkgver=3.24.4
  17. pkgrel=3
  18. pkgrel+=.parabola1
  19. epoch=1
  20. pkgdesc="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet"
  21. arch=('x86_64')
  22. arch+=('i686' 'armv7h')
  23. url="https://hplipopensource.com"
  24. license=('GPL-2.0-or-later'
  25. 'MIT'
  26. 'BSD-3-Clause-HP'
  27. 'IJG'
  28. 'GPL-2.0-only'
  29. 'LGPL-2.1-or-later'
  30. 'BSD-2-Clause'
  31. 'LicenseRef-hplip'
  32. 'python-ldap')
  33. depends=('python-dbus' 'python-distro' 'ghostscript' 'net-snmp'
  34. 'foomatic-db-engine' 'python-gobject' 'libjpeg-turbo' 'dbus'
  35. 'gcc-libs' 'avahi' 'python' 'xdg-utils' 'zlib' 'libcups' 'glibc' 'sh')
  36. makedepends=('python-pyqt5' 'sane' 'rpcbind' 'cups' 'libusb'
  37. 'python-setuptools')
  38. optdepends=('cups: for printing support'
  39. 'sane: for scanner support'
  40. 'python-pillow: for commandline scanning support'
  41. 'python-reportlab: for pdf output in hp-scan'
  42. 'rpcbind: for network support'
  43. 'python-pyqt5: for running GUI and hp-toolbox'
  44. 'libusb: for advanced usb support'
  45. 'wget: for network support')
  46. backup=('etc/hp/hplip.conf' 'etc/sane.d/dll.d/hpaio')
  47. source=(https://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz{,.asc}
  48. disable_upgrade.patch
  49. 0003-models.dat-Re-add-drivers-missing-from-3.19.1.patch
  50. 0018-Allow-non-JPEG-scanning-on-the-HP-DeskJet-3520-All-i.patch
  51. 0022-Add-include-cups-ppd.h-in-various-places-as-CUPS-2.2.patch
  52. 0023-Fix-handling-of-unicode-filenames-in-sixext.py.patch
  53. # use the one from Fedora
  54. hplip-configure-python.patch
  55. python3.diff
  56. reproducible-gzip.patch
  57. hplip-1_3_23_12-4-python3_12-fix.patch
  58. hplip-locale-format.patch
  59. hplip-hpaio-gcc14.patch
  60. hplip-pserror-gcc14.patch)
  61. source_armv7h=(0001-Remove-ImageProcessor.patch) # x86-only
  62. sha512sums=('6162ec58289433659ed4c3a254b2a50863c01acb87a8c0e1a1f935fed2b1916c5ae211c2d84130f40963368ff53e0c8da1878a1fce4dd08bd517f65bbcf6a2d2'
  63. 'SKIP'
  64. 'a12aaeece5285ffb86bdbc24871bf512fbc1f29da44ae51ded314378032662074a42b8aca23bebb378bf78ed15bb7f99da59bfb4cd456f3458e7a5ef42a900f8'
  65. 'f79b3f09d022178099f38b9eae1792396e730eb5352a03d088e6610d92b3895f3f65bb92089ce7f5b21d794f9716ceb176d29ca7283e8a48bb04cf6aba305a2f'
  66. '93e29a9ef893636b2b84443e75525c4ed42531d6e68a182dfbb725c3919c77b966b5e7d9381a34d3b5853423995a7b15efb69ce3e500ec72b25b65b2ad6bd64c'
  67. '22aeb5b851f78bc6bc62e0bc3da99fecaf42d7604af41e2f3343f8d3666541f7b06b7d1a7d0ddf24f1731ac7b12dfe582375a98e3b94dfa323d6ce954549ca67'
  68. '763949a0bc460dcc9faefc86f2a91cf342781bfce696ed0c3826758572dd03ac266bbeb7b6a4f9376ac298d7d3c9c4def42d94921a8e1d1695e39396e36d95ff'
  69. '089c102357ea5fd55d81ae76aaff62713f780fd84500c3b92ecd6b2bb11ccdc3a162978548e9a5f9e98a8354a5be3997e416c52daa18eda4621ed79a29d6fea8'
  70. 'b8a4c860e90a52ec566ca5a9c7f3a5ecb7386ae76e17b2c6c878073e60eeaf0cb63883b740b4725794be9914e1ab8fc91313efb288395f3095f599c07f54cf14'
  71. '379fcbe9dc2986da828a174a0ac4e71a1da43a98408894d5e713e09d7d9cba1e9fac30f9602b81d48d992abe6b65b6402b8a07664efe97400c5d839be33cf15f'
  72. 'd8c9918a5559fb4cc968607aae9c2b67814240f4d81f703a15e1a23cca0bedd21b3c79c29363bd361f8b4bed169336d2a9e152eb8ca6309bd725dc2aa6a24509'
  73. '321f622c070aee8d4a0a4b2ce1ae81f40ca10959f5707f57f9b2bdfdbeba953792b051470ec2477a747074e123935bb96a2d185f935670127e070466de26eb6d'
  74. '1da56de340104a82747607d33d6aa336fbcca8fa6de25ae244bf52cd64920334bcacf50e3f7b9ddbec1126f322325ce847763b02ff0dae44942fd24478ed466f'
  75. '63b0ffed2628915f4577932dfdd27a214edfbcf78745eab09cacafe0fa6ed99cdc742a97ac08ce600d202f824a0af790166e25e346f9a51d37c02747e262d742')
  76. sha512sums_armv7h=('7f402ed13341ac9a01f28ecdb97effcd15f5fa9d123e554d4dd78e9f5ed01bcf7b4fe7400c53ddf5e7068f9ffd858d8fefe060e2fcacea0a0524145d78e315cc')
  77. validpgpkeys=('4ABA2F66DBD5A95894910E0673D770CDA59047B9') # HPLIP (HP Linux Imaging and Printing) <hplip@hp.com>
  78. options=(!makeflags)
  79. prepare() {
  80. cd "$pkgname"-$pkgver
  81. # disable insecure update - https://bugs.archlinux.org/task/38083
  82. patch -Np0 -i "${srcdir}"/disable_upgrade.patch
  83. # add missing 'include <cups/ppd.h>' at various places
  84. patch -Np1 -i "${srcdir}"/0022-Add-include-cups-ppd.h-in-various-places-as-CUPS-2.2.patch
  85. # fix some handling unicode file names FS#58412
  86. patch -Np1 -i "${srcdir}"/0023-Fix-handling-of-unicode-filenames-in-sixext.py.patch
  87. # Workaround patch for missing Python3 transition of the old
  88. # (pre-USB-storage) photo memory card support (pcardext) - Debian patch
  89. patch -Np1 -i "${srcdir}"/python3.diff
  90. # fix model support / Debian patch / FS#74942
  91. patch -Np1 -i "${srcdir}"/0003-models.dat-Re-add-drivers-missing-from-3.19.1.patch
  92. # https://bugs.launchpad.net/hplip/+bug/1879445
  93. # broken scanning - https://bugs.archlinux.org/task/66704
  94. patch -Np1 -i ../hplip-configure-python.patch
  95. # allow non-jpeg scanning on all-in-one devices - FS#78135
  96. patch -Np1 -i ../0018-Allow-non-JPEG-scanning-on-the-HP-DeskJet-3520-All-i.patch
  97. # hp-firmware: module 'locale' not longer provides method 'format', causing traceback #4
  98. patch -Np1 -i ../hplip-locale-format.patch
  99. # make gzip creation reproducible by removing the timestamp
  100. patch -Np1 -i ../reproducible-gzip.patch
  101. # https://gitlab.archlinux.org/archlinux/packaging/packages/hplip/-/issues/3
  102. # patch -Np1 -i ../hplip-1_3_23_12-4-python3_12-fix.patch
  103. # fix build with gcc14
  104. patch -Np1 -i ../hplip-hpaio-gcc14.patch
  105. patch -Np1 -i ../hplip-pserror-gcc14.patch
  106. # remove imageprocessor
  107. [[ "${CARCH}" != armv7h ]] || patch -Np1 -i "${srcdir}"/0001-Remove-ImageProcessor.patch
  108. ## parabola changes ##
  109. echo "re-wording non-free recommendations/errors and disabling online features"
  110. # Removing printers not supported with free drivers from the database
  111. # from: https://gitlab.trisquel.org/trisquel/package-helpers/raw/aramo/helpers/make-hplip
  112. local tmp=printers.tmp
  113. local output=printers.out
  114. local printers='data/models/models.dat'
  115. # Keep header license
  116. sed '/\[/,99999d' $printers > $output
  117. for model in $(grep '\[' $printers | /bin/sed 's/\[//; s/\]//'); do
  118. sed -n "/\[$model\]/,/^$/p;" $printers > $tmp
  119. grep '^download=True' -q $tmp && continue
  120. grep '^plugin=1' -q $tmp && continue
  121. grep '^support-type=0' -q $tmp && continue
  122. cat $tmp >> $output
  123. done
  124. cp $output $printers
  125. # Set plugin-optional entries to not-required
  126. /bin/sed -i 's/plugin=2/plugin=0/g' $printers
  127. rm $tmp $output
  128. # re-word non-free firmware recommendations and error messages
  129. # and disable online features (phone-home, plugin/firmware downlaoder, etc)
  130. local match_rxs=( # ASSERT: aligns with '$replace_rxs'
  131. ', requires proprietary plugin'
  132. 'Device requires a proprietary binary Plug-in, run hp-plugin'
  133. 'Your HP Device requires to install HP proprietary plugin\\n'
  134. "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."
  135. "Device requires proprietary plug-in which is missing. Click 'Next' to continue plug-in installation"
  136. "def download(self, pluginPath='',callback = None):"
  137. 'def download_from_network(weburl, outputFile = None, useURLLIB=False):'
  138. 'def download_via_wget(target):'
  139. 'def download_via_curl(target):'
  140. 'def check_network_via_ping(target):'
  141. 'def check_network_connection(url=HTTP_CHECK_TARGET, ping_server=PING_CHECK_TARGET):'
  142. 'def download(mode, passwordObj):'
  143. 'Network connection not detected.'
  144. )
  145. local replace_rxs=( # ASSERT: aligns with '$match_rxs'
  146. ', (non-free/unsupported)'
  147. 'Device is non-free/unsupported'
  148. ''
  149. 'Device is non-free/unsupported./'
  150. 'Device is non-free/unsupported./'
  151. '&\n return 1'
  152. '&\n return -1, ""'
  153. '&\n return -1'
  154. '&\n return -1'
  155. '&\n return -1'
  156. '&\n return -1'
  157. '&\n return ERROR_NO_NETWORK'
  158. 'Parabola has disabled the networking features of this application.'
  159. )
  160. local rx_n
  161. for (( rx_n = 0 ; rx_n < ${#match_rxs[@]} ; ++rx_n ))
  162. do sed -i "s|${match_rxs[$rx_n]}|${replace_rxs[$rx_n]}|" $(grep -rlI "${match_rxs[$rx_n]}")
  163. done
  164. # verify libre patching
  165. local patch_msg='HPLIP upgrade is disabled by Archlinux for security reasons,'
  166. local err_msg="ERROR: 'disable_upgrade.patch' not applied"
  167. grep -A 1 "$patch_msg" upgrade.py | tail -n 1 | grep -q 'clean_exit(1)' ||
  168. ! echo "$err_msg" || return 1
  169. ## END parabola changes ##
  170. export AUTOMAKE='automake --foreign'
  171. autoreconf --force --install
  172. }
  173. build() {
  174. cd "$pkgname"-$pkgver
  175. export CFLAGS+=" -Wno-deprecated-declarations -Wno-implicit-function-declaration -Wno-return-mismatch"
  176. ./configure --prefix=/usr \
  177. --enable-qt5 \
  178. --disable-qt4 \
  179. --enable-hpcups-install \
  180. --enable-cups-drv-install \
  181. --disable-imageProcessor-build \
  182. --enable-pp-build #--help
  183. sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
  184. make
  185. }
  186. package() {
  187. cd "$pkgname"-$pkgver
  188. make -j1 rulesdir=/usr/lib/udev/rules.d DESTDIR="$pkgdir/" install
  189. # remove config provided by sane and autostart of hp-daemon
  190. rm -rf "$pkgdir"/etc/{sane.d,xdg}
  191. install -dm755 "${pkgdir}"/etc/sane.d/dll.d
  192. echo hpaio > "${pkgdir}"/etc/sane.d/dll.d/hpaio
  193. # remove HAL .fdi file because HAL is no longer used
  194. rm -vrf "$pkgdir"/usr/share/hal
  195. # remove rc script
  196. rm -vrf "$pkgdir"/etc/init.d
  197. # add mixed license file
  198. install -Dt "${pkgdir}"/usr/share/licenses/${pkgname} -m644 COPYING
  199. # Compile Python bytecode:
  200. python -m compileall -d /usr/share "$pkgdir/usr/share"
  201. python -O -m compileall -d /usr/share "$pkgdir/usr/share"
  202. }