cups/cups.spec

502 lines
18 KiB
RPMSpec
Raw Blame History

#
# spec file for package cups (Version 1.3.11)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: cups
BuildRequires: avahi-compat-mDNSResponder-devel dbus-1-devel gcc-c++
BuildRequires: krb5-devel libpng-devel libtiff-devel openldap2-devel
BuildRequires: openslp-devel openssl-devel pam-devel pkg-config tcpd-devel
BuildRequires: fdupes update-desktop-files
PreReq: textutils, fileutils, sh-utils, %insserv_prereq,
PreReq: %fillup_prereq /usr/sbin/groupadd
Url: http://www.cups.org/
License: GPLv2+
Group: Hardware/Printing
Summary: The Common UNIX Printing System
Version: 1.3.11
Release: 7
Requires: cups-libs = %{version}, cups-client = %{version}
Requires: ghostscript_any, ghostscript-fonts-std, foomatic-filters
Requires: util-linux /usr/bin/pdftops
%if 0%{?suse_version} >= 1100
Requires: pdftools_any
%endif
Suggests: poppler-tools
Conflicts: plp lprold lprng
Obsoletes: cups-SUSE-ppds-dat
# URL for Source0: http://ftp.easysw.com/pub/cups/1.3.11/cups-1.3.11-source.tar.bz2
# MD5 sum for Source0 on http://www.cups.org/software.php is 17f3e2bcb3cae3dd9dceb65a2bfd295f
Source0: cups-%{version}-source.tar.bz2
Source1: poll_ppd_base.c
Source2: lphelp.c
Source3: dvitops
Source4: pswrite
Source5: baselibs.conf
Source7: ogonki
Source8: cups.init
Source9: http://amaru.ti6.tu-harburg.de/portal/Members/ti6ntm/Projekte/Printanalyzer/PrintAnalyzer
Source10: http://homepages.nyu.edu/~ml1100/files/quosnmp
Source11: setcupsbroadcasting
Source12: postscript.ppd.bz2
Source13: cups.sysconfig
Source14: cups.xinetd
Source15: PSLEVEL1.PPD.bz2
Source16: PSLEVEL2.PPD.bz2
Source17: cups.SuSEfirewall2
Source18: http://download.sourceforge.net/cups-mailto/cups-pdf.ppd
Source19: http://download.sourceforge.net/cups-mailto/cups-pstopdf
Source20: cups-krb5-config
Source21: cups-client.conf
Source22: cups-1.4svn-pdftops.c
Patch1: cups-1.3.3-mime.patch
Patch2: cups-1.2.0-ppdsdat_generation.patch
Patch3: cups-1.2rc1-template.patch
Patch4: cups-1.2.7-libwrap.patch
Patch5: cups-pam.diff
Patch6: cups-1.3.6-access_conf.patch
# Patch9 cups-1.1.21rc2-preauth_security.patch is finally removed
# since CUPS 1.3.10 because it was made for CUPS 1.1 and
# it was no longer applied since CUPS 1.2 in Suse Linux 10.3 and
# we did not get any user or SLE11 customer request for it.
# Patch10 cups-1.1.21rc2-usermode.patch is finally removed
# since CUPS 1.3.10 because it was made for CUPS 1.1 and
# can no longer apply since CUPS 1.2 in Suse Linux 10.3 because
# RunAsUser in cupsd.conf is no longer supported since CUPS 1.2.
Patch12: cups-1.3.3-pswrite.patch
# Patch13 cups-1.1.21-umlaut_printer.patch is finally removed
# since CUPS 1.3.10 because it was made for CUPS 1.1 and
# it was no longer applied since CUPS 1.2 in Suse Linux 10.3 and
# we did not get any user or SLE11 customer request for it.
Patch14: cups-1.1.21-testppd_duplex.patch
Patch15: cups-1.2.11-testppd_filename.patch
Patch16: cups-1.3.9-desktop_file.patch
Patch17: cups-1.3.3-testppd_none.patch
# Patch18 cups-1.4svn-pdftops_as_filter.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch19 cups-1.4svn-pdftops_dont_fail_on_cancel.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
Patch20: cups-1.3.7-keeping_recommended.patch
Patch21: cups-1.3.7-lppasswd_fixperm.patch
Patch22: cups-1.3.7-additional_policies.patch
# Patch23 cups-1.3.9-cupstestppd.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch24 cups-1.3.9-max_subscription.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch25 cups-1.3.9-filter_png_overflow2.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch26 cups-1.3.9-hpgltops2.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch27 cups-1.3.9-cupsImageReadTiff.patch is obsolete
# since CUPS 1.3.10 because it is fixed in the source.
# Patch28 cups-1.3.10-fix-DNS-rebinding-protection.patch is obsolete
# since CUPS 1.3.11 because it is fixed in the source.
# Patch29 full_path_to_configure_with-pdftops.patch adds support
# to specify a full path in 'configure --with-pdftops=/usr/bin/pdftops'
# to avoid 'BuildRequires: xpdf-tools' which would bloat the build system
# but would be only needed to satisfy 'AC_PATH_PROG(CUPS_PDFTOPS, pdftops)'
# in cups-pdf.m4 if only 'configure --with-pdftops=pdftops' was possible:
Patch29: full_path_to_configure_with-pdftops.patch
# Patch30 fixes CUPS Web Interface Cross-Site Scripting (XSS) and CRLF injection in HTTP headers,
# (CVE-2009-2820 and Novell/Suse Bugzilla bnc#548317):
Patch30: cups-1.3.11-CVE-2009-2820.patch
# Patch31 fixes a regression which was introduced by Patch30
# now adding a class via web interface fails with 'Unknown operation "{op}"'
# (Novell/Suse Bugzilla bnc#548317 starting at comment #24):
Patch31: cups-1.3.11-CVE-2009-2820-regression-fix.patch
# Patch32 fixes a use-after-free bug in the scheduler which leads to remote denial of service,
# (CVE-2009-3553, CUPS STR #3200, and Novell/Suse Bugzilla bnc#554861):
Patch32: cups-1.3.9-CVE-2009-3553.patch
# Patch100 cups-1.1.23-testpage.patch is finally removed
# since CUPS 1.3.10 because it was made for CUPS 1.1 and
# it was no longer applied since CUPS 1.2 in Suse Linux 10.3 and
# we did not get any user or SLE11 customer request for it.
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
The Common UNIX Printing System provides a portable printing layer for
UNIX<EFBFBD> operating systems like BSD lp or lprng. CUPS provides some
additional features.
http://www.cups.org
Authors:
--------
Easy Software Products <cups@cups.org>
%define INSTALL install -m755
%define INSTALL_SCRIPT install -m755
%define INSTALL_DIR install -d -m755
%define INSTALL_DATA install -m644
%define CPUs %(grep -c ^processor\ /proc/cpuinfo || echo 1)
%package libs
License: GPLv2+ ; LGPLv2.1+
Summary: Libraries for CUPS
Group: Hardware/Printing
# bug437293
%ifarch ppc64
Obsoletes: cups-libs-64bit
%endif
#
%description libs
The Common UNIX Printing System provides a portable printing layer for
UNIX<EFBFBD> operating systems like BSD lp or lprng. CUPS provides some
additional features. This package contains libraries needed by CUPS and
some other packages.
Authors:
--------
Easy Software Products <cups@cups.org>
%package client
License: GPLv2+
Summary: CUPS Client Programs
Group: Hardware/Printing
Conflicts: plp lprold lprng
Requires: cups-libs = %{version}
%description client
The Common UNIX Printing System provides a portable printing layer for
UNIX<EFBFBD> operating systems like BSD lp or lprng. CUPS provides some
additional features. This package contains all programs needed for
running a CUPS client, not a server.
Authors:
--------
Easy Software Products <cups@cups.org>
%package devel
License: GPLv2+
Summary: Development Environment for CUPS
Group: Development/Libraries/C and C++
Requires: %{name}-libs = %{version} openssl-devel glibc-devel krb5-devel
# bug437293
%ifarch ppc64
Obsoletes: cups-devel-64bit
%endif
#
%description devel
The Common UNIX Printing System provides a portable printing layer for
UNIX<EFBFBD> operating systems like BSD lp or lprng. CUPS provides some
additional features. This is the development package.
http://www.cups.org
Authors:
--------
Easy Software Products <cups@cups.org>
%prep
# Be quiet when unpacking:
%setup -q -n %{name}-%{version}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5
%patch6 -p1
%patch12 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
# Patch29 full_path_to_configure_with-pdftops.patch adds support
# for 'configure --with-pdftops=/usr/bin/pdftops':
%patch29
# Patch30 fixes CUPS Web Interface Cross-Site Scripting (XSS) and CRLF injection in HTTP headers,
# (CVE-2009-2820 and Novell/Suse Bugzilla bnc#548317):
%patch30 -p1
# Patch31 fixes a regression which was introduced by Patch30
# now adding a class via web interface fails with 'Unknown operation "{op}"'
# (Novell/Suse Bugzilla bnc#548317 starting at comment #24):
%patch31
# Patch32 fixes a use-after-free bug in the scheduler which leads to remote denial of service,
# (CVE-2009-3553, CUPS STR #3200, and Novell/Suse Bugzilla bnc#554861):
%patch32
if [ -f /.buildenv ]; then
. /.buildenv
test -z "$BUILD_DISTRIBUTION_NAME" && BUILD_DISTRIBUTION_NAME="%{?distribution}"
fi
test -z "$BUILD_DISTRIBUTION_NAME" && BUILD_DISTRIBUTION_NAME="personal build CUPS version"
perl -pi -e "s|SUSEVERSION|$BUILD_DISTRIBUTION_NAME|; \
s/CUPSVERSION/%{version}/" %{PATCH100}
# fix hardcoded $_libdir path to real architecture dependend $_libdir
perl -pi -e 's|(CUPS_SERVERBIN=\")\$exec_prefix/lib|$1'%{_libdir}'|' \
config-scripts/cups-directories.m4
cp -a %{SOURCE9} .
cp -a %{SOURCE10} .
%{INSTALL_SCRIPT} %{SOURCE20} krb5-config
%build
# To build the /usr/lib/cups/filter/pdftops filter
# (via the configure options --enable-pdftops, --with-pdftops=pdftops)
# the config-scripts/cups-pdf.m4 tests if there is a pdftops executable in its path
# which could be satisfied with 'BuildRequires: xpdf-tools' which would bloat the build system
# so that we fake a pdftops executable with the following link:
ln -s /bin/true pdftops
%{?suse_update_config:%{suse_update_config -f . }}
libtoolize --force
aclocal
autoconf
%if %suse_version >= 1010
export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS -O2 -fno-strict-aliasing -fstack-protector"
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fstack-protector -DLDAP_DEPRECATED"
%else
export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS -O2 -fno-strict-aliasing"
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
%endif
export CXX=g++
KRB5CONFIG=${PWD}/krb5-config ./configure \
--mandir=%{_mandir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir} \
--datadir=%{_datadir} \
--with-docdir=%{_defaultdocdir}/%{name} \
--with-cups-user=lp \
--with-cups-group=lp \
--enable-pie \
--enable-relro \
--enable-gssapi \
--disable-static \
--without-rcdir \
--enable-dbus \
--enable-ldap \
--with-java \
--with-php \
--with-python \
--with-python \
--with-cachedir \
--with-pdftops=/usr/bin/pdftops \
--prefix=/
# perl -pi -e 's:^(OPTIONS\s+\=):$1 -I/usr/X11R6/include -O2 -fstack-protector -fno-strict-aliasing:' Makedefs
# perl -pi -e 's:^(INSTALL_BIN\s+\=.*)-s:$1:' Makedefs
# for debugging enable:
#perl -pi -e 's:^(OPTIONS\s+\=):$1 -I/usr/X11R6/include -O2 -fno-strict-aliasing -g -DDEBUG:' Makedefs
#perl -pi -e 's:^(OPTIM\s+\=):$1 -g -DDEBUG:' Makedefs
make %{?jobs:-j%jobs} CXX=g++
# Compile additional tools
gcc -opoll_ppd_base $CFLAGS -fPIC -fPIE -pie -I. -L./cups %{SOURCE1} -lcups
gcc -olphelp $CFLAGS -fPIC -fPIE -pie -I. -L./cups %{SOURCE2} -lcups
%install
make BUILDROOT=$RPM_BUILD_ROOT \
install
if [ x%{version} = x"1.1.18" ]; then
mv $RPM_BUILD_ROOT/usr/sbin/cupstestppd \
$RPM_BUILD_ROOT/usr/bin/cupstestppd
fi
# place CUPS-O-MATIC script in CUPS filter directory
%{INSTALL_SCRIPT} %{SOURCE7} $RPM_BUILD_ROOT%{_libdir}/cups/filter
%{INSTALL_SCRIPT} %{SOURCE3} $RPM_BUILD_ROOT%{_libdir}/cups/filter
%{INSTALL_SCRIPT} %{SOURCE4} $RPM_BUILD_ROOT%{_libdir}/cups/filter
# might no longer be needed: ln -s /etc/cups/printcap $RPM_BUILD_ROOT/etc
# install the two little tools
install -m 755 poll_ppd_base $RPM_BUILD_ROOT/usr/bin/
install -m 755 lphelp $RPM_BUILD_ROOT/usr/bin/
%{INSTALL_DIR} $RPM_BUILD_ROOT/etc/init.d
%{INSTALL_SCRIPT} %{SOURCE8} $RPM_BUILD_ROOT/etc/init.d/cups
%{INSTALL_DIR} $RPM_BUILD_ROOT/var/adm/fillup-templates
install -m 644 %{SOURCE13} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.cups
perl -pi -e "s:\@LIB\@:%{_libdir}:g" $RPM_BUILD_ROOT/etc/init.d/cups
ln -sf ../../etc/init.d/cups $RPM_BUILD_ROOT/usr/sbin/rccups
#
rm -r $RPM_BUILD_ROOT/usr/share/cups/fonts
#mkdir -p /usr/share/ghostscript/fonts
mkdir -p $RPM_BUILD_ROOT/usr/share/ghostscript/fonts
ln -sf /usr/share/ghostscript/fonts $RPM_BUILD_ROOT/usr/share/cups/
# make directory for ssl files:
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cups/ssl
# add old client.conf as reference:
%{INSTALL_DATA} %{SOURCE21} $RPM_BUILD_ROOT%{_sysconfdir}/cups/client.conf
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d
install -m 644 -D packaging/cups-dbus.conf $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d/cups.conf
install -m 644 -D %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/cups-lpd
perl -pi -e "s:\@LIB\@:%{_libdir}:g" $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/cups-lpd
ln -sf libcupsimage.so.2 $RPM_BUILD_ROOT%{_libdir}/libcupsimage.so
ln -sf libcups.so.2 $RPM_BUILD_ROOT%{_libdir}/libcups.so
ln -sf ../sbin/lpc $RPM_BUILD_ROOT/usr/bin/lpc # bugzilla#16652
%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/cups/drivers
%{INSTALL_DIR} $RPM_BUILD_ROOT/var/cache/cups
%{INSTALL_DIR} $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}
%{INSTALL_DIR} $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}/images
install -m 644 -D conf/pam.suse $RPM_BUILD_ROOT/etc/pam.d/cups
install -m 755 PrintAnalyzer $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}/
install -m 755 quosnmp $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}/
for f in CHANGES*.txt CREDITS.txt INSTALL.txt LICENSE.txt README.txt; do
install -m 644 "$f" $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}/
done
bzip2 -cd < %{SOURCE12} > $RPM_BUILD_ROOT%{_datadir}/cups/model/Postscript.ppd
bzip2 -cd < %{SOURCE15} > $RPM_BUILD_ROOT%{_datadir}/cups/model/Postscript-level1.ppd
bzip2 -cd < %{SOURCE16} > $RPM_BUILD_ROOT%{_datadir}/cups/model/Postscript-level2.ppd
%{INSTALL_DATA} %{SOURCE18} $RPM_BUILD_ROOT%{_datadir}/cups/model/PDF.ppd
find %{buildroot}/usr/share/cups/model -name "*.ppd" | while read FILE
do
# change default paper size from letter to A4 if possible (bugzilla#30662)
# and delete trailing whitespace
perl -pi -e 's:^(\*Default.*)Letter\s*$:$1A4\n:; \
s:^(\*ImageableArea A4.*\:\s+)"0 0 595 842":$1"24 48 571 818":; \
s:^(\*ImageableArea Letter.*\:\s+)"0 0 612 792":$1"24 48 588 768":; \
s:\s\n:\n:' \
"$FILE"
gzip -9 "$FILE"
done
# add files for menu
rm -f $RPM_BUILD_ROOT//usr/share/applications/cups.desktop
%suse_update_desktop_file -i -r %name PrintingUtility 2>/dev/null
mkdir $RPM_BUILD_ROOT/usr/share/pixmaps
install -m 644 $RPM_BUILD_ROOT/usr/share/icons/hicolor/64x64/apps/cups.png $RPM_BUILD_ROOT/usr/share/pixmaps
rm -rf $RPM_BUILD_ROOT/usr/share/icons
# remove unpackaged files
rm -rf $RPM_BUILD_ROOT/%{_mandir}/es/cat?
rm -rf $RPM_BUILD_ROOT/%{_mandir}/fr/cat?
rm -rf $RPM_BUILD_ROOT/%{_mandir}/cat?
#
# SuSEfirewall2:
install -d $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/
install -m 644 %{SOURCE17} $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/cups
# remove unknown locale directory
rm -rf $RPM_BUILD_ROOT/usr/share/locale/no
%fdupes $RPM_BUILD_ROOT
%clean
#test -n "$RPM_BUILD_ROOT" && rm -rf $RPM_BUILD_ROOT
%pre
/usr/sbin/groupadd -g 71 -o -r ntadmin 2>/dev/null || :
%post libs -p /sbin/ldconfig
%post
%{fillup_and_insserv -ny cups cups}
%preun
%stop_on_removal cups
%postun
%restart_on_update cups
%{insserv_cleanup}
%postun libs -p /sbin/ldconfig
%files
%defattr(-,root,root)
%dir %attr(700,root,lp) %{_sysconfdir}/cups/ssl
%dir %attr(755,root,lp) %{_sysconfdir}/cups/ppd
%config(noreplace) %attr(640,root,lp) %{_sysconfdir}/cups/cupsd.conf
%config(noreplace) %attr(640,root,lp) %{_sysconfdir}/cups/snmp.conf
%{_sysconfdir}/cups/cupsd.conf.default
%{_sysconfdir}/dbus-1/system.d/cups.conf
%config(noreplace) %attr(755,lp,lp) %{_sysconfdir}/cups/interfaces
%config(noreplace) %{_sysconfdir}/cups/mime.*
%config(noreplace) %{_sysconfdir}/xinetd.d/cups-lpd
%{_bindir}/poll_ppd_base
%{_bindir}/cupstestppd
%{_bindir}/cupstestdsc
%dir %{_libdir}/cups
%dir %{_libdir}/cups/backend
%{_libdir}/cups/backend/http
%{_libdir}/cups/backend/ipp
%{_libdir}/cups/backend/lpd
%{_libdir}/cups/backend/parallel
%{_libdir}/cups/backend/scsi
%{_libdir}/cups/backend/snmp
%{_libdir}/cups/backend/serial
%{_libdir}/cups/backend/socket
%{_libdir}/cups/backend/usb
%{_libdir}/cups/cgi-bin
%{_libdir}/cups/daemon
%dir %{_libdir}/cups/driver
%dir %{_libdir}/cups/filter
%{_libdir}/cups/filter/[abd-z]*
%dir %{_libdir}/cups/monitor
%{_libdir}/cups/monitor/*
%dir %{_libdir}/cups/notifier
%{_libdir}/cups/notifier/*
%{_sbindir}/cupsaddsmb
%{_sbindir}/cupsctl
%{_sbindir}/cupsd
%{_sbindir}/cupsfilter
%{_sbindir}/rc*
%dir %attr(0775,root,ntadmin) /usr/share/cups/drivers
%dir /usr/share/cups
/usr/share/applications/cups.desktop
/usr/share/pixmaps/cups.png
/usr/share/cups/[bcf-t]*
/usr/share/cups/d[ao]*
%dir %attr(0775,lp,lp) /var/cache/cups
%config %attr(0755,root,root) /etc/init.d/cups
%config /etc/pam.d/cups
/var/adm/fillup-templates/sysconfig.cups
%doc %{_defaultdocdir}/%{name}
%doc %{_mandir}/man5/*
%doc %{_mandir}/man7/*
%doc %{_mandir}/man8/*
%files client
%defattr(-,root,root)
%{_bindir}/lp
%{_bindir}/lpc
%{_bindir}/lphelp
%{_bindir}/lpoptions
%attr(2755,lp,lp) %{_bindir}/lppasswd
%{_bindir}/lpq
%{_bindir}/lpr
%{_bindir}/lprm
%{_bindir}/lpstat
%{_bindir}/cancel
%{_sbindir}/*able
%{_sbindir}/accept
%{_sbindir}/lp*
%{_sbindir}/reject
%doc %{_mandir}/man1/[a-eg-z]*
%files devel
%defattr(-,root,root)
%{_includedir}/cups
%{_libdir}/libcups.so
%{_libdir}/libcupsimage.so
%files libs
%defattr(-,root,root)
%{_bindir}/cups-config
# %dir %attr(0775,root,lp) %{_sysconfdir}/cups/
%dir %attr(0710,root,lp) %{_var}/spool/cups
%dir %attr(1770,root,lp) %{_var}/spool/cups/tmp
%dir %attr(0755,lp,lp) %{_var}/log/cups/
%config(noreplace) %{_sysconfdir}/cups/client.conf
%config(noreplace) /etc/sysconfig/SuSEfirewall2.d/services/cups
%{_libdir}/libcups.so.*
%{_libdir}/libcupsimage.so.*
%{_datadir}/locale/*/cups_*
%changelog