%define use_gitsnap 0
%{?_no_gitsnap: %{expand: %%global use_gitsnap 0}}
%if %{use_gitsnap}
%define gitsnap 200809231700
%endif
# needs porting of Mandriva specific features from hal-cups-utils to s-c-p-udev
%define obsolete_hal_cups_utils 1
Name: system-config-printer
Summary: A printer administration tool
Version: 1.2.0
Release: %mkrel 12
Url: http://cyberelk.net/tim/software/system-config-printer/
License: LGPLv2+
Group: System/Configuration/Printing
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
Source0: http://cyberelk.net/tim/data/system-config-printer/1.2/%{name}-%{version}%{?gitsnap:-%gitsnap}.tar.xz
Source1: system-config-printer.pam
Source2: system-config-printer.console
Source3: po-mdv.tar.bz2
Source4: mdv_printer_custom.py
Source5: hp-makeuri-mdv.c
Source6: mdv_backend
# Let printers have an ACL allowing rw for user lp, as our CUPS runs backends as lp:sys (bug 49407)
Source7: 69-printers_lp_user_fix.rules
Patch0: system-config-printer-1.1.12-mdv_custom-applet.patch
Patch1: system-config-printer-1.1.12-mdv_custom-embedded_window.patch
Patch2: system-config-printer-1.1.91-mdv_custom-system-config-printer.patch
Patch3: system-config-printer-1.1.17-start-applet.patch
Patch4: system-config-printer-1.2.0-udev-configure-printer-mdv.patch
Patch6: system-config-printer-git.patch
# Ubuntu patches
# use hpcups instead of hpijs for HP printers, like in
# previous versions. hpijs is obsolete and hpcup is mature now
Patch101: 50_give-priority-to-hpcups.patch
# when comparing usb uris, deal with the difference between the obsolete
# usblp and the new libusb back-end
Patch102: 67_match-usb-uris-of-usblp-and-libusb.patch
# Fedora patches
Patch200: system-config-printer-lowercase-mfg-mdl.patch
#Patch204: system-config-printer-cupsconnection-dealloc.patch
BuildRequires: libcups2-devel
BuildRequires: libpython2.5-devel
BuildRequires: desktop-file-utils >= 0.2.92
BuildRequires: gettext-devel
BuildRequires: intltool
BuildRequires: xmlto
BuildRequires: docbook-dtd412-xml
BuildRequires: docbook-style-xsl
%if %obsolete_hal_cups_utils
BuildRequires: libudev0-devel
BuildRequires: libusb1.0-devel
BuildRequires: libhpip0-devel
BuildRequires: libdbus-1-devel
BuildRequires: libdbus-glib-1_2-devel
%endif
Obsoletes: desktop-printing
Obsoletes: printerdrake
Provides: printerdrake
Requires: pygtk2.0 >= 2.4.0
Requires: pygtk2.0-libglade
Requires: python-gobject
Requires: libxml2-python
Requires: desktop-file-utils >= 0.2.92
Requires: dbus-x11
Requires: system-config-printer-libs = %{version}
%if %obsolete_hal_cups_utils
Requires: system-config-printer-udev = %{version}
%else
Requires: hal-cups-utils
Obsoletes: system-config-printer-udev
%endif
Requires: gnome-icon-theme
Requires: gnome-python
Requires: virtual-notification-daemon
Requires: python-cups
Requires: python-rhpl
Requires: python-dbus
Requires: python-notify
%if %obsolete_hal_cups_utils
Requires: hplip-model-data
# nmap is required to scan the network, just like
# printerdrake used to do.
Requires: nmap
Requires: python-smbc
%endif
Conflicts: kdeutils4-printer-applet
Suggests: samba-client
%description
system-config-printer is a graphical user interface that allows
the user to configure a CUPS print server.
%files
%defattr(-,root,root)
%doc ChangeLog README
%{_bindir}/%{name}
%{_sbindir}/%{name}
%{_bindir}/hp-makeuri-mdv
%{_bindir}/%{name}-applet
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/*.py*
%{_datadir}/%{name}/troubleshoot
%{_datadir}/%{name}/ui/*.glade
%{_datadir}/%{name}/icons
%{_datadir}/applications/system-config-printer.desktop
%{_datadir}/applications/manage-print-jobs.desktop
%{_sysconfdir}/xdg/autostart/print-applet.desktop
%config(noreplace) %{_sysconfdir}/pam.d/%{name}
%config(noreplace) %{_sysconfdir}/security/console.apps/%{name}
%{_mandir}/man1/*
#---------------------------------------------------------------------
%if %obsolete_hal_cups_utils
%package udev
Summary: Rules for udev for automatic configuration of USB printers
Group: System/Configuration/Hardware
Requires: system-config-printer-libs = %{version}-%{release}
Obsoletes: hal-cups-utils <= 0.6.20
Conflicts: cups < 1.4.2-6
%description udev
The udev rules and helper programs for automatically configuring USB
printers.
%post
# disable old printer detection system
if [ -f /etc/sysconfig/printing ]; then
if grep -q ^AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED= /etc/sysconfig/printing; then
sed -i 's/AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=.*/AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=no/g' /etc/sysconfig/printing
else
echo AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=no >> /etc/sysconfig/printing
fi
if grep -q ^ENABLE_QUEUES_ON_PRINTER_CONNECTED= /etc/sysconfig/printing; then
sed -i 's/ENABLE_QUEUES_ON_PRINTER_CONNECTED=.*/ENABLE_QUEUES_ON_PRINTER_CONNECTED=no/g' /etc/sysconfig/printing
else
echo ENABLE_QUEUES_ON_PRINTER_CONNECTED=no >> /etc/sysconfig/printing
fi
else
echo AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=no >> /etc/sysconfig/printing
echo ENABLE_QUEUES_ON_PRINTER_CONNECTED=no >> /etc/sysconfig/printing
fi
%postun
# enable old printer detection system
if [ -f /etc/sysconfig/printing ]; then
if grep -q ^AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED= /etc/sysconfig/printing; then
sed -i 's/AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=.*/AUTO_SETUP_QUEUES_ON_PRINTER_CONNECTED=yes/g' /etc/sysconfig/printing
fi
if grep -q ^ENABLE_QUEUES_ON_PRINTER_CONNECTED= /etc/sysconfig/printing; then
sed -i 's/ENABLE_QUEUES_ON_PRINTER_CONNECTED=.*/ENABLE_QUEUES_ON_PRINTER_CONNECTED=yes/g' /etc/sysconfig/printing
fi
fi
%files udev
%defattr(-,root,root,-)
/lib/udev/*
%dir %{_localstatedir}/run/udev-configure-printer
%verify(not md5 size mtime) %config(noreplace,missingok) %attr(0644,root,root) %{_localstatedir}/run/udev-configure-printer/usb-uris
%{_sysconfdir}/udev/rules.d/*
%endif #obsolete_hal_cups_utils
#---------------------------------------------------------------------
%package libs
Summary: Common code for the graphical and non-graphical pieces
Group: System/Libraries
Requires: python
Requires: foomatic
%description libs
The common code used by both the graphical and non-graphical parts of
the configuration tool.
%files libs -f system-config-printer.lang
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/newprinternotification.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/printerdriversinstaller.conf
%dir %{python_sitelib}/cupshelpers
%{python_sitelib}/cupshelpers/__init__.py*
%{python_sitelib}/cupshelpers/cupshelpers.py*
%{python_sitelib}/cupshelpers/openprinting.py*
%{python_sitelib}/cupshelpers/ppds.py*
%{_libdir}/cups/backend/mdv_backend
%{py_platsitedir}/mdv_printer_custom.py*
%{python_sitelib}/*.egg-info
#--------------------------------------------------------------------
%prep
%setup -q
%patch0 -p1 -b .mdv_custom-applet
%patch1 -p1 -b .mdv_custom-embedded-window
%patch2 -p1 -b .mdv_custom-system-config-printer
%patch3 -p0 -b .start_applet
%patch4 -p1 -b .udev-configue-printer-mdv
%patch6 -p1 -b .git
%patch101 -p1 -b .hpcupsprio
%patch102 -p1 -b .libusb
# Convert InstallPrinterDriver requests to lower-case.
%patch200 -p1 -b .lowercase-mfg-mdl
# update mdv custom translation
tar xvjf %{SOURCE3}
pushd po
for i in *.po; do
if [ ! -f ../po-mdv/$i ]; then
continue
fi
msgcat $i ../po-mdv/$i > ../po-mdv/$i-new
rm -f $i
mv ../po-mdv/$i-new $i
done
popd
%build
aclocal
%if %{use_gitsnap}
./bootstrap
%endif
%configure2_5x \
%if %obsolete_hal_cups_utils
--with-udev-rules
%endif
make
%if %obsolete_hal_cups_utils
# (salem) this hack avoids requiring hplip
gcc %{SOURCE5} -o hp-makeuri-mdv -lhpmud
%endif
%install
rm -rf %buildroot
%makeinstall_std
%if %obsolete_hal_cups_utils
mkdir -p %{buildroot}%{_mozillaextpath}
mkdir -p %{buildroot}%{py_platsitedir}
mkdir -p %{buildroot}%{_bindir}
cp -f hp-makeuri-mdv %{buildroot}%{_bindir}
# Make sure pyc files are generated, otherwise we can get
# difficult to debug problems
pushd %{buildroot}%{_datadir}/%{name}
python -m compileall .
popd
mkdir -p %{buildroot}%{py_platsitedir}
cp -fv %{SOURCE4} %{buildroot}%{py_platsitedir}
pushd %{buildroot}%{py_platsitedir}
python -m compileall .
popd
%{__mkdir_p} %buildroot%{_localstatedir}/run/udev-configure-printer
touch %buildroot%{_localstatedir}/run/udev-configure-printer/usb-uris
%{__mkdir_p} %{buildroot}%{_libdir}/cups/backend
cp -f %{SOURCE6} %{buildroot}%{_libdir}/cups/backend
# Install udev rules for letting backends access the printer devices. Once
# CUPS runs backends as group 'lp', instead of 'sys, we may remove this.
mkdir -p %{buildroot}%{_sysconfdir}/udev/rules.d
install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/udev/rules.d/
%endif
mkdir -p %buildroot%{_bindir}
mkdir -p %buildroot%{_sbindir}
mkdir -p %buildroot%{_sysconfdir}/pam.d
mkdir -p %buildroot%{_sysconfdir}/security/console.apps
install -p -m0644 %{SOURCE1} %buildroot%{_sysconfdir}/pam.d/%{name}
install -p -m0644 %{SOURCE2} %buildroot%{_sysconfdir}/security/console.apps/%{name}
mv %buildroot%{_bindir}/%{name} %buildroot%{_sbindir}/%{name}
ln -s consolehelper %buildroot%{_bindir}/%{name}
%find_lang system-config-printer
%clean
%{__rm} -rf "%{buildroot}"