# %define python_platlib %(python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib(1)')
Summary:	HP printer drivers & utilities for Linux
Summary(ja): 	HP プリンタの Linux 向けドライバとユーティリティ
Name:		hplip
Version:	3.22.6
Release: 	1%{?_dist_release}
Group:		publishing
Vendor:		Project Vine
Distribution:	Vine Linux
Packager:	kazutaka

License:	GPLv2+, MIT and BSD
URL:		https://developers.hp.com/hp-linux-imaging-and-printing
# Source0:	http://downloads.sourceforge.net/sourceforge/hplip/hplip-%{version}.tar.gz
# ./hplip-repack.sh <version>
Source0:	hplip-%{version}-repack.tar.gz
#Source1:	hpcups-update-ppds.sh
Source2:	copy-deviceids.py
Source3:	%{name}.metainfo.xml
Source4:	hp-laserjet_cp_1025nw.ppd.gz
Source5:	hp-laserjet_professional_p_1102w.ppd.gz
Source6:	hplip-repack.sh
Source7:	hp-plugin.in

Source1000:	hplip.desktop.vine

Patch1: hplip-pstotiff-is-rubbish.patch
Patch2: hplip-strstr-const.patch
Patch3: hplip-ui-optional.patch
Patch4: hplip-no-asm.patch
Patch5: hplip-deviceIDs-drv.patch
Patch6: hplip-udev-rules.patch
Patch7: hplip-retry-open.patch
Patch8: hplip-snmp-quirks.patch
Patch9: hplip-hpijs-marker-supply.patch
Patch10: hplip-clear-old-state-reasons.patch
Patch11: hplip-hpcups-sigpipe.patch
Patch12: hplip-logdir.patch
Patch13: hplip-bad-low-ink-warning.patch
Patch14: hplip-deviceIDs-ppd.patch
Patch15: hplip-ppd-ImageableArea.patch
Patch16: hplip-scan-tmp.patch
Patch17: hplip-log-stderr.patch
Patch18: hplip-avahi-parsing.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
# non-sudoers cannot authenticate
# reported upstream https://bugs.launchpad.net/hplip/+bug/1904888
Patch54: hplip-check-userperms.patch
# 1919556 - hp-fab crashed: QFileDialog.getOpenFileName is not used correctly
# getOpenFileName returns a tuple, but hp-fab expects a simple variable
# reported upstream as https://bugs.launchpad.net/hplip/+bug/1914743
Patch55: hplip-fab-import.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
Patch56: hplip-hpsetup-noscanjets.patch
# 1963114 - patch for hplip firmware load timeout fix
# reported upstream https://bugs.launchpad.net/hplip/+bug/1922404
Patch57: hplip-hpfirmware-timeout.patch
# 1985251 - Incorrect permission for gpg directory
# reported upstream https://bugs.launchpad.net/hplip/+bug/1938442
Patch58: hplip-gpgdir-perms.patch
# 1987141 - hp-plugin installs malformed udev files
# reported upstream https://bugs.launchpad.net/hplip/+bug/1847477
Patch59: hplip-plugin-udevissues.patch
# reported upstream https://bugs.launchpad.net/hplip/+bug/1938504
Patch60: hplip-osname-mismatch.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()
Patch61: hplip-no-libhpmud-libm-warnings.patch
# hplip 3.22.6 doesn't use the correct arguments for snprintf
# reported as https://bugs.launchpad.net/hplip/+bug/1982185
Patch62: hplip-snprintf-format.patch
Patch63: hplip-plugin-script.patch

# Vine Patches
Patch70:	hplip-drop-imageProcessor.patch
Patch80:	hplip-3.16.5-hpijs.patch

BuildRoot:	%{_tmppath}/%{name}-%{version}-root
Requires:	cups
Requires:	dbus
Requires:	dbus-python3
Requires:	foomatic
Requires:	ghostscript
Requires:	openssl
Requires:	%{name}-libs = %{version}-%{release}
BuildRequires:	avahi-devel
BuildRequires:	cups-devel
BuildRequires:	dbus-devel
BuildRequires:	desktop-file-utils
BuildRequires:	libusb1-devel
BuildRequires:	libjpeg-devel
BuildRequires:	net-snmp-devel
BuildRequires:	openssl-devel
BuildRequires:	python3-devel
BuildRequires:	python3-rpm-macros
BuildRequires:	python3-cups, cups
BuildRequires:	sane-devel
BuildRequires:	python3-qt5
BuildRequires:	libappstream-glib
BuildRequires:	gsettings-desktop-schemas
# to force to use Qt5
BuildConflicts:	PyQt
BuildConflicts:	PyQt4

