File gimp.spec of Package gimp.17698

#
# spec file for package gimp
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#


%global abiver 4
%global apiver 2.0

Name:           gimp
Version:        2.8.22
Release:        0
Summary:        The GNU Image Manipulation Program
License:        GPL-3.0+
Group:          Productivity/Graphics/Bitmap Editors
URL:            http://www.gimp.org/
Source:         http://download.gimp.org/pub/gimp/v2.8/%{name}-%{version}.tar.bz2
Source1:        macros.gimp
# openSUSE palette file
Source2:        openSUSE.gpl
Source99:       baselibs.conf
# PATCH-FIX-UPSTREAM gimp-gegl03-buildfix.patch bjorn.lie@gmail.com -- Port to gegl-03, patch taken from debian
Patch0:         gimp-gegl03-buildfix.patch
# PATCH-FIX-UPSTREAM gimp-bsc1073627-CVE-2017-17789.patch bsc#1073627 bgo#790849 CVE-2017-17789 zcjia@suse.com -- Fix heap buffer overflow in PSP importer
Patch1:         gimp-bsc1073627-CVE-2017-17789.patch
# PATCH-FIX-UPSTREAM gimp-fix-issue-3630-postscript-plugin-crashes.patch bsc#1161998 glgo#GNOME/GIMP#3630 qkzhu@suse.com -- Fix postscript plugin crashes
Patch2:         gimp-fix-issue-3630-postscript-plugin-crashes.patch
# PATCH-FIX-UPSTREAM gimp-CVE-2017-17787.patch bnc#1073628 CVE-2017-17787 qzhao@suse.com -- We have to check that strings being read at fixed length are properly nul-terminated.
Patch3:         gimp-CVE-2017-17787.patch
BuildRequires:  aalib-devel
BuildRequires:  alsa-devel >= 1.0.0
BuildRequires:  fdupes
BuildRequires:  fontconfig-devel >= 2.2.0
BuildRequires:  ghostscript-devel
# Explicitly needed, otherwise ghostscript-mini is used during the
# build, and it's not enough for gimp.
BuildRequires:  ghostscript-library
BuildRequires:  intltool >= 0.40.1
BuildRequires:  iso-codes-devel
BuildRequires:  libbz2-devel
BuildRequires:  libjasper-devel
BuildRequires:  libjpeg-devel
BuildRequires:  libmng-devel
BuildRequires:  librsvg-devel >= 2.36.0
BuildRequires:  libtiff-devel
BuildRequires:  libtool
BuildRequires:  libwmf-devel >= 0.2.8
BuildRequires:  libxslt-tools
BuildRequires:  pkgconfig
BuildRequires:  python-gtk-devel >= 2.10.4
BuildRequires:  translation-update-upstream
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(atk) >= 2.2.0
BuildRequires:  pkgconfig(babl) >= 0.1.10
BuildRequires:  pkgconfig(cairo) >= 1.10.2
BuildRequires:  pkgconfig(cairo-pdf) >= 1.10.2
BuildRequires:  pkgconfig(dbus-glib-1) >= 0.70
BuildRequires:  pkgconfig(gdk-pixbuf-2.0) >= 2.24.1
BuildRequires:  pkgconfig(gegl-0.3)
BuildRequires:  pkgconfig(glib-2.0) >= 2.30.2
BuildRequires:  pkgconfig(gtk+-2.0) >= 2.24.10
BuildRequires:  pkgconfig(gudev-1.0) >= 167
BuildRequires:  pkgconfig(lcms2) >= 2.2
BuildRequires:  pkgconfig(libexif) >= 0.6.15
BuildRequires:  pkgconfig(libpng) >= 1.2.37
BuildRequires:  pkgconfig(pango) >= 1.29.4
BuildRequires:  pkgconfig(poppler-glib) >= 0.12.4
BuildRequires:  pkgconfig(xcursor)
BuildRequires:  pkgconfig(xfixes)
BuildRequires:  pkgconfig(xpm)
BuildRequires:  pkgconfig(zlib)
#%%if 0%{?suse_version} > 1320
#BuildRequires:  pkgconfig(libmypaint) >= 1.3
#%%endif
# Explicitly declare the libgimp versions for upgrade purposes
Requires:       libgimp-2_0-0 = %{version}
Requires:       libgimpui-2_0-0 = %{version}
Recommends:     %{name}-lang
Recommends:     %{name}-plugins-python = %{version}
Recommends:     iso-codes
Suggests:       AdobeICCProfiles
Suggests:       gimp-2.0-scanner-plugin
Obsoletes:      %{name}-help-browser

