[oe] [PATCH 06/13] cups: add textonly filter and split packages

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Wed Feb 16 14:51:19 UTC 2011


2011/2/16 Otavio Salvador <otavio at ossystems.com.br>:
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>

Acked-by: Frans Meulenbroeks <fransmeulenbroeks at gmail.com>

> ---
>  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
>
> 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 0000000..20a845d
> --- /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 0000000..25850cc
> --- /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 <twaugh at redhat.com>
> +## 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 0000000..89060bc
> --- /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:       "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
> +*CloseUI: *PageSize
> +*OpenUI *PageRegion: PickOne
> +*OrderDependency: 10 AnySetup *PageRegion
> +*DefaultPageRegion: Letter
> +*PageRegion Letter/Letter:     "<</PageSize[612 792]/ImagingBBox null>>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 709edf1..c469dae 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() {
> --
> 1.7.2.3
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>




More information about the Openembedded-devel mailing list