Provides:	hpijs = %{version}-%{release}
Obsoletes:	hpijs < %{version}-%{release}

%description
The Hewlett-Packard Linux Imaging and Printing Project provides
drivers for HP printers and multi-function peripherals.

It supports the DeskJet 350C, 600C, 600C Photo, 630C, Apollo 2000,
Apollo 2100, Apollo 2560, DeskJet 800C, DeskJet 825, DeskJet 900,
PhotoSmart, DeskJet 990C, and PhotoSmart 100 series.

%description -l ja
Hewlett-Packard Linux Imaging and Printing Project は HP 製プリンタ及びプリンタ複合機用のドライバを提供します。

これには DeskJet 350C, 600C, 600C Photo, 630C, Apollo 2000, Apollo 2100, Apollo 2560, DeskJet 800C, DeskJet 825, DeskJet 900, PhotoSmart, DeskJet 990C, and PhotoSmart 100 シリーズ等が含まれます。

#---------------------------------------------------------------------

%package libs
Summary:	HPLIP libraries
Summary(ja):	HPLIP ライブラリ
Group:		system
License:	GPLv2+ and MIT
Requires:	python3

%description libs
Libraries needed by HPLIP.

%description libs -l ja
HPLIP 用のライブラリです。

#---------------------------------------------------------------------

%package gui
Summary:	HPLIP graphical tools
Summary(ja):	HPLIP 用 GUI ツール
Group:		publishing
License:	BSD
Requires:	%{name} = %{version}-%{release}
Requires:	python3-qt5
#Requires:	python3-reportlab
Requires:	python3-pygobject
Requires:	python3-pillow
Requires:	%{name}%{?_isa} = %{version}-%{release}
Requires:	libsane-hpaio%{?_isa} = %{version}-%{release}

%description gui
HP Device manager (toolbox) is a graphical utility including 
maintenance tools, supplies levels, and status information.

%description gui -l ja
HP デバイスマネージャ (toolbox) は、各種設定やインクや紙の残量確
認、ステータス情報の確認が行える HPLIP 用の GUI ユーティリティです。

#---------------------------------------------------------------------

%package -n libsane-hpaio
Summary:	SANE driver for scanners in HP's multi-function devices
Summary(ja):	HP 複合機のスキャナ用 SANE ドライバ
Group:		system
License:	GPLv2+
Requires:	%{name}-libs = %{version}-%{release}
Requires:	sane

%description -n libsane-hpaio
SANE driver for scanners in HP inkjet and laser based multi-function 
printers.

%description -n libsane-hpaio -l ja
HP インクジェット及びレーザープリンタ複合機のスキャナ機能を利用する
為の SANE ドライバです。

#---------------------------------------------------------------------

%debug_package

#---------------------------------------------------------------------


%prep
%setup -q

# The pstotiff filter is rubbish so replace it (launchpad #528394).
%patch1 -p1 -b .pstotiff-is-rubbish

# Fix compilation.
%patch2 -p1 -b .strstr-const

# Make utils.checkPyQtImport() look for the gui sub-package (bug #243273).
%patch3 -p1 -b .ui-optional

# Make sure to avoid handwritten asm.
%patch4 -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
chmod +x %{SOURCE2}
mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs}
%{SOURCE2} prnt/drv/hpcups.drv.in \
           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

# Retry when connecting to device fails (bug #532112).
%patch7 -p1 -b .retry-open

# Mark SNMP quirks in PPD for HP OfficeJet Pro 8500 (bug #581825).
%patch8 -p1 -b .snmp-quirks

# Fixed bogus low ink warnings from hpijs driver (bug #643643).
%patch9 -p1 -b .hpijs-marker-supply

# Clear old printer-state-reasons we used to manage (bug #510926).
%patch10 -p1 -b .clear-old-state-reasons

