diff options
Diffstat (limited to 'src/cups/test-rastertogutenprint.in')
-rwxr-xr-x | src/cups/test-rastertogutenprint.in | 104 |
1 files changed, 72 insertions, 32 deletions
diff --git a/src/cups/test-rastertogutenprint.in b/src/cups/test-rastertogutenprint.in index f3f1464..c64a8e4 100755 --- a/src/cups/test-rastertogutenprint.in +++ b/src/cups/test-rastertogutenprint.in @@ -30,6 +30,7 @@ outdir='' cupsargs='' postscript='' npages=3 +jobs=${STP_PARALLEL:-1} enable_static='@ENABLE_STATIC@' enable_shared='@ENABLE_SHARED@' @@ -59,6 +60,7 @@ set_args() { -m|--md5dir) shift; md5dir="$1" ;; -p|--pages) shift; npages="$1" ;; -P|--postscript) shift; postscript=1 ;; + -t|--parallel) shift; jobs="$1" ;; --) shift; args="$@"; return ;; *) return ;; esac @@ -132,16 +134,6 @@ if [ -z "$verbose" ] ; then export STP_SUPPRESS_MESSAGES fi -is_duplicate() { - model=`gunzip -c "$1" | grep '^.StpDriverModelFamily' | awk '{print $2}'` - for m in $all_models; do - if [ "$model" = "$m" ] ; then - skip=1 - fi - done - all_models="$model $all_models" -} - # Note that using CUPS arguments may trigger valgrind memory leaks in # CUPS. #cupsargs='PageSize=Custom.400.00x500.00' @@ -245,29 +237,38 @@ do_output() { fi } -if [ -d ppd/C ] ; then - for f in `get_ppds $args` ; do +runme() { + f="$1" + p=$(echo -n "`basename $f |sed -e 's/stp-//' -e 's/@GUTENPRINT_RELEASE_VERSION@.ppd.*$//'`... ") + PPD=$f + export PPD + if [ -x "$cupsdir/cgpdftoraster" ] ; then + output="$p `($cupsdir/cgpdftoraster 1 1 1 1 "" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + elif [ -f "$tfile" -a -x "$cupsdir/gstoraster" ] ; then + output="$p `($cupsdir/gstoraster 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + elif [ -f "$tfile" ] ; then + output="$p `($cupsdir/pstops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + elif [ -x "$cupsdir/pstoraster" ] ; then + output="$p `($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstops 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + elif [ -x "$cupsdir/gstoraster" ] ; then + output="$p `($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/gstoraster 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" + else + output="$p `($cupsdir/imagetoraster 1 1 1 1 \"$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2`" + fi + return $? +} + +runall() { + jobs="${1:-1}" + rotor="${2:-0}" + shift + shift + retval=0 + jobno=0 + for f in "$@" ; do skip='' - if [ -n "$single" ] ; then - is_duplicate $f - fi - if [ -z "$skip" ] ; then - echo -n "`basename $f |sed -e 's/stp-//' -e 's/@GUTENPRINT_RELEASE_VERSION@.ppd.*$//'`... " - PPD=$f - export PPD - if [ -x "$cupsdir/cgpdftoraster" ] ; then - output="`($cupsdir/cgpdftoraster 1 1 1 1 "" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -f "$tfile" -a -x "$cupsdir/gstoraster" ] ; then - output="`($cupsdir/gstoraster 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -f "$tfile" ] ; then - output="`($cupsdir/pstops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -x "$cupsdir/pstoraster" ] ; then - output="`($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/pstops 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - elif [ -x "$cupsdir/gstoraster" ] ; then - output="`($cupsdir/pdftops 1 1 1 1 \"$cupsargs\" < "$tfile" 2>/dev/null | $cupsdir/gstoraster 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" - else - output="`($cupsdir/imagetoraster 1 1 1 1 \"$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2`" - fi + if [ $((jobno % jobs)) -eq $rotor ] ; then + runme "$f" if [ $? -ne 0 ] ; then retval=1 fi @@ -277,6 +278,45 @@ if [ -d ppd/C ] ; then retval=1 fi fi + jobno=$((jobno+1)) + done + return $retval +} + +retval=0 +if [ -d ppd/C ] ; then + files=$(get_ppds $args) + if [ -n "$single" ] ; then + all_models="" + nondup_files="" + for f in $files ; do + if [ "$(basename $f .gz)" = "$(basename $f)" ] ; then + model=$(grep '^.StpDriverModelFamily' $f | awk '{print $2}') + else + model=$(gunzip -c $f | grep '^.StpDriverModelFamily' | awk '{print $2}') + fi + skip=0 + for m in $all_models ; do + if [ "$model" = "$m" ] ; then + skip=1 + break + fi + done + if [ "$skip" -eq 0 ] ; then + all_models="$model $all_models" + nondup_files="$nondup_files $f" + fi + done + files=$nondup_files + fi + for i in $(seq 0 $(($jobs-1))) ; do + runall $jobs $i $files & + done + for i in $(seq 0 $(($jobs-1))) ; do + wait -n + if [ "$?" -gt 0 ] ; then + retval=1 + fi done fi if [ -f "$tfile" ] ; then |