summaryrefslogtreecommitdiff
path: root/src/cups/test-rastertogutenprint.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/cups/test-rastertogutenprint.in')
-rwxr-xr-xsrc/cups/test-rastertogutenprint.in104
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