# # spec file for package groff # # 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/ # %global flavor @BUILD_FLAVOR@%{nil} %if "%{flavor}" == "full" %define name_ext -full %bcond_without full_build %else %define name_ext %nil %bcond_with full_build %endif Name: groff%{name_ext} Version: 1.23.0 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 Patch0: groff-1.20.1-nroff-empty-LANGUAGE.patch Patch1: groff-1.20.1-deunicode.patch Patch2: groff-1.21-CVE-2009-5044.patch # http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/groff/groff-1.20.1-owl-tmp.diff?rev=1.2;content-type=text%2Fplain Patch3: 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 Patch4: 0001-locale-support-in-papersize-definition.patch Patch5: 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 Patch6: groff-force-locale-usage.patch Patch7: 0004-don-t-use-usr-bin-env-in-shebang.patch # PATCH-FIX-OPENSUSE groff-restore-hyphen-minus.patch bsc#1226153 Patch8: groff-restore-hyphen-minus.patch # Patches from debian Patch100: https://salsa.debian.org/debian/groff/raw/master/debian/patches/bash-scripts.patch Patch101: https://salsa.debian.org/debian/groff/raw/master/debian/patches/nroff-map-CW-to-R.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: makeinfo BuildRequires: pkgconfig %if %{with full_build} BuildRequires: ghostscript-library BuildRequires: groff BuildRequires: netpbm BuildRequires: psutils BuildRequires: pkgconfig(uchardet) # for gxditview and X fontx BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xaw7) BuildRequires: pkgconfig(xmu) BuildRequires: pkgconfig(xt) Requires: ghostscript-library # ghostscript-library pulls in X and stuff anyways, so let's # piggyback on that one Supplements: packageand(groff: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 # alternatives BuildRequires: update-alternatives Requires(post): update-alternatives Requires(postun): update-alternatives %endif %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). %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 format for printing on a PostScript 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. %prep %setup -q -n groff-%{version} %autopatch -p1 # remove hardcoded docdir sed -i \ -e '/^docdir=/d' \ Makefile.am %build autoreconf -fvi # libdir redefined as it is just bunch of perl scripts %configure \ --disable-silent-rules \ --docdir=%{_defaultdocdir}/groff \ --libdir=%{_libexecdir} \ --with-appdefdir=%{_datadir}/X11/app-defaults \ --with-grofferdir=%{_libexecdir}/groff/groffer make %{?_smp_mflags} %install %make_install %if %{with full_build} # remove groff basic files from bellow rm -f %{buildroot}%{_sysconfdir}/profile.d/zzz-groff.csh rm -f %{buildroot}%{_sysconfdir}/profile.d/zzz-groff.sh rm -f %{buildroot}%{_bindir}/eqn rm -f %{buildroot}%{_bindir}/groff rm -f %{buildroot}%{_bindir}/grog rm -f %{buildroot}%{_bindir}/grops rm -f %{buildroot}%{_bindir}/grotty rm -f %{buildroot}%{_bindir}/mmroff rm -f %{buildroot}%{_bindir}/neqn rm -f %{buildroot}%{_bindir}/nroff rm -f %{buildroot}%{_bindir}/pic rm -f %{buildroot}%{_bindir}/preconv rm -f %{buildroot}%{_bindir}/soelim rm -f %{buildroot}%{_bindir}/tbl rm -f %{buildroot}%{_bindir}/troff rm -f %{buildroot}%{_libexecdir}/groff/grog/subs.pl rm -f %{buildroot}%{_datadir}/groff/current rm -f %{buildroot}%{_datadir}/groff/1.23.0/eign rm -rf %{buildroot}%{_datadir}/groff/1.23.0/font/devascii rm -rf %{buildroot}%{_datadir}/groff/1.23.0/font/devlatin1 rm -rf %{buildroot}%{_datadir}/groff/1.23.0/font/devps rm -rf %{buildroot}%{_datadir}/groff/1.23.0/font/devutf8 rm -rf %{buildroot}%{_datadir}/groff/1.23.0/pic rm -rf %{buildroot}%{_datadir}/groff/1.23.0/tmac rm -rf %{buildroot}%{_datadir}/groff/site-tmac rm -rf %{buildroot}%{_datadir}/groff/site-font rm -f %{buildroot}%{_mandir}/man1/eqn.1* rm -f %{buildroot}%{_mandir}/man1/groff.1* rm -f %{buildroot}%{_mandir}/man1/grog.1* rm -f %{buildroot}%{_mandir}/man1/grops.1* rm -f %{buildroot}%{_mandir}/man1/grotty.1* rm -f %{buildroot}%{_mandir}/man1/mmroff.1* rm -f %{buildroot}%{_mandir}/man1/neqn.1* rm -f %{buildroot}%{_mandir}/man1/nroff.1* rm -f %{buildroot}%{_mandir}/man1/pic.1* rm -f %{buildroot}%{_mandir}/man1/preconv.1* rm -f %{buildroot}%{_mandir}/man1/soelim.1* rm -f %{buildroot}%{_mandir}/man1/tbl.1* rm -f %{buildroot}%{_mandir}/man1/troff.1* # Prepare alternatives find %{buildroot}%{_mandir} mkdir -p %{buildroot}%{_sysconfdir}/alternatives ## This construct should help identify whether the manpage is compressed, ## and the mv/ln TARGET parameter should be adjusted accordingly. ext_man="%{?ext_man}%{!?ext_man:.gz}" manfile="$(find %{buildroot}%{_mandir}/man7/ -type f -name "roff.7${ext_man}")" test -z "${manfile}" && unset ext_man mv -v "%{buildroot}%{_mandir}/man7/roff.7${ext_man:-}" \ "%{buildroot}%{_mandir}/man7/roff-gf.7${ext_man:-}" ln -s -f "%{_sysconfdir}/alternatives/roff.7${ext_man:-}" \ "%{buildroot}%{_mandir}/man7/roff.7${ext_man:-}" # full_build %else # fix permission for devps/generate/afmname # used by ghostscript-fonts-grops chmod +x %{buildroot}%{_datadir}/groff/%{version}/font/devps/generate/afmname # install files needed by ghostscript-fonts-grops install -m 0644 font/devps/generate/symbolsl.awk %{buildroot}%{_datadir}/groff/%{version}/font/devps/generate install -m 0644 font/devps/generate/zapfdr.sed %{buildroot}%{_datadir}/groff/%{version}/font/devps/generate install -m 0644 font/devps/generate/freeeuro.sfd %{buildroot}%{_datadir}/groff/%{version}/font/devps/generate install -m 0644 font/devps/generate/sfdtopfa.pe %{buildroot}%{_datadir}/groff/%{version}/font/devps/generate install -m 0644 font/devps/symbolsl.ps %{buildroot}%{_datadir}/groff/%{version}/font/devps/ # remove all not really wanted files (they are present in -full variant) rm -rf %{buildroot}%{_mandir}/man5/ rm -rf %{buildroot}%{_mandir}/man7/ rm -rf %{buildroot}%{_infodir}/ rm -rf %{buildroot}%{_libexecdir}/groff/groffer/ rm -rf %{buildroot}%{_libexecdir}/groff/gpinyin/ rm -rf %{buildroot}%{_libexecdir}/groff/glilypond/ rm -f %{buildroot}%{_libexecdir}/groff/{groff_opts_no_arg.txt,groff_opts_with_arg.txt} rm -rf %{buildroot}%{_docdir}/groff rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devcp1047 rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devdvi rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devhtml rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devlbp rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devlj4 rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/font/devpdf rm -rf %{buildroot}%{_datadir}/%{name}/%{version}/oldfont/ for i in addftinfo afmtodit chem eqn2graph gdiffmk glilypond gperl gpinyin grap2graph grn grodvi groffer grolbp grolj4 gropdf hpftodit indxbib lkbib lookbib pdfmom pdfroff pfbtops pic2graph post-grohtml pre-grohtml refer roff2dvi roff2html roff2pdf roff2ps roff2text roff2x tfmtodit; do rm -f %{buildroot}%{_bindir}/$i rm -f %{buildroot}%{_mandir}/man1/$i.1* done # this man does werdly not have reflecting binary rm -f %{buildroot}%{_mandir}/man1/grohtml.1* # 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/ # full_build %endif %fdupes -s %{buildroot} %if %{with full_build} %post -n groff-full %install_info --info-dir=%{_infodir} %{_infodir}/groff.info.gz if test -f %{_mandir}/man7/roff-gf.7%{?ext_man} ; then update-alternatives --install \ %{_mandir}/man7/roff.7%{?ext_man} roff.7%{?ext_man} \ %{_mandir}/man7/roff-gf.7%{?ext_man} 500 fi %preun -n groff-full %install_info_delete --info-dir=%{_infodir} %{_infodir}/groff.info.gz if [ $1 -eq 0 ] ; then update-alternatives --remove man.7%{?ext_man} %{_mandir}/man7/man-gf.7%{?ext_man} fi %endif %if !%{with full_build} %files %license COPYING FDL LICENSES %doc BUG-REPORT ChangeLog* MANIFEST MORE.STUFF NEWS PROBLEMS PROJECTS README %{_bindir}/eqn %{_bindir}/geqn %{_bindir}/groff %{_bindir}/grog %{_bindir}/grops %{_bindir}/grotty %{_bindir}/gtbl %{_bindir}/mmroff %{_bindir}/neqn %{_bindir}/nroff %{_bindir}/pic %{_bindir}/preconv %{_bindir}/soelim %{_bindir}/tbl %{_bindir}/troff %{_mandir}/man1/eqn.1%{?ext_man} %{_mandir}/man1/groff.1%{?ext_man} %{_mandir}/man1/grog.1%{?ext_man} %{_mandir}/man1/grops.1%{?ext_man} %{_mandir}/man1/grotty.1%{?ext_man} %{_mandir}/man1/mmroff.1%{?ext_man} %{_mandir}/man1/neqn.1%{?ext_man} %{_mandir}/man1/nroff.1%{?ext_man} %{_mandir}/man1/pic.1%{?ext_man} %{_mandir}/man1/preconv.1%{?ext_man} %{_mandir}/man1/soelim.1%{?ext_man} %{_mandir}/man1/tbl.1%{?ext_man} %{_mandir}/man1/troff.1%{?ext_man} %config %{_sysconfdir}/profile.d/zzz-%{name}.*sh %{_datadir}/%{name} %dir %{_libexecdir}/groff %{_datadir}/groff/current %else #groff_base_only %files -n groff-full %dir %{_datadir}/groff/%{version} %dir %{_libexecdir}/groff %doc %{_docdir}/groff %dir %{_libexecdir}/groff %exclude %{_docdir}/groff/html %exclude %{_docdir}/groff/examples %exclude %{_docdir}/groff/pdf %{_infodir}/groff* %{_mandir}/man1/* %{_mandir}/man5/* %{_mandir}/man7/* %exclude %{_mandir}/man1/gxditview.1* %ghost %{_sysconfdir}/alternatives/roff.7%{?ext_man} %{_bindir}/* %exclude %{_bindir}/gxditview %dir %{_datadir}/groff %{_datadir}/groff/%{version}/font %{_datadir}/groff/%{version}/oldfont %files -n groff-doc %dir %{_docdir}/groff %doc %{_docdir}/groff/html %doc %{_docdir}/groff/examples %doc %{_docdir}/groff/pdf %files -n gxditview %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%{?ext_man} %{_datadir}/X11/app-defaults/GXditview %{_datadir}/X11/app-defaults/GXditview-color %endif #groff_base_only %changelog