Blob Blame History Raw
#
# spec file for package a2ps
#
# Copyright (c) 2024 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:           a2ps
Version:        4.15.5
Release:        0
Summary:        Tool to convert ASCII/Latin Text into PostScript
License:        GPL-3.0-or-later
URL:            https://www.gnu.org/software/a2ps/a2ps.html
Source0:        https://ftp.gnu.org/gnu/a2ps/%{name}-%{version}.tar.gz
Source1:        https://ftp.gnu.org/gnu/a2ps/%{name}-%{version}.tar.gz.sig
Source2:        %{name}.keyring
Source3:        a2ps-ko.po
Source4:        a2ps-open
Source5:        a2ps-4.14-manuals.diff
Patch0:         a2ps-4.14.diff
Patch2:         a2ps-4.14-ogonkify.patch
Patch3:         a2ps-4.14-tempfile.patch
Patch6:         a2ps-4.13-include.patch
Patch8:         a2ps-4.13-base.patch
Patch9:         a2ps-4.13-utf8.patch
Patch10:        a2ps-4.13-types.patch
Patch13:        a2ps-4.14-linker.patch
Patch17:        a2ps-buildcompare.patch
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  bison
BuildRequires:  emacs-nox
BuildRequires:  flex
BuildRequires:  ghostscript-fonts-std
BuildRequires:  glibc-locale
BuildRequires:  gv
BuildRequires:  libpaper-devel
BuildRequires:  libtool
BuildRequires:  psutils
BuildRequires:  texlive-latex
BuildRequires:  timezone
BuildRequires:  pkgconfig(bdw-gc)
Requires:       file
Requires:       ghostscript-fonts-std
Requires:       glibc
Requires:       glibc-locale
Requires:       sed
Requires:       w3m
Requires:       wdiff
Requires(post): %{install_info_prereq}
Requires(preun): %{install_info_prereq}
Suggests:       ImageMagick
Suggests:       acroread
Suggests:       gv
Suggests:       psutils
Suggests:       texinfo
Suggests:       texlive-latex
Provides:       a2ps-bin
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  gperf
BuildRequires:  groff
BuildRequires:  makeinfo
BuildRequires:  texi2html
BuildRequires:  texinfo

%description
a2ps converts ASCII text into PostScript. This feature is used by
apsfilter, for example, to pretty-print ASCII text.

Warning: a2ps is not able to convert complex Unicode (UTF-8) text to
PostScript.  Only language text which can be converted from UTF-8 to
Latin encodings are supported.

%package -n liba2ps1
Summary:        Library to convert ASCII/Latin text into PostScript

%description -n liba2ps1
The library liba2ps used by the program a2ps to convert ASCII text into PostScript.

%package     -n a2ps-devel
Summary:        Library and header file for the interface of a2ps
Requires:       glibc-devel
Requires:       liba2ps1 = %{version}

%description -n a2ps-devel
a2ps converts ASCII text into PostScript. This feature is used by
apsfilter, for example, to pretty-print ASCII text.

Warning: a2ps is not able to convert complex Unicode (UTF-8) text to
PostScript.  Only language text which can be converted from UTF-8 to
Latin encodings are supported.

%lang_package

%prep
%setup -q -n a2ps-4.15.5
touch -r configure.ac .ref
%patch -P 2  -p1
%patch -P 3  -p1
%patch -P 6  -p1 -b .incld
%patch -P 8   -b .base
%patch -P 9   -b .utf8
%patch -P 10  -b .types
%patch -P 13 -p1 -b .p13
%patch -P 17 -p1 -b .p17
%patch -P 0   -b .p0
cp -f %{SOURCE3} po/ko.po
find -type f | grep -vE '(parseppd|parsessh).y' | xargs \
sed -ri 's/59 Temple Place(,| -) Suite 330/51 Franklin Street, Fifth Floor/;s/02111-1307/02110-1301/'
find -name Makefile.in | xargs touch

%build
 autoreconf -fiv -I $PWD -I $PWD/m4
 export PATH=$PWD:$PATH
 export CFLAGS="%{optflags} -D_GNU_SOURCE $(getconf LFS_CFLAGS) -funroll-loops -Wall -pipe -fstack-protector -fPIE"
 export LPR=lpr
 export CC=gcc
 export TZ=UTC
 export COM_psselect=yes
