From 9ffa0df7339feb263e1bc9916883b53a360acd12 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Sat, 19 Feb 2011 01:43:21 +0000 Subject: cups: add textonly filter and split packages Signed-off-by: Otavio Salvador Acked-by: Frans Meulenbroeks Signed-off-by: Frans Meulenbroeks --- recipes/cups/cups-1.4.4/text.convs | 6 ++ recipes/cups/cups-1.4.4/textonly | 124 +++++++++++++++++++++++++++++++++++ recipes/cups/cups-1.4.4/textonly.ppd | 47 +++++++++++++ recipes/cups/cups_1.4.4.bb | 30 ++++++++- 4 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 recipes/cups/cups-1.4.4/text.convs create mode 100644 recipes/cups/cups-1.4.4/textonly create mode 100644 recipes/cups/cups-1.4.4/textonly.ppd (limited to 'recipes/cups') diff --git a/recipes/cups/cups-1.4.4/text.convs b/recipes/cups/cups-1.4.4/text.convs new file mode 100644 index 0000000000..20a845dd7c --- /dev/null +++ b/recipes/cups/cups-1.4.4/text.convs @@ -0,0 +1,6 @@ +application/x-cshell text/plain 100 - +application/x-csource text/plain 100 - +application/x-perl text/plain 100 - +application/x-shell text/plain 100 - +text/html text/plain 100 - +text/css text/plain 100 - diff --git a/recipes/cups/cups-1.4.4/textonly b/recipes/cups/cups-1.4.4/textonly new file mode 100644 index 0000000000..25850cc740 --- /dev/null +++ b/recipes/cups/cups-1.4.4/textonly @@ -0,0 +1,124 @@ +#!/bin/bash +## Copyright (C) 2003-2006 Red Hat, Inc. +## Copyright (C) 2003-2006 Tim Waugh +## Changed on 2007/05/17, Opher Shachar, LADPC Ltd. +## Added support for page-ranges option. +## Added page accounting. + +## 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 2 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, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +if [ $# == 0 ]; then + echo >&2 "ERROR: $0 job-id user title copies options [file]" + exit 1 +fi + +# Extract the papersize +SENDFF=`grep '^\*DefaultSendFF' "$PPD" | cut -d\ -f2` +COPIES=1 +if [ $# -ge 4 ]; then + COPIES="$4" +fi + +if [ "$COPIES" -gt 1 ] && [ $# -lt 6 ]; then + unset TMPFILE + trap -- 'rm -f "$TMPFILE"' EXIT + TMPFILE=$(mktemp ${TMPDIR:-/tmp}/textonly.XXXXXX) + cat > "$TMPFILE" +else + TMPFILE="$6" +fi + +PR=${5#*page-ranges=} +# Do options specify page-ranges? +if [[ "$PR" != "$5" ]]; then + PR=${PR%% *} +else + #unset PR + PR=1-999999 +fi + +if [[ "$PR" ]]; then + TMPFILE2=$(mktemp ${TMPDIR:-/tmp}/textonly2.XXXXXX) + pagenum=0 + EOF= + { + while [[ "$PR" ]]; do + pl=${PR%%,*} ;# take first subrange + PR=${PR#$pl};PR=${PR#,} ;# remove from range list + pu=${pl#*-} ;# extract upper and lower + pl=${pl%-*} ;# pages of subrange + # Allows interpreting 0-5,3-10 as 1-5,6-10 rejects 5-1 or 1- + (( pagenum >= pl )) && pl=$(( pagenum + 1 )) + (( pl > pu )) && continue + + # Loop reading pages until at or over lower page of subrange. + while read -d `echo -ne '\f'` -r; do + (( pagenum++ )) + (( pagenum == pl )) && break + done + # Did we reach lower page of subrange or EOF? + if (( pagenum < pl )); then + [[ ! "$REPLY" ]] && break ;# empty last page - we're done. + (( pagenum++ )) + EOF=y + fi + # Output page and report to page log + if (( pagenum == pl )); then + echo -n "${REPLY}" >>"$TMPFILE2" + # If EOF then page has no final FF + [[ ! "$EOF" ]] && echo -ne '\f' >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + fi + [[ "$EOF" ]] && break + # Is the current subrange a single page? + (( pagenum == pu )) && continue + while read -d `echo -ne '\f'` -r; do + (( pagenum++ )) + echo -ne "${REPLY}\f" >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + (( pagenum == pu )) && break + done + # Could be that we reached EOF before page boundry + if (( pagenum < pu )); then + if [[ "$REPLY" ]]; then + (( pagenum++ )) + echo -n "${REPLY}" >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + fi + break + fi + done + } <"$TMPFILE" +else + TMPFILE2="$TMPFILE" + pc=$(grep -co `echo -ne '\f'` "$TMPFILE2") + pc=$(( pc * $COPIES )) + echo "PAGE: $pc" >&2 +fi + +while [ "$COPIES" -gt 0 ]; do + # Just translate LF->CRLF at the moment, until the PPD has options added. + sed -e 's/$/'`echo -ne '\r'`'/g' "$TMPFILE2" + + if [ "$SENDFF" == "True" ] + then + echo -ne \\14 + fi + + COPIES=$(($COPIES - 1)) +done +# Cleanup +[[ "$TMPFILE" != "$TMPFILE2" ]] && rm -f "$TMPFILE2" +exit 0 diff --git a/recipes/cups/cups-1.4.4/textonly.ppd b/recipes/cups/cups-1.4.4/textonly.ppd new file mode 100644 index 0000000000..89060bc51e --- /dev/null +++ b/recipes/cups/cups-1.4.4/textonly.ppd @@ -0,0 +1,47 @@ +*PPD-Adobe: "4.3" +*% +*% Text-only printer definition +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "TEXTONLY.PPD" +*Manufacturer: "Generic" +*Product: "(Generic)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "text/plain 0 textonly" +*ModelName: "Generic text-only printer" +*ShortNickName: "Generic text-only printer" +*NickName: "Generic text-only printer" +*PSVersion: "(2017.000) 0" +*LanguageLevel: "2" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Plus90 +*VariablePaperSize: False +*TTRasterizer: Type42 +*DefaultImageableArea: Letter +*ImageableArea Letter/US Letter: "18 36 594 756" +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "<>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "<>setpagedevice" +*CloseUI: *PageRegion + +*OpenUI *SendFF: Boolean +*DefaultSendFF: False +*SendFF True/True: "" +*SendFF False/False: "" +*CloseUI: *SendFF diff --git a/recipes/cups/cups_1.4.4.bb b/recipes/cups/cups_1.4.4.bb index 709edf1482..c469dae799 100644 --- a/recipes/cups/cups_1.4.4.bb +++ b/recipes/cups/cups_1.4.4.bb @@ -5,12 +5,15 @@ LICENSE = "GPL LGPL" DEPENDS = "gnutls libpng jpeg dbus dbus-glib zlib fakeroot-native" DEPENDS += "virtual/libusb0" PROVIDES = "cups14" -PR = "r3" +PR = "r4" SRC_URI = "ftp://ftp.easysw.com/pub/cups/${PV}/cups-${PV}-source.tar.bz2 \ file://use_echo_only_in_init.patch \ file://skip_tools.patch \ file://configure.patch \ + file://textonly.ppd \ + file://textonly \ + file://text.convs \ " SRC_URI[md5sum] = "8776403ad60fea9e85eab9c04d88560d" SRC_URI[sha256sum] = "d25ffa35add3abeeec0eba60be2cffc89425b649c64ef3a73dfc724683a59aa3" @@ -57,10 +60,24 @@ do_compile () { "-I." } -PACKAGES =+ "${PN}-lib ${PN}-libimage" +PACKAGES =+ "${PN}-lib ${PN}-libimage ${PN}-filter-textonly ${PN}-filters ${PN}-models" + +PACKAGES_DYNAMIC += "${PN}-backend-*" + +python populate_packages_prepend() { + backend_dir = bb.data.expand('${libdir}/cups/backend/', d) + do_split_packages(d, backend_dir, '^(.*)$', 'cups-backend-%s', + '${PN} backend for %s', prepend=True, allow_links=True) +} FILES_${PN}-lib = "${libdir}/libcups.so.*" FILES_${PN}-libimage = "${libdir}/libcupsimage.so.*" +FILES_${PN}-filter-textonly += "${datadir}/ppd/cups-included/textonly.ppd \ + ${datadir}/cups/mime/text.convs \ + ${libdir}/cups/filter/textonly \ + " +FILES_${PN}-filters += "${libdir}/cups/filter/*" +FILES_${PN}-models += "${datadir}/cups/model/*" FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \ ${libdir}/cups/cgi-bin/.debug \ ${libdir}/cups/filter/.debug \ @@ -82,6 +99,15 @@ fakeroot do_install () { oe_runmake "DSTROOT=${D}" install # This directory gets installed with perms 511, which makes packaging fail chmod 0711 "${D}/${localstatedir}/run/cups/certs" + + install -d ${D}/${libdir}/cups/filter + install -m 755 ${WORKDIR}/textonly ${D}/${libdir}/cups/filter + + install -d ${D}/${datadir}/cups/mime + install -m 644 ${WORKDIR}/text.convs ${D}/${datadir}/cups/mime + + install -d ${D}/${datadir}/ppd/cups-included + install -m 644 ${WORKDIR}/textonly.ppd ${D}/${datadir}/ppd/cups-included } python do_package_append() { -- cgit 1.2.3-korg