Date: Sun, 27 Apr 2014 12:21:20 -0500 (CDT) From: Lawrence "The Dreamer" Chen <beastie@tardisi.com> To: FreeBSD-gnats-submit@freebsd.org Subject: ports/189056: [patch] print/hplip: hpijs PPDs incorrectly accept PDF input Message-ID: <201404271721.s3RHLKs6084026@zen.lhaven.homeip.net> Resent-Message-ID: <201404271730.s3RHU0iO026162@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 189056 >Category: ports >Synopsis: [patch] print/hplip: hpijs PPDs incorrectly accept PDF input >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Apr 27 17:30:00 UTC 2014 >Closed-Date: >Last-Modified: >Originator: Lawrence "The Dreamer" Chen >Release: FreeBSD 9.2-RELEASE-p4 amd64 >Organization: >Environment: System: FreeBSD zen.lhaven.homeip.net 9.2-RELEASE-p4 FreeBSD 9.2-RELEASE-p4 #0: Tue Apr 8 18:08:22 UTC 2014 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 >Description: I original started working on the patch on April 9th, which included updating to 3.14.4, and fixing the LIB_DEPENDS for cups-base. But, got distracted by life. But, I fixed some problems with the hpijs PPDs which I'm providing here. The problem is that the PPDs claim to be generated for cups-1.5, and claim that they can directly consume PDF input by foomatic-rip-hplip. *cupsFilter: "application/vnd.cups-postscript 100 foomatic-rip-hplip" *cupsFilter: "application/vnd.cups-pdf 0 foomatic-rip-hplip" In cups-1.6, support for printers capable of the direct consumption of PDF files was added. But, unlike foomatic-rip, foomatic-rip-hplip is only capable of accepting PS or text. (treating PDF as text, results in just he PDF header printing.) >How-To-Repeat: >Fix: This patch addresses the deprecation warning that foomatic-rip-hplip generates and patches all the PPD files. The PPDs are uncompressed, the line containing "vnd.cups-pdf" is removed, and the file size line is updated and they are recompressed. --- patch begins here --- --- Makefile.orig 2014-04-27 10:20:42.993926678 -0500 +++ Makefile 2014-04-27 12:02:27.109926718 -0500 @@ -153,6 +153,18 @@ ${REINPLACE_CMD} -e '/[[:space:]]install-docDATA/ s|install-docDATA||' \ ${WRKSRC}/Makefile.in .endif +# fix hpijs PPDs + ${SED} -e "s,%%WRKSRC%%,${WRKSRC}," \ + -e "s,%%RM%%,${RM}," \ + -e "s,%%GZCAT%%,${GZCAT}," \ + -e "s,%%GREP%%,${GREP}," \ + -e "s,%%EXPR%%,${EXPR}," \ + -e "s,%%CAT%%,${CAT}," \ + -e "s,%%SED%%,${SED}," \ + -e "s,%%GZIP_CMD%%,${GZIP_CMD}," \ + -e "s,%%MV%%,${MV}," \ + ${.CURDIR}/files/ppdfix.sh.in > ${WRKDIR}/ppdfix.sh + ${SH} ${WRKDIR}/ppdfix.sh post-install: .if ${PORT_OPTIONS:MQT} --- files/patch-prnt_hpijs_foomatic-rip-hplip.orig 1969-12-31 18:00:00.000000000 -0600 +++ files/patch-prnt_hpijs_foomatic-rip-hplip 2014-04-09 15:01:53.362097359 -0500 @@ -0,0 +1,11 @@ +--- prnt/hpijs/foomatic-rip-hplip.orig 2014-04-09 14:50:13.038097000 -0500 ++++ prnt/hpijs/foomatic-rip-hplip 2014-04-09 15:00:12.759098808 -0500 +@@ -1653,7 +1653,7 @@ + ## if nexessary. + + my $dontparse = 0; +-if ((!defined(@{$dat->{'args'}})) || ++if ((!@{$dat->{'args'}}) || + ($#{$dat->{'args'}} < 0)) { + # We don't have any options, so we do not need to parse the + # PostScript data --- files/ppdfix.sh.in.orig 1969-12-31 18:00:00.000000000 -0600 +++ files/ppdfix.sh.in 2014-04-27 12:00:20.499926950 -0500 @@ -0,0 +1,24 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# In cups-1.6, support for printers capable of directly consuming PDF was +# added. And, the hpijs PPDs were generated for cups-1.5, claiming to +# support the direct consumption of PDF. +# +# While foomatic-rip, which can handle PDF, PS or text, foomatic-rip-hplip +# can only handle PS or text. +# +# This script uncompresses each hpijs PPD file, removes the line that sends +# PDF to foomatic-rip-hplip, and updates the file size line at the end of +# the file and recompresses it. +# +%%RM%% -f /tmp/output.$$ /tmp/newppd.$$ +for ppd in %%WRKSRC%%/ppd/hpijs/*; do + %%GZCAT%% ${ppd} | %%GREP%% -v vnd.cups-pdf > /tmp/output.$$ + NEWSIZE=`%%EXPR%% $(%%CAT%% /tmp/output.$$ | wc -c)` + %%SED%% -e '/^*% End of/s/ [0-9][0-9][0-9][0-9][0-9] bytes/ %%NEWSIZE%% bytes/' -e "s/%%NEWSIZE%%/${NEWSIZE}/" /tmp/output.$$ | %%GZIP_CMD%% -c > /tmp/newppd.$$ + %%MV%% ${ppd} ${ppd}.bak + %%MV%% /tmp/newppd.$$ ${ppd} +done +%%RM%% -f /tmp/output.$$ --- patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404271721.s3RHLKs6084026>