File evince.spec of Package evince

#
# spec file for package evince
#
# Copyright (c) 2023 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/
#


%define _major_version 3.0
%define pluginAPI 4

Name:           evince
Version:        45.0
Release:        0
Summary:        GNOME Document Viewer
License:        GPL-2.0-or-later
Group:          Productivity/Office/Other
URL:            https://wiki.gnome.org/Apps/Evince
Source0:        https://download.gnome.org/sources/evince/45/%{name}-%{version}.tar.xz
# PATCH-FIX-SLE alarrosa@suse.com - Reverse upstream bump of synctex required version to build with texlive 2017
Patch0:         0001-reversed-synctex-Annotate-more-functions-that-wraps-formatting-strings.patch
Patch1:         0002-reversed-synctex-Sync-against-upstream-synctex.patch
Patch2:         0003-reversed-cut-n-paste-Annotate-functions-that-wraps-formatting-strings.patch
Patch3:         0001-reversed-synctex-Move-_GNU_SOURCE-to-the-top-of-the-source-code.patch
Patch4:         0002-reversed-synctex-Remove-unused-labels.patch
Patch5:         0003-reversed-synctex-Silence-error-when-no-synctex-file-is-present.patch
Patch6:         0004-reversed-synctex-Annotate-functions-that-wrap-vfprintf.patch
Patch7:         0005-reversed-synctex-Fix-compilation.patch
Patch8:         0006-reversed-synctex-Update-from-version-1.18-to-1.21.patch

BuildRequires:  c_compiler
BuildRequires:  desktop-file-utils
BuildRequires:  fdupes
BuildRequires:  ghostscript-fonts-std
BuildRequires:  ghostscript-x11
BuildRequires:  meson >= 0.53.0
BuildRequires:  pkgconfig
BuildRequires:  texlive-devel
BuildRequires:  yelp-tools
BuildRequires:  pkgconfig(adwaita-icon-theme) >= 2.17.1
BuildRequires:  pkgconfig(appstream-glib)
BuildRequires:  pkgconfig(ddjvuapi) >= 3.5.22
BuildRequires:  pkgconfig(gi-docgen)
BuildRequires:  pkgconfig(gio-2.0) >= 2.44.0
BuildRequires:  pkgconfig(gio-unix-2.0)
BuildRequires:  pkgconfig(gnome-desktop-3.0)
BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.0
BuildRequires:  pkgconfig(gspell-1) >= 1.6.0
BuildRequires:  pkgconfig(gstreamer-1.0)
BuildRequires:  pkgconfig(gstreamer-base-1.0)
BuildRequires:  pkgconfig(gstreamer-video-1.0)
BuildRequires:  pkgconfig(gthread-2.0)
BuildRequires:  pkgconfig(gtk+-3.0) >= 3.22.0
BuildRequires:  pkgconfig(ice)
BuildRequires:  pkgconfig(libarchive) >= 3.6.0
BuildRequires:  pkgconfig(libgxps) >= 0.2.1
BuildRequires:  pkgconfig(libhandy-1)
BuildRequires:  pkgconfig(libsecret-1) >= 0.5
BuildRequires:  pkgconfig(libspectre) >= 0.2.0
BuildRequires:  pkgconfig(libtiff-4)
BuildRequires:  pkgconfig(libxml-2.0) >= 2.5.0
BuildRequires:  pkgconfig(poppler-glib) >= 22.02.0
BuildRequires:  pkgconfig(sm) >= 1.0.0
BuildRequires:  pkgconfig(synctex) >= 1.18
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(zlib)
# Disable the browser plugin and package, and make main package provide-obsolete plugin package for upgrade; see bgo#738270
Provides:       evince-browser-plugin = %{version}
Obsoletes:      evince-browser-plugin < 41.2
Obsoletes:      nautilus-evince < 44.0

%description
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

Separate plugin packages, e.g. evince-plugin-pdfdocument, need to be present
for certain formats to be recognized.

%package -n libevdocument3-4
Summary:        GNOME Document Viewer System Library
Group:          System/Libraries

%description -n libevdocument3-4
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

%package -n libevview3-3
Summary:        GNOME Document Viewer System Library
Group:          System/Libraries

%description -n libevview3-3
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

%package -n typelib-1_0-EvinceDocument-3_0
Summary:        Introspection bindings for the Evince Document Viewer
Group:          System/Libraries

%description -n typelib-1_0-EvinceDocument-3_0
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

%package -n typelib-1_0-EvinceView-3_0
Summary:        Introspection bindings for the Evince Document Viewer
Group:          System/Libraries

%description -n typelib-1_0-EvinceView-3_0
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

%package devel
Summary:        Header files for the Evince Document Viewer
Group:          Development/Languages/C and C++
Requires:       %{name} = %{version}
Requires:       libevdocument3-4 = %{version}
Requires:       libevview3-3 = %{version}
Requires:       typelib-1_0-EvinceDocument-3_0 = %{version}
Requires:       typelib-1_0-EvinceView-3_0 = %{version}