%configure --enable-shared --disable-static --with-medium=LC_PAPER \
	--with-encoding=LC_CTYPE

 for mf in $(find -name Makefile); do
   sed -ri -e '/^am--refresh: Makefile/,/\t@:/d' \
           -e '/^\$\(top_builddir\)\/config.status:/,/^\t/d' \
           -e '/^\$\(top_srcdir\)\/configure/,/^\t/d' \
           -e '/^\$\(ACLOCAL_M4\):/,/^\t/d' \
           -e '/^\t\s+\$\(SHELL\)\s\.\/config\.status;;\s\\/{s/\.\/config.status/-c true/}' $mf
 done

 make -C contrib/ LDFLAGS="-pie" AUTOMAKE=/bin/true
 # the build system is awful so we need to build with -B and avoid parallelism
 make PSFONT_PATH=%{_datadir}/ghostscript/fonts LDFLAGS="-pie" AUTOMAKE=/bin/true AUTOHEADER=/bin/true MAKEINFO='makeinfo --force' GPERF=/usr/bin/gperf -B all
 pushd doc
   texi2html a2ps.texi
 popd
 pushd contrib/emacs
   echo "(setq load-path (cons nil load-path))" > script
   for el in a2ps.el a2ps-print.el
   do
     emacs -batch -q -l script -f batch-byte-compile $el
   done
 popd
 pushd liba2ps
   gcc -shared .libs/*.o -Wl,-soname -Wl,liba2ps.so.1 -o .libs/liba2ps.so.1.0.0
   ln -s liba2ps.so.1.0.0 .libs/liba2ps.so.1
   ln -s liba2ps.so.1.0.0 .libs/liba2ps.so
   rm -vf liba2ps.a
   sed -ri -e "/dlname/{ s/(dlname=')(')/\1liba2ps.so.1\2/ }" \
           -e "/old_library=/{ s/liba2ps\.a/liba2ps.so/ }" \
           -e "/library_names/{ s/(library_names=')(')/\1liba2ps.so.1.0.0 liba2ps.so.1 liba2ps.so\2/ }" liba2ps.la
 popd
 pushd src
   rm a2ps
   make AUTOMAKE=/bin/true AUTOHEADER=/bin/true a2ps
 popd
 # Run a test with UTF-8 Umlauts
 mkdir -p .root/.a2ps
 echo "This is a test text äöüßœéïçèãøæđ" > test.utf8
 ln -sf $PWD/ps/*		.root/.a2ps/
 ln -sf $PWD/afm/*		.root/.a2ps/
 ln -sf $PWD/encoding/*		.root/.a2ps/
 ln -sf $PWD/ogonkify/*		.root/.a2ps/
 ln -sf $PWD/ppd/*		.root/.a2ps/
 ln -sf $PWD/sheets/*		.root/.a2ps/
 A2PS_CONFIG=$PWD%{_sysconfdir}/a2ps.cfg \
        HOME=$PWD/.root LD_LIBRARY_PATH=$PWD/liba2ps/.libs \
    LC_CTYPE=en_US.UTF-8 ./src/a2ps --output=test.latin test.utf8
 grep '(This is a test text' test.latin | iconv -f latin1 -t utf8
 chmod u+rw,g+r,o+r man/*.1
 cp -p man/a2ps.1 man/a2ps.1.backup
 patch --reject-format=unified --quoting-style=literal -f -p0 -F0 < %{S:5} || :
 if test -e man/a2ps.1.rej ; then
    cat man/a2ps.1.rej
    exit 1
 else
    sed -ri '/^\.B lt-a2ps/{s/lt-(a2ps)/\1/}' man/a2ps.1 || :
 fi

%install
 make -C contrib/ install DESTDIR=%{buildroot}
 %make_install PSFONT_PATH=%{_datadir}/ghostscript/fonts
 rm -r %{buildroot}/%{_infodir}/regex*
 rm -f %{buildroot}%{_libdir}/liba2ps.la
 install -m 0755 %{SOURCE4} %{buildroot}/%{_bindir}/
 pushd contrib/emacs
   for el in a2ps.el a2ps-print.el
   do
     install ${el}c %{buildroot}%{_datadir}/emacs/site-lisp/
   done
 popd
 pushd liba2ps
   mkdir -p %{buildroot}%{_libdir}
   mkdir -p %{buildroot}%{_includedir}
   install .libs/liba2ps.so.1.0.0 %{buildroot}%{_libdir}/
   ln -s liba2ps.so.1.0.0 %{buildroot}%{_libdir}/liba2ps.so.1
   ln -s liba2ps.so.1.0.0 %{buildroot}%{_libdir}/liba2ps.so
   install -m 0644 liba2ps.h %{buildroot}%{_includedir}
 popd
 for sc in card fixps lp2 pdiff
 do
   sed -ri '1 {s@/env +@/@}' %{buildroot}%{_bindir}/$sc
 done
%find_lang %{name} %{name}.lang
%find_lang %{name}-gnulib %{name}.lang

%post
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/ogonkify.info.gz

%preun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/ogonkify.info.gz

%post   -n liba2ps1 -p /sbin/ldconfig
%postun -n liba2ps1 -p /sbin/ldconfig

%files
%doc AUTHORS ABOUT-NLS ChangeLog NEWS THANKS README doc/a2ps.html
%config %{_sysconfdir}/a2ps-site.cfg
%config %{_sysconfdir}/a2ps.cfg
%{_bindir}/a2ps
%{_bindir}/a2ps-open
%{_bindir}/a2ps-lpr-wrapper
%{_bindir}/card
%{_bindir}/composeglyphs
#{_bindir}/fixnt
%{_bindir}/fixps
%{_bindir}/ogonkify
%{_bindir}/pdiff
#{_bindir}/psmandup
%{_bindir}/lp2
#{_bindir}/psset
#{_bindir}/texi2dvi4a2ps
%{_infodir}/*.gz
%{_mandir}/man1/*.1.gz
%{_datadir}/a2ps
%{_datadir}/emacs/site-lisp/*.el
%{_datadir}/emacs/site-lisp/*.elc
%{_datadir}/ogonkify

%files lang -f %{name}.lang

%files -n liba2ps1
%{_libdir}/liba2ps.so.*

%files -n a2ps-devel
%{_includedir}/liba2ps.h
%{_libdir}/liba2ps.so

%changelog