File inkscape.spec of Package inkscape

#
# spec file for package inkscape
#
# 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/
#


%define _version 1.3.2_2023-11-25_091e20ef0f

Name:           inkscape
Version:        1.3.2
Release:        0
Summary:        Vector Illustration Program
License:        GPL-3.0-only
URL:            https://inkscape.org/

Source:         https://inkscape.org/gallery/item/44615/inkscape-%{version}.tar.xz#/inkscape-%{_version}.tar.xz
# openSUSE palette file
Source1:        openSUSE.gpl
Source2:        inkscape-split-extensions-extra.py
Source98:       https://media.inkscape.org/media/resources/sigs/inkscape-%{_version}.tar.xz.sig
Source99:       https://inkscape.org/~MarcJeanmougin/gpg#/%name.keyring

# PATCH-FIX-UPSTREAM https://gitlab.com/inkscape/inkscape/-/merge_requests/6209
Patch0:         inkscape-poppler-24.03.0.patch
# PATCH-FIX-UPSTREAM
Patch1:         https://gitlab.com/inkscape/inkscape/-/merge_requests/6089.patch#/inkscape-libxml2.12.patch
# https://gitlab.com/inkscape/inkscape/-/commit/1798e9c13b786f3d077ba0132592c4d5c1d1fb9b
Patch2:         inkscape-poppler-c++20.patch
# https://gitlab.com/inkscape/inkscape/-/commit/96ca7a6c215aa14336b52753f56244dc8796ec43
Patch3:         inkscape-poppler-24.05.0.patch
# https://gitlab.com/inkscape/inkscape/-/commit/877fc26483f74f951eab516f1b57b136780a8c78
Patch4:         inkscape-poppler-c++20-2.patch

BuildRequires:  cmake
BuildRequires:  double-conversion-devel
BuildRequires:  fdupes
BuildRequires:  gc-devel
%if 0%{suse_version} < 1550
BuildRequires:  gcc10-c++
%else
BuildRequires:  gcc-c++
%endif
BuildRequires:  intltool
BuildRequires:  libboost_filesystem-devel >= 1.75
BuildRequires:  libboost_headers-devel >= 1.75
BuildRequires:  libboost_stacktrace-devel >= 1.75
BuildRequires:  liblcms2-devel
BuildRequires:  libpoppler-glib-devel > 22.01.0
BuildRequires:  libxslt-devel
BuildRequires:  ninja
BuildRequires:  perl
BuildRequires:  pkgconfig
BuildRequires:  popt-devel
BuildRequires:  potrace-devel
BuildRequires:  python3-devel
BuildRequires:  python3-gobject-devel
BuildRequires:  python3-xml
BuildRequires:  readline-devel
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(2geom) >= 1.3.0
BuildRequires:  pkgconfig(GraphicsMagick++)
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(dbus-glib-1)
BuildRequires:  pkgconfig(gdl-3.0)
BuildRequires:  pkgconfig(gsl)
BuildRequires:  pkgconfig(gspell-1)
BuildRequires:  pkgconfig(gtkmm-3.0)
BuildRequires:  pkgconfig(libcdr-0.1)
BuildRequires:  pkgconfig(libexif)
BuildRequires:  pkgconfig(libjpeg)
BuildRequires:  pkgconfig(libpng)
BuildRequires:  pkgconfig(librevenge-0.0)
BuildRequires:  pkgconfig(libsoup-2.4)
BuildRequires:  pkgconfig(libvisio-0.1)
BuildRequires:  pkgconfig(libwpg-0.3)
# extensions use annotations which requires 3.7+
Requires:       python(abi) >= 3.7
Requires:       python3-gobject
# python3-imaging is generic for python3-Pillow
Recommends:     python3-imaging
Recommends:     python3-lxml
Recommends:     python3-numpy
Recommends:     python3-scour
Recommends:     python3-xml
Obsoletes:      %{name}-extensions-dia < %{version}
Obsoletes:      %{name}-extensions-skencil < %{version}

%description
Inkscape is a vector graphics editor.

%package extensions-extra
Summary:        Additional extensions for Inkscape
Requires:       %{name} = %{version}
# ps_input.py is a wrapper around ps2pdf, which lives in ghostscript package.
Requires:       ghostscript
Requires:       python3-lxml
Requires:       python3-numpy
Requires:       python3-scour
Requires:       python3-xml
Enhances:       %{name}
Supplements:    (%{name} and python3-lxml and python3-numpy and python3-scour and python3-xml)

%description extensions-extra
Extra extensions for Inkscape. Recommended for everybody who wants to
use Inkscape.

Inkscape is a vector graphics editor.

%package extensions-fig
Summary:        Fig import extensions for Inkscape
Requires:       %{name} = %{version}
Requires:       %{name}-extensions-extra = %{version}
Requires:       transfig
Enhances:       %{name}
Supplements:    (%{name} and transfig)

%description extensions-fig
Fig family (XFig, Figurine, JFig, WinFig,...) import extension for
Inkscape.

Inkscape is a vector graphics editor.

%package extensions-gimp
Summary:        GIMP extensions for Inkscape
Requires:       %{name} = %{version}
Requires:       %{name}-extensions-extra = %{version}
Requires:       gimp
Enhances:       %{name}
Supplements:    (%{name} and gimp)

%description extensions-gimp
The GIMP import and export extensions for Inkscape.

Inkscape is a vector graphics editor.

%package extensions-scribus
Summary:        Scribus extensions for Inkscape
Requires:       %{name} = %{version}
Requires:       %{name}-extensions-extra = %{version}
Requires:       scribus
Enhances:       %{name}
Supplements:    (%{name} and scribus)

