Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Printing
OpenPrintingPPDs
OpenPrintingPPDs.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File OpenPrintingPPDs.spec of Package OpenPrintingPPDs
# # spec file for package OpenPrintingPPDs # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: OpenPrintingPPDs BuildRequires: cups # for automatic printer driver requires %if 0%{?suse_version} >= 1500 BuildRequires: cups-rpm-helper %endif Summary: PPD files from OpenPrinting.org # The package version is the PPD-O-MATIC version mentioned in the PPD files # which is currently "PPD-O-MATIC (4.0.0 or newer)" # and/or the required minimal foomatic-rip version by the PPD files # which is currently "Foomatic 4.0.0" # (macro name can be only alphanumeric and '_' i.e. "foomatic-rip_version" does not work) License: GPL-2.0-or-later AND MIT Group: Hardware/Printing %define foomatic_rip_version 4.0.0 # plus an additional trailing version number by openSUSE # so that openSUSE package upgrades get a strictly increasing sequence of versions: Version: 4.0.0.2 Release: 0 URL: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/query BuildArch: noarch # The main-package OpenPrintingPPDs alone is useless because it does not contain any PPD files. # The PPD files are provided via its sub-packages depending on which kind of driver software # is needed so that the appropriate RPM requirements can be specified for each sub-package. # Nevertheless when a user selects only the main-package to be installed, he probably # wants "all the OpenPrintingPPDs" and therefore all sub-packages are recommended: Recommends: OpenPrintingPPDs-ghostscript Recommends: OpenPrintingPPDs-hpijs Recommends: OpenPrintingPPDs-postscript # Howto make Source0: # See the HOWTO file in the sources. Source0: OpenPrintingPPDs-%{version}.tar.bz2 # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build %description To set up a printer configuration a printer description file (PPD file) is required. A printer description file is not a driver. For non-PostScript printers a driver is needed together with a PPD file which matches exactly to the particular driver. For PostScript printers, a PPD file alone is sufficient (except for older PostScript level 1 printer models). The PPD files are provided in the following sub-packages depending on which kind of driver software is needed: OpenPrintingPPDs-ghostscript provides PPDs which use Ghostscript built-in drivers. OpenPrintingPPDs-hpijs provides PPDs which use the hpijs driver from HPLIP. OpenPrintingPPDs-postscript provides PPDs which need no driver. %package ghostscript Summary: PPD files from OpenPrinting.org which use Ghostscript built-in drivers # This version is no typo because the PPDs are created at OpenPrinting.org # by PPD-O-MATIC version X.Y.Z which is the version of this package # and usually those PPDs require at least the same version of the foomatic-rip filter: Group: Hardware/Printing Requires: foomatic-filters >= %{foomatic_rip_version} Requires: ghostscript-library %description ghostscript PPD files for non-PostScript printers which use a Ghostscript built-in driver and PPD files for PostScript level 1 printers which use the Ghostscript driver pswrite. %package hpijs Summary: PPD files from OpenPrinting.org which use the hpijs driver # This version is no typo because the PPDs are created at OpenPrinting.org # by PPD-O-MATIC version X.Y.Z which is the version of this package # and usually those PPDs require at least the same version of the foomatic-rip filter: Group: Hardware/Printing Requires: foomatic-filters >= %{foomatic_rip_version} Requires: ghostscript-library Requires: hplip-hpijs %description hpijs PPD files for non-PostScript printers which use the Ghostscript IJS driver /usr/bin/hpijs from HPLIP. %package postscript Summary: PPD files from OpenPrinting.org for PostScript printers # Regardless that PPD files for PostScript printers do not require a driver # many PPD files from OpenPrinting.org for PostScript printers still # require the foomatic-rip filter which does not call 'gs' or another real driver program # but inserts PostScript snippets from the PPD at the beginning of the PostScript data. # This version is no typo because the PPDs are created at OpenPrinting.org # by PPD-O-MATIC version X.Y.Z which is the version of this package # and usually those PPDs require at least the same version of the foomatic-rip filter: Group: Hardware/Printing Requires: foomatic-filters >= %{foomatic_rip_version} %description postscript PPD files for PostScript printers which do not use a driver but may use the foomatic-rip filter. %prep # Be quiet when unpacking: %setup -q -n OpenPrintingPPDs %build # There is nothing to "make" as the sources contain plain PPD files. # Neverteless some conversion and testing must be done. PPDs_DIRs="PPDs_for_printers_for_ghostscript_drivers \ PPDs_for_printers_for_hpijs_drivers \ PPDs_for_printers_for_postscript_drivers" set +x # Make some general tests and adjustments for all PPDs: # - Add a line-feed to the end of all PPDs to fix those PPDs where it is missing. # See Novell/Suse Bugzilla bug #309832: Unix/Linux text files must end with a line-feed. # Otherwise reading the last line results EOF and then some programs may ignore the last line. # - Only keep files which are really PPD files (test file's output). # - Only keep files which are of '*LanguageVersion: English'. # - Remove PPDs which use an non-Ghostscript external driver filter program. # - Remove whitespaces (except \n) from lines which contain only whitespaces # ('\n \n' is not allowed but '\n\n' is). # Some of the manufactuer's PPD files contain a non-free redistribution license # which demands that "the contents of the file are not altered" # but adding only a line-feed to the end of a PPD file and # removing lines which contain only whitespaces # is considered to be still allowed: for d in $PPDs_DIRs do echo "Making general tests and adjustments for the PPDs in $d" for p in $d/*.ppd do echo -en '\n' >>$p file $p | grep -q 'PPD file, ve' || { rm -v $p ; continue ; } grep -q '^\*LanguageVersion:[[:space:]]*English' $p || { rm -v $p ; continue ; } grep -q '^\*driverType F/Filter:' $p && { rm -v $p ; continue ; } sed -i -e 's/^[[:space:]]*$//' $p done echo "Finished general tests and adjustments for the PPDs in $d" done # Fix trivial bugs for particular PPDs: # Some Lexmark PPDs contain "* DefaultColorSep:", "* DefaultOutputOrder:", "* DefaultScreenProc:", "* InkName:" # which must be "*DefaultColorSep:", "*DefaultOutputOrder:", "*DefaultScreenProc:", "*InkName:" for p in PPDs_for_printers_for_postscript_drivers/Lexmark-*.Postscript-Lexmark.ppd do echo "Fixing trivial bugs for Lexmark PPD $p" for k in DefaultColorSep DefaultOutputOrder DefaultScreenProc InkName do sed -i -e "s/^\* $k:/*$k:/" $p done done # For Kyocera PPDs: # Some have an 1284DeviceID entry "MFG:Kyocera Mita:Model:... # which should be "MFG:Kyocera Mita;Model:... # (i.e. wrong field seperator ':' instead of ';') for p in PPDs_for_printers_for_postscript_drivers/Kyocera-CS-*.Postscript-Kyocera.ppd do echo "Fixing trivial bugs for Kyocera PPD $p" if grep -q 'MFG:Kyocera Mita:Model:' $p then # Some of Kyocera's PostScript PPD files contain a non-free redistribution license # which demands that "the contents of the file are not altered in any way from their original form" # so that issues in those PPD files cannot be fixed: if grep -q 'contents of the file are not altered' $p then echo "Kyocera's redistribution license forbids to fix 'MFG:Kyocera Mita:Model:' bug in $p" else sed -i -e 's/MFG:Kyocera Mita:Model:/MFG:Kyocera Mita;Model:/' $p echo "Fixed 'MFG:Kyocera Mita:Model:' bug in $p" fi fi done # Final test by cupstestppd: # Keep all PPDs even if cupstestppd FAILs. # Reason: # With each CUPS version upgrade cupstestppd finds more and more errors # so that more and more PPDs would be no longer included in the RPM # which have been included before which results a regression. # As far as we know there have been no problems at all because of # not strictly compliant PPDs so that it is much better # to provide all PPDs so that the matching printers can be used # than to be rigorous regarding enforcing compliance to the PPD specification: for d in $PPDs_DIRs do echo "Testing with cupstestppd the PPDs in $d" for p in $d/*.ppd do cupstestppd -q -W all -r $p || echo "cupstestppd failed for $p" done echo "Finished testing with cupstestppd the PPDs in $d" done # Check and warn for duplicate NickName entries. # Usually the NickName entry is shown to the user to let him select a PPD # and then PPDs with same NickName entries are undistinguishable for the user. # Nevertheless we keep them because e.g. in YaST or when using "lpadmin" # the user can alternatively select a PPD via its file name. for d in $PPDs_DIRs do echo "Checking duplicate NickName entries for the PPDs in $d" grep -h '^\*NickName:' $d/*.ppd | grep -o '"[^"]*"' | sort -f | uniq -dci | grep '.*' && echo "There are duplicate NickName entries in PPDs in $d" echo "Finished checking duplicate NickName entries for the PPDs in $d" done # Finally compress the PPDs: for d in $PPDs_DIRs do echo "Compressing the PPDs in $d" for p in $d/*.ppd do gzip -n -9 "$p" done echo "Finished compressing the PPDs in $d" done %install # Make the install directories and install the matching PPDs: for d in ghostscript hpijs postscript do mkdir -p %{buildroot}/usr/share/cups/model/OpenPrintingPPDs/$d set +x echo "Installing the '$d' PPDs." for p in PPDs_for_printers_for_${d}_drivers/*.ppd.gz do install -m 644 $p %{buildroot}/usr/share/cups/model/OpenPrintingPPDs/$d done echo "Finished installing the '$d' PPDs." set -x done # Do not install the "Generic GDI Printer" PPD because there is no such thing # as a "Generic GDI Printer", see http://www.cups.org/str.php?L3759 # The particular GDI printer models which are supported have already their # individual /usr/share/cups/model/OpenPrintingPPDs/ghostscript/*gdi* PPD files. rm %{buildroot}/usr/share/cups/model/OpenPrintingPPDs/ghostscript/Generic-GDI_Printer.gdi.ppd.gz %files %defattr(-,root,root) %doc HOWTO README gpl-2.0.txt makePPDtest %files ghostscript %defattr(-,root,root) %dir /usr/share/cups %dir /usr/share/cups/model %dir /usr/share/cups/model/OpenPrintingPPDs /usr/share/cups/model/OpenPrintingPPDs/ghostscript %files hpijs %defattr(-,root,root) %dir /usr/share/cups %dir /usr/share/cups/model %dir /usr/share/cups/model/OpenPrintingPPDs /usr/share/cups/model/OpenPrintingPPDs/hpijs %files postscript %defattr(-,root,root) %dir /usr/share/cups %dir /usr/share/cups/model %dir /usr/share/cups/model/OpenPrintingPPDs /usr/share/cups/model/OpenPrintingPPDs/postscript %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor