9ce317b75a
- Use -p /sbin/ldconfig instead of shell post(un) scriptlet, drop explicit Prereq for ldconfig - Use shared libgs library for gs binary instead of static linked version - Use --disable-compile-inits, to allow unbundling of Resource files - Remove --disable-omni switch, has been removed in GS 9.20 - Keep patch ordering in full/mini consistent - Remove patch backup files to avoid packaging OBS-URL: https://build.opensuse.org/request/show/581052 OBS-URL: https://build.opensuse.org/package/show/Printing/ghostscript?expand=0&rev=86
383 lines
17 KiB
RPMSpec
383 lines
17 KiB
RPMSpec
#
|
|
# spec file for package ghostscript-mini
|
|
#
|
|
# Copyright (c) 2018 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-mini
|
|
BuildRequires: freetype2-devel
|
|
BuildRequires: libjpeg-devel
|
|
BuildRequires: libpng-devel
|
|
BuildRequires: libtiff-devel
|
|
BuildRequires: libtool
|
|
BuildRequires: pkg-config
|
|
BuildRequires: zlib-devel
|
|
Summary: Minimal Ghostscript for minimal build requirements
|
|
License: AGPL-3.0
|
|
Group: System/Libraries
|
|
Url: http://www.ghostscript.com/
|
|
# Special version needed for Ghostscript release candidates (e.g. "Version: 9.14pre15rc1" for 9.15rc1).
|
|
# Version 9.15rc1 would be newer than 9.15 (run "zypper vcmp 9.15rc1 9.15") because the rpmvercmp algorithm
|
|
# would treat 9.15rc1 as 9.15.rc.1 (alphabetic and numeric sections get separated into different elements)
|
|
# and 9.15.rc.1 is newer than 9.15 (it has one more element in the list while previous elements are equal)
|
|
# so that we use an alphabetic prefix 'pre' to make it older than 9.15 (numbers are considered newer than letters).
|
|
# But only with the alphabetic prefix "9.pre15rc1" would be older than the previous version number "9.14"
|
|
# because rpmvercmp would treat 9.pre15rc1 as 9.pre.15.rc1 and letters are older than numbers
|
|
# so that we keep additionally the previous version number to upgrade from the previous version:
|
|
#Version: 9.21pre22rc2
|
|
# Normal version for Ghostscript releases is the upstream version:
|
|
Version: 9.22
|
|
Release: 0
|
|
# tarball_version is used below to specify the directory via "setup -n":
|
|
# Special tarball_version needed for Ghostscript release candidates e.g. "define tarball_version 9.15rc1".
|
|
# For Ghostscript releases tarball_version and version are the same (i.e. the upstream version):
|
|
%define tarball_version %{version}
|
|
#define tarball_version 9.22rc2
|
|
# built_version is used below in the install and files sections:
|
|
# Separated built_version needed in case of Ghostscript release candidates e.g. "define built_version 9.15".
|
|
# For Ghostscript releases built_version and version are the same (i.e. the upstream version):
|
|
%define built_version %{version}
|
|
#define built_version 9.22
|
|
# Source0...Source9 is for sources from upstream:
|
|
# Special URLs for Ghostscript release candidates:
|
|
# URL for Source0: https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922rc2/ghostscript-9.22rc2.tar.gz
|
|
# How to download it:
|
|
# wget -O ghostscript-9.22rc2.tar.gz https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922rc2/ghostscript-9.22rc2.tar.gz
|
|
#Source0: ghostscript-%{tarball_version}.tar.gz
|
|
# Normal URLs for Ghostscript releases:
|
|
# URL for Source0: https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/ghostscript-9.22.tar.gz
|
|
# How to download it:
|
|
# wget -O ghostscript-9.22.tar.gz https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/ghostscript-9.22.tar.gz
|
|
# URL for MD5 checksums:
|
|
# wget -O gs922.MD5SUMS https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/MD5SUMS
|
|
# MD5 checksum for Source0: eff6bc41b1d7e26e988d2a5c813889d1
|
|
Source0: ghostscript-%{version}.tar.gz
|
|
# Patch0...Patch9 is for patches from upstream:
|
|
# Source10...Source99 is for sources from SUSE which are intended for upstream:
|
|
# Patch10...Patch99 is for patches from SUSE which are intended for upstream:
|
|
# Patch11 ppc64le-support.patch is a remainder of the previous patch
|
|
# now the hunk for LCMS (lcms/include/lcms.h) is removed
|
|
# because LCMS 1.x is removed since Ghostscript 9.16
|
|
# but the hunk for LCMS2 (lcms2/include/lcms2.h) is still needed
|
|
# see http://bugs.ghostscript.com/show_bug.cgi?id=695544
|
|
Patch11: ppc64le-support.patch
|
|
# Source100...Source999 is for sources from SUSE which are not intended for upstream:
|
|
# Patch100...Patch999 is for patches from SUSE which are not intended for upstream:
|
|
# Patch100 remove-zlib-h-dependency.patch removes dependency on zlib/zlib.h
|
|
# in makefiles as we do not use the zlib sources from the Ghostscript upstream tarball:
|
|
Patch100: remove-zlib-h-dependency.patch
|
|
# Patch101 ghostscript-fix-debug-use.patch from upstream fixes file generation in
|
|
# debug mode which lead to Fuji Xerox printer drivers to fail printing without any error.
|
|
Patch101: ghostscript-fix-debug-use.patch
|
|
|
|
# RPM dependencies:
|
|
Conflicts: ghostscript
|
|
Conflicts: ghostscript-x11
|
|
Conflicts: ghostscript-devel
|
|
Conflicts: ghostscript-library
|
|
# Require Ghostscript's fonts because the Ghostscript package provides the
|
|
# "Fontmap" file /usr/share/ghostscript/<version>/Resource/Init/Fontmap.GS
|
|
# which lists Ghostscript's fonts but the fonts itself are provided in the
|
|
# separated packages ghostscript-fonts-std and ghostscript-fonts-other
|
|
# (regarding separated packages see /usr/share/ghostscript/<version>/doc/Fonts.htm)
|
|
# so that a RPM requirement is needed to make sure that Ghostscript has its fonts:
|
|
Requires: ghostscript-fonts-other
|
|
Requires: ghostscript-fonts-std
|
|
# Install into this non-root directory (required when norootforbuild is used):
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%description
|
|
Crippled Minimal Ghostscript which is not meant
|
|
to be used by end-users.
|
|
|
|
Minimal Ghostscript provides only the file format drivers
|
|
in particular to output JPEG PNG PostScript and PDF files
|
|
but no printer drivers (in particular neither 'cups'
|
|
nor 'ijs') and no X11 drivers.
|
|
|
|
The ghostscript-mini package is only meant to be used
|
|
by the openSUSE build service to avoid possible loops
|
|
in the build dependencies because ghostscript-mini
|
|
has minimal build dependencies (in particular
|
|
neither CUPS nor X11 build dependencies).
|
|
|
|
For most packages which need to only run
|
|
Ghostscript during build, a single line
|
|
"BuildRequires: ghostscript-mini"
|
|
should be sufficient in the RPM spec file.
|
|
|
|
For most packages which need Ghostscript
|
|
development files to build, a single line
|
|
"BuildRequires: ghostscript-mini-devel"
|
|
should be sufficient in the RPM spec file.
|
|
|
|
The ghostscript-mini package in the openSUSE build
|
|
service contains no sources and it must not contain
|
|
any source files. The ghostscript-mini package is only
|
|
a link to its matching ghostscript "parent" package.
|
|
Only that ghostscript package must contain all sources
|
|
and any changes must happen only for that ghostscript
|
|
package. This means any changes for the ghostscript-mini
|
|
package will be rejected in the openSUSE build service.
|
|
|
|
%package devel
|
|
Summary: Development files for Minimal Ghostscript
|
|
Group: Development/Libraries/C and C++
|
|
Requires: ghostscript-mini = %{version}
|
|
Conflicts: ghostscript
|
|
Conflicts: ghostscript-x11
|
|
Conflicts: ghostscript-devel
|
|
Conflicts: ghostscript-library
|
|
|
|
%description devel
|
|
This package contains the development files for Minimal Ghostscript.
|
|
|
|
%prep
|
|
# Be quiet when unpacking and
|
|
# use a directory name matching Source0 to make it work also for ghostscript-mini:
|
|
%setup -q -n ghostscript-%{tarball_version}
|
|
# Patch11 ppc64le-support.patch is a remainder of the previous patch
|
|
# now the hunk for LCMS (lcms/include/lcms.h) is removed
|
|
# because LCMS 1.x is removed since Ghostscript 9.16
|
|
# but the hunk for LCMS2 (lcms2/include/lcms2.h) is still needed
|
|
# see http://bugs.ghostscript.com/show_bug.cgi?id=695544
|
|
%patch11 -p1 -b .ppc64le-support.orig
|
|
# Patch100 remove-zlib-h-dependency.patch removes dependency on zlib/zlib.h
|
|
# in makefiles as we do not use the zlib sources from the Ghostscript upstream tarball:
|
|
#patch100 -p1 -b remove-zlib-h-dependency.orig
|
|
%patch101 -p1
|
|
rm -f Resource/Init/*.ps.orig
|
|
# Do not use the freetype jpeg libpng tiff zlib sources from the Ghostscript upstream tarball
|
|
# because we prefer to use for long-established standard libraries the ones from SUSE
|
|
# in particular to automatically get SUSE security updates for standard libraries.
|
|
# In contrast we use e.g. lcms2 from the Ghostscript upstream tarball because this one
|
|
# is specially modified to work with Ghostscript so that we cannot use lcms2 from SUSE:
|
|
#rm -rf freetype jpeg libpng tiff zlib
|
|
rm -rf freetype jpeg libpng tiff
|
|
|
|
%build
|
|
# Derive build timestamp from latest changelog entry
|
|
export SOURCE_DATE_EPOCH=$(date -d "$(head -n 2 %{_sourcedir}/%{name}.changes | tail -n 1 | cut -d- -f1 )" +%s)
|
|
# Set our preferred architecture-specific flags for the compiler and linker:
|
|
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
|
export CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
|
autoreconf -fi
|
|
# --docdir=%%{_defaultdocdir}/%%{name} does not work therefore it is not used.
|
|
# --disable-cups and --without-pdftoraster
|
|
# to have nothing related to CUPS in the minimal Ghostscript.
|
|
# --disable-dbus to have nothing related to D-Bus in the minimal Ghostscript.
|
|
# --without-ijs to disable IJS printer driver support in the minimal Ghostscript.
|
|
# --with-drivers=FILES to have only the file format drivers
|
|
# but no printer drivers in the minimal Ghostscript.
|
|
# --without-x to not use the X Window System.
|
|
# --enable-openjpeg because since Ghostscript 9.05 JasPer is deprecated
|
|
# (--without-jasper is now an unrecognized option by configure)
|
|
# and Ghostscript now ships modified OpenJPEG sources for JPEG2000 decoding
|
|
# (replacing JasPer - although JasPer is still included for this release)
|
|
# Performance, reliability and memory use whilst decoding JPX streams are all improved.
|
|
# see also http://bugs.ghostscript.com/show_bug.cgi?id=691430
|
|
# --without-ufst and --without-luratech because those are relevant to commercial releases only
|
|
# which would require a commercial license.
|
|
# --disable-compile-inits to disable compiling of resources (Fonts, init postscript files, ...)
|
|
# into the library, which is the upstream recommendation for distributions. This also allows
|
|
# unbundling the 35 Postscript Standard fonts, provided by the URW font package
|
|
# --without-libpaper disables libpaper support because SUSE does not have libpaper.
|
|
%define gs_font_path /usr/share/fonts/truetype:/usr/share/fonts/Type1:/usr/share/fonts/CID:/usr/share/fonts/URW
|
|
# See http://bugs.ghostscript.com/show_bug.cgi?id=693100
|
|
export SUSE_ASNEEDED=0
|
|
./configure --prefix=%{_prefix} \
|
|
--bindir=%{_bindir} \
|
|
--libdir=%{_libdir} \
|
|
--datadir=%{_datadir} \
|
|
--mandir=%{_mandir} \
|
|
--infodir=%{_infodir} \
|
|
--with-fontpath=%{gs_font_path} \
|
|
--with-libiconv=maybe \
|
|
--enable-freetype \
|
|
--with-jbig2dec \
|
|
--enable-openjpeg \
|
|
--enable-dynamic \
|
|
--disable-compile-inits \
|
|
--without-ijs \
|
|
--disable-cups \
|
|
--disable-dbus \
|
|
--without-pdftoraster \
|
|
--with-drivers=FILES \
|
|
--without-x \
|
|
--disable-gtk \
|
|
--without-ufst \
|
|
--without-luratech \
|
|
--without-libpaper
|
|
|
|
# Make libgs.so and two programs which use it, gsx and gsc:
|
|
# With --disable-gtk, gsx and gsc are identical. It provides a command line
|
|
# frontend to libgs equivalent (functional and command line arguments) to
|
|
# the gs binary, but uses the shared libgs instead of static linking
|
|
make so
|
|
# Configure and make libijs (that is not done regardless whether or not --with-ijs is used above):
|
|
pushd ijs
|
|
./autogen.sh
|
|
autoreconf -fi
|
|
./configure --prefix=%{_prefix} \
|
|
--bindir=%{_bindir} \
|
|
--libdir=%{_libdir} \
|
|
--datadir=%{_datadir} \
|
|
--mandir=%{_mandir} \
|
|
--infodir=%{_infodir} \
|
|
--enable-shared \
|
|
--disable-static
|
|
make
|
|
popd
|
|
|
|
%install
|
|
# Install libgs.so gsx gsc and some header files:
|
|
make soinstall DESTDIR=%{buildroot}
|
|
# Use gsc instead of gs, and remove duplicate gsx (see above)
|
|
mv %{buildroot}/%{_bindir}/{gsc,gs}
|
|
rm %{buildroot}/%{_bindir}/gsx
|
|
# Install libijs and its header files:
|
|
pushd ijs
|
|
make install DESTDIR=%{buildroot}
|
|
popd
|
|
# Remove installed ijs example client and server and its .la file:
|
|
rm %{buildroot}%{_bindir}/ijs_client_example
|
|
rm %{buildroot}%{_bindir}/ijs_server_example
|
|
rm %{buildroot}%{_libdir}/libijs.la
|
|
# Since Ghostscript 9.22rc1 bin/font2c and bin/wftopfa are removed
|
|
# but the matching man pages are still installed which are hereby also removed:
|
|
#rm %{buildroot}%{_mandir}/man1/font2c.1
|
|
#rm %{buildroot}%{_mandir}/man1/wftopfa.1
|
|
#rm %{buildroot}%{_mandir}/de/man1/font2c.1
|
|
#rm %{buildroot}%{_mandir}/de/man1/wftopfa.1
|
|
# Install documentation which is not installed by default
|
|
# see http://bugs.ghostscript.com/show_bug.cgi?id=693002
|
|
# and fail intentionally as notification if something changed:
|
|
DOCDIR=%{buildroot}%{_datadir}/ghostscript/%{built_version}/doc
|
|
for D in LICENSE
|
|
do test -e $DOCDIR/$( basename $D ) && exit 99
|
|
install -m 644 $D $DOCDIR
|
|
done
|
|
# Add a link from SUSE's usual documentation directory to Ghostscript's documentation directory
|
|
# because "configure --docdir=%%{_defaultdocdir}/%%{name}" does not work (see above):
|
|
install -d -m 755 %{buildroot}%{_defaultdocdir}
|
|
pushd %{buildroot}%{_defaultdocdir}
|
|
ln -s ../../ghostscript/%{built_version}/doc ghostscript
|
|
popd
|
|
# Extract the catalog of devices which are actually built-in in exactly this Ghostscript:
|
|
# If a needed source file is no longer accessible fail intentionally as notification
|
|
# that something changed which needs adaptions here:
|
|
for F in devices/devs.mak devices/contrib.mak contrib/contrib.mak
|
|
do test -r $F || exit 99
|
|
done
|
|
# Do not pollute the build log file with zillions of meaningless messages:
|
|
set +x
|
|
cat /dev/null >catalog.devices
|
|
for D in $( LD_LIBRARY_PATH=%{buildroot}/%{_libdir} %{buildroot}/usr/bin/gs -h | sed -n -e '/^Available devices:/,/^Search path:/p' | egrep -v '^Available devices:|^Search path:' )
|
|
do for F in devices/devs.mak devices/contrib.mak contrib/contrib.mak
|
|
do sed -n -e '/ Catalog /,/ End of catalog /p' $F | grep "[[:space:]]$D[[:space:]]" | grep -o '[[:alnum:]].*' | tr -s '[:blank:]' ' ' | sed -e 's/ /\t/' | expand -t16 >>catalog.devices
|
|
done
|
|
done
|
|
# Switch back to the usual build log messages:
|
|
set -x
|
|
install -m 644 catalog.devices $DOCDIR
|
|
|
|
%post -p /sbin/ldconfig
|
|
|
|
%postun -p /sbin/ldconfig
|
|
|
|
%files
|
|
%defattr(-, root, root)
|
|
%{_bindir}/dvipdf
|
|
%{_bindir}/eps2eps
|
|
%{_bindir}/gs
|
|
%{_bindir}/gsbj
|
|
%{_bindir}/gsdj
|
|
%{_bindir}/gsdj500
|
|
%{_bindir}/gslj
|
|
%{_bindir}/gslp
|
|
%{_bindir}/gsnd
|
|
%{_bindir}/lprsetup.sh
|
|
%{_bindir}/pdf2dsc
|
|
%{_bindir}/pdf2ps
|
|
%{_bindir}/pf2afm
|
|
%{_bindir}/pfbtopfa
|
|
%{_bindir}/pphs
|
|
%{_bindir}/printafm
|
|
%{_bindir}/ps2ascii
|
|
%{_bindir}/ps2epsi
|
|
%{_bindir}/ps2pdf
|
|
%{_bindir}/ps2pdf12
|
|
%{_bindir}/ps2pdf13
|
|
%{_bindir}/ps2pdf14
|
|
%{_bindir}/ps2pdfwr
|
|
%{_bindir}/ps2ps
|
|
%{_bindir}/ps2ps2
|
|
%{_bindir}/unix-lpr.sh
|
|
%doc %{_mandir}/man1/dvipdf.1.gz
|
|
%doc %{_mandir}/man1/eps2eps.1.gz
|
|
%doc %{_mandir}/man1/gs.1.gz
|
|
%doc %{_mandir}/man1/gsbj.1.gz
|
|
%doc %{_mandir}/man1/gsdj.1.gz
|
|
%doc %{_mandir}/man1/gsdj500.1.gz
|
|
%doc %{_mandir}/man1/gslj.1.gz
|
|
%doc %{_mandir}/man1/gslp.1.gz
|
|
%doc %{_mandir}/man1/gsnd.1.gz
|
|
%doc %{_mandir}/man1/pdf2dsc.1.gz
|
|
%doc %{_mandir}/man1/pdf2ps.1.gz
|
|
%doc %{_mandir}/man1/pf2afm.1.gz
|
|
%doc %{_mandir}/man1/pfbtopfa.1.gz
|
|
%doc %{_mandir}/man1/printafm.1.gz
|
|
%doc %{_mandir}/man1/ps2ascii.1.gz
|
|
%doc %{_mandir}/man1/ps2epsi.1.gz
|
|
%doc %{_mandir}/man1/ps2pdf.1.gz
|
|
%doc %{_mandir}/man1/ps2pdf12.1.gz
|
|
%doc %{_mandir}/man1/ps2pdf13.1.gz
|
|
%doc %{_mandir}/man1/ps2pdf14.1.gz
|
|
%doc %{_mandir}/man1/ps2pdfwr.1.gz
|
|
%doc %{_mandir}/man1/ps2ps.1.gz
|
|
%doc %{_mandir}/de/man1/dvipdf.1.gz
|
|
%doc %{_mandir}/de/man1/eps2eps.1.gz
|
|
%doc %{_mandir}/de/man1/gsnd.1.gz
|
|
%doc %{_mandir}/de/man1/pdf2dsc.1.gz
|
|
%doc %{_mandir}/de/man1/pdf2ps.1.gz
|
|
%doc %{_mandir}/de/man1/printafm.1.gz
|
|
%doc %{_mandir}/de/man1/ps2ascii.1.gz
|
|
%doc %{_mandir}/de/man1/ps2pdf.1.gz
|
|
%doc %{_mandir}/de/man1/ps2pdf12.1.gz
|
|
%doc %{_mandir}/de/man1/ps2pdf13.1.gz
|
|
%doc %{_mandir}/de/man1/ps2pdf14.1.gz
|
|
%doc %{_mandir}/de/man1/ps2ps.1.gz
|
|
%doc %{_defaultdocdir}/ghostscript
|
|
%dir %{_datadir}/ghostscript
|
|
%dir %{_datadir}/ghostscript/%{built_version}
|
|
%{_datadir}/ghostscript/%{built_version}/Resource
|
|
%{_datadir}/ghostscript/%{built_version}/iccprofiles
|
|
%doc %{_datadir}/ghostscript/%{built_version}/doc/
|
|
%{_datadir}/ghostscript/%{built_version}/examples/
|
|
%{_datadir}/ghostscript/%{built_version}/lib/
|
|
%{_libdir}/libgs.so.*
|
|
%{_libdir}/ghostscript/
|
|
%{_libdir}/libijs-0.35.so
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
%{_includedir}/ghostscript/
|
|
%{_libdir}/libgs.so
|
|
%{_includedir}/ijs/
|
|
%{_libdir}/libijs.so
|
|
%{_libdir}/pkgconfig/ijs.pc
|
|
|
|
%changelog
|