# not compatible with libnautilus-extension-4
%bcond_with nautilus

# Exclude private libraries from autogenerated provides and requires
%global __provides_exclude_from ^%{_libdir}/evince/
%global __requires_exclude ^(%%(find %{buildroot}%{_libdir}/evince/ -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))

%global libarchive_version 3.6.0
%global poppler_version 22.05.0

Name:           evince
Version:        48.4
Release:        1
Summary:        Document viewer
License:        GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND X11 AND MIT AND Afmparse
URL:            https://wiki.gnome.org/Apps/Evince
Source0:        https://download.gnome.org/sources/%{name}/%{version_major}/%{name}-%{version}.tar.xz

BuildRequires:  gcc
BuildRequires:  gettext-devel
BuildRequires:  pkgconfig(adwaita-icon-theme)
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(gio-unix-2.0)
BuildRequires:  pkgconfig(gnome-desktop-3.0)
BuildRequires:  pkgconfig(gobject-introspection-1.0)
BuildRequires:  pkgconfig(gspell-1)
BuildRequires:  pkgconfig(gstreamer-1.0)
BuildRequires:  pkgconfig(gstreamer-base-1.0)
BuildRequires:  pkgconfig(gstreamer-video-1.0)
BuildRequires:  pkgconfig(gtk+-x11-3.0)
BuildRequires:  pkgconfig(libarchive) >= %{libarchive_version}
BuildRequires:  pkgconfig(libhandy-1)
BuildRequires:  pkgconfig(libsecret-1)
BuildRequires:  pkgconfig(libspectre)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  pkgconfig(poppler-glib) >= %{poppler_version}
BuildRequires:  libtiff-devel
BuildRequires:  gi-docgen
BuildRequires:  yelp-tools
BuildRequires:  /usr/bin/desktop-file-validate
BuildRequires:  libappstream-glib-devel
BuildRequires:  meson
BuildRequires:  systemd-rpm-macros
BuildRequires:  pkgconfig(synctex)
# for the dvi backend
BuildRequires:  texlive-lib-devel
# for the djvu backend
BuildRequires:  djvulibre-devel
%if %{with nautilus}
# for the nautilus properties page
BuildRequires:  pkgconfig(libnautilus-extension)
%endif
# for the xps backend
BuildRequires:  pkgconfig(libgxps)

Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: %{name}-previewer%{?_isa} = %{version}-%{release}
Requires: %{name}-thumbnailer%{?_isa} = %{version}-%{release}

Conflicts: %{name}-help < 48
Obsoletes: %{name}-help < 48
Obsoletes: %{name}-nautilus < 43~alpha-2

%description
Evince is a document viewer for multiple document formats. The goal of evince is to replace the
multiple document viewers that exist on the GNOME Desktop with a single simple application.
Evince is specifically designed to support the file following formats:
PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt).

%package libs
Summary: Libraries for the evince document viewer
Recommends: %{name}-djvu%{?_isa} = %{version}-%{release}
Requires:   libarchive%{?_isa} >= %{libarchive_version}
Requires:   poppler-glib%{?_isa} >= %{poppler_version}
Conflicts:  %{name} < 48

%description libs
This package contains shared libraries needed for evince

%package dvi
Summary: Evince backend for dvi files
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: texlive-collection-fontsrecommended
Conflicts:  %{name} < 48

%description dvi
This package contains a backend to let evince display dvi files.

%package djvu
Summary: Evince backend for djvu files
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Conflicts:  %{name} < 48

%description djvu
This package contains a backend to let evince display djvu files.

%if %{with nautilus}
%package nautilus
Summary: Evince extension for nautilus
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: nautilus%{?_isa}
Conflicts:  %{name} < 48

%description nautilus
This package contains the evince extension for the nautilus file manager.
It adds an additional tab called "Document" to the file properties dialog.
%endif

%package thumbnailer
Summary: Evince thumbnailer
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Conflicts:  %{name} < 48

%description thumbnailer
This package brings the Evince thumbnailer independently from Evince.

%package previewer
Summary: Evince previewer
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Conflicts:  %{name} < 48

%description previewer
This package brings the Evince previewer independently from Evince.
It provides the printing preview for the GTK printing dialog.

%package        devel
Summary:        Support for developing backends for the evince document viewer
Requires:       %{name} = %{version}-%{release}
Requires:       libarchive%{?_isa} >= %{libarchive_version}
Requires:       poppler-glib%{?_isa} >= %{poppler_version}
Recommends:     gi-docgen-fonts

%description devel
This package contains libraries and header files needed for evince
backend development.


%prep
%autosetup -n %{name}-%{version} -p1

%build
%meson \
        -Dcomics=enabled \
        -Ddvi=enabled \
        -Ddjvu=enabled \
        -Dgspell=enabled \
        -Dxps=enabled \
        -Dnautilus=false \
        -Dps=enabled

%meson_build

%install
%meson_install

%find_lang evince --with-gnome

install -d %{buildroot}%{_datadir}/applications

rm -f %{buildroot}%{_datadir}/metainfo/evince-pdfdocument.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/evince-psdocument.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/evince-tiffdocument.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/evince-comicsdocument.metainfo.xml
rm -f %{buildroot}%{_datadir}/metainfo/evince-xpsdocument.metainfo.xml

