From 5f43bc4bb600818f73ae034e401f01029c40300f Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Wed, 30 Nov 2011 19:33:53 +0100 Subject: [PATCH] Patch for compiling/installing DRVs instead of PPDs. However we still ship only selected PPDs instead of DRVs as some printers require JBIG1 support. Install splix PPDs into separate directory. --- splix-custom-ppd-dir.patch | 12 +++ splix-drv.patch | 211 +++++++++++++++++++++++++++++++++++++ splix.spec | 52 ++++++--- 3 files changed, 263 insertions(+), 12 deletions(-) create mode 100644 splix-custom-ppd-dir.patch create mode 100644 splix-drv.patch diff --git a/splix-custom-ppd-dir.patch b/splix-custom-ppd-dir.patch new file mode 100644 index 0000000..0812c2c --- /dev/null +++ b/splix-custom-ppd-dir.patch @@ -0,0 +1,12 @@ +diff -up splix/module.mk.custom-ppd-dir splix/module.mk +--- splix/module.mk.custom-ppd-dir 2011-07-20 18:20:18.000000000 +0200 ++++ splix/module.mk 2011-11-30 17:05:22.909275151 +0100 +@@ -55,7 +55,7 @@ endif + + # Get some information + CUPSFILTER := `cups-config --serverbin`/filter +-CUPSPPD := `cups-config --datadir`/model ++CUPSPPD ?= `cups-config --datadir`/model + ifeq ($(ARCHI),Darwin) + PSTORASTER := pstocupsraster + else diff --git a/splix-drv.patch b/splix-drv.patch new file mode 100644 index 0000000..5ef31b2 --- /dev/null +++ b/splix-drv.patch @@ -0,0 +1,211 @@ +diff -up splix/INSTALL.drv-only splix/INSTALL +--- splix/INSTALL.drv-only 2008-06-15 00:22:11.000000000 +0200 ++++ splix/INSTALL 2011-11-30 19:27:25.112732948 +0100 +@@ -114,6 +114,9 @@ options are: + memory will use an average of 9Mo of RAM. Other pages + are swapped into the disk. A little CACHESIZE value will + increase disk access and increase the job rendering time. ++ * DRV_ONLY=1 [0 by default]: ++ Don't install PPD files at all, only DRV ++ (driver information file) files. + + Example: + +diff -up splix/module.mk.drv-only splix/module.mk +--- splix/module.mk.drv-only 2011-11-30 19:27:25.110732973 +0100 ++++ splix/module.mk 2011-11-30 19:27:25.113732935 +0100 +@@ -9,6 +9,7 @@ + # Compilation option: + # V=1 Verbose mode + # DESTDIR=xxx Change the destination directory prefix ++# DRV_ONLY Don't install PPD files at all, only DRV files. + + MODE := optimized + +@@ -23,6 +24,7 @@ CACHESIZE ?= 30 + DISABLE_JBIG ?= 0 + DISABLE_THREADS ?= 0 + DISABLE_BLACKOPTIM ?= 0 ++DRV_ONLY ?= 0 + + + # Flags +@@ -56,6 +58,7 @@ endif + # Get some information + CUPSFILTER := `cups-config --serverbin`/filter + CUPSPPD ?= `cups-config --datadir`/model ++CUPSDRV ?= `cups-config --datadir`/drv + ifeq ($(ARCHI),Darwin) + PSTORASTER := pstocupsraster + else +@@ -63,7 +66,7 @@ PSTORASTER := pstoraster + endif + GSTORASTER := gstoraster + CUPSPROFILE := `cups-config --datadir`/profiles +-export CUPSFILTER CUPSPPD ++export CUPSFILTER CUPSPPD CUPSDRV + + + # Specific information needed by pstoqpdl +diff -up splix/ppd/compile.sh.drv-only splix/ppd/compile.sh +--- splix/ppd/compile.sh.drv-only 2010-07-31 19:11:24.000000000 +0200 ++++ splix/ppd/compile.sh 2011-11-30 19:27:25.113732935 +0100 +@@ -28,13 +28,13 @@ parseFile() { + # + # Main script + # +-if [ "$2" = "debug" ]; then +- TMPFILE="output.drv" ++if [ "$2" = "drv" ]; then + DRIVER=$1 ++ OUTFILE=${DRIVER%.in} + shift 1 + +- echo "" > $TMPFILE +- parseFile $DRIVER $TMPFILE ++ echo "" > $OUTFILE ++ parseFile $DRIVER $OUTFILE + + + elif [ "$2" = "lang" ]; then +diff -up splix/ppd/Makefile.drv-only splix/ppd/Makefile +--- splix/ppd/Makefile.drv-only 2011-07-21 17:22:26.000000000 +0200 ++++ splix/ppd/Makefile 2011-11-30 19:28:36.440841223 +0100 +@@ -5,7 +5,8 @@ + # + # + +-SOURCE := samsung.drv dell.drv xerox.drv lexmark.drv toshiba.drv ++SOURCE := samsung.drv.in dell.drv.in xerox.drv.in lexmark.drv.in toshiba.drv.in ++DRVS := samsung.drv dell.drv xerox.drv lexmark.drv toshiba.drv + DELL := 1100 1110 + SAMSUNG := clp500 clp550 clp510 clp610 clp610nd ml1510 ml1520 ml1610 \ + ml1630 ml1640 ml1660 ml1710 ml1740 ml1750 ml1910 ml1915 \ +@@ -42,39 +43,47 @@ printCmd = $(if $(filter $(V),1), + + all: + ++.PHONY: drv ++drv: $(SOURCE) ++ ./compile.sh samsung.drv.in drv ++ ./compile.sh dell.drv.in drv ++ ./compile.sh xerox.drv.in drv ++ ./compile.sh lexmark.drv.in drv ++ ./compile.sh toshiba.drv.in drv ++ + .PHONY: ppd + ppd: $(DRIVER) $(LANGDRIVERSEXT) + + $(DRIVER): $(SOURCE) +- ./compile.sh samsung.drv -I . -d ./ +- ./compile.sh dell.drv -I . -d ./ +- ./compile.sh xerox.drv -I . -d ./ +- ./compile.sh lexmark.drv -I . -d ./ +- ./compile.sh toshiba.drv -I . -d ./ ++ ./compile.sh samsung.drv.in -I . -d ./ ++ ./compile.sh dell.drv.in -I . -d ./ ++ ./compile.sh xerox.drv.in -I . -d ./ ++ ./compile.sh lexmark.drv.in -I . -d ./ ++ ./compile.sh toshiba.drv.in -I . -d ./ + + $(LANGDRIVERSEXT): $(SOURCE) $(patsubst %, $(PODIR)/%.$(POEXT), $(LANGUAGES)) + lang=$(patsubst $(MASTERDRIVER)%.$(DRIVERSEXT),%, $@); \ +- ./compile.sh samsung.drv -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ ++ ./compile.sh samsung.drv.in -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ + for filename in ${SAMSUNG}; do \ + recode utf8..latin1 ${PODIR}/$$lang/$$filename.${DRIVERSEXT}; \ + mv ${PODIR}/$$lang/$$filename.${DRIVERSEXT} $$filename$$lang.${DRIVERSEXT}; \ + done; \ +- ./compile.sh xerox.drv -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ ++ ./compile.sh xerox.drv.in -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ + for filename in ${XEROX}; do \ + recode utf8..latin1 ${PODIR}/$$lang/$$filename.${DRIVERSEXT}; \ + mv ${PODIR}/$$lang/$$filename.${DRIVERSEXT} $$filename$$lang.${DRIVERSEXT}; \ + done; \ +- ./compile.sh dell.drv -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ ++ ./compile.sh dell.drv.in -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ + for filename in ${DELL}; do \ + recode utf8..latin1 ${PODIR}/$$lang/$$filename.${DRIVERSEXT}; \ + mv ${PODIR}/$$lang/$$filename.${DRIVERSEXT} $$filename$$lang.${DRIVERSEXT}; \ + done; \ +- ./compile.sh lexmark.drv -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ ++ ./compile.sh lexmark.drv.in -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ + for filename in ${LEXMARK}; do \ + recode utf8..latin1 ${PODIR}/$$lang/$$filename.${DRIVERSEXT}; \ + mv ${PODIR}/$$lang/$$filename.${DRIVERSEXT} $$filename$$lang.${DRIVERSEXT}; \ + done; \ +- ./compile.sh toshiba.drv -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ ++ ./compile.sh toshiba.drv.in -l $$lang -c ${PODIR}/$$lang.${POEXT} -d ${PODIR}/$$lang; \ + for filename in ${TOSHIBA}; do \ + recode utf8..latin1 ${PODIR}/$$lang/$$filename.${DRIVERSEXT}; \ + mv ${PODIR}/$$lang/$$filename.${DRIVERSEXT} $$filename$$lang.${DRIVERSEXT}; \ +@@ -83,19 +92,21 @@ $(LANGDRIVERSEXT): $(SOURCE) $(patsubst + .PHONY: update + update: $(patsubst %, $(PODIR)/%.$(POEXT), $(LANGUAGES)) + %.po: $(SOURCE) +- ./compile.sh samsung.drv lang $@ +- ./compile.sh dell.drv lang $@ +- ./compile.sh xerox.drv lang $@ +- ./compile.sh lexmark.drv lang $@ +- ./compile.sh toshiba.drv lang $@ ++ ./compile.sh samsung.drv.in lang $@ ++ ./compile.sh dell.drv.in lang $@ ++ ./compile.sh xerox.drv.in lang $@ ++ ./compile.sh lexmark.drv.in lang $@ ++ ./compile.sh toshiba.drv.in lang $@ + + cmd_install_samsung = INSTALL Samsung PPD files + cmd_install_xerox = INSTALL Xerox PPD files + cmd_install_dell = INSTALL Dell PPD files + cmd_install_lexmark = INSTALL Lexmark PPD files + cmd_install_toshiba = INSTALL Toshiba PPD files ++cmd_install_drv = INSTALL DRV files + .PHONY: install + install: ++ifneq ($(DRV_ONLY),1) + $(call printCmd, $(cmd_install_samsung)) + $(Q)install -d -m 755 ${DESTDIR}${CUPSPPD}/samsung + $(Q)for filename in ${SAMSUNG}; do \ +@@ -136,8 +147,16 @@ install: + install -m 644 $$filename$$lang.${DRIVERSEXT} ${DESTDIR}${CUPSPPD}/toshiba;\ + done; \ + done; ++else ++ $(call printCmd, $(cmd_install_drv)) ++ $(Q)install -d -m 755 ${DESTDIR}${CUPSDRV} ++ $(Q)for filename in ${DRVS}; do \ ++ install -m 644 $$filename ${DESTDIR}${CUPSDRV};\ ++ done; ++endif + + .PHONY: clean distclean + clean: + distclean: + $(RM) *.${DRIVERSEXT} ++ $(RM) *.drv +diff -up splix/rules.mk.drv-only splix/rules.mk +--- splix/rules.mk.drv-only 2011-11-30 19:27:25.104733048 +0100 ++++ splix/rules.mk 2011-11-30 19:27:25.114732922 +0100 +@@ -75,6 +75,11 @@ BLACKOPTIMSTATE := disabled + else + BLACKOPTIMSTATE := enabled + endif ++ifeq ($(DRV_ONLY),0) ++DRVSTATE := disabled ++else ++DRVSTATE := enabled ++endif + + + MSG := +---------------------------------------------+\n +@@ -85,8 +90,9 @@ MSG += | THREADS Nr = %8i + MSG += | CACHESIZE = %8i |\n + MSG += | JBIG = %8s |\n + MSG += | BLACK OPTIM = %8s |\n ++MSG += | DRV ONLY = %8s |\n + MSG += +---------------------------------------------+\n + MSG += (Do a \"make clean\" before updating these values)\n\n + optionList: + @printf " $(MSG)" $(THREADSSTATE) $(THREADS) $(CACHESIZE) $(JBIGSTATE) \ +- $(BLACKOPTIMSTATE) ++ $(BLACKOPTIMSTATE) $(DRVSTATE) diff --git a/splix.spec b/splix.spec index a2726e4..9fe6dbf 100644 --- a/splix.spec +++ b/splix.spec @@ -3,7 +3,7 @@ Summary: Driver for QPDL/SPL2 printers (Samsung and several Xerox printers) Name: splix Version: 2.0.1 -Release: 0.5.%{checkout}%{?dist} +Release: 0.6.%{checkout}%{?dist} License: GPLv2 Group: System Environment/Base URL: http://splix.sourceforge.net/ @@ -20,9 +20,15 @@ Patch0: splix-nostrip.patch # Samsung ML-1610 Patch1: splix-deviceID.patch +# Install PPDs to custom directory +Patch2: splix-custom-ppd-dir.patch + +# Don't install PPD files at all, only DRV files. +Patch3: splix-drv.patch + Requires: cups -# needed for PPD re-compilation +# PPD re-compilation BuildRequires: cups, recode # _cups_serverbin macro @@ -47,15 +53,36 @@ chmod -x ppd/po/pt.po %patch0 -p1 -b .nostrip %patch1 -p1 -b .deviceID +%patch2 -p1 -b .custom-ppd-dir +%patch3 -p1 -b .drv-only + +pushd ppd +# rename *.drv to *.drv.in +for i in *.drv; do mv $i ${i}.in; done +# remove old PPDs +make distclean +popd %build -# re-compile PPD files +# The situation is that we can't ship jbigkit (JBIG1 implementation) in Fedora +# because of one known patent. It can be found in rpmfusion-free repository. +# DISABLE_JBIG=1 prevents splix from building against jbigkit and also from +# installing PPD files for printers that require JBIG1 support. +# +# Luckily JBIG1 will be free of known patents in all countries from +# 2012-04-04 onwards. (http://www.cl.cam.ac.uk/~mgk25/jbigkit/patents/) +# So once jbigkit is in Fedora we could do the following with this spec: +# - remove DISABLE_JBIG=1 +# - replace 'make ppd' with 'make drv' +# - remove cups and recode from BuildRequires +# - add 'DRV_ONLY=1 CUPSDRV=%{_datadir}/cups/drv/splix' to make install +# That will result in building splix with JBIG1 support and also +# installing DRV files instead of only selected set of PPD files. + pushd ppd -make distclean make ppd popd -# remove DISABLE_JBIG=1 once jbigkit is shipped with Fedora (i.e. after April 2012) DISABLE_JBIG=1 \ V=1 \ CXXFLAGS="%{optflags} -fno-strict-aliasing" \ @@ -63,23 +90,24 @@ make %{?_smp_mflags} %install -# remove DISABLE_JBIG=1 once jbigkit is shipped with Fedora (i.e. after April 2012) DISABLE_JBIG=1 \ +CUPSPPD=%{_datadir}/cups/model/splix \ DESTDIR=%{buildroot} \ make install - %files %doc COPYING AUTHORS ChangeLog THANKS %{_cups_serverbin}/filter/pstoqpdl %{_cups_serverbin}/filter/rastertoqpdl -%{_datadir}/cups/model/dell -%{_datadir}/cups/model/lexmark -%{_datadir}/cups/model/samsung -%{_datadir}/cups/model/toshiba -%{_datadir}/cups/model/xerox +%{_datadir}/cups/model/splix/ %changelog +* Wed Nov 30 2011 Jiri Popelka - 2.0.1-0.6.20111121svn +- Install splix PPDs into separate directory. +- Added patch for compiling/installing DRVs instead of PPDs. + However we still ship only selected PPDs instead of DRVs as some printers + require JBIG1 support. + * Tue Nov 29 2011 Jiri Popelka - 2.0.1-0.5.20111121svn - Re-compile PPD files.