+# TODO:
+# - OpenSceneGraph support (WANT_NOOSG to disable)
+# - system hyphen
+# - more system libs, see scribus/third_party (e.g. libwpg)
+# - qt6 bcond? (BR: Qt6{Core,Core5Compat,Gui,Widgets,Network} >= 6.2.0, cmake >= 3.16.0)
#
# Conditional build:
-%bcond_with cairo # build with cairo support
-%bcond_without cups # build without CUPS support
+%bcond_without cups # CUPS support
#
+%define qt_ver 5.14.0
Summary: Scribus - Open Source Desktop Publishing
-Summary(pl.UTF-8): Scribus - DTP dla Wolnego Oprogramowania
+Summary(pl.UTF-8): Scribus - DTP dla Wolnego Oprogramowania
Name: scribus
-Version: 1.3.3.7
-Release: 2
-License: GPL v2
+Version: 1.5.8
+Release: 6
+License: GPL v2+
Group: X11/Applications/Publishing
-Source0: http://dl.sourceforge.net/scribus/%{name}-%{version}.tar.bz2
-# Source0-md5: 9d20ef9010d94b504f6c8cd6acd215ca
-Source1: %{name}.desktop
-Patch1: %{name}-standard-font-paths.patch
-Patch2: %{name}-version.patch
-URL: http://www.scribus.net/
-%{?with_cairo:BuildRequires: cairo-devel >= 1.2.0}
-BuildRequires: cmake >= 2.4.5
+Source0: https://downloads.sourceforge.net/scribus/%{name}-%{version}.tar.xz
+# Source0-md5: ff9e966a2251a6c8800bb26fcb4b7c59
+Patch0: %{name}-docs.patch
+Patch1: %{name}-poppler.patch
+Patch2: %{name}-poppler-22.09.0.patch
+Patch3: podofo-0.10.patch
+URL: https://www.scribus.net/
+BuildRequires: GraphicsMagick-devel
+BuildRequires: Qt5Core-devel >= %{qt_ver}
+BuildRequires: Qt5Gui-devel >= %{qt_ver}
+BuildRequires: Qt5Network-devel >= %{qt_ver}
+BuildRequires: Qt5OpenGL-devel >= %{qt_ver}
+BuildRequires: Qt5PrintSupport-devel >= %{qt_ver}
+BuildRequires: Qt5Widgets-devel >= %{qt_ver}
+BuildRequires: Qt5Xml-devel >= %{qt_ver}
+BuildRequires: boost-devel
+BuildRequires: cairo-devel >= 1.2.0
+BuildRequires: cmake >= 3.14.0
%if %{with cups}
BuildRequires: cups-devel
%else
BuildConflicts: cups-devel
%endif
+BuildRequires: fontconfig-devel
BuildRequires: freetype-devel >= 2.1.0
-BuildRequires: lcms-devel >= 1.09
-%{!?with_cairo:BuildRequires: libart_lgpl-devel >= 2.3.14}
+BuildRequires: harfbuzz-devel >= 0.9.42
+BuildRequires: harfbuzz-icu-devel
+BuildRequires: harfbuzz-subset-devel >= 2.4.0
+BuildRequires: hunspell-devel
+# missing find_package(HYPHEN); bundled version is used
+#BuildRequires: hyphen-devel
+BuildRequires: lcms2-devel >= 2
+BuildRequires: libcdr-devel >= 0.1
+BuildRequires: libfreehand-devel >= 0.1
+BuildRequires: libicu-devel
BuildRequires: libjpeg-devel
-BuildRequires: libpng-devel
+BuildRequires: libmspub-devel >= 0.1
+BuildRequires: libpagemaker-devel
+BuildRequires: libpng-devel >= 2:1.6
+BuildRequires: libqxp-devel
+BuildRequires: librevenge-devel
+BuildRequires: libstdc++-devel >= 6:7
BuildRequires: libtiff-devel
-BuildRequires: libxml2-devel
+BuildRequires: libvisio-devel >= 0.1
+BuildRequires: libxml2-devel >= 2
+BuildRequires: libzmf-devel
BuildRequires: openssl-devel
-BuildRequires: perl-base
-BuildRequires: python-devel
-BuildRequires: python-modules
-BuildRequires: qt-devel >= 6:3.0.5
+BuildRequires: pkgconfig
+BuildRequires: podofo-devel
+BuildRequires: poppler-cpp-devel >= 0.86.0
+BuildRequires: poppler-devel >= 0.86.0
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: python3-modules >= 1:3.2
+BuildRequires: qt5-build >= %{qt_ver}
+BuildRequires: qt5-linguist >= %{qt_ver}
+BuildRequires: qt5-qmake >= %{qt_ver}
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.293
+BuildRequires: rpmbuild(macros) >= 2.005
BuildRequires: sed >= 4.0
+BuildRequires: tar >= 1:1.22
+BuildRequires: xz
BuildRequires: zlib-devel
-Requires: desktop-file-utils
-Requires: python-PIL
-Requires: python-tkinter
-Obsoletes: scribus-scripting
-Obsoletes: scribus-short-words
-Obsoletes: scribus-svg
+Requires(post,postun): desktop-file-utils
+Requires(post,postun): gtk-update-icon-cache
+Requires: Qt5Core >= %{qt_ver}
+Requires: Qt5Gui >= %{qt_ver}
+Requires: Qt5Network >= %{qt_ver}
+Requires: Qt5OpenGL >= %{qt_ver}
+Requires: Qt5PrintSupport >= %{qt_ver}
+Requires: Qt5Widgets >= %{qt_ver}
+Requires: Qt5Xml >= %{qt_ver}
+Requires: harfbuzz >= 0.9.42
+Requires: harfbuzz-subset >= 2.4.0
+Requires: hicolor-icon-theme
+Requires: python3-pillow
+Requires: python3-tkinter
+Requires: shared-mime-info
+Obsoletes: scribus-devel < 1.3.3.6
+Obsoletes: scribus-scripting < 0.6
+Obsoletes: scribus-short-words < 1.3
+Obsoletes: scribus-svg < 0.4
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define specflags_ia32 -fomit-frame-pointer
-%define _ulibdir %{_prefix}/lib
+
+%define _debugsource_packages 0
%description
Scribus is an open source desktop page layout program with the aim of
dokumenty PDF oraz Postscript nadające się do użytku komercyjnego,
przeznaczony głównie, lecz nie tylko, dla systemu Linux(R).
-%package devel
-Summary: Header files for Scribus plugins development
-Summary(pl.UTF-8): Pliki nagłówkowe do tworzenia wtyczek Scribusa
-Group: Development/Libraries
-# currently it doesn't require base
-Requires: qt-devel
-
-%description devel
-Header files for Scribus plugins development.
-
-%description devel -l pl.UTF-8
-Pliki nagłówkowe do tworzenia wtyczek Scribusa.
-
%package docs
Summary: Documentation for Scribus
-Summary(pl.UTF-8): Dokumentacja dla Scribusa
-License: custom OPL (see License),FDL
+Summary(pl.UTF-8): Dokumentacja dla Scribusa
+License: custom OPL (see License), FDL
Group: X11/Applications/Publishing
%description docs
%package icc
Summary: ICC profiles for Scribus
-Summary(pl.UTF-8): Profile ICC dla Scribusa
+Summary(pl.UTF-8): Profile ICC dla Scribusa
License: freely distributable
Group: X11/Applications/Publishing
Requires: %{name} = %{version}-%{release}
%package templates-base
Summary: Default document templates
-Summary(pl.UTF-8): Domyślne szablony dokumentów
+Summary(pl.UTF-8): Domyślne szablony dokumentów
License: GPL v2
Group: X11/Applications/Publishing
Requires: %{name} = %{version}-%{release}
%prep
%setup -q
+%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
%build
-export QTDIR=%{_prefix}
-export KDEDIR=%{_prefix}
-
-%cmake . \
- -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
-%if %{with cairo}
- -DWANT_CAIRO=1
-%else
- -DWANT_LIBART=1
-%endif
+%cmake -B build \
+ -DWANT_CPP17=ON \
+ -DWANT_GRAPHICSMAGICK:BOOL=ON
-%{__make}
+%{__make} -C build
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
-%{__make} install \
+%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
-install %{SOURCE1} $RPM_BUILD_ROOT%{_desktopdir}
-install $RPM_BUILD_ROOT%{_datadir}/%{name}/icons/scribusicon.png $RPM_BUILD_ROOT%{_pixmapsdir}
-
-mv $RPM_BUILD_ROOT%{_ulibdir}/scribus/%{name}.lt_LT.qm $RPM_BUILD_ROOT%{_ulibdir}/scribus/%{name}.lt.qm
-
-rm -f $RPM_BUILD_ROOT%{_ulibdir}/scribus/*.no.qm
-
-rm -f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/{AUTHORS,BUILDING,COPYING,ChangeLog,ChangeLogCVS,INSTALL,NEWS,PACKAGING,README,README.MacOSX,TODO}
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{cs_CZ,cs}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{da_DK,da}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{es_ES,es}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{fa_IR,fa}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{he_IL,he}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{hi_IN,hi}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{hr_HR,hr}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{kn_IN,kn}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{lt_LT,lt}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{mn_MN,mn}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{ms_MY,ms}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{nb_NO,nb}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{pl_PL,pl}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{pt_PT,pt}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{sk_SK,sk}.qm
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.{th_TH,th}.qm
+
+echo '%%defattr(644,root,root,755)' >%{name}.lang
+for f in $RPM_BUILD_ROOT%{_datadir}/%{name}/translations/%{name}.*.qm ; do
+ bn="$(basename $f .qm)"
+ lang="${bn#%{name}.}"
+ echo "%%lang(${lang}) ${f#${RPM_BUILD_ROOT}}" >>%{name}.lang
+done
+
+%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/doc/{AUTHORS,COPYING,ChangeLog,README,LINKS,TRANSLATION}
%clean
rm -rf $RPM_BUILD_ROOT
%post
%update_desktop_database_post
%update_mime_database
+%update_icon_cache hicolor
%postun
%update_desktop_database_postun
%update_mime_database
+%update_icon_cache hicolor
-%files
+%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc AUTHORS BUILDING ChangeLog ChangeLogCVS INSTALL NEWS README TODO
+# COPYING contains many additional notes
+%doc AUTHORS COPYING ChangeLog NEWS README TODO
%attr(755,root,root) %{_bindir}/scribus
-%dir %{_ulibdir}/%{name}
-%{_ulibdir}/%{name}/import.prolog
-# don't mark dictionaries with lang() --misiek
-%{_ulibdir}/%{name}/dicts
-%{_ulibdir}/%{name}/keysets
-%dir %{_ulibdir}/%{name}/plugins
-%attr(755,root,root) %{_ulibdir}/%{name}/plugins/*.so*
-%dir %{_ulibdir}/%{name}/plugins/gettext
-%attr(755,root,root) %{_ulibdir}/%{name}/plugins/gettext/*.so*
-%dir %{_ulibdir}/scribus/profiles
-%lang(af) %{_ulibdir}/scribus/scribus.af.qm
-%lang(bg) %{_ulibdir}/scribus/scribus.bg.qm
-%lang(br) %{_ulibdir}/scribus/scribus.br.qm
-%lang(ca) %{_ulibdir}/scribus/scribus.ca.qm
-%lang(cs) %{_ulibdir}/scribus/scribus.cs.qm
-%lang(cy) %{_ulibdir}/scribus/scribus.cy.qm
-%lang(da) %{_ulibdir}/scribus/scribus.da.qm
-%lang(de) %{_ulibdir}/scribus/scribus.de.qm
-%lang(de_OL) %{_ulibdir}/scribus/scribus.de_ol.qm
-%lang(dz) %{_ulibdir}/scribus/scribus.dz.qm
-%lang(el) %{_ulibdir}/scribus/scribus.el.qm
-#%lang(en_AU) %{_ulibdir}/scribus/scribus.en_AU.qm
-%lang(en_GB) %{_ulibdir}/scribus/scribus.en_GB.qm
-#%lang(en_US) %{_ulibdir}/scribus/scribus.en_US.qm
-%lang(eo) %{_ulibdir}/scribus/scribus.eo.qm
-%lang(es) %{_ulibdir}/scribus/scribus.es.qm
-%lang(es_LA) %{_ulibdir}/scribus/scribus.es_LA.qm
-%lang(et) %{_ulibdir}/scribus/scribus.et.qm
-%lang(eu) %{_ulibdir}/scribus/scribus.eu.qm
-%lang(fi) %{_ulibdir}/scribus/scribus.fi.qm
-%lang(fr) %{_ulibdir}/scribus/scribus.fr.qm
-%lang(gl) %{_ulibdir}/scribus/scribus.gl.qm
-%lang(hu) %{_ulibdir}/scribus/scribus.hu.qm
-%lang(id) %{_ulibdir}/scribus/scribus.id.qm
-%lang(it) %{_ulibdir}/scribus/scribus.it.qm
-%lang(ja) %{_ulibdir}/scribus/scribus.ja.qm
-%lang(ko) %{_ulibdir}/scribus/scribus.ko.qm
-%lang(lt) %{_ulibdir}/scribus/scribus.lt.qm
-%lang(nl) %{_ulibdir}/scribus/scribus.nl.qm
-%lang(nb) %{_ulibdir}/scribus/scribus.nb.qm
-%lang(pl) %{_ulibdir}/scribus/scribus.pl.qm
-%lang(pt_BR) %{_ulibdir}/scribus/scribus.pt_BR.qm
-%lang(ru) %{_ulibdir}/scribus/scribus.ru.qm
-%lang(se) %{_ulibdir}/scribus/scribus.se.qm
-%lang(sk) %{_ulibdir}/scribus/scribus.sk.qm
-%lang(sl) %{_ulibdir}/scribus/scribus.sl.qm
-%lang(sq) %{_ulibdir}/scribus/scribus.sq.qm
-%lang(sr) %{_ulibdir}/scribus/scribus.sr.qm
-%lang(th) %{_ulibdir}/scribus/scribus.th_TH.qm
-%lang(tr) %{_ulibdir}/scribus/scribus.tr.qm
-%lang(uk) %{_ulibdir}/scribus/scribus.uk.qm
-%lang(zh_CN) %{_ulibdir}/scribus/scribus.zh.qm
-%dir %{_ulibdir}/%{name}/swatches
-%{_ulibdir}/%{name}/swatches/*
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/scribus.css
+%dir %{_libdir}/%{name}/plugins
+%attr(755,root,root) %{_libdir}/%{name}/plugins/*.so*
+%dir %{_libdir}/%{name}/plugins/gettext
+%attr(755,root,root) %{_libdir}/%{name}/plugins/gettext/*.so*
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/dtd
+%{_datadir}/%{name}/dicts
+%{_datadir}/%{name}/editorconfig
%{_datadir}/%{name}/icons
+%{_datadir}/%{name}/keysets
%{_datadir}/%{name}/loremipsum
-%{_datadir}/mime/packages/scribus.xml
-%dir %{_datadir}/%{name}/plugins
-%{_datadir}/%{name}/plugins/*
+%{_datadir}/%{name}/plugins
+%dir %{_datadir}/%{name}/profiles
%dir %{_datadir}/%{name}/samples
%{_datadir}/%{name}/samples/*.py
-%dir %{_datadir}/%{name}/scripts
-%{_datadir}/%{name}/scripts/*.py
+%{_datadir}/%{name}/scripts
+%{_datadir}/%{name}/swatches
+%dir %{_datadir}/%{name}/translations
+%{_datadir}/%{name}/unicodenameslist.txt
%{_desktopdir}/%{name}.desktop
-%{_mandir}/man1/%{name}.*
-%lang(pl) %{_mandir}/pl/man1/%{name}.*
-%{_pixmapsdir}/%{name}icon.png
-
-#%files devel
-#%defattr(644,root,root,755)
-#%{_includedir}/scribus
+%{_iconsdir}/hicolor/*x*/apps/scribus.png
+%{_datadir}/mime/packages/scribus.xml
+%{_datadir}/metainfo/scribus.appdata.xml
+%{_mandir}/man1/scribus.1*
+%lang(de) %{_mandir}/de/man1/scribus.1*
+%lang(pl) %{_mandir}/pl/man1/scribus.1*
%files docs
%defattr(644,root,root,755)
-%dir %{_docdir}/%{name}
-%dir %{_docdir}/%{name}/en
-%{_docdir}/%{name}/en/*
-%lang(cs) %dir %{_docdir}/%{name}/cs
-%lang(cs) %dir %{_docdir}/%{name}/cs/tutorials
-%lang(cs) %dir %{_docdir}/%{name}/cs/tutorials/scribus-short-words
-%lang(cs) %{_docdir}/%{name}/cs/tutorials/scribus-short-words/*
-%lang(de) %dir %{_docdir}/%{name}/de
-%lang(de) %{_docdir}/%{name}/de/*
-%lang(fr) %dir %{_docdir}/%{name}/fr
-%lang(fr) %{_docdir}/%{name}/fr/*.html
-%lang(fr) %dir %{_docdir}/%{name}/fr/tutorials
-%lang(fr) %dir %{_docdir}/%{name}/fr/tutorials/scribus-short-words
-%lang(fr) %{_docdir}/%{name}/fr/tutorials/scribus-short-words/*
-%lang(pl) %dir %{_docdir}/%{name}/pl
-%lang(pl) %dir %{_docdir}/%{name}/pl/tutorials
-%lang(pl) %dir %{_docdir}/%{name}/pl/tutorials/scribus-short-words
-%lang(pl) %{_docdir}/%{name}/pl/tutorials/scribus-short-words/*
+%dir %{_datadir}/%{name}/doc
+%{_datadir}/%{name}/doc/en
+%lang(de) %{_datadir}/%{name}/doc/de
+%lang(it) %{_datadir}/%{name}/doc/it
+%lang(ru) %{_datadir}/%{name}/doc/ru
%files icc
%defattr(644,root,root,755)
-%{_ulibdir}/scribus/profiles/*
+%{_datadir}/scribus/profiles/*
%files templates-base
%defattr(644,root,root,755)
-%dir %{_datadir}/%{name}/templates
-%{_datadir}/%{name}/templates/*.xml
-%dir %{_datadir}/%{name}/templates/br1
-%{_datadir}/%{name}/templates/br1/*
-%dir %{_datadir}/%{name}/templates/nl1
-%{_datadir}/%{name}/templates/nl1/*
-%dir %{_datadir}/%{name}/templates/sc_presentation
-%{_datadir}/%{name}/templates/sc_presentation/*
-%dir %{_datadir}/%{name}/templates/textbased
-%{_datadir}/%{name}/templates/textbased/*
+%{_datadir}/%{name}/templates