# Avoid busy loop in hpcups when backend has exited (bug #525944).
%patch11 -p1 -b .hpcups-sigpipe

# CUPS filters should use TMPDIR when available (bug #865603).
%patch12 -p1 -b .logdir

# Fixed Device ID parsing code in hpijs's dj9xxvip.c (bug #510926).
%patch13 -p1 -b .bad-low-ink-warning

# Add Device ID for
# HP LaserJet Color M451dn (bug #1159380)
for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4);
do
  gunzip ${ppd_file#*/}.gz
done
%patch14 -p1 -b .deviceIDs-ppd
for ppd_file in $(grep '^diff' %{PATCH14} | cut -d " " -f 4);
do
  gzip -n ${ppd_file#*/}
done

# Fix ImageableArea for Laserjet 8150/9000 (bug #596298).
for ppd_file in $(grep '^diff' %{PATCH15} | cut -d " " -f 4);
do
  gunzip ${ppd_file#*/}.gz
done
%patch15 -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

# Treat logging before importing of logger module (bug #984699).
%patch17 -p1 -b .log-stderr

# Fix parsing of avahi-daemon output (bug #1096939).
%patch18 -p1 -b .parsing

# Fixed left/right margins for HP DeskJet 990C (LP #1405212).
%patch19 -p1 -b .dj990c-margin

# Fixed uses of strncpy throughout.
%patch20 -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).
%patch21 -p1 -b .no-write-bytecode

# Ignore IOError when logging output (bug #712537).
%patch22 -p1 -b .silence-ioerror

# [abrt] hplip: hp-scan:663:<module>:NameError: name 'source_option' is not defined (bug #1341304)
%patch23 -p1 -b .sourceoption

# hplip license problem (bug #1364711)
%patch24 -p1 -b .no-ernie

# hplip appdata
%patch25 -p1 -b .appdata

# hp-check shows 'CUPS incompatible or not running' even if CUPS is running (bug #1456467)
%patch26 -p1 -b .check-cups

# hp-firmware:NameError: name 'INTERACTIVE_MODE4' is not defined (bug #1533869)
%patch27 -p1 -b .typo

%patch28 -p1 -b .use-binary-str

# 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.
%patch29 -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
%patch30 -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
%patch31 -p1 -b .wifisetup-bad-call-fix

# have pool of keyservers to choose
%patch32 -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
%patch33 -p1 -b .qmsgbox-typos-fix

# removal of non open source code, taken from ubuntu
%patch34 -p1 -b .libimageprocessor-removal

rm prnt/hpcups/libImageProcessor-x86*

%patch35 -p1 -b .toolbox-crash
# part of https://bugzilla.redhat.com/show_bug.cgi?id=1666076
%patch36 -p1 -b .add-ppd-crash
# 1671513 - after 'successful' plugin installation it is not installed
%patch37 -p1 -b .missing-links
# 1684434 - Scanning broken for HP LaserJet 3052
%patch38 -p1 -b .hp-laserjet-3052-broken-scanning
# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 1)
%patch39 -p1 -b .hpmud-string-parse
# 1694663 - Cannot scan with M281fdw LaserJet - failed: Error during device I/O (part 2)
%patch40 -p1 -b .m278-m281-needs-plugin
# 1695716 - hpcups crashes in Compressor destructor
%patch41 -p1 -b .hpcups-crash
# fixing issues found by coverity scan
%patch42 -p1 -b .covscan
# segfault during logging (1727162)
%patch43 -p1 -b .logging-segfault
# 1738321 - [abrt] hp-systray:BlockingIOError: [Errno 11] Resource temporarily unavailable
%patch44 -p1 -b .systray-blockerror
# 1742949, 1740132, 1739855 - missing drivers
%patch45 -p1 -b .missing-drivers
# 1772698 - Can't setup printer (HP LJ 2200): no attributes found in model.dat
%patch46 -p1 -b .model-mismatch
# 1573430 - sixext.py:to_string_utf8:UnicodeDecodeError: 'utf-8' codec can't decode bytes
%patch47 -p1 -b .unicodeerror
%patch48 -p1 -b .Wreturn-fix
%patch49 -p1 -b .configure-python
%patch50 -p1 -b .dialog-infinite-loop
# 1590014 - hplip PPD search doesn't expect '-' in device name
%patch51 -p1 -b .find-driver
# 1833308 - hp-clean cannot clean HP PSC1410 - Device I/O error
%patch52 -p1 -b .clean-ldl
%patch53 -p1 -b .revert-plugins
# 1899410 - non-sudoers cannot authenticate because of bad username in prompt
%patch54 -p1 -b .check-userperms
# 1919556 - hp-fab crashed: QFileDialog.getOpenFileName is not used correctly
%patch55 -p1 -b .fab-import
# if an user tries to install scanner via hp-setup (printer/fax utility)
# it fails further down - break out earlier with a message
%patch56 -p1 -b .hpsetup-noscanjets
# 1963114 - patch for hplip firmware load timeout fix
%patch57 -p1 -b .hpfirmware-timeout
# 1985251 - Incorrect permission for gpg directory
%patch58 -p1 -b .gpgdir-perms
# 1987141 - hp-plugin installs malformed udev files
%patch59 -p1 -b .hpplugin-udevperms
# upstream bug https://bugs.launchpad.net/hplip/+bug/1938504
%patch60 -p1 -b .osname-mismatch
# 2080235 - Misleading errors about missing shared libraries when scanning
%patch61 -p1 -b .no-libm-libhpmud-warn
# hplip 3.22.6 doesn't use proper arguments for snprintf
%patch62 -p1 -b .snprintf-format
%patch63 -p1 -b .plugin-patch

# vine

%patch80 -p1 -b .hpijs

sed -i.duplex-constraints \
    -e 's,\(UIConstraints.* \*Duplex\),//\1,' \
    prnt/drv/hpcups.drv.in

# Change shebang /usr/bin/env python -> /usr/bin/python3 (bug #618351).
find -name '*.py' -print0 | xargs -0 \
    sed -i.env-python -e 's,^#!/usr/bin/env python,#!%{__python3},'
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.
sed -i 's|^AM_INIT_AUTOMAKE|AM_INIT_AUTOMAKE([foreign])|g' configure.in
touch NEWS README AUTHORS ChangeLog
autoreconf -fiv
%configure \
        --disable-imageProcessor-build \
        --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-foomatic-drv-install --enable-dbus-build \
        --enable-hpijs-install \
	--enable-policykit \
	--with-mimedir=%{_datadir}/cups/mime \
	--with-cupsbackenddir=%{_libdir}/cups/backend \
	--with-cupsfilterdir=%{_libdir}/cups/filter \
	--with-hpppddir=%{_datadir}/foomatic/db/source/PPD/HP \
	PYTHON=%{__python3}

make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT PYTHON=%{__python3} rulesdir=/lib/udev/rules.d

# Create /run/hplip & /var/lib/hp
mkdir -p $RPM_BUILD_ROOT/run/hplip
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/hp

# install modified .desktop
#{__install} -m 644 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_datadir}/applications/hplip.desktop

# install /usr/lib/tmpfiles.d/hplip.conf (bug #1015831)
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d
cat > $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d/hplip.conf <<EOF
# See tmpfiles.d(5) for details

d /run/hplip 0775 root lp -
EOF

# remove unpacked files.
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}%{_datadir}/hplip/dat2drv*

rm -f   %{buildroot}%{_bindir}/hp-logcapture \
        %{buildroot}%{_bindir}/hp-doctor \
        %{buildroot}%{_bindir}/hp-pqdiag \
        %{buildroot}%{_datadir}/hplip/logcapture.py \
        %{buildroot}%{_datadir}/hplip/doctor.py \
        %{buildroot}%{_datadir}/hplip/pqdiag.py

rm -f   %{buildroot}%{_bindir}/foomatic-rip \
        %{buildroot}%{_libdir}/cups/filter/foomatic-rip \
        %{buildroot}%{_libdir}/*.la \
        %{buildroot}%{python3_sitearch}/*.la \
        %{buildroot}%{_libdir}/libhpip.so \
        %{buildroot}%{_libdir}/libhpipp.so \
        %{buildroot}%{_libdir}/libhpdiscovery.so \
        %{buildroot}%{_libdir}/sane/*.la \
        %{buildroot}%{_datadir}/cups/model/foomatic-ppds \
        %{buildroot}%{_datadir}/applications/hplip.desktop \
        %{buildroot}%{_datadir}/ppd/HP/*.ppd

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 \
   %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/hp_logo.png
install -p -m644 %{buildroot}%{_datadir}/hplip/data/images/32x32/hp_logo.png \
   %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/hp_logo.png
install -p -m644 %{buildroot}%{_datadir}/hplip/data/images/64x64/hp_logo.png \
   %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/hp_logo.png

mkdir -p %{buildroot}%{_datadir}/applications
sed -i -e '/^Categories=/d' hplip.desktop
# Encoding key is deprecated
sed -i -e '/^Encoding=/d' hplip.desktop
desktop-file-validate hplip.desktop

desktop-file-install                               \
        --dir %{buildroot}/%{_datadir}/applications              \
        --add-category System \
        --add-category Settings \
        --add-category HardwareSettings                        \
        hplip.desktop

appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.metainfo.xml

# install hp-uiscan desktop file
sed -i 's/\/usr\/share\/icons\/Humanity\/devices\/48\/printer\.svg/hp_logo/' hp-uiscan.desktop

# Regenerate hpcups PPDs on upgrade if necessary (bug #579355).
#install -p -m755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/hpcups-update-ppds

%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/sane.d/dll.d
echo hpaio > $RPM_BUILD_ROOT%{_sysconfdir}/sane.d/dll.d/hpaio

# Images in docdir should not be executable (bug #440552).
find doc/images -type f -exec chmod 644 {} \;

# Create an empty plugins directory to make sure it gets the right
# SELinux file context (bug #564551).
%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/hplip/prnt/plugins

# Remove files we don't want to package.
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/hpaio.desc
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/hplip-install
rm -rf $RPM_BUILD_ROOT%{_datadir}/hplip/install.*
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/uninstall.*
rm -f $RPM_BUILD_ROOT%{_bindir}/hp-uninstall
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/upgrade.*
rm -f $RPM_BUILD_ROOT%{_bindir}/hp-upgrade
rm -f $RPM_BUILD_ROOT%{_bindir}/hp-config_usb_printer
rm -f $RPM_BUILD_ROOT%{_unitdir}/hplip-printer@.service
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/config_usb_printer.*
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/hpijs.drv.in.template
rm -f $RPM_BUILD_ROOT%{_datadir}/cups/mime/pstotiff.types
rm -f $RPM_BUILD_ROOT%{_datadir}/hplip/fax/pstotiff*
rm -rf $RPM_BUILD_ROOT%{_prefix}/lib/systemd

# The systray applet doesn't work properly (displays icon as a
# window), so don't ship the launcher yet.
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/xdg/autostart/hplip-systray.desktop


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root)
%doc COPYING doc/*
#%doc %{_datadir}/doc/%{name}-%{version}
%{_bindir}/hp-align
%{_bindir}/hp-clean
%{_bindir}/hp-colorcal
%{_bindir}/hp-devicesettings
%{_bindir}/hp-diagnose_plugin
%{_bindir}/hp-diagnose_queues
%{_bindir}/hp-fab
%{_bindir}/hp-faxsetup
%{_bindir}/hp-firmware
%{_bindir}/hp-info
%{_bindir}/hp-levels
%{_bindir}/hp-linefeedcal
%{_bindir}/hp-makecopies
%{_bindir}/hp-makeuri
%{_bindir}/hp-plugin
%{_bindir}/hp-printsettings
%{_bindir}/hp-probe
%{_bindir}/hp-query
%{_bindir}/hp-scan
%{_bindir}/hp-sendfax
%{_bindir}/hp-setup
%{_bindir}/hp-testpage
%{_bindir}/hp-timedate
%{_bindir}/hp-unload
%{_bindir}/hp-wificonfig
%{_libdir}/cups/backend/hp
%{_libdir}/cups/backend/hpfax
%{_libdir}/cups/filter/hpcups
%{_libdir}/cups/filter/hpcupsfax
%{_libdir}/cups/filter/hpps
%{_libdir}/cups/filter/pstotiff
%{_datadir}/cups/mime/pstotiff.convs

# Files
%{_datadir}/hplip/align.py*
%{_datadir}/hplip/check-plugin.py*
%{_datadir}/hplip/clean.py*
%{_datadir}/hplip/colorcal.py*
%{_datadir}/hplip/devicesettings.py*
%{_datadir}/hplip/diagnose_plugin.py*
%{_datadir}/hplip/diagnose_queues.py*
%{_datadir}/hplip/fab.py*
%{_datadir}/hplip/fax
%{_datadir}/hplip/faxsetup.py*
%{_datadir}/hplip/firmware.py*
%{_datadir}/hplip/hpdio.py*
%{_datadir}/hplip/hplip_clean.sh
%{_datadir}/hplip/hpssd*
%{_datadir}/hplip/info.py*
%{_datadir}/hplip/__init__.py*
%{_datadir}/hplip/levels.py*
%{_datadir}/hplip/linefeedcal.py*
%{_datadir}/hplip/makecopies.py*
%{_datadir}/hplip/makeuri.py*
%{_datadir}/hplip/plugin.py*
%{_datadir}/hplip/printsettings.py*
%{_datadir}/hplip/probe.py*
%{_datadir}/hplip/query.py*
%{_datadir}/hplip/scan.py*
%{_datadir}/hplip/sendfax.py*
%{_datadir}/hplip/setup.py*
%{_datadir}/hplip/testpage.py*
%{_datadir}/hplip/timedate.py*
%{_datadir}/hplip/unload.py*
%{_datadir}/hplip/wificonfig.py*
# Directories
%{_datadir}/hplip/base
%{_datadir}/hplip/copier
%{_datadir}/hplip/data/ldl
%{_datadir}/hplip/data/localization
%{_datadir}/hplip/data/pcl
%{_datadir}/hplip/data/ps
%{_datadir}/hplip/installer
%{_datadir}/hplip/pcard
%{_datadir}/hplip/prnt
%{_datadir}/hplip/scan
%{_localstatedir}/lib/hp
%dir %attr(0775,root,lp) /run/hplip
%{_prefix}/lib/tmpfiles.d/hplip.conf

%dir %{_sysconfdir}/hp
%config(noreplace) %{_sysconfdir}/hp/hplip.conf
/lib/udev/rules.d/56-hpmud.rules
%dir %{_datadir}/hplip
%dir %{_datadir}/hplip/data
%{_datadir}/hplip/data/models

%{_bindir}/hpijs
#{_bindir}/hpcups-update-ppds
%{_datadir}/cups/drv/*
%dir %{_datadir}/foomatic/db/source/PPD/HP
%{_datadir}/foomatic/db/source/PPD/HP/*

%{_sysconfdir}/dbus-1/system.d/com.hp.hplip.conf
%{_datadir}/dbus-1/system-services/com.hp.hplip.service
%{_datadir}/polkit-1/actions/com.hp.hplip.policy

%files libs
%defattr(-,root,root)
%{_libdir}/libhpip.so.*
# The so symlink is required here (see bug #489059).
%{_libdir}/libhpmud.so*
%{_libdir}/libhpdiscovery.so*
%{_libdir}/libhpipp.so*
# Python extension
%{python3_sitearch}/*

%files gui
%defattr(-,root,root)
%{_bindir}/hp-check
%{_bindir}/hp-print
%{_bindir}/hp-systray
%{_bindir}/hp-toolbox
%{_bindir}/hp-uiscan
%{_datadir}/applications/*.desktop
%{_datadir}/metainfo/hplip.metainfo.xml
# Files
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/hplip/check.py*
%{_datadir}/hplip/print.py*
%{_datadir}/hplip/systray.py*
%{_datadir}/hplip/toolbox.py*
%{_datadir}/hplip/uiscan.py*
# Directories
%{_datadir}/hplip/data/images
%{_datadir}/hplip/ui5
%{_datadir}/hplip/uiscan.py*
%files -n libsane-hpaio
%defattr(-,root,root)
%{_libdir}/sane/libsane-hpaio*
%config(noreplace) %{_sysconfdir}/sane.d/dll.d/hpaio

%changelog
* Sat Oct 29 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.22.6-1
- new upstream release.
- re-import all patches from rawhide.

* Wed Nov 03 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.21.10-1
- new upstream release.
- dropped Patch37 and 57: fixed in upstream.
- imported Patch59-69 from rawhide.
- dropped ldconfig scriptlets.

* Tue Sep 08 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.20.6-2
- rebuilt with net-snmp-5.9.

* Sun Aug 16 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.20.6-1
- new upstream release.

* Thu May 16 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.18.12-1
- dropped R:gksu.
- imported Patche36-47 from rawhide.
- switched to python3.
- switched gui to Qt5.

* Wed Nov 07 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.18.10-1
- new upstream release.
- updated Patch12.
- imported Patche24-35 from rawhide.

* Sat Jul 2 2016 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 3.16.5-1
- new upstream release.
- dropped all patches.
- imported all patches from rawhide.
- added Patch80 to fix error in building hpijs.

* Sun May 15 2016 Yoji TOYODA <bsyamato@sea.plala.or.jp> 3.15.2-2
- rebuild with openssl-1.0.2

* Thu Mar 19 2015 Ryoichi INAGAKI <ryo1@toki.waseda.jp> 3.15.2-1
- updated to 3.15.2
- updated Source1
- renumbered former Patch 0 and 1 to Patch 70 and 6
- built with libusb1
- added BR: desktop-file-utils

* Wed Mar 07 2012 Yoji TOYODA <bsyamato@sea.plala.or.jp> 3.11.5-5
- rebuild with net-snmp-5.7.1

* Wed Mar 07 2012 Yoji TOYODA <bsyamato@sea.plala.or.jp> 3.11.5-5
- rebuild with net-snmp-5.7.1

* Sun Feb 19 2012 Yoji TOYODA <bsyamato@sea.plala.or.jp> 3.11.5-4
- rebuild with python-2.7.2

* Mon Jun 13 2011 Kazutaka HARADA <kazutaka@vinelinux.org> 3.11.5-3
- add Obsoletes: hpijs < 3.10

* Sun Jun 12 2011 Kazutaka HARADA <kazutaka@vinelinux.org> 3.11.5-2
- change configure option to --enable-hpijs-install
- add Provides: hpijs
- change ppd installation path to %{_datadir}/foomatic/db/source/PPD/HP
- update Source1 (hplip.desktop.vine)
- update Patch0 (hplip-3.11.5-gksu.patch)
- add Patch1 to fix udev old syntax (hplip-udev-rules.patch)

* Tue Mar 15 2011 Kazutaka HARADA <kazutaka@vinelinux.org> 3.11.5-1
- new upstream release
- change configure option: disable qt3 and enable qt4
- add configure option: --enable-foomatic-drv-install
- add BuildRequires: openssl-devel
- add Requires: dbus-python
- add Requires: notify-python (gui)
- change Requires: PyQt to PyQt4 (gui)
- add BuildConflicts: PyQt
- add ppds below %{_datadir}/cups/model/foomatic/hp-*
  because foomatic (>= 4.0.3) drop PPDs for HP printers.

* Fri Jul 24 2009 Kazutaka HARADA <kazutaka@dc4.so-net.ne.jp> 3.9.4b-3
- add Patch0 to require root privilege (via gksu) when adding printer
- add Requires: gksu

* Mon Jun 08 2009 Shu KONNO <owa@bg.wakwak.com> 3.9.4b-2
- added --with-cupsfilterdir to configure option
- use python_sitearch macro instead of python_platlib

* Sun Jun 07 2009 Kazutaka HARADA <kazutaka@dc4.so-net.ne.jp> 3.9.4b-1
- new upstream release
- split libraries to -libs sub package
- update configure option
  add --enable-dbus-build, --enable-qt3, --disable-qt4

* Mon Jul 21 2008 Shu KONNO <owa@bg.wakwak.com> 2.7.12-1vl5
- rebuilt with python-2.5.2
- added python_platlib macro
- applied new versioning policy and spec in utf-8

* Sun Jan  6 2008 Shu KONNO <owa@bg.wakwak.com> 2.7.12-0vl2
- added --with-cupsbackenddir=%%{_libdir}/cups/backend to configure

* Thu Jan  3 2008 Kazutaka HARADA <kazutaka@dc4.so-net.ne.jp> 2.7.12-0vl1
- new upstream release
- build with net-snmp-5.4.1

* Thu Jun 28 2007 Kazutaka HARADA <kazutaka@dc4.so-net.ne.jp> 2.7.6-0vl1
- initial build for Vine Linux