%check
appstream-util validate-relax --nonet $RPM_BUILD_ROOT%{_datadir}/metainfo/org.gnome.Evince.metainfo.xml
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/org.gnome.Evince.desktop
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/org.gnome.Evince-previewer.desktop

%files -f evince.lang
%{_bindir}/evince
%{_bindir}/evince-previewer
%{_datadir}/applications/org.gnome.Evince.desktop
%{_datadir}/applications/org.gnome.Evince-previewer.desktop
%{_datadir}/evince/
%{_datadir}/icons/hicolor/*/apps/org.gnome.Evince.*
%{_datadir}/icons/hicolor/*/apps/org.gnome.Evince-symbolic.svg
%{_mandir}/man1/evince.1*
%{_mandir}/man1/evince-previewer.1*
%{_libexecdir}/evinced
%{_datadir}/dbus-1/services/org.gnome.evince.Daemon.service
%{_datadir}/glib-2.0/schemas/org.gnome.Evince.gschema.xml
%{_metainfodir}/org.gnome.Evince.metainfo.xml
%{_userunitdir}/org.gnome.Evince.service

%files libs
%doc NEWS AUTHORS
%license COPYING
%{_libdir}/libevdocument3.so.4*
%{_libdir}/libevview3.so.3*
%dir %{_libdir}/evince
%dir %{_libdir}/evince/4
%dir %{_libdir}/evince/4/backends
%{_libdir}/evince/4/backends/libpdfdocument.so
%{_libdir}/evince/4/backends/pdfdocument.evince-backend
%{_libdir}/evince/4/backends/libpsdocument.so
%{_libdir}/evince/4/backends/psdocument.evince-backend
%{_libdir}/evince/4/backends/libtiffdocument.so
%{_libdir}/evince/4/backends/tiffdocument.evince-backend
%{_libdir}/evince/4/backends/libcomicsdocument.so
%{_libdir}/evince/4/backends/comicsdocument.evince-backend
%{_libdir}/evince/4/backends/libxpsdocument.so
%{_libdir}/evince/4/backends/xpsdocument.evince-backend
%{_libdir}/girepository-1.0/EvinceDocument-3.0.typelib
%{_libdir}/girepository-1.0/EvinceView-3.0.typelib

%files devel
%{_datadir}/doc/evince-libs
%{_datadir}/doc/libevview
%{_datadir}/doc/libevdocument
%dir %{_includedir}/evince
%{_includedir}/evince/3.0
%{_libdir}/libevview3.so
%{_libdir}/libevdocument3.so
%{_libdir}/pkgconfig/evince-view-3.0.pc
%{_libdir}/pkgconfig/evince-document-3.0.pc
%{_datadir}/gir-1.0/EvinceDocument-3.0.gir
%{_datadir}/gir-1.0/EvinceView-3.0.gir

%files dvi
%{_libdir}/evince/4/backends/libdvidocument.so*
%{_libdir}/evince/4/backends/dvidocument.evince-backend
%{_datadir}/metainfo/evince-dvidocument.metainfo.xml

%files djvu
%{_libdir}/evince/4/backends/libdjvudocument.so
%{_libdir}/evince/4/backends/djvudocument.evince-backend
%{_datadir}/metainfo/evince-djvudocument.metainfo.xml

%if %{with nautilus}
%files nautilus
%{_libdir}/nautilus/extensions-3.0/libevince-properties-page.so
%endif

%files thumbnailer
%{_bindir}/evince-thumbnailer
%{_datadir}/thumbnailers/evince.thumbnailer
%{_mandir}/man1/evince-thumbnailer.1*

%files previewer
%{_bindir}/evince-previewer
%{_mandir}/man1/evince-previewer.1*

%changelog
* Wed May 20 2026 Funda Wang <fundawang@yeah.net> - 48.4-1
- update to 48.4

* Tue Apr 07 2026 lingsheng <ultra_planet@qq.com> - 48.1-2
- use %%bcond_with instead

* Tue Dec 09 2025 liweigang <liweiganga@gmail.com> - 48.1-1
- update to version 48.1

* Thu Nov 23 2023 zhangxianting <zhangxianting@uniontech.com> - 44.3-1
- update to version 44.3

* Mon Jan 02 2023 lin zhang <lin.zhang@turbolinux.com.cn> - 43.1-1
- Update to 43.1

* Mon Jun 20 2022 lin zhang <lin.zhang@turbolinux.com.cn> - 42.3-2
- fix build when Meson >= 0.61.5
- remove meson option t1lib

* Mon Mar 28 2022 lin zhang <lin.zhang@turbolinux.com.cn> - 42.3-1
- Update to 42.3

* Tue Jun 15 2021 weijin deng <weijin.deng@turbolinux.com.cn> - 3.38.2-1
- Upgrade to 3.38.2
- Delete 0001-Resolves-deb-762530-rhbz-1061177-add-man-pages.patch that
  existed in 3.38.2 version
- Use meson rebuild, change 'SYNCTEX_CFLAGS' to 'CFLAGS'

* Mon Jun 8 2020 yanan li <liyanan032@huawei.com> - 3.30.1-4
- Disable designated LIBTOOL directory in %make_build

* Mon Dec 2 2019 chenzhenyu <chenzhenyu13@huawei.com> - 3.30.1-3
- Package init