X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fauxiliar%2Fmake-regtest-pngs.sh;h=01610e8ac34d5376155b49abeeeb8735969195d9;hb=ba7200be0b203092998fb456c5fba3ee92492c5d;hp=e770cc2a674b6786ae16b0352d1052cb2fedab9f;hpb=785441aeb8cc557217d1b0658ef88d058f58eeb4;p=lilypond.git diff --git a/scripts/auxiliar/make-regtest-pngs.sh b/scripts/auxiliar/make-regtest-pngs.sh index e770cc2a67..01610e8ac3 100755 --- a/scripts/auxiliar/make-regtest-pngs.sh +++ b/scripts/auxiliar/make-regtest-pngs.sh @@ -9,15 +9,21 @@ # # ./make-regtest-pngs.sh -j9 # +# -p uses GNU parallel with the given job count in order to also +# parallelize the conversion of PDF files to bitmaps when using -g +# or -d. No attempt is made to parallelize the bitmap comparisons +# since their memory requirements may be prohibitive. +# # -o means build an old regtest set - the PNGs go in the old-regtest-results # directory # # -n means build a new regtest set - the PNGs go in the new-regtest-results # directory # -# -p uses PDF and the poppler library via pdftocairo for generating bitmaps, -# simulating the output for Evince and other previewers using poppler. -# pdftocairo may be contained in the poppler-utils package. +# -c uses PDF and the poppler library via pdftocairo for generating +# bitmaps, simulating the output for Evince and other previewers +# using poppler. pdftocairo may be contained in the poppler-utils +# package. # # -r can be used for specifying a rendering resolution. This # defaults to 101 for poppler and 300 for Ghostscript from PDF. @@ -27,34 +33,29 @@ # use a resolution appropriate for print. Antialiasing is not enabled. # # -d changes the Ghostscript device used for creating PNG files -# (usually png16m, but with -g you might prefer fewer colors for size -# reasons, like png16). +# (usually png16m for direct PNG creation and pngmono for printer simulation) +# +# if any filenames follow, those are the tests to run. In absence +# of any filenames, the contents of input/regression are used. cpu_count=${CPU_COUNT:-1} backend_opt='--png ${resolution:+=-dresolution=$resolution} ${gsdevice:+=-dpixmap-format=$gsdevice}' resolution= gsdevice= +use_parallel=n -png_generate() -{ - : -} - -while getopts "j:onpr:g" opts; do +while getopts "j:oncr:gpd:" opts; do case $opts in j) cpu_count=$OPTARG;; o) file_loc="old-regtest-results";; - p) + c) backend_opt="--pdf" png_generate() { - for i - do pdftocairo -png -r ${resolution:-101} -q "$i" && - rm "$i" - done + $1 pdftocairo -png -r ${resolution:-101} -q "$2" };; n) @@ -67,18 +68,20 @@ while getopts "j:onpr:g" opts; do backend_opt="--pdf" png_generate() { - for i - do - gs -sDEVICE=${gsdevice:-png16m} -q -dNOPAUSE \ - -r${resolution:-300} -dNOPLATFONTS \ - -dTextAlphaBits=1 -dGraphicsAlphaBits=1 \ - -sOutputFile="${i%.pdf}-%d.png" "$i" -c quit && - rm "$i" - done + $1 gs -sDEVICE=${gsdevice:-pngmono} -q -dNOPAUSE \ + -r${resolution:-300} -dNOPLATFONTS \ + -dTextAlphaBits=1 -dGraphicsAlphaBits=1 \ + -sOutputFile="${2%.pdf}-%d.png" "$2" -c quit };; + p) + use_parallel=y;; + d) + gsdevice=$OPTARG;; esac done +shift $((OPTIND-1)) + if [ -z "$file_loc" ]; then echo "Must specify old (-o) or new (-n) regtest PNG creation on command line" exit 1 @@ -86,12 +89,42 @@ fi rm -rf $LILYPOND_BUILD_DIR/out-png-check/$file_loc mkdir -p $LILYPOND_BUILD_DIR/out-png-check/$file_loc +OLDPWD="$PWD" cd $LILYPOND_BUILD_DIR/out-png-check/$file_loc -ls $LILYPOND_GIT/input/regression/*.ly > dir.txt +if [ "$*" = "" ] +then + ls $LILYPOND_GIT/input/regression/*.ly > dir.txt +else + : > dir.txt + for i + do + case "$i" in /*) + echo "$i" >> dir.txt;; + *) + echo "$OLDPWD/$i" >> dir.txt + esac + done +fi + $LILYPOND_BUILD_DIR/out/bin/lilypond $(eval echo $backend_opt) --relocate \ -dinclude-settings=$LILYPOND_GIT/scripts/auxiliar/NoTagline.ly \ -djob-count=$cpu_count -dread-file-list "dir.txt" -png_generate *.pdf +if [ "$backend_opt" = "--pdf" ] +then + if [ $use_parallel = y ] + then + for i in *.pdf + do + png_generate echo $i + done | parallel -j $cpu_count + rm *.pdf + else + for i in *.pdf + do + png_generate "" $i && rm "$i" + done + fi +fi rm -rf dir.txt rm -rf *.log @@ -102,7 +135,7 @@ if [ -n "$do_compare" ]; then diff_count=0 for filename in new-regtest-results/*.png; do trimFile=$(basename $filename) - if [ -e old-regtest-results/$trimFile ]; then + if [ -e "old-regtest-results/$trimFile" ]; then convert new-regtest-results/$trimFile -level 50% NewTest.png convert old-regtest-results/$trimFile -level 50% OldTest.png difference=$(compare -metric AE NewTest.png OldTest.png null: 2>&1 )