File cups-drivers.spec of Package cups-drivers
#
# spec file for package cups-drivers (Version 1.3.9)
#
# Copyright (c) 2009 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-drivers
BuildRequires: a2ps bison cairo-devel cups-devel cupsddk foomatic-filters
BuildRequires: gcc-c++ ghostscript-ijs-devel ghostscript-library
BuildRequires: ghostscript-x11 gimp-devel glib2-devel gtk2-devel
BuildRequires: libgimpprint-devel libpng-devel libtiff-devel libxml2-devel
BuildRequires: libxslt openssl-devel pango-devel
License: GPL v2 only ; GPL v2 or later
Group: Hardware/Printing
Summary: Drivers for the Common UNIX Printing System
Version: 1.3.9
Release: 3
Provides: cups_drv
Requires: ghostscript-library >= 7.05, foomatic-filters
PreReq: sysvinit, sh-utils, procps
Obsoletes: cups_drv
AutoReqProv: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# number of jobs to run simultaneously
%define numprocs %(cat %_sourcedir/CPUs 2>/dev/null || echo 1)
# linuxprinting.org database variables
%define DBDate 20080909
%define foomaticver bzr
%define gutenprintver 5.0.2
%define splixver 1.1.1
%define m2300wver 0.51
#URL: http://www.linuxprinting.org/download/foomatic/
Source0: http://www.linuxprinting.org/download/foomatic/foomatic-db-engine-%{foomaticver}-%{DBDate}.tar.bz2
Source1: http://www.linuxprinting.org/download/foomatic/foomatic-filters-%{foomaticver}-%{DBDate}.tar.bz2
Source2: http://www.linuxprinting.org/download/foomatic/foomatic-db-%{foomaticver}-%{DBDate}.tar.bz2
# make sure that gimp-print version NEVER differs from ghostscript-library
Source3: gutenprint-%{gutenprintver}.tar.bz2
Source4: splix-%{splixver}.tar.bz2
Source5: http://heanet.dl.sourceforge.net/sourceforge/m2300w/m2300w-%{m2300wver}.tar.bz2
Source100: foomatic-driver.known
Source101: foomatic-driver.unsupported
Patch0: cups-drivers-1.3.8-A4.patch
Patch1: cups-drivers-1.3.8-samsunggdi.patch
Patch2: cups-drivers-1.1.23-stcolor.patch
Patch3: cups-drivers-1.3.8-hl7x0_language.patch
Patch4: cups-drivers-1.3.8-missing_xml_close.patch
Patch5: cups-drivers-1.3.8-Samsung-CLP-550.patch
Patch6: cups-drivers-1.3.8-gcc_warn.patch
Patch7: cups-drivers-1.3.9-maxspot_compare.patch
Patch300: gutenprint-5.0.0-A4.patch
Patch301: gutenprint-5.0.2-resolution.patch
Patch302: gutenprint-5.0.2-updp10_pagesize.patch
Patch400: splix-1.1.1-install.patch
Patch401: splix-1.1.1-make.patch
Patch500: m2300w-0.51-foomatic.patch
Patch501: m2300w-0.51-resolution.patch
Patch502: m2300w-0.51-disable_gs_test.patch
Patch503: m2300w-fgets-overflow.patch
%description
This package contains free printer driver descriptions for CUPS. It
contains a recent snapshot of the printer database from
http://www.linuxprinting.org.
Authors:
--------
Grant Taylor <www.linuxprinting.com>
%package -n gutenprint
License: GPL v2 or later
Summary: Gutenprint drivers for CUPS
Group: Hardware/Printing
Requires: ghostscript-library >= 7.05, cups >= 1.2.2, pstoraster
Version: %{gutenprintver}
Release: 16
Obsoletes: cups-drivers-stp
Provides: cups-drivers-stp
PreReq: procps
%description -n gutenprint
This package contains the gutenprint drivers (formerly known as
gimp-print drivers) for CUPS.
%package -n gutenprint-devel
License: GPL v2 or later
Summary: Development Environment for Gutenprint
Group: Hardware/Printing
Version: %{gutenprintver}
Release: 16
Requires: ghostscript-library >= 7.05, cups >= 1.2.2, gutenprint = %{gutenprintver}
Requires: gtk2-devel, glibc-devel
%description -n gutenprint-devel
This package contains the development environment for the gutenprint
printer drivers.
Authors:
--------
Grant Taylor <www.linuxprinting.com>
%package -n gutenprint-gimpplugin
License: GPL v2 or later
Summary: GIMP plug-in for gutenprint
Group: Hardware/Printing
Version: %{gutenprintver}
Release: 6
%description -n gutenprint-gimpplugin
This package contains the gutenprint GIMP plug-in.
Authors:
--------
Grant Taylor <www.linuxprinting.com>
%define INSTALL install -m755 -s
%define INSTALL_SCRIPT install -m755
%define INSTALL_DIR install -d -m755
%define INSTALL_DATA install -m644
%prep
%setup -q -c -n %{name}
%setup -q -T -D -a 0 -n %{name}
mv foomatic-db-engine-%{foomaticver}-%{DBDate} foomatic-db-engine
%setup -q -T -D -a 1 -n %{name}
mv foomatic-filters-%{foomaticver}-%{DBDate} foomatic-filters
%setup -q -T -D -a 2 -n %{name}
mv foomatic-db-%{foomaticver}-%{DBDate} foomatic-db
%setup -q -T -D -a 3 -n %{name}
mv gutenprint-%{gutenprintver} gutenprint
%setup -q -T -D -a 4 -n %{name}
mv splix-%{splixver} splix
%setup -q -T -D -a 5 -n %{name}
mv m2300w-%{m2300wver} m2300w
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
#
pushd gutenprint
%patch300 -p1
%patch301 -p1
%patch302 -p1
popd
#
#
pushd splix
%patch400 -p1
%patch401 -p1
popd
#
#
pushd m2300w
%patch500 -p1
%patch501 -p1
%patch502 -p1
%patch503 -p1
popd
#
# ------- %Build ---------------------------------------------------------
%build
# This package failed to build when testing with -Wl,-as-needed
# So we disable it here, if you want to retest, delete this comment
# and the 'export SUSE_ASNEEDED=0' line:
export SUSE_ASNEEDED=0
# abbrev.
mydir=$RPM_BUILD_DIR/%{name}
# Generate a working set into the package source tree
#
##### FOOMATIC
cd foomatic-db
./make_configure
# Fix for lib64 architectures
perl -pi -e "s:/usr/lib/(cups|pdq|ppr):%{_libdir}/\1:g" configure
# delete not included drivers
for i in `ls -1 db/source/driver | sed 's;\.xml$;;' | grep -v -f %{SOURCE100}`;
do
echo "deleting driver $i"
echo "$i (unknown)" >> drivers.deleted
rm -f db/source/driver/$i.xml
done
for i in `cat %{SOURCE101}` ; do
echo "deleting unsupported driver $i"
echo "$i (unsupported)" >> drivers.deleted
rm -f db/source/driver/$i.xml
done
# hpdj fails on ColorMode -> remove it
rm db/source/opt/7.xml
./configure \
--prefix=%{_prefix} \
--mandir=%{_mandir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir} \
--disable-gzip-ppds \
--disable-ppds-to-cups
cd ../foomatic-filters
./make_configure
# Fix for lib64 architectures
perl -pi -e "s:/usr/lib/(cups|pdq|ppr):%{_libdir}/\1:g" configure
./configure \
--prefix=%{_prefix} \
--mandir=%{_mandir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir}
make
#
cd ../foomatic-db-engine
./make_configure
# Fix for lib64 architectures
perl -pi -e "s:/usr/lib/(cups|pdq|ppr):%{_libdir}/\1:g" configure
./configure \
--prefix=%{_prefix} \
--mandir=%{_mandir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir}
make inplace
#
# Delete drivers with empty command line prototype, they would give
# unusable printer/driver combos.
perl ./foomatic-cleanupdrivers ../foomatic-db
#
# Add the Foomatgic data for gutenprint
perl ./foomatic-kitload -k ../gutenprint/src/foomatic/foomatic-db/gutenprint-ijs.5.0 -f
#
# Correct the default drivers of the printer entries to have a valid
# default for every printer.
perl ./foomatic-preferred-driver
#
# Remove inplace build
make clean
#
make PREFIX=%{_prefix} \
PERL_INSTALLDIRS=vendor \
# DESTDIR=%{BuildRoot}
#
cd ../foomatic-db
make \
PREFIX=%{_prefix} \
DESTDIR=$mydir/foomatic-db-engine \
install
cd ../foomatic-filters
make \
PREFIX=%{_prefix} \
DESTDIR=$mydir/foomatic-db-engine \
install
echo "BuilRoot = '"$RPM_BUILD_ROOT\'
cd ../foomatic-db-engine
mkdir -p $mydir/foomatic-db-engine/usr/share/foomatic/templates
make \
PREFIX=%{_prefix} \
DESTDIR=$mydir/foomatic-db-engine \
inplace install
perl -pi -e "s:/usr/(bin|share):./usr/\1:g" Foomatic/Defaults.pm
ln -sf /usr/bin/gzip ./usr/bin
./usr/bin/foomatic-compiledb -j %{numprocs} -f
mkdir model
echo "renaming models"
set +x
for i in `ls -1 ppd | sed 's/-.*//' | sort -u`; do
mkdir model/$i
done
for i in `ls -1 ppd`; do
mv ppd/$i model/`echo $i | sed 's/-.*//'`/`echo $i | sed 's/[A-z]*-//'`
done
set -x
for i in Ricoh Gestetner Infotec Lanier NRG Savin; do
echo "deleting unwished Postscript printer from $i"
rm -f model/$i/*-Postscript.ppd
done
# delete further drivers; already in package manufacturer-PPDs
for i in 2250 2280 2600 2800 3000 2300; do
rm -f model/HP/Business_Inkjet_${i}-Postscript.ppd
done
for i in 2550 2800 3000 3800 4500 4550 4700 4730_MFP 5550 5M 8500 8550; do
rm -f model/HP/Color_LaserJet_${i}-Postscript.ppd
done
for i in 1200 1220 1320 2100 2200 2410 2420 2430 3200 3300 4 4000 4050; do
rm -f model/HP/LaserJet_${i}-Postscript.ppd
done
for i in 4100_MFP 4100 4240 4250 4345_MFP 4350 4ML 4MP 4V 4_Plus; do
rm -f model/HP/LaserJet_${i}-Postscript.ppd
done
for i in 5100 5M 5MP 5Si 6MP 8000 8100 8150 9000_MFP 9000 9040 9050; do
rm -f model/HP/LaserJet_${i}-Postscript.ppd
done
for i in 1300 2300 3015 3380 4200 4300; do
rm -f model/HP/LaserJet_${i}-Postscript.ppd
done
for i in 2500 3700 4600 4610 4650 5500 9500 9500_MFP; do
rm -f model/HP/Color_LaserJet_${i}-Postscript.ppd
done
cd ..
#
##### GUTENPRINT
# start with gutenprint and generate foomatic files.
export PATH=$PATH":$mydir"
pushd gutenprint
CFLAGS="$RPM_OPT_FLAGS -fstack-protector -fno-strict-aliasing -I/usr/include/gtk-2.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I%{_libdir}/gtk-2.0/include -I%{_libdir}/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gimp-2.0" ./configure \
--prefix=%{_prefix} \
--mandir=%{_mandir} \
--infodir=%{_infodir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir} \
--disable-static \
--enable-shared \
--enable-cups-ppds \
--enable-translated-cups-ppds=no \
--enable-simplified-cups-ppds=yes \
--disable-libgutenprintui \
--enable-libgutenprintui2 \
--enable-samples \
--enable-escputil \
--with-pic=yes \
--with-foomatic \
--with-foomatic3 \
--without-gimp \
--with-gimp2 \
--with-ghostscript
make
popd
#
##### SPLIX
#
cd splix
( export CXXFLAGS="$RPM_OPT_FLAGS -I../include "`cups-config --cflags`;
make DISABLE_JBIG=1; )
cd ..
#
##### Minolta 2300W
#
cd m2300w
autoreconf
./configure --prefix=%{_prefix}
make CFLAGS="$RPM_OPT_FLAGS"
cd ..
#
# ------- %Install -------------------------------------------------------
%install
rm -rf $RPM_BUILD_ROOT/usr/share/cups/model
# create required directories first
%{INSTALL_DIR} $RPM_BUILD_ROOT/bin
%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/cups/model
%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/lib/cups/filter
#
##### FOOMATIC
#
# put linuxprinting PPDs into CUPS driver directory
cp -a foomatic-db-engine/model $RPM_BUILD_ROOT/usr/share/cups
chmod -R a+X,u+rw,go+r $RPM_BUILD_ROOT/usr/share/cups/model
#
##### GUTENPRINT
#
cd gutenprint
make DESTDIR=$RPM_BUILD_ROOT \
FOOMATIC_KITLOAD=${RPM_BUILD_DIR}/%{name}/foomatic-db-engine/foomatic-kitload \
install
mv $RPM_BUILD_ROOT/%{_datadir}/cups/model/gutenprint/5.0/C \
$RPM_BUILD_ROOT/%{_datadir}/cups/model
rmdir $RPM_BUILD_ROOT/%{_datadir}/cups/model/gutenprint/5.0
rmdir $RPM_BUILD_ROOT/%{_datadir}/cups/model/gutenprint
mv $RPM_BUILD_ROOT/%{_datadir}/cups/model/C \
$RPM_BUILD_ROOT/%{_datadir}/cups/model/gutenprint
cd ..
#
mv $RPM_BUILD_ROOT/%{_bindir}/testpattern $RPM_BUILD_ROOT/%{_libdir}/gutenprint/%{gutenprintver}
#
##### GUTENPRINT (end)
#
#
# unpack the PPDs for modification (next step)
set +x
echo "unpacking PPD files..."
find $RPM_BUILD_ROOT/usr/share/cups/model -name "*.ppd.gz" | while read PPDFILE
do
gzip -d "$PPDFILE"
done
set -x
#
# fix "Hewlett-Packard" and "HEWLETT-PACKARD" to "HP" (bugzilla#36530)
set +x
echo "replacing \"Hewlett-Packard\" by \"HP\" in PPD files..."
perl -pi -e 's/^(\*Manufacturer[^"]*")Hewlett-Packard"/$1HP"/io;' \
$RPM_BUILD_ROOT/usr/share/cups/model/HP/*.ppd
perl -pi -e 's/^(\*Manufacturer[^"]*")hp"/$1HP"/o;' \
$RPM_BUILD_ROOT/usr/share/cups/model/HP/*.ppd
set -x
#
# unify *Manufacturer and *ModelName (bugzilla#36848)
set +x
echo "replacing \"Okidata\" by \"Oki\" in PPD files..."
perl -pi -e 's/^(\*(Manufacturer|ModelName|ShortNickName|NickName)[^"]*")Okidata/$1Oki/io;' \
$RPM_BUILD_ROOT/usr/share/cups/model/Okidata/*.ppd
set -x
# fix: set CompressionMethod to 0 for DeskJet_500 only
perl -pi -e 's(\(sModel=500\)")($1 -dCompressionMethod=0")' \
$RPM_BUILD_ROOT/usr/share/cups/model/HP/DeskJet_500-hpdj.ppd
set +x
echo "Removing non conform Resolution values in PostScript"
find $RPM_BUILD_ROOT/usr/share/cups/model -name "*-Postscript.ppd" | \
while read PPDFILE; do
perl -pi -e 's/\*DefaultResolution: default/*DefaultResolution: Unknown/; \
s/^\*Resolution default\/Printer Default: .*\n//; \
s/^\*FoomaticRIPOptionSetting Resolution\=default: .*\n//;' \
"$PPDFILE" > /dev/null
done
# append "black and white only" to gutenprint stp-hp-clj* PPDs (bugzilla#220079)
echo "Appending \"black and white only\" to some gutenprint HP printers"
find $RPM_BUILD_ROOT/usr/share/cups/model/gutenprint -name "stp-hp-clj_*.ppd" | \
while read PPDFILE; do
perl -pi -e \
's/^(\*NickName: "HP Color LaserJet.*)"/$1 black and white only"/;' \
"$PPDFILE" > /dev/null
done
### if [ ! -f $RPM_SOURCE_DIR/CPUs ]; then
### exit 1;
### fi
# modify and pack the PPDs
echo "...modifying and compressing PPD files"
find $RPM_BUILD_ROOT/usr/share/cups/model -name "*.ppd" | while read PPDFILE
do
if egrep -q '^\*ImageableArea [[:space:]]*A4[:/]' "$PPDFILE"; then
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":' \
"$PPDFILE" > /dev/null
fi
gzip "$PPDFILE"
done
set -x
#
##### SPLIX
#
cd splix
make CUPSFILTER="$RPM_BUILD_ROOT"%{_libdir}/cups/filter \
CUPSPPD="$RPM_BUILD_ROOT"/usr/share/cups/model \
install \
DISABLE_JBIG=1
cd ..
#
##### Minolta 2300W
#
cd m2300w
make install \
INSTROOT=$RPM_BUILD_ROOT \
DOCDIR=$RPM_BUILD_ROOT/%{_defaultdocdir}/%{name}/m2300w-%{m2300wver}
rm -rf $RPM_BUILD_ROOT/usr/share/YaST2
gzip -9 $RPM_BUILD_ROOT/usr/share/cups/model/Minolta/*-m2?00w.ppd
cd ..
#
# LSB requirements
#
# Create LSB directories
install -d -m 755 $RPM_BUILD_ROOT/usr/share/ppd
install -d -m 755 $RPM_BUILD_ROOT/usr/lib/printdriver
# set LSB symlink to let CUPS find the PPDs
ln -s /usr/share/ppd $RPM_BUILD_ROOT/usr/share/cups/model/0-driverppds
#
%clean
test -n "$RPM_BUILD_ROOT" &&
test "$RPM_BUILD_ROOT" != / &&
true
# rm -rf $RPM_BUILD_ROOT
#
# ------- %Post ----------------------------------------------------------
%post
# send CUPS daemon signal to import new files
if test -x /etc/init.d/cups && /etc/init.d/cups status >/dev/null ; then
/etc/init.d/cups reload >/dev/null || /bin/true
fi
exit 0
%post -n gutenprint
%run_ldconfig
# send CUPS daemon signal to import new files
if test -x /etc/init.d/cups && /etc/init.d/cups status >/dev/null ; then
/etc/init.d/cups reload >/dev/null || /bin/true
fi
exit 0
%postun -n gutenprint
%run_ldconfig
# ------- %Files ---------------------------------------------------------
%files
%defattr(-,root,root)
%{_bindir}/m2300w
%{_bindir}/m2400w
%{_bindir}/m2300w-wrapper
%dir /usr/share/cups
%dir /usr/share/cups/model
%dir /usr/share/cups/model/[A-Z]*
# LSB 3.2 follows...
%dir /usr/share/ppd
%dir /usr/lib/printdriver
%dir /usr/share/cups/model/0-driverppds
# enf of LSB 3.2 stuff
/usr/share/cups/model/[A-Z]*/*.ppd*
%{_libdir}/cups/filter/rastertospl2
%dir /usr/share/m2300w
%dir /usr/share/m2300w/%{m2300wver}
%dir /usr/share/m2300w/%{m2300wver}/psfiles
/usr/share/m2300w/%{m2300wver}/psfiles/*
%doc %{_defaultdocdir}/%{name}
%files -n gutenprint
%defattr(-,root,root)
%config /etc/cups/command.types
%{_bindir}/cups-calibrate
%{_bindir}/escputil
%{_bindir}/ijsgutenprint.5.0
%{_libdir}/cups/backend
%{_libdir}/cups/filter/c*
%{_libdir}/cups/filter/rastertogutenprint*
%{_sbindir}/cups-genppd*
%dir /usr/share/cups
%dir /usr/share/cups/model
/usr/share/cups/calibrate.ppm
%dir /usr/share/cups/model/gutenprint
/usr/share/cups/model/gutenprint/*
%dir %{_libdir}/gutenprint
%dir %{_libdir}/gutenprint/%{gutenprintver}
%{_libdir}/gutenprint/%{gutenprintver}/*
%{_libdir}/libgutenprint*.so?*
%dir /usr/share/gutenprint
/usr/share/gutenprint/*
/usr/share/locale/*/*/gutenprint*
%doc /usr/share/man/man?/*.gz
%dir %{_libdir}/cups/driver
%{_libdir}/cups/driver/gutenprint*
%files -n gutenprint-devel
%defattr(-,root,root)
%dir /usr/include/gutenprint
/usr/include/gutenprint/*
%dir /usr/include/gutenprintui2
/usr/include/gutenprintui2/*
%{_libdir}/libgutenprint*.la
%{_libdir}/pkgconfig/gutenprint*
%{_libdir}/libgutenprint*.so
%files -n gutenprint-gimpplugin
%defattr(-,root,root)
%{_libdir}/gimp/2.0/plug-ins/*
%changelog