%description extensions-scribus
The Scribus-based PDF export extension for Inkscape.

Inkscape is a vector graphics editor.

%lang_package

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

%build
%ifarch %{arm}
export LDFLAGS+="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
%endif
%if 0%{suse_version} < 1550
export CXX=g++-10
%endif
%cmake \
  -GNinja \
  -DINKSCAPE_INSTALL_LIBDIR=%{_libdir} \
  -DCMAKE_SKIP_RPATH:BOOL=OFF \
  -DCMAKE_SKIP_INSTALL_RPATH:BOOL=OFF \
  -DWITH_MANPAGE_COMPRESSION=OFF \
  -DWITH_DBUS=ON \
  %{nil}
%ninja_build

%install
%ninja_install -C build

# Packaging/distribution info.
rm %{buildroot}%{_datadir}/inkscape/extensions/{LICENSE.txt,MANIFEST.in,README.md,TESTING.md,CONTRIBUTING.md}
# Test framework.
rm %{buildroot}%{_datadir}/inkscape/extensions/tox.ini        \
   %{buildroot}%{_datadir}/inkscape/extensions/.pylintrc      \
   %{buildroot}%{_datadir}/inkscape/extensions/doxygen-main.dox
rm -rf %{buildroot}%{_datadir}/inkscape/extensions/.pytest_cache
# extensions/doc
rm -rf %{buildroot}%{_datadir}/inkscape/extensions/docs
rm %{buildroot}%{_datadir}/inkscape/extensions/{.darglint,.pre-commit-config.yaml,package-readme.md,poetry.lock,pyproject.toml}

install -Dpm 0644 %{SOURCE1} %{buildroot}%{_datadir}/inkscape/palettes/

%find_lang %{name} %{?no_lang_C}

sed -i -e "1 s|#! *%{_bindir}/env python|#!%{_bindir}/python3|" %{buildroot}%{_datadir}/inkscape/extensions/*.py

# Split extensions.
python3 %{SOURCE2} %{buildroot}%{_datadir}/inkscape/extensions "%%{_datadir}/inkscape/extensions/"

%fdupes %{buildroot}

%post -n %{name} -p /sbin/ldconfig

%postun -n %{name} -p /sbin/ldconfig

%files -f inkscape.lst
%{_bindir}/*
%dir %{_libdir}/inkscape
%{_libdir}/inkscape/lib%{name}_base.so
%{_libdir}/inkscape/lib%{name}_base.so.*
%{_datadir}/applications/*Inkscape.desktop
%{_datadir}/icons/hicolor/*/apps/*Inkscape.png
%{_datadir}/icons/hicolor/*/apps/*Inkscape.svg
%{_datadir}/icons/hicolor/*/apps/*Inkscape-symbolic.svg
%{_datadir}/metainfo/*Inkscape.appdata.xml
%dir %{_datadir}/inkscape/
%{_datadir}/inkscape/[cdf-z]*
%{_datadir}/inkscape/examples/
%dir %{_datadir}/inkscape/extensions/
%{_datadir}/inkscape/extensions/svg_fonts/
%{_datadir}/inkscape/extensions/*.xsl*
%{_datadir}/inkscape/extensions/colors.xml
%{_datadir}/inkscape/extensions/Poly3DObjects/
%{_datadir}/inkscape/extensions/alphabet_soup/
%{_datadir}/inkscape/extensions/inkweb.js
%{_datadir}/inkscape/extensions/jessyInk.js
%{_datadir}/inkscape/extensions/jessyInk_core_mouseHandler_noclick.js
%{_datadir}/inkscape/extensions/jessyInk_core_mouseHandler_zoomControl.js
%{_datadir}/inkscape/extensions/jessyink_video.svg
%{_datadir}/inkscape/extensions/fontfix.conf
%{_datadir}/inkscape/extensions/seamless_pattern.svg
%{_datadir}/inkscape/extensions/raster_output_jpg.svg
%dir %{_datadir}/inkscape/extensions/icons
%{_datadir}/inkscape/extensions/icons/businesscard_landscape.svg
%{_datadir}/inkscape/extensions/icons/dvd_box.svg
%{_datadir}/inkscape/extensions/icons/seamless_pattern.svg
%{_datadir}/inkscape/attributes/
%{_datadir}/inkscape/branding/
%dir %{_datadir}/bash-completion/
%dir %{_datadir}/bash-completion/completions/
%{_datadir}/bash-completion/completions/inkscape
%{_mandir}/man1/*.1%{?ext_man}
# We can't really move the localized manpages to the lang package, since they'd
# create a conflict between the lang subpackage and bundles
%dir %{_mandir}/hr/
%dir %{_mandir}/hr/man1/
%dir %{_mandir}/ko/
%dir %{_mandir}/ko/man1/
%{_mandir}/*/man1/*.1%{?ext_man}

%files extensions-extra -f inkscape-extensions-extra.lst
%{_datadir}/inkscape/extensions/output_scour.svg
%{_datadir}/inkscape/extensions/dxf14_*.txt
%{_datadir}/inkscape/extensions/dxf_input_text_scale_factor.svg

%files extensions-fig
%{_datadir}/inkscape/extensions/fig*

%files extensions-gimp
# NOTE: export_gimp_palette* does not depend on gimp, but belongs here logically:
%{_datadir}/inkscape/extensions/*gimp*

%files extensions-scribus
%{_datadir}/inkscape/extensions/*scribus*

%files lang -f %{name}.lang

%changelog
openSUSE Build Service is sponsored by