groff/groff.spec

382 lines
13 KiB
RPMSpec

#
# spec file for package groff
#
# Copyright (c) 2019 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 https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "full"
%bcond_without full_build
%else
%bcond_with full_build
%endif
Name: groff
Version: 1.22.3
Release: 0
Summary: GNU troff Document Formatting System
License: GPL-3.0-or-later
Group: Productivity/Publishing/Troff
Url: http://www.gnu.org/software/groff/groff.html
Source0: ftp://ftp.gnu.org/gnu/groff/groff-%{version}.tar.gz
Source1: ftp://ftp.gnu.org/gnu/groff/groff-%{version}.tar.gz.sig
Source2: groff.keyring
Source3: zzz-groff.sh
Source4: zzz-groff.csh
# rm -f foo
# for file in `cat series | grep -v '^#' | grep '^[a-z]' `; do
# cat $file >> foo
# done
##remove a part related to src/preproc/html/pre-html.cpp - see bnc#755533
# filterdiff -x 'src/preproc/html/pre-html.cpp' foo > groff_1.22.2-2.debian.diff
##remove Debian package string for openSUSE package string
##delete the papersize /etc settings patch
Patch0: groff_1.22.3-1.debian.diff
Patch1: groff-1.20.1-destbufferoverflow.patch
Patch2: groff-1.20.1-nroff-empty-LANGUAGE.patch
Patch3: groff-1.21-groffer-libexecdir.patch
Patch4: groff-1.20.1-deunicode.patch
Patch5: groff-1.21-CVE-2009-5044.patch
#PATCH-FIX-OPENSUSE: splitted patch6 and patch7 from
#http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/groff/groff-1.20.1-owl-tmp.diff?rev=1.2;content-type=text%2Fplain
Patch6: groff-1.21-CVE-2009-5080.patch
Patch7: groff-1.21-CVE-2009-5081.patch
#PATCH-FIX-OPENSUSE: FATE#312586
#sent upstream http://lists.gnu.org/archive/html/bug-groff/2011-09/msg00002.html
#so they would be available on next release of groff
Patch8: 0001-locale-support-in-papersize-definition.patch
Patch9: 0002-documentation-for-the-locale-keyword.patch
# change the papersize definition to force the locale usage
# it can be supressed by /etc/papersize if needed
Patch10: groff-force-locale-usage.patch
# PATCH-FIX-UPSTREAM fix build with multiple threads ; taken from upstream
Patch11: groff-multi-thread.patch
# PATCH-FIX-UPSTREAM e4290210f2c1db5292d97678197a986d6822d044
Patch12: groff-use-SDE.patch
# PATCH-FIX-UPSTREAM 677274dafc5dd5f79f2a6d16270b21d2f5a16c5b
Patch13: groff-reproducible-mdate.patch
BuildRequires: bison
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: makeinfo
%if !%{with full_build}
Recommends: groff-full
%else
BuildRequires: ghostscript-library
BuildRequires: groff
BuildRequires: netpbm
BuildRequires: psutils
# for gxditview and X fontx
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xaw7)
BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xt)
# for pre-grohtml and pdfroff
Requires: ghostscript-library
# requires the -base package
Requires: groff = %{version}
Requires: netpbm
Requires: psutils
Requires(post): %{install_info_prereq}
Provides: jgroff = %{version}-%{release}
Provides: normal-groff = %{version}-%{release}
Obsoletes: jgroff < %{version}
# X fonts were moved back
Provides: groff-devx = %{version}-%{release}
Obsoletes: groff-devx <= 1.21
%endif
%if !%{with full_build}
%description
The groff package is a stripped-down package containing the necessary
components to read manual pages in ASCII, Latin-1, and UTF-8, plus the
PostScript device (groff's default). Users who want a full groff installation,
with the standard set of devices, fonts, macros, and documentation, should
install the groff-full package.
%else #groff_base_only
%description
The groff-full package provides aditional tools excluded from base groff
package, like grohtml, X fonts et. all.
Groff is used to "compile" man pages stored in groff or nroff format
for different output devices, for example, displaying to a screen or in
PostScript(tm) format for printing on a PostScript(tm) printer.
%package -n groff-doc
Summary: HTML documentation and examples for groff
Group: Productivity/Publishing/Troff
BuildArch: noarch
%description -n groff-doc
The groff package provides compatible versions of troff, nroff, eqn,
tbl, and other Unix text formatting utilities.
Groff is used to "compile" man pages stored in groff or nroff format
for different output devices, for example, displaying to a screen or in
PostScript(tm) format for printing on a PostScript(tm) printer.
%package -n gxditview
Summary: Ditroff Output Displayer for Groff
Group: Productivity/Publishing/Troff
Requires: groff-full = %{version}
# bnc#668254
Supplements: packageand(groff:xorg-x11-libX11)
Conflicts: jgxdview
Provides: gxdview = %{version}-%{release}
Obsoletes: gxdview < %{version}
%description -n gxditview
This version of xditview is called gxditview and has some extensions
used by the groff command. gxditview is used by groff if called with
the -X option.
%endif #groff_base_only
%prep
%setup -q -n groff-%{version}
%patch0 -p1 -b .debian
%patch1
%patch2 -p1 -b .bnc540600
%patch3 -p1 -b .groffer-libexecdir
%patch4 -p1 -b .deunicode
%patch5 -p1 -b .CVE-2009-5044
%patch6 -p1 -b .CVE-2009-5080
%patch7 -p1
%patch8 -p1 -b .locale
%patch9 -p1 -b .locale2
%patch10 -p1 -b .force-locale
%patch11 -b .multithread
%patch12 -p1
%patch13 -p1
%build
PATH=$PWD/src/roff/troff:$PWD/src/preproc/pic:$PWD/src/preproc/eqn:$PWD/src/preproc/tbl:$PWDsrc/preproc/refer:$PWD/src/preproc/soelim:$PATH
PATH=$PWD/src/roff/grog:$PWD/src/roff/groff:$PWD/src/devices/grops:$PWD/src/devices/grotty:$PWD/src/devices/grodvi:$PWD/src/devices/grohtml:$PATH
GROFF_COMMAND_PREFIX=
GROFF_FONT_PATH=$PWD
GROFF_TMAC_PATH=$PWD/tmac:$PWD/src/roff/troff
export PATH GROFF_COMMAND_PREFIX GROFF_FONT_PATH GROFF_TMAC_PATH
export CFLAGS="%{optflags} -fno-strict-aliasing -fPIE"
export CXXFLAGS="%{optflags} -fno-strict-aliasing -fPIE"
export LDFLAGS="-pie"
# Libdir override as we don't have any arch dependant code just pl scripts
%configure \
--libdir=%{_libexecdir} \
--with-appresdir=%{_datadir}/X11/app-defaults \
--with-grofferdir=%{_libexecdir}/groff/groffer
make %{?_smp_mflags}
%install
%if !%{with full_build}
install -d -m 0755 %{buildroot}%{_bindir}
install -d -m 0755 %{buildroot}%{_mandir}/man1
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/%{version}/
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/%{version}/font/
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/%{version}/tmac/
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/%{version}/tmac/mdoc/
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/site-tmac/
install -d -m 0755 %{buildroot}%{_libexecdir}/groff/grog/
%else
make DESTDIR=%{buildroot} install %{?_smp_mflags} docdir=%{_defaultdocdir}/groff
%endif
### see Debian's groff-base.install.in ###
for BIN in eqn groff grog grops grotty neqn nroff pic preconv soelim tbl troff; do
%if !%{with full_build}
# install binary
install -m 0755 $(find . -type f -name ${BIN}) %{buildroot}/%{_bindir}/
# install man
MAN_SOURCE=$(find src -name "${BIN}.n")
MAN_DEST="${MAN_SOURCE%.n}.1" # replace suffix .n by .1
MAN_DEST="${MAN_DEST##*/}" # remove the path/before/
install -m 0644 "${MAN_SOURCE}" "%{buildroot}%{_mandir}/man1/${MAN_DEST}"
%else
# remove binary already in groff.rpm
rm %{buildroot}/%{_bindir}/${BIN}
# remove manual already in groff.rpm
rm %{buildroot}/%{_mandir}/man1/${BIN}.*
%endif
done
%if !%{with full_build}
# datadir
install -m 0644 src/utils/indxbib/eign %{buildroot}%{_datadir}/%{name}/%{version}/
%else
rm %{buildroot}%{_datadir}/groff/%{version}/eign
%endif
%if !%{with full_build}
install -m 0644 src/roff/grog/subs.pl %{buildroot}%{_libexecdir}/groff/grog/subs.pl
%else
rm %{buildroot}%{_libexecdir}/groff/grog/subs.pl
%endif
for FONT in devascii devlatin1 devps devutf8; do
%if !%{with full_build}
cp -pr "font/${FONT}" %{buildroot}%{_datadir}/%{name}/%{version}/font/
%else
rm -r %{buildroot}%{_datadir}/groff/%{version}/font/${FONT}
%endif
done
for TMAC in a4.tmac an-ext.tmac an-old.tmac an.tmac andoc.tmac composite.tmac \
cp1047.tmac cs.tmac de.tmac den.tmac devtag.tmac doc.tmac \
doc-old.tmac e.tmac eqnrc europs.tmac fallbacks.tmac fr.tmac \
hyphen.cs hyphen.den hyphen.det hyphen.fr hyphen.sv hyphen.us \
hyphenex.cs hyphenex.det hyphenex.us ja.tmac latin1.tmac latin2.tmac \
latin5.tmac latin9.tmac man.tmac mandoc.tmac mdoc.tmac me.tmac \
ms.tmac papersize.tmac pic.tmac ps.tmac psatk.tmac psold.tmac \
pspic.tmac refer-me.tmac refer-ms.tmac refer.tmac s.tmac \
safer.tmac sv.tmac trace.tmac trans.tmac troffrc troffrc-end \
tty-char.tmac tty.tmac unicode.tmac www.tmac
do
%if !%{with full_build}
install -m 0644 tmac/${TMAC} %{buildroot}%{_datadir}/%{name}/%{version}/tmac/
%else
rm %{buildroot}%{_datadir}/groff/%{version}/tmac/${TMAC}
%endif
done
%if !%{with full_build}
install -m 0644 tmac/{man,mdoc}.local %{buildroot}%{_datadir}/%{name}/site-tmac/
%else
rm %{buildroot}%{_datadir}/groff/site-tmac/{man,mdoc}.local
%endif
pushd contrib/mm/
%if !%{with full_build}
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/%{version}/tmac/mm
install -c -m 0755 mmroff %{buildroot}%{_bindir}/mmroff
install -c -m 0644 mmroff.n %{buildroot}%{_mandir}/man1/mmroff.1
for f in 0.MT 5.MT 4.MT ms.cov se_ms.cov ; do
install -c -m 644 mm/$f %{buildroot}%{_datadir}/%{name}/%{version}/tmac/mm/$f
done
for f in locale se_locale; do
touch %{buildroot}%{_datadir}/%{name}/%{version}/tmac/mm/$f
chmod 0644 %{buildroot}%{_datadir}/%{name}/%{version}/tmac/mm/$f
done
for f in *.tmac; do
install -c -m 644 $f %{buildroot}%{_datadir}/%{name}/%{version}/tmac/$f
done
%else
rm %{buildroot}%{_bindir}/mmroff
rm %{buildroot}%{_mandir}/man1/mmroff.1*
rm -rf %{buildroot}%{_datadir}/groff/%{version}/tmac/mm/
for f in *.tmac; do
rm -f %{buildroot}%{_datadir}/groff/%{version}/tmac/$f
done
%endif
popd
%if !%{with full_build}
install -m 0644 tmac/doc-common tmac/doc-ditroff tmac/doc-nroff tmac/doc-syms \
%{buildroot}%{_datadir}/%{name}/%{version}/tmac/mdoc/
%else
rm -rf %{buildroot}%{_datadir}/groff/%{version}/tmac/mdoc
%endif
%if !%{with full_build}
ln -s -f current %{buildroot}%{_datadir}/%{name}/%{version}
# compat symlinks
ln -s -f eqn %{buildroot}%{_bindir}/geqn
ln -s -f tbl %{buildroot}%{_bindir}/gtbl
# install profiles to disable the use of ANSI colour sequences by default:
install -d -m 0755 %{buildroot}/%{_sysconfdir}/profile.d
install -m 644 %{SOURCE3} %{SOURCE4} %{buildroot}/%{_sysconfdir}/profile.d/
%endif #groff_base_only
%fdupes -s %{buildroot}
%if %{with full_build}
%post
%install_info --info-dir=%{_infodir} %{_infodir}/groff.info.gz
%preun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/groff.info.gz
%endif
%if !%{with full_build}
%files
%defattr(-,root,root)
%license COPYING FDL LICENSES
%doc BUG-REPORT ChangeLog* MANIFEST MORE.STUFF NEWS PROBLEMS PROJECTS README REVISION VERSION
%{_mandir}/man1/*
%{_bindir}/*
%config %{_sysconfdir}/profile.d/zzz-%{name}.*sh
%{_datadir}/%{name}
%dir %{_libexecdir}/groff
%dir %{_libexecdir}/groff/grog
%{_libexecdir}/groff/grog/subs.pl
%else #groff_base_only
%files
%defattr(-,root,root)
%dir %{_datadir}/groff/%{version}
%dir %{_libexecdir}/groff
%doc %{_docdir}/groff
%dir %{_libexecdir}/groff
%dir %{_libexecdir}/groff/glilypond
%{_libexecdir}/groff/glilypond/args.pl
%{_libexecdir}/groff/glilypond/oop_fh.pl
%{_libexecdir}/groff/glilypond/subs.pl
%dir %{_libexecdir}/groff/gpinyin
%{_libexecdir}/groff/gpinyin/subs.pl
%{_libexecdir}/groff/groff_opts_no_arg.txt
%{_libexecdir}/groff/groff_opts_with_arg.txt
%exclude %{_docdir}/groff/html
%exclude %{_docdir}/groff/examples
%{_infodir}/groff*
%{_mandir}/man*/*
%exclude %{_mandir}/man1/gxditview.1*
%{_bindir}/*
%exclude %{_bindir}/gxditview
%dir %{_datadir}/groff
%{_datadir}/groff/%{version}/font
%{_datadir}/groff/%{version}/oldfont
%{_datadir}/groff/%{version}/pic
%{_datadir}/groff/%{version}/tmac
%{_datadir}/groff/current
%{_datadir}/groff/site-tmac
%{_libexecdir}/groff/groffer
%files -n groff-doc
%defattr(-, root, root)
%dir %{_docdir}/groff
%doc %{_docdir}/groff/html
%doc %{_docdir}/groff/examples
%files -n gxditview
%defattr(-,root,root)
%dir %{_datadir}/X11/app-defaults
%doc src/devices/xditview/ChangeLog
%doc src/devices/xditview/README
%doc src/devices/xditview/TODO
%{_bindir}/gxditview
%{_mandir}/man1/gxditview.1*
%{_datadir}/X11/app-defaults/GXditview
%{_datadir}/X11/app-defaults/GXditview-color
%endif #groff_base_only
%changelog