Provides:       gimp-2.0 = %{version}
Provides:       gimp(abi) = %{abiver}
Provides:       gimp(api) = %{apiver}

%description
The GIMP is an image composition and editing program, which can be
used for creating logos and other graphics for Web pages. The GIMP
offers many tools and filters, and provides a large image
manipulation toolbox, including channel operations and layers,
effects, subpixel imaging and antialiasing, and conversions, together
with multilevel undo. The GIMP offers a scripting facility, but many
of the included scripts rely on fonts that we cannot distribute.

%package -n libgimp-2_0-0
Summary:        The GNU Image Manipulation Program - Libraries
Group:          System/Libraries

%description -n libgimp-2_0-0
The GIMP is an image composition and editing program. GIMP offers
many tools and filters, and provides a large image manipulation
toolbox and scripting.

This package provides GIMP libraries.

%package -n libgimpui-2_0-0
Summary:        The GNU Image Manipulation Program - UI Libraries
Group:          System/Libraries

%description -n libgimpui-2_0-0
The GIMP is an image composition and editing program. GIMP offers
many tools and filters, and provides a large image manipulation
toolbox and scripting.

This package provides GIMP UI libraries.

%package plugins-python
Summary:        The GNU Image Manipulation Program - python-gtk based plugins
Group:          Productivity/Graphics/Bitmap Editors
Requires:       %{name} = %{version}
Requires:       python-gtk
Supplements:    %{name}
Provides:       gimp-2.0-plugins-python = %{version}
Obsoletes:      gimp-unstable-plugins-python < 2.6.0
# For update from <= 10.3 and SLED 10:
Provides:       %{name}:%{_libdir}/gimp/2.0/plug-ins/pyconsole.py = %{version}

%description plugins-python
The GIMP is an image composition and editing program. GIMP offers
many tools and filters, and provides a large image manipulation
toolbox and scripting.

%package plugin-aa
Summary:        The GNU Image Manipulation Program -- ASCII-Art output plugin
Group:          Productivity/Graphics/Bitmap Editors
Requires:       %{name} = %{version}
# Let's trigger automatic installation if the user already has libaa installed.
Supplements:    packageand(%{name}:libaa1)

%description plugin-aa
The GIMP is an image composition and editing program. GIMP offers
many tools and filters, and provides a large image manipulation
toolbox and scripting.

%package devel
Summary:        The GNU Image Manipulation Program
Group:          Development/Libraries/Other
Requires:       libgimp-2_0-0 = %{version}
Requires:       libgimpui-2_0-0 = %{version}
Provides:       gimp-2.0-devel = %{version}
Provides:       gimp-doc = 2.6.4
Obsoletes:      gimp-doc < 2.6.4
Obsoletes:      gimp-unstable-devel < 2.6.0

%description devel
The GIMP is an image composition and editing program. GIMP offers
many tools and filters, and provides a large image manipulation
toolbox and scripting.

This subpackage contains libraries and header files for developing
applications that want to make use of the GIMP libraries.

%lang_package

%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1

translation-update-upstream
translation-update-upstream po-libgimp gimp20-libgimp
translation-update-upstream po-python gimp20-python
translation-update-upstream po-script-fu gimp20-script-fu
translation-update-upstream po-plug-ins gimp20-std-plug-ins
translation-update-upstream po-tips gimp20-tips
# Safety check for ABI version change.
vabi=`printf "%d" $(sed -n '/#define GIMP_MODULE_ABI_VERSION/{s/.* //;p}' libgimpmodule/gimpmodule.h)`
if test "x${vabi}" != "x%{abiver}"; then
   : Error: Upstream ABI version is now ${vabi}, expecting %{abiver}.
   : Update the apiver macro and rebuild.
   exit 1
fi
# Safety check for API version change.
vapi=`sed -n '/#define GIMP_API_VERSION/{s/.* //;p}' libgimpbase/gimpversion.h | sed -e 's@"@@g'`
if test "x${vapi}" != "x%{apiver}"; then
   : Error: Upstream API version is now ${vapi}, expecting %{apiver}.
   : Update the apiver macro and rebuild.
   exit 1
fi

%build
export CFLAGS="%{optflags} -fno-strict-aliasing"
autoreconf -fiv
%configure \
	--disable-static\
%if 0%{?suse_version} >= 1330
	--without-webkit\
	--with-lcms=lcms2\
%endif
	--libexecdir=%{_prefix}/lib\
	--enable-default-binary\
	--enable-mp

make %{?_smp_mflags}

%install
%make_install
install -D -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/gimp/2.0/palettes
%suse_update_desktop_file -N GIMP gimp
rm %{buildroot}%{_libdir}/gimp/2.0/*/*.*a
%find_lang gimp20 %{?no_lang_C}
%find_lang gimp20-libgimp %{?no_lang_C} gimp20.lang
%find_lang gimp20-python %{?no_lang_C} gimp20.lang
%find_lang gimp20-script-fu %{?no_lang_C} gimp20.lang
%find_lang gimp20-std-plug-ins %{?no_lang_C} gimp20.lang
%find_lang gimp20-tips %{?no_lang_C} gimp20.lang
echo "%%defattr(-,root,root)" >plugins.list
echo "%%defattr(-,root,root)" >plugins-python.list
for PLUGIN in %{buildroot}%{_libdir}/gimp/2.0/plug-ins/* ; do
    if grep -q '^#!.*python' $PLUGIN ; then
	echo "${PLUGIN#%{buildroot}}" >>plugins-python.list
    else
	echo "${PLUGIN#%{buildroot}}" >>plugins.list
    fi
done
find %{buildroot} -type f -name "*.la" -delete -print
# Install the macros file:
install -d %{buildroot}%{_sysconfdir}/rpm
sed -e "s/@GIMP_APIVER@/%{apiver}/;s/@GIMP_ABIVER@/%{abiver}/" \
    < $RPM_SOURCE_DIR/macros.gimp > macros.gimp
install -m 644 -c macros.gimp \
           %{buildroot}%{_sysconfdir}/rpm/macros.gimp
%fdupes %{buildroot}%{_datadir}/gtk-doc/
%fdupes %{buildroot}%{_libdir}/gimp/2.0/python/
%fdupes %{buildroot}%{_datadir}/gimp/2.0/

%if 0%{?suse_version} > 1130
%post
%desktop_database_post
%icon_theme_cache_post
%endif

%if 0%{?suse_version} > 1130
%postun
%desktop_database_postun
%icon_theme_cache_postun
%endif

%post -n libgimp-2_0-0 -p /sbin/ldconfig
%postun -n libgimp-2_0-0 -p /sbin/ldconfig

%post -n libgimpui-2_0-0 -p /sbin/ldconfig
%postun -n libgimpui-2_0-0 -p /sbin/ldconfig

%files -f plugins.list
%doc AUTHORS ChangeLog NEWS* README
%license COPYING LICENSE
%{_bindir}/gimp
%{_bindir}/gimp-2.?
%{_bindir}/gimp-console
%{_bindir}/gimp-console-2.?
%dir %{_datadir}/appdata
%{_datadir}/appdata/gimp.appdata.xml
%{_datadir}/applications/gimp.desktop
%{_datadir}/icons/hicolor/*/apps/*.png
%{_datadir}/gimp/
%{_datadir}/gimp/2.0/images/gimp-splash.png
%{_libdir}/gimp/2.0/environ/default.env
%{_libdir}/gimp/2.0/interpreters/default.interp
# Explicitly list modules so we don't lose one by accident
%{_libdir}/gimp/2.0/modules/libcolor-selector-cmyk.so
%{_libdir}/gimp/2.0/modules/libcolor-selector-water.so
%{_libdir}/gimp/2.0/modules/libcolor-selector-wheel.so
%{_libdir}/gimp/2.0/modules/libcontroller-linux-input.so
%{_libdir}/gimp/2.0/modules/libcontroller-midi.so
%{_libdir}/gimp/2.0/modules/libdisplay-filter-color-blind.so
%{_libdir}/gimp/2.0/modules/libdisplay-filter-gamma.so
%{_libdir}/gimp/2.0/modules/libdisplay-filter-high-contrast.so
%{_libdir}/gimp/2.0/modules/libdisplay-filter-lcms.so
%{_libdir}/gimp/2.0/modules/libdisplay-filter-proof.so
%doc %{_mandir}/man?/gimp.*
%doc %{_mandir}/man?/gimp-2.?.*
%doc %{_mandir}/man?/gimp-console.*
%doc %{_mandir}/man?/gimp-console-2.?.*
%doc %{_mandir}/man?/gimprc.*
%doc %{_mandir}/man?/gimprc-2.?.*
%dir %{_sysconfdir}/gimp
%dir %{_sysconfdir}/gimp/2.0
%config %{_sysconfdir}/gimp/2.0/*rc
# split file-aa into own package (bnc#851509
%exclude %{_libdir}/gimp/2.0/plug-ins/file-aa

%files plugin-aa
%{_libdir}/gimp/2.0/plug-ins/file-aa

%files -n libgimp-2_0-0
%dir %{_datadir}/gimp
%dir %{_datadir}/gimp/2.0
%dir %{_libdir}/gimp
%dir %{_libdir}/gimp/2.0
%dir %{_libdir}/gimp/2.0/environ
%dir %{_libdir}/gimp/2.0/interpreters
%dir %{_libdir}/gimp/2.0/modules
%dir %{_libdir}/gimp/2.0/plug-ins
%{_libdir}/libgimp-2.0.so.*
%{_libdir}/libgimpbase-2.0.so.*
%{_libdir}/libgimpcolor-2.0.so.*
%{_libdir}/libgimpconfig-2.0.so.*
%{_libdir}/libgimpmath-2.0.so.*
%{_libdir}/libgimpmodule-2.0.so.*

%files -n libgimpui-2_0-0
%{_libdir}/libgimpthumb-2.0.so.*
%{_libdir}/libgimpui-2.0.so.*
%{_libdir}/libgimpwidgets-2.0.so.*

%files plugins-python -f plugins-python.list
%{_libdir}/gimp/2.0/environ/pygimp.env
%{_libdir}/gimp/2.0/interpreters/pygimp.interp
%{_libdir}/gimp/2.0/python/
# FIXME: Maybe split gimp-lang and gimp-plugins-python-lang

%files lang -f gimp20.lang

%files devel
%doc README.i18n
%{_bindir}/gimptool-2.0
%doc %{_mandir}/man?/gimptool-2.0.*
%{_includedir}/gimp-2.0/
%{_libdir}/*.so
%{_datadir}/aclocal/gimp-2.0.m4
%{_libdir}/pkgconfig/gimp-2.0.pc
%{_libdir}/pkgconfig/gimpthumb-2.0.pc
%{_libdir}/pkgconfig/gimpui-2.0.pc
# Own these repositories to not depend on gtk-doc while building:
%dir %{_datadir}/gtk-doc
%{_datadir}/gtk-doc/html/
%config %{_sysconfdir}/rpm/macros.gimp

%changelog
openSUSE Build Service is sponsored by