%define _disable_ld_no_undefined 1 %define rel 4 %define gsverdir 10030 %define gsver 10.03.0 %define ijsver 0.35 # This is the offset of the previous version. Seems like the BS # increases this automatically %define ijsreloffset 177 %define ijsrelno %(echo $((%{rel} + %{ijsreloffset}))) %define ijsrel %mkrel %{ijsrelno} %define ijsmajor 1 %define libijs %mklibname ijs %{ijsmajor} %define libijs_devel %mklibname -d ijs %define gsmajor 10 %define libgs %mklibname gs %{gsmajor} %define libgs_devel %mklibname -d gs %define bootstrap 0 %define GSx11SVGAmodule 1 Summary: PostScript/PDF interpreter and renderer (Main executable) Name: ghostscript Version: %{gsver} Release: %mkrel %{rel} License: AGPLv3+ Group: Publishing URL: https://www.ghostscript.com/ Source0: https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs%gsverdir/ghostscript-%gsver.tar.xz Source2: ps2pdfpress.bz2 Source3: https://www.openprinting.org/download/printing/sipixa6.upp.bz2 # Don't define static openjpeg2, breaks linking Patch0: ghostscript-9.51-openjpeg2-non-static.patch # Fix some shell scripts Patch1: ghostscript-scripts.patch # Build igcref.c with -O0 to work around bug #150771. Patch2: ghostscript-noopt.patch # Define .runlibfileifexists. Patch3: ghostscript-runlibfileifexists.patch # Restored Fontmap.local patch, incorrectly dropped after # ghostscript-8.15.4-3 (bug #610301). # Note: don't use -b here to avoid the backup file ending up in the # package manifest. Patch4: ghostscript-Fontmap.local.patch # From Deb Patch20: 1004_enable_spot_devices.patch # From git upstream (https://github.com/ArtifexSoftware/ghostpdl), starting from 100. %if !%{bootstrap} BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: cups-devel BuildRequires: pkgconfig(fontconfig) %endif BuildRequires: bison BuildRequires: docbook-utils-pdf BuildRequires: flex BuildRequires: libtool BuildRequires: unzip BuildRequires: gettext-devel BuildRequires: glibc-devel BuildRequires: jbig2dec-devel >= 0.19-3 BuildRequires: pkgconfig(libjpeg) BuildRequires: libpaper-devel BuildRequires: netpbm-devel BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(ice) BuildRequires: pkgconfig(jasper) BuildRequires: pkgconfig(lcms2) >= 2.5 BuildRequires: pkgconfig(libidn) BuildRequires: pkgconfig(libopenjp2) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(zlib) Requires: ghostscript-common Requires: update-alternatives %if !%{GSx11SVGAmodule} %rename ghostscript-module-X ghostscript-module-SVGALIB %endif %description Ghostscript is a set of software tools that provide a PostScript(TM) interpreter, a set of C procedures (the Ghostscript library, which implements the graphics capabilities in the PostScript language) and an interpreter for Portable Document Format (PDF) files. Ghostscript translates PostScript code into many common, bitmapped and vector formats, like those understood by your printer or screen. Ghostscript is normally used to display PostScript files and to print PostScript files to non-PostScript printers. You should install ghostscript if you need to display PostScript or PDF files, or if you have a non-PostScript printer. %package dvipdf Summary: PostScript/PDF interpreter and renderer (DVI-to-PDF converter) Group: Publishing Requires: ghostscript Requires: coreutils Requires: dvips Provides: dvipdf = %{version}-%{release} %description dvipdf Tool to convert the DVI format of TeX into the PDF format. There are more such tools (for different quality levels) in the dvipdfm package. All these tools use dvips of TeX to convert the DVI file to PostScript, then they use GhostScript to generate the PDF file. %package common Summary: PostScript/PDF interpreter and renderer (Common files) Group: Publishing Requires: urw-fonts >= 1.1 Requires: ghostscript-fonts %description common Ghostscript is a PostScript/PDF interpreter. It can render both PostScript and PDF files to devices which include X window, many printer formats, and popular graphics file formats. This package contains the common data files needed by GhostScript. %package X Summary: PostScript/PDF interpreter and renderer (with X11 screen display) Group: Publishing Requires: ghostscript-common Requires: update-alternatives %description X Ghostscript is a PostScript/PDF interpreter. It can render both PostScript and PDF files to devices which include X window, many printer formats, and popular graphics file formats. This package contains a GhostScript executable with GTK-based X display support ("display" device, default, so it displays files by simply entering "gs " on the command line). It makes use of the GhostScript shared library. %if %{GSx11SVGAmodule} %package module-X Summary: PostScript/PDF interpreter and renderer (Additional support for X) Group: Publishing Requires: ghostscript-common %description module-X Ghostscript is a PostScript/PDF interpreter. It can render both PostScript and PDF files to devices which include X window, many printer formats, and popular graphics file formats. This package enhances Ghostscript with X window support %endif %package -n %libgs Summary: PostScript/PDF interpreter and renderer (GhostScript shared library) Group: Publishing %description -n %libgs This is the API library for programs which use the PostScript and/or PDF interpreters of GhostScript. %package -n %libgs_devel Summary: Headers and links to compile against the "%{libgs}" library Group: Development/C Requires: %libgs >= %{gsver} Provides: %{name}-devel = %{gsver} Provides: libgs-devel = %{gsver} Obsoletes: %{_lib}gs9-devel < %{gsver} Obsoletes: %{_lib}gs8-devel < %{gsver} %description -n %libgs_devel This package contains the static library and the header files needed to compile applications using the GhostScript shared library. %package -n %{libijs} Version: %{ijsver} Release: %{ijsrel} Summary: Dynamic library for the IJS printer driver plug-in interface Group: Publishing URL: https://www.openprinting.org/download/ijs/ Provides: libijs = %{ijsver}-%{ijsrel} %description -n %{libijs} This is the API library for programs using the IJS printer driver plug-in interface. Printer drivers using this interface can be added to GhostScript (6.53 or newer) without needing to rebuild GhostScript. Application programs providing an IJS interface can make use of IJS printer drivers directly, without needing GhostScript. %package -n %{libijs_devel} Version: %{ijsver} Release: %{ijsrel} Summary: Headers and links for compiling against the "%{libijs}" library Group: Development/C URL: https://www.openprinting.org/download/ijs/ Requires: %{libijs} >= %{ijsver} Requires: multiarch-utils Provides: libijs-devel = %{ijsver}-%{ijsrel} Provides: ijs-devel = %{ijsver}-%{ijsrel} Obsoletes: %{_lib}ijs1-devel < %{ijsver}-%{ijsrel} %description -n %{libijs_devel} This package contains the static library and the header files needed to compile applications using the IJS library. %package doc Summary: Documentation for GhostScript Group: Publishing BuildArch: noarch %description doc This package contains documentation for GhostScript. %prep %setup -qn ghostscript-%gsver rm -rf expat freetype icclib jasper jpeg jpegxr lcms2 libpng openjpeg zlib cups/libs %autopatch -p1 # Don't ship backup files find . -name "*.*~" |xargs rm -f # Prevent building and using bundled libs rm -rf jasper libpng jpeg tiff expat zlib lcms* freetype # Beware that starting from ghostscript-10.0 the jbig2dec sources seems not distributed anymore as standalone # archive, but they are just bundled into the ghostscript sources. # See https://github.com/ArtifexSoftware/ghostpdl/commits/master/jbig2dec for a changelog. You should merge # the the changes into our jbig2dec standalone package if you want to continue to use the external jbig2dec # system library with ghostscript, instead of the bundled one! # # (Prevent using bundled jbig2dec) rm -rf jbig2dec # Stuff for shared library support to ghostscript. %if %{GSx11SVGAmodule} # build a small README describing the features available. cat <README.shared.%{_vendor} This version of ghostscript support shared modules dynamically loaded at run time. There are currently two modules compiled with the %{distribution} version of ghostscript, one to support all X11 devices (typically used by gv) and another to support the svgalib devices. Look at the ghostscript-module-??? packages. There is no configuration needed, just can add (or remove) the package to add (or remove) the devices concerned in ghostscript. EOF %endif # ps2pdfpress bzcat %{SOURCE2} > ps2pdfpress # UPP file for SiPix Pocket Printer A6 bzcat %{SOURCE3} > sipixa6.upp %build %global optflags %(echo "%{optflags} -Wno-incompatible-pointer-types -Wno-int-conversion") # We have a Subversion version, so we must re-generate "configure" ./autogen.sh %if %{GSx11SVGAmodule} export CFLAGS="%{optflags} -fPIC" %endif %configure \ %if %{GSx11SVGAmodule} --enable-dynamic \ --disable-hidden-visibility \ %endif %if !%{bootstrap} --enable-fontconfig \ %endif %ifarch %{ix86} --disable-sse2 \ %endif %ifarch %{arm} --without-tesseract \ %endif --with-drivers=ALL \ --with-fontpath="/usr/share/fonts/default/ghostscript:/usr/share/fonts/default/type1:/usr/share/ghostscript/fonts:/usr/share/ghostscript/%{gsver}/Resource:/usr/share/ghostscript/Resource:/usr/share/ghostscript/CIDFont:/usr/share/fonts/ttf:/usr/share/fonts/type1:/usr/share/fonts/default/Type1" \ --with-ijs \ --with-x \ --disable-compile-inits \ --with-system-libtiff \ # Build IJS pushd ijs ./autogen.sh %configure \ %ifarch %{ix86} --disable-sse2 \ %endif --enable-shared \ --disable-static %make_build popd # Set documentation dir perl -p -i -e 's|^(docdir=).*$|$1\$\(datadir\)/doc/%{name}-doc-%{gsver}|' Makefile # Fix references to X11 libraries perl -p -i -e "s|(/usr/X11R6)/lib\b|\1/%{_lib}|g" Makefile base/*.mak # Correct paths for CJK fonts perl -p -i -e "s:/usr/share/ghostscript/:/usr/share/ghostscript/Resource/:g" Resource/Init/gs_res.ps perl -p -i -e "s:ghostscript/Resource/fonts:ghostscript/Resource/Font:g" Resource/Init/gs_res.ps # bork perl -p -i -e "s|^EXTRALIBS=|EXTRALIBS=-L/%{_lib} -lz |g" Makefile %if %{GSx11SVGAmodule} %make_build obj/X11.so %endif %make_build so %install # Make directories install -d %{buildroot}%{_bindir} install -d %{buildroot}%{_libdir} install -d %{buildroot}%{_includedir} install -d %{buildroot}%{_sysconfdir} install -d %{buildroot}%{_mandir}/man1 %if !%{bootstrap} install -d %{buildroot}%{_prefix}/lib/cups install -d %{buildroot}%{_datadir}/cups/model install -d %{buildroot}%{_sysconfdir}/cups %endif pushd ijs* %configure \ --enable-shared \ --prefix=%{buildroot}%{_prefix} \ --libdir=%{buildroot}%{_libdir} # Work around bug in "configure" script perl -p -i -e 's/\@OBJEXT\@/o/g' Makefile perl -p -i -e 's/\@EXEEXT\@//g' Makefile %makeinstall # Fix prefixes in scripts perl -p -i -e "s:%{buildroot}::g" %{buildroot}%{_libdir}/pkgconfig/ijs.pc popd ##### GHOSTSCRIPT mkdir -p %{buildroot}%{_docdir}/ghostscript-doc-%{gsver} %if !%{bootstrap} make \ prefix=%{_prefix} \ DESTDIR=%{buildroot} \ gssharedir=%{_libdir}/ghostscript/%{gsver} \ docdir=%{_docdir}/ghostscript-doc-%{gsver} \ bindir=%{_bindir} \ mandir=%{_mandir} \ %endif make \ prefix=%{_prefix} \ DESTDIR=%{buildroot} \ gssharedir=%{_libdir}/ghostscript/%{gsver} \ docdir=%{_docdir}/ghostscript-doc-%{gsver} \ bindir=%{_bindir} \ libdir=%{_libdir} \ mandir=%{_mandir} \ soinstall ln -sf gs.1%{_extension} %{buildroot}%{_mandir}/man1/ghostscript.1%{_extension} # ps2pdfpress install -m 755 ps2pdfpress %{buildroot}%{_bindir} # UPP file for SiPix Pocket Printer A6 #mkdir -p %%{buildroot}%%{_datadir}/ghostscript/%%{gsver}/lib install -m 644 sipixa6.upp %{buildroot}%{_datadir}/ghostscript/%{gsver}/lib/ # Correct permissions for all documentation files chmod -R a+rX %{buildroot}%{_docdir} chmod -R go-w %{buildroot}%{_docdir} chmod -R u+w %{buildroot}%{_docdir} # remove libtool archive rm -f %{buildroot}%{_libdir}/libijs.la # Remove dangling link (mga#22919) rm -f %{buildroot}%{_datadir}/%{name}/%{gsver}/doc %post # Set up update-alternatives entries %{_sbindir}/update-alternatives --install %{_bindir}/gs gs %{_bindir}/gsc 200 %post X # Set up update-alternatives entries %{_sbindir}/update-alternatives --install %{_bindir}/gs gs %{_bindir}/gsx 100 %post common # Initialize japanese fonts if test -f /usr/share/fonts/ttf/japanese/cidinst; then sh /usr/share/fonts/ttf/japanese/cidinst fi %preun if [ "$1" = 0 ]; then # Remove update-alternatives entry %{_sbindir}/update-alternatives --remove gs %{_bindir}/gsc fi %preun X if [ "$1" = 0 ]; then # Remove update-alternatives entry %{_sbindir}/update-alternatives --remove gs %{_bindir}/gsx fi %files %{_bindir}/gsc %files X %{_bindir}/gsx %files common %dir %{_datadir}/ghostscript %{_datadir}/ghostscript/%{gsver} %{_mandir}/man1/* #{_bindir}/[a-c]* %{_bindir}/[e-f]* #{_bindir}/gs-common %{_bindir}/gs[a-b]* %{_bindir}/gs[d-n]* %{_bindir}/[j-l]* %{_bindir}/[n-z]* %files doc %doc %{_docdir}/ghostscript-doc-%{gsver} %files dvipdf %{_bindir}/dvipdf %if %{GSx11SVGAmodule} %files module-X %doc README.shared.%{_vendor} %dir %{_libdir}/ghostscript/%{gsver} %{_libdir}/ghostscript/%{gsver}/X11.so %endif %files -n %{libgs} %{_libdir}/libgs.so.*%{gsmajor}{,.*} %files -n %{libgs_devel} %{_libdir}/libgs.so %{_includedir}/ghostscript %files -n %{libijs} %{_libdir}/libijs-%{ijsver}.so %files -n %{libijs_devel} %doc ijs/README %{_libdir}/libijs.so %{_libdir}/pkgconfig/ijs.pc %{_includedir}/ijs %{_bindir}/ijs_client_example %{_bindir}/ijs_server_example