This package provides a CUPS backend to print into PDF files.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/rootfiles/packages/cups-pdf | 5 ++ lfs/cups-pdf | 106 +++++++++++++++++++++++++ make.sh | 1 + src/patches/cups-pdf-setpdfwrite.patch | 27 +++++++ 4 files changed, 139 insertions(+) create mode 100644 config/rootfiles/packages/cups-pdf create mode 100644 lfs/cups-pdf create mode 100644 src/patches/cups-pdf-setpdfwrite.patch
diff --git a/config/rootfiles/packages/cups-pdf b/config/rootfiles/packages/cups-pdf new file mode 100644 index 000000000..70324cad1 --- /dev/null +++ b/config/rootfiles/packages/cups-pdf @@ -0,0 +1,5 @@ +usr/lib/cups/backend/cups-pdf +#usr/share/ppd/cups-pdf +usr/share/ppd/cups-pdf/CUPS-PDF_noopt.ppd +usr/share/ppd/cups-pdf/CUPS-PDF_opt.ppd +var/ipfire/cups/cups-pdf.conf diff --git a/lfs/cups-pdf b/lfs/cups-pdf new file mode 100644 index 000000000..efa40e87b --- /dev/null +++ b/lfs/cups-pdf @@ -0,0 +1,106 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2020 IPFire Team info@ipfire.org # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see http://www.gnu.org/licenses/. # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +SUMMARY = OpenPrinting CUPS filters, backends, and cups-browsed + +VER = 3.0.1 + +THISAPP = cups-pdf-$(VER) +DL_FILE = cups-pdf_$(VER).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = cups-pdf +PAK_VER = 1 + +DEPS = cups + +SERVICES = + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_BLAKE2 = f964358c5e465447e703848a697f6c801624a1836e2a0a4026c507c66048cf4bef92327508598ec7e9a356d4f57894a6b610e55b7a9a34e942cf2b88c6c55b85 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +b2 : $(subst %,%_BLAKE2,$(objects)) + +dist: + $(PAK) + +############################################################################### +# Downloading, checking, b2sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_BLAKE2,$(objects)) : + @$(B2SUM) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cups-pdf-setpdfwrite.patch + + # Compile backend + cd $(DIR_APP)/src && gcc $(CFLAGS) cups-pdf.c -o cups-pdf -lcups + + # Install backend + cd $(DIR_APP)/src && install -v -m 700 \ + cups-pdf /usr/lib/cups/backend/cups-pdf + + # Install PPD files + -mkdir -pv /usr/share/ppd/cups-pdf + cd $(DIR_APP)/extra && install -v -m 644 \ + CUPS-PDF_noopt.ppd \ + CUPS-PDF_opt.ppd \ + /usr/share/ppd/cups-pdf + + # Install configuration + -mkdir -pv /var/ipfire/cups + cd $(DIR_APP)/extra && install -v -m 644 \ + cups-pdf.conf /var/ipfire/cups/cups-pdf.conf + + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index da3f7f467..7fb63b913 100755 --- a/make.sh +++ b/make.sh @@ -1465,6 +1465,7 @@ buildipfire() { lfsmake2 poppler-data lfsmake2 cups-filters lfsmake2 epson-inkjet-printer-escpr + lfsmake2 cups-pdf lfsmake2 foomatic lfsmake2 hplip lfsmake2 cifs-utils diff --git a/src/patches/cups-pdf-setpdfwrite.patch b/src/patches/cups-pdf-setpdfwrite.patch new file mode 100644 index 000000000..58d71c02f --- /dev/null +++ b/src/patches/cups-pdf-setpdfwrite.patch @@ -0,0 +1,27 @@ +diff -ur extra/cups-pdf.conf extra/cups-pdf.conf +--- extra/cups-pdf.conf 2021-06-03 08:50:00.109555813 -0400 ++++ extra/cups-pdf.conf 2021-06-03 08:51:27.530198340 -0400 +@@ -250,9 +250,9 @@ + ### Key: GSCall (config) + ## command line for calling GhostScript (!!! DO NOT USE NEWLINES !!!) + ## MacOSX: for using pstopdf set this to %s %s -o %s %s +-### Default: %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s ++### Default: %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c 30000000 setvmthreshold -f %s + +-#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s ++#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c 30000000 setvmthreshold -f %s + + ### Key: PDFVer (config, ppd, lptopions) + ## PDF version to be created - can be "1.5", "1.4", "1.3" or "1.2" +diff -ur src/cups-pdf.h src/cups-pdf.h +--- src/cups-pdf.h 2021-06-03 08:50:00.109555813 -0400 ++++ src/cups-pdf.h 2021-06-03 08:51:44.833325511 -0400 +@@ -58,7 +58,7 @@ + { "AnonDirName", SEC_CONF|SEC_PPD, { "/var/spool/cups-pdf/ANONYMOUS" } }, + { "AnonUser", SEC_CONF|SEC_PPD, { "nobody" } }, + { "GhostScript", SEC_CONF|SEC_PPD, { "/usr/bin/gs" } }, +- { "GSCall", SEC_CONF|SEC_PPD, { "%s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s" } }, ++ { "GSCall", SEC_CONF|SEC_PPD, { "%s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c 30000000 setvmthreshold -f %s" } }, + { "Grp", SEC_CONF|SEC_PPD, { "lp" } }, + { "GSTmp", SEC_CONF|SEC_PPD, { "TMPDIR=/var/tmp" } }, + { "Log", SEC_CONF|SEC_PPD, { "/var/log/cups" } },
This is needed because cups-pdf is looking for its configuration file in /etc/cups.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- config/rootfiles/packages/cups | 1 + lfs/cups | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/config/rootfiles/packages/cups b/config/rootfiles/packages/cups index 18987be0e..65ad4f418 100644 --- a/config/rootfiles/packages/cups +++ b/config/rootfiles/packages/cups @@ -1,3 +1,4 @@ +etc/cups etc/dbus-1/system.d/cups.conf etc/pam.d/cups etc/rc.d/init.d/cups diff --git a/lfs/cups b/lfs/cups index d333532e3..312f165d8 100644 --- a/lfs/cups +++ b/lfs/cups @@ -33,7 +33,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/cups-$(VER) TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups -PAK_VER = 27 +PAK_VER = 28
DEPS = avahi cups-filters dbus ghostscript
@@ -104,5 +104,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) $(call INSTALL_INITSCRIPTS,$(SERVICES)) cp -fv $(DIR_SRC)/config/cups/cupsd.conf /var/ipfire/cups/
+ # Install convenience link + ln -svf /var/ipfire/cups /etc/cups + @rm -rf $(DIR_APP) @$(POSTBUILD)