%description devel
Evince is a document viewer capable of displaying single-page and multi-page
document formats like PDF and PostScript.

This package contains the header files for building additional plugins.

%package -n evince-plugin-comicsdocument
Summary:        Comics document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Enhances:       %{name}

%description -n evince-plugin-comicsdocument
A plugin for Evince to read Comics documents.

%package -n evince-plugin-djvudocument
Summary:        DjVu document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Enhances:       %{name}

%description -n evince-plugin-djvudocument
A plugin for Evince to read DjVu documents.

%package -n evince-plugin-dvidocument
Summary:        DVI document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Enhances:       %{name}

%description -n evince-plugin-dvidocument
A plugin for Evince to read DVI documents.

%package -n evince-plugin-pdfdocument
Summary:        PDF document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Supplements:    %{name}

%description -n evince-plugin-pdfdocument
A plugin for Evince to read PDF documents.

%package -n evince-plugin-psdocument
Summary:        PostScript document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}

%description -n evince-plugin-psdocument
A plugin for Evince to read PostScript documents.

%package -n evince-plugin-tiffdocument
Summary:        TIFF document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Enhances:       %{name}

%description -n evince-plugin-tiffdocument
A plugin for Evince to read TIFF images.

%package -n evince-plugin-xpsdocument
Summary:        XPS document support for Evince
Group:          Productivity/Office/Other
Requires:       %{name}
Enhances:       %{name}

%description -n evince-plugin-xpsdocument
A plugin for Evince to read XPS documents.

%lang_package

%prep
%setup
%if %{pkg_vcmp pkgconfig(synctex) < 1.19}
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 7 -p1
%patch -P 8 -p1
%endif

%build
%meson \
	--libexecdir=%{_libexecdir}/%{name} \
	-D ps=enabled \
	-D nautilus=false \
	%{nil}
%meson_build

%install
%meson_install
%find_lang %{name} %{?no_lang_C} --metainfo %{name}
%fdupes %{buildroot}/%{_prefix}

%ldconfig_scriptlets -n libevdocument3-4
%ldconfig_scriptlets -n libevview3-3

%files
%license COPYING
%doc %{_datadir}/help/C/%{name}/
%{_bindir}/*
%{_datadir}/applications/*.desktop
%{_datadir}/dbus-1/services/org.gnome.evince.Daemon.service
%{_datadir}/evince
%{_datadir}/glib-2.0/schemas/org.gnome.Evince.gschema.xml
%{_datadir}/icons/hicolor/*/apps/org.gnome.Evince*
%{_datadir}/metainfo/org.gnome.Evince.metainfo.xml
%dir %{_datadir}/thumbnailers
%{_datadir}/thumbnailers/evince.thumbnailer
# backends directory structure - backends go to their own packages
%dir %{_libdir}/evince/
%dir %{_libdir}/evince/%{pluginAPI}
%dir %{_libdir}/evince/%{pluginAPI}/backends
# helpers & daemon
%dir %{_libexecdir}/evince
%{_libexecdir}/evince/evinced
%{_mandir}/man?/*%{ext_man}
%{_userunitdir}/org.gnome.Evince.service

%files -n libevdocument3-4
%{_libdir}/libevdocument3.so.4*

%files -n libevview3-3
%{_libdir}/libevview3.so.3*

%files -n typelib-1_0-EvinceDocument-3_0
%{_libdir}/girepository-1.0/EvinceDocument-3.0.typelib

%files -n typelib-1_0-EvinceView-3_0
%{_libdir}/girepository-1.0/EvinceView-3.0.typelib

%files devel
%{_includedir}/evince
%{_libdir}/*.so
%{_libdir}/pkgconfig/evince*.pc
%{_datadir}/gir-1.0/*.gir
%{_datadir}/doc/libevview/
%{_datadir}/doc/libevdocument/

%files -n evince-plugin-comicsdocument
%{_datadir}/metainfo/evince-comicsdocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/comicsdocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libcomicsdocument.so

%files -n evince-plugin-djvudocument
%{_datadir}/metainfo/evince-djvudocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/djvudocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libdjvudocument.so

%files -n evince-plugin-dvidocument
%{_datadir}/metainfo/evince-dvidocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/dvidocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libdvidocument.so

%files -n evince-plugin-pdfdocument
%{_datadir}/metainfo/evince-pdfdocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/pdfdocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libpdfdocument.so

%files -n evince-plugin-psdocument
%{_datadir}/metainfo/evince-psdocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/psdocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libpsdocument.so

%files -n evince-plugin-tiffdocument
%{_datadir}/metainfo/evince-tiffdocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/tiffdocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libtiffdocument.so

%files -n evince-plugin-xpsdocument
%{_datadir}/metainfo/evince-xpsdocument.metainfo.xml
%{_libdir}/evince/%{pluginAPI}/backends/xpsdocument.evince-backend
%{_libdir}/evince/%{pluginAPI}/backends/libxpsdocument.so

%files lang -f %{name}.lang

%changelog
openSUSE Build Service is sponsored by