but have only the topmost RPM changelog lines of the ghostscript RPM in the results_file OBS-URL: https://build.opensuse.org/package/show/Printing/ghostscript-testing?expand=0&rev=5
130 lines
6.1 KiB
RPMSpec
130 lines
6.1 KiB
RPMSpec
#
|
|
# spec file for package ghostscript-testing
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
Name: ghostscript-testing
|
|
Version: 1.0
|
|
Release: 0
|
|
Summary: Testing Ghostscript drivers, so called Ghostscript 'devices'
|
|
# It is an openSUSE specific package (there is no real upstream project):
|
|
Url: https://build.opensuse.org/package/show/home:jsmeix/ghostscript-testing
|
|
# Use the fallback license (see the header of this spec file):
|
|
License: MIT
|
|
# Same RPM gropup as Ghostscript (cf. coreutils-testsuite glibc-testsuite qemu-testsuite):
|
|
Group: System/Libraries
|
|
# Source1: README.SUSE
|
|
Source1: README.SUSE
|
|
# The tests of the Ghostscript drivers happen during build of the ghostscript-testing package:
|
|
BuildRequires: ghostscript
|
|
# Current ghostscript RPM already provides the standard PostScript fonts:
|
|
#BuildRequires: ghostscript-fonts-std
|
|
#BuildRequires: ghostscript-fonts-other
|
|
# freetype2 provides libfreetype.so.6 that is needed by Ghostscript:
|
|
BuildRequires: freetype2
|
|
# Install into this non-root directory (required when it is built as non-root user):
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%description
|
|
Testing Ghostscript drivers, so called Ghostscript 'devices'
|
|
by running them with the Ghostscript example files
|
|
and other test files.
|
|
|
|
%prep
|
|
# Nothing to do here.
|
|
|
|
%build
|
|
# Testing Ghostscript drivers, so called Ghostscript 'devices'
|
|
# by running them with the Ghostscript example files
|
|
# and other test files,
|
|
# (see Source1 README.SUSE).
|
|
# Do not let the build fail when one particular gs call fails
|
|
# to ensure that during one build always all drivers are tested
|
|
# but in case of failures report gs stdout and stderr in the buildlog.
|
|
# At the end after all drivers had been tested let the bulid fail
|
|
# when at least one particular gs call had failed.
|
|
# When gs fails it usually means a driver fails
|
|
# but it does not mean it fails when there is wrong output
|
|
# i.e. the build succeeds for any output
|
|
# cf. "How to test a printer driver package" at
|
|
# https://en.opensuse.org/openSUSE:How_to_contribute_to_the_Printing_project
|
|
gs_stdout_and_stderr="/tmp/gs.out"
|
|
gs_options="-q -r50 -dNOPAUSE -dBATCH -dSAFER -sOutputFile=/dev/null"
|
|
# All Ghostscript drivers would be gs_devices=$( gs -h | sed -n -e '/alc1900/,/xes/p' | tr -s '[:space:]' ' ' )
|
|
# but many Ghostscript drivers do not work with /dev/null as OutputFile
|
|
# so that at least for now only some in practice important example drivers are tested
|
|
# that work with /dev/null as OutputFile:
|
|
gs_devices="nullpage cups epson deskjet ljet4 pxlmono pxlcolor pdfwrite ps2write jpeg pngalpha pnggray pngmono"
|
|
# egrep pattern for those example files that are already known to fail:
|
|
# - transparency_example.ps fails since Ghostscript 9.25 with
|
|
# Error: /undefined in .pushpdf14devicefilter
|
|
# see https://ghostscript.com/pipermail/gs-devel/2018-September/010099.html
|
|
known_failing_example_files_egrep_pattern="transparency_example.ps"
|
|
# Careful with 'egrep -v' if its pattern is empty it excludes all lines:
|
|
example_files=$( ls -1 /usr/share/ghostscript/*/examples/*.p* | egrep -v "$known_failing_example_files_egrep_pattern" )
|
|
failed_tests=()
|
|
results_file="/tmp/ghostscript.test.results"
|
|
echo "Testing Ghostscript with those topmost RPM changelog lines:" >$results_file
|
|
rpm -q --changelog ghostscript | head | tee -a $results_file
|
|
# Avoid tons of bash debug messages in the build log:
|
|
set +x
|
|
# Do the actual work:
|
|
echo "Start testing $gs_devices" | tee -a $results_file
|
|
for gs_device in $gs_devices
|
|
do echo "BEGIN testing $gs_device" | tee -a $results_file
|
|
for example_file in $example_files
|
|
do echo "Testing $gs_device with $example_file" | tee -a $results_file
|
|
if gs $gs_options -sDEVICE=$gs_device $example_file &>$gs_stdout_and_stderr
|
|
then echo "OK for $gs_device with $example_file" | tee -a $results_file
|
|
else echo "FAILURE for $gs_device with $example_file Ghostscript call" | tee -a $results_file
|
|
echo "# gs $gs_options -sDEVICE=$gs_device $example_file" | tee -a $results_file
|
|
echo "with this gs stdout and stderr output:" | tee -a $results_file
|
|
cat $gs_stdout_and_stderr | tee -a $results_file
|
|
echo "End of gs stdout and stderr output for $gs_device with $example_file failure" | tee -a $results_file
|
|
failed_tests=( "${failed_tests[@]}" "FAILURE for $gs_device with $example_file" )
|
|
fi
|
|
done
|
|
echo "END testing $gs_device" | tee -a $results_file
|
|
done
|
|
echo "Finished testing $gs_devices" | tee -a $results_file
|
|
if test "${failed_tests[*]}"
|
|
then echo "Build FAILURE because gs failed for those drivers and example_files:" | tee -a $results_file
|
|
for failed_test in "${failed_tests[@]}"
|
|
do echo "$failed_test" | fold -s -w 78 | tee -a $results_file
|
|
done
|
|
set -x
|
|
exit 99
|
|
fi
|
|
echo "Build SUCCESS: Nothing really failed but there could have been ERROR or WARNING messages" | tee -a $results_file
|
|
set -x
|
|
|
|
%install
|
|
# Source1: README.SUSE
|
|
mkdir -p %{buildroot}%{_datadir}/doc/packages/ghostscript-testing/
|
|
install -m 644 %{SOURCE1} %{buildroot}%{_datadir}/doc/packages/ghostscript-testing/README.SUSE
|
|
# Provide the test results in the built RPM for later evaluation (without buildlog):
|
|
results_file="/tmp/ghostscript.test.results"
|
|
mkdir -p %{buildroot}%{_datadir}/ghostscript-testing/
|
|
install -m 644 $results_file %{buildroot}%{_datadir}/ghostscript-testing/results
|
|
|
|
%files
|
|
%defattr(-,root,root,-)
|
|
%dir %{_datadir}/doc/packages/ghostscript-testing
|
|
%{_datadir}/doc/packages/ghostscript-testing/README.SUSE
|
|
%dir %{_datadir}/ghostscript-testing/
|
|
%{_datadir}/ghostscript-testing/results
|
|
|
|
%changelog
|