Accepting request 589853 from graphics

OBS-URL: https://build.opensuse.org/request/show/589853
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gegl?expand=0&rev=36
This commit is contained in:
Dominique Leuenberger 2018-03-24 15:08:43 +00:00 committed by Git OBS Bridge
commit 03187a93bb
9 changed files with 117 additions and 445 deletions

View File

@ -1,159 +0,0 @@
From ffa77a246652c7e706d690682fe659f50fbe5656 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Mon, 1 Jul 2013 12:03:51 +0200
Subject: [PATCH] patch: CVE-2012-4433
Squashed commit of the following:
commit 2a9071e2dc4cfe1aaa7a726805985281936f9874
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Oct 16 16:57:37 2012 +0200
ppm-load: bring comment in line with reality
(cherry picked from commit 6975a9cfeaf0698b42ac81b1c2f00d13c8755453)
commit 8bb88ebf78e54837322d3be74688f98800e9f33a
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Oct 16 16:56:40 2012 +0200
ppm-load: CVE-2012-4433: add plausibility checks for header fields
Refuse values that are non-decimal, negative or overflow the target
type.
(cherry picked from commit 4757cdf73d3675478d645a3ec8250ba02168a230)
commit 2b099886969bf055a8635d06a4d89f20fed1ee42
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Oct 16 16:58:27 2012 +0200
ppm-load: CVE-2012-4433: don't overflow memory allocation
Carefully selected width/height values could cause the size of a later
allocation to overflow, resulting in a buffer much too small to store
the data which would then written beyond its end.
(cherry picked from commit 1e92e5235ded0415d555aa86066b8e4041ee5a53)
---
operations/external/ppm-load.c | 64 +++++++++++++++++++++++++++++++++++-------
1 file changed, 54 insertions(+), 10 deletions(-)
diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c
index efe6d56..e22521c 100644
--- a/operations/external/ppm-load.c
+++ b/operations/external/ppm-load.c
@@ -36,6 +36,7 @@ gegl_chant_file_path (path, _("File"), "", _("Path of file to load."))
#include "gegl-chant.h"
#include <stdio.h>
#include <stdlib.h>
+#include <errno.h>
typedef enum {
PIXMAP_ASCII = 51,
@@ -44,8 +45,8 @@ typedef enum {
typedef struct {
map_type type;
- gint width;
- gint height;
+ glong width;
+ glong height;
gsize numsamples; /* width * height * channels */
gsize bpc; /* bytes per channel */
guchar *data;
@@ -61,7 +62,7 @@ ppm_load_read_header(FILE *fp,
gchar header[MAX_CHARS_IN_ROW];
gint maxval;
- /* Check the PPM file Type P2 or P5 */
+ /* Check the PPM file Type P3 or P6 */
fgets (header,MAX_CHARS_IN_ROW,fp);
if (header[0] != ASCII_P ||
@@ -82,12 +83,33 @@ ppm_load_read_header(FILE *fp,
}
/* Get Width and Height */
- img->width = strtol (header,&ptr,0);
- img->height = atoi (ptr);
- img->numsamples = img->width * img->height * CHANNEL_COUNT;
+ errno = 0;
+ img->width = strtol (header,&ptr,10);
+ if (errno)
+ {
+ g_warning ("Error reading width: %s", strerror(errno));
+ return FALSE;
+ }
+ else if (img->width < 0)
+ {
+ g_warning ("Error: width is negative");
+ return FALSE;
+ }
+
+ img->height = strtol (ptr,&ptr,10);
+ if (errno)
+ {
+ g_warning ("Error reading height: %s", strerror(errno));
+ return FALSE;
+ }
+ else if (img->width < 0)
+ {
+ g_warning ("Error: height is negative");
+ return FALSE;
+ }
fgets (header,MAX_CHARS_IN_ROW,fp);
- maxval = strtol (header,&ptr,0);
+ maxval = strtol (header,&ptr,10);
if ((maxval != 255) && (maxval != 65535))
{
@@ -109,6 +131,16 @@ ppm_load_read_header(FILE *fp,
g_warning ("%s: Programmer stupidity error", G_STRLOC);
}
+ /* Later on, img->numsamples is multiplied with img->bpc to allocate
+ * memory. Ensure it doesn't overflow. */
+ if (!img->width || !img->height ||
+ G_MAXSIZE / img->width / img->height / CHANNEL_COUNT < img->bpc)
+ {
+ g_warning ("Illegal width/height: %ld/%ld", img->width, img->height);
+ return FALSE;
+ }
+ img->numsamples = img->width * img->height * CHANNEL_COUNT;
+
return TRUE;
}
@@ -229,12 +261,24 @@ process (GeglOperation *operation,
if (!ppm_load_read_header (fp, &img))
goto out;
- rect.height = img.height;
- rect.width = img.width;
-
/* Allocating Array Size */
+
+ /* Should use g_try_malloc(), but this causes crashes elsewhere because the
+ * error signalled by returning FALSE isn't properly acted upon. Therefore
+ * g_malloc() is used here which aborts if the requested memory size can't be
+ * allocated causing a controlled crash. */
img.data = (guchar*) g_malloc (img.numsamples * img.bpc);
+ /* No-op without g_try_malloc(), see above. */
+ if (! img.data)
+ {
+ g_warning ("Couldn't allocate %" G_GSIZE_FORMAT " bytes, giving up.", ((gsize)img.numsamples * img.bpc));
+ goto out;
+ }
+
+ rect.height = img.height;
+ rect.width = img.width;
+
switch (img.bpc)
{
case 1:
--
1.8.3.1

View File

@ -1,36 +0,0 @@
diff -urNp gegl-0.2.0.orig/bin/Makefile.in gegl-0.2.0/bin/Makefile.in
--- gegl-0.2.0.orig/bin/Makefile.in 2015-05-07 15:06:23.716649233 +0200
+++ gegl-0.2.0/bin/Makefile.in 2015-05-07 15:08:38.104260506 +0200
@@ -363,7 +363,7 @@ AM_CFLAGS = \
AM_LDFLAGS = \
$(no_undefined) ../gegl/libgegl-$(GEGL_API_VERSION).la \
- $(DEP_LIBS) $(BABL_LIBS) $(PNG_LIBS) $(LIBSPIRO)
+ $(DEP_LIBS) $(BABL_LIBS) $(PNG_LIBS) $(LIBSPIRO) -lm
gegl_SOURCES = gegl.c gegl-options.c gegl-options.h gegl-path-smooth.c \
gegl-path-smooth.h $(am__append_1)
diff -urNp gegl-0.2.0.orig/examples/Makefile.in gegl-0.2.0/examples/Makefile.in
--- gegl-0.2.0.orig/examples/Makefile.in 2015-05-07 15:06:23.674649046 +0200
+++ gegl-0.2.0/examples/Makefile.in 2015-05-07 16:13:36.057203261 +0200
@@ -376,7 +376,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = $(DEP_CFLAGS) $(GTK_CFLAGS) $(BABL_CFLAGS) $(PNG_CFLAGS)
AM_LDFLAGS = \
$(top_builddir)/gegl/libgegl-$(GEGL_API_VERSION).la \
- $(DEP_LIBS) $(GTK_LIBS) $(BABL_LIBS) $(PNG_LIBS)
+ $(DEP_LIBS) $(GTK_LIBS) $(BABL_LIBS) $(PNG_LIBS) -lm
all: all-recursive
diff -urNp gegl-0.2.0.orig/tools/Makefile.in gegl-0.2.0/tools/Makefile.in
--- gegl-0.2.0.orig/tools/Makefile.in 2015-05-07 15:06:23.716649233 +0200
+++ gegl-0.2.0/tools/Makefile.in 2015-05-07 15:31:43.643298848 +0200
@@ -394,7 +394,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = $(DEP_CFLAGS) $(BABL_CFLAGS)
AM_LDFLAGS = \
$(top_builddir)/gegl/libgegl-$(GEGL_API_VERSION).la \
- $(DEP_LIBS) $(BABL_LIBS)
+ $(DEP_LIBS) $(BABL_LIBS) -lm
@HAVE_EXIV2_TRUE@exp_combine_SOURCES = exp_combine.cpp
@HAVE_EXIV2_TRUE@exp_combine_LDADD = $(EXIV2_LIBS)

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df2e6a0d9499afcbc4f9029c18d9d1e0dd5e8710a75e17c9b1d9a6480dd8d426
size 7502040

3
gegl-0.3.28.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:152f87604a5a191775329dfb63764efa1d5c32403d1438da68e242f96b7d23ff
size 6530569

View File

@ -1,44 +0,0 @@
Index: gegl-0.2.0/operations/external/matting-levin.c
===================================================================
--- gegl-0.2.0.orig/operations/external/matting-levin.c
+++ gegl-0.2.0/operations/external/matting-levin.c
@@ -848,8 +848,8 @@ matting_sparse_new (guint cols, guint ro
sparse_t *s = g_new (sparse_t, 1);
s->columns = cols;
s->rows = rows;
- s->col_idx = g_new (UF_long, cols + 1);
- s->row_idx = g_new (UF_long, elems);
+ s->col_idx = g_new (SuiteSparse_long, cols + 1);
+ s->row_idx = g_new (SuiteSparse_long, elems);
s->values = g_new0 (gdouble, elems);
return s;
@@ -948,7 +948,7 @@ matting_get_laplacian (const gdouble
image_elems = roi->width * roi->height,
i, j, k, x, y,
status;
- UF_long *trip_col,
+ SuiteSparse_long *trip_col,
*trip_row;
glong trip_nz = 0,
trip_cursor = 0,
@@ -979,8 +979,8 @@ matting_get_laplacian (const gdouble
trip_nz = trip_masked * window_elems * window_elems;
trip_nz += image_elems; // Sparse diagonal and row summing at conclusion
- trip_col = g_new (UF_long, trip_nz);
- trip_row = g_new (UF_long, trip_nz);
+ trip_col = g_new (SuiteSparse_long, trip_nz);
+ trip_row = g_new (SuiteSparse_long, trip_nz);
trip_val = g_new0 (gdouble, trip_nz);
/* Compute the contribution of each pixel in the image to the laplacian */
@@ -1066,7 +1066,7 @@ matting_get_laplacian (const gdouble
for (y = 0; y < window_elems; ++y)
for (x = 0; x < window_elems; ++x)
{
- UF_long yx = y % diameter,
+ SuiteSparse_long yx = y % diameter,
yy = y / diameter,
xx = x % diameter,
xy = x / diameter;

View File

@ -1,39 +0,0 @@
commit a5b601502d3293966994911cfcab6a0eb0d68e41
Author: Vincent Untz <vuntz@gnome.org>
Date: Wed Jan 11 09:52:25 2012 +0100
Fix build with lua 5.2 by not using API deprecated in 5.1 already
https://bugzilla.gnome.org/show_bug.cgi?id=667675
diff --git a/operations/workshop/external/gluas.c b/operations/workshop/external/gluas.c
index 536f1d9..dbcc362 100644
--- a/operations/workshop/external/gluas.c
+++ b/operations/workshop/external/gluas.c
@@ -97,7 +97,7 @@ static int l_progress (lua_State * lua);
static int l_flush (lua_State * lua);
static int l_print (lua_State * lua);
-static const luaL_reg gluas_functions[] =
+static const luaL_Reg gluas_functions[] =
{
{"set_rgba", l_set_rgba},
{"get_rgba", l_get_rgba},
@@ -122,7 +122,7 @@ static const luaL_reg gluas_functions[] =
};
static void
register_functions (lua_State *L,
- const luaL_reg *l)
+ const luaL_Reg *l)
{
for (;l->name; l++)
lua_register (L, l->name, l->func);
@@ -146,7 +146,7 @@ drawable_lua_process (GeglOperation *op,
lua_State *L;
Priv p;
- L = lua_open ();
+ L = luaL_newstate ();
luaL_openlibs (L);
register_functions (L, gluas_functions);

View File

@ -1,43 +0,0 @@
commit 809642a08787638d9682149de25d36ee273902ff
Author: Øvind Kolå<pippin gimp org>
Date: Thu Apr 5 18:49:54 2012 +0200
tools/create-reference.rb: fix utf8 handling for ruby >= 1.9.x
A patch from Tim Mooney, fixing bug #673523
tools/create-reference.rb | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
---
Index: gegl-0.2.0/tools/create-reference.rb
===================================================================
--- gegl-0.2.0.orig/tools/create-reference.rb
+++ gegl-0.2.0/tools/create-reference.rb
@@ -5,6 +5,11 @@
# Use under a public domain license.
#
+if RUBY_VERSION =~ /^1.9/ or RUBY_VERSION =~ /^[2345]/
+ Encoding.default_external = Encoding::UTF_8
+ Encoding.default_internal = Encoding::UTF_8
+end
+
class Argument
attr_accessor :name, :data_type, :doc
def initialize
Index: gegl-0.2.0/tools/gobj2dot.rb
===================================================================
--- gegl-0.2.0.orig/tools/gobj2dot.rb
+++ gegl-0.2.0/tools/gobj2dot.rb
@@ -15,6 +15,11 @@
#
# Copyright (C) 2009 Henrik Akesson
+if RUBY_VERSION =~ /^1.9/ or RUBY_VERSION =~ /^[2345]/
+ Encoding.default_external = Encoding::UTF_8
+ Encoding.default_internal = Encoding::UTF_8
+end
+
require 'find'
if ARGV[0] == nil or ARGV.length != 1 or ARGV[0] == "-h"

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Tue Mar 13 00:18:49 UTC 2018 - bjorn.lie@gmail.com
- Update to version 0.3.28:
+ New stable branch, long packaged as gegl-unstable in openSUSE,
changes far to many to list, please see NEWS packaged in
docs sub-package.
- Lots of BuildRequires, Requires and sub-package changes.
- Drop upstream fixed patches:
+ gegl-UF_long.patch.
+ gegl-lua52.patch.
+ gegl-0.2.0-CVE-2012-4433.patch.
+ gegl-ruby19.patch.
+ gegl-0.2.0-linker-flags.patch
-------------------------------------------------------------------
Wed Mar 7 10:35:17 UTC 2018 - jengelh@inai.de

220
gegl.spec
View File

@ -16,206 +16,184 @@
#
%define debug_package_requires libgegl-0_2-0 = %{version}-%{release}
Name: gegl
Version: 0.2.0
Version: 0.3.28
Release: 0
Summary: Generic Graphics Library
License: GPL-3.0-or-later AND LGPL-3.0-or-later
Group: Productivity/Graphics/Other
Url: http://gegl.org/
Source: http://ftp.gtk.org/pub/gegl/0.2/%{name}-%{version}.tar.bz2
# PATCH-FIX-UPSTREAM gegl-lua52.patch bgo#667675 vuntz@opensuse.org -- Fix build with lua 5.2
Patch0: gegl-lua52.patch
# PATCH-FIX-UPSTREAM gegl-ruby19.patch dimstar@opensuse.org -- Fix build with ruby 1.9
Patch1: gegl-ruby19.patch
# Patched code is built by default.
# Use rpmbuild -D 'BUILD_ORIG 1' to build original code.
# Use rpmbuild -D 'BUILD_ORIG 1' -D 'BUILD_ORIG_ADDON 1' to build patched build plus original as addon.
# PATCH-FIX-UPSTREAM sutesparse changed UF_long for SuiteSparse_long
Patch2: gegl-UF_long.patch
# PATCH-FIX-UPSTREAM gegl-0.2.0-linker-flags.patch idoenmez@suse.de -- Add -lm to linker flags
Patch3: gegl-0.2.0-linker-flags.patch
# PATCH-FIX-SECURITY gegl-0.2.0-CVE-2012-4433.patch bsc789835 CVE-2012-4433 zaitor@opensuse.org -- Fix buffer overflow in and add plausibility checks to ppm-load op
Patch4: gegl-0.2.0-CVE-2012-4433.patch
URL: http://gegl.org/
Source0: https://download.gimp.org/pub/gegl/0.3/%{name}-%{version}.tar.bz2
BuildRequires: ImageMagick
BuildRequires: OpenEXR-devel
BuildRequires: SDL-devel
BuildRequires: asciidoc
BuildRequires: babl-devel >= 0.1.10
BuildRequires: enscript
BuildRequires: gcc-c++
# multiple provides by gd and gd-tools
BuildRequires: gd
BuildRequires: glib2-devel >= 2.16.1
BuildRequires: gobject-introspection-devel >= 1.32.0
BuildRequires: graphviz-gd
# Only for directory ownership:
BuildRequires: gtk-doc
BuildRequires: gtk2-devel
BuildRequires: intltool
BuildRequires: lensfun-devel
# Needed to build the doc, as Bitstream Vera Sans is the referenced font.
BuildRequires: liberation-fonts
BuildRequires: libexiv2-devel
BuildRequires: libjasper-devel >= 1.900.1
BuildRequires: libjpeg-devel
BuildRequires: libopenraw-devel >= 0.0.5
BuildRequires: libpng-devel
BuildRequires: librsvg-devel
BuildRequires: libspiro-devel
BuildRequires: libstdc++-devel
BuildRequires: lua-devel
BuildRequires: ruby
# For umfpack
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: suitesparse-devel
%if 0%{?BUILD_ORIG}
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libswscale)
%if 0%{?BUILD_ORIG_ADDON}
Provides: patched_subset
%else
Provides: %{name}-orig-addon = %{version}
Obsoletes: %{name}-orig-addon
%endif
%else
Provides: patched_subset
%endif
BuildRequires: pkgconfig(OpenEXR)
BuildRequires: pkgconfig(babl) >= 0.1.44
BuildRequires: pkgconfig(exiv2)
BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.18.0
BuildRequires: pkgconfig(gexiv2)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(jasper) >= 1.900.1
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(lcms2) >= 2.2
BuildRequires: pkgconfig(libavcodec) >= 55.69.100
BuildRequires: pkgconfig(libavformat) >= 55.48.100
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libraw)
BuildRequires: pkgconfig(librsvg-2.0) >= 2.14.0
BuildRequires: pkgconfig(libswscale) >= 2.6.100
BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(libv4l2) >= 1.0.1
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(lua) >= 5.1.0
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangocairo)
BuildRequires: pkgconfig(vapigen) >= 0.20.0
# since version 0.3.5, we no longer provide an orig-addon package, as ffmpeg/libav
# exists in Tumbleweed and we use it to build
Provides: %{name}-0_3-orig-addon = %{version}
Obsoletes: %{name}-0_3-orig-addon < 0.3.5
# Since 13/02/18 (version 0.3.28) gegl-unstable is obsolete, gegl is now on "0.3" branch.
Provides: gegl-unstable = %{version}
Obsoletes: gegl-unstable < %{version}
%description
GEGL provides infrastructure to do demand-based cached non-destructive
GEGL provides infrastructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
%package 0_2
%package -n %{name}-0_3
Summary: Generic Graphics Library
Group: System/Libraries
Recommends: %{name}-0_2-lang
Recommends: %{name}-0_3-lang
%description 0_2
GEGL provides infrastructure to do demand-based cached non-destructive
%description -n %{name}-0_3
GEGL provides infrastructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
%package 0_2-orig-addon
%package -n libgegl-0_3-0
Summary: Generic Graphics Library
# The plugins are required for the lib to be usable
Group: System/Libraries
Supplements: packageand(%{name}-0_2:%(cd %{_libdir} ; rpm -qf --queryformat=%%{NAME} `readlink %{_libdir}/libavcodec.so` ))
Requires: %{name}-0_3 >= %{version}
%description 0_2-orig-addon
GEGL provides infrastructure to do demand-based cached non-destructive
%description -n libgegl-0_3-0
GEGL provides infrastructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
%package -n libgegl-0_2-0
Summary: Generic Graphics Library
%package -n typelib-1_0-Gegl-0_3
Summary: Introspection bindings for the GEGL "Generic Graphics Library"
Group: System/Libraries
Recommends: %{name}-0_2 >= %{version}
%description -n libgegl-0_2-0
GEGL provides infrastructure to do demand-based cached non-destructive
%description -n typelib-1_0-Gegl-0_3
GEGL provides infrastructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
This package provides the GObject Introspection bindings for the
libgegl library.
%package devel
Summary: Development files for GEGL, the "Generic Graphics Library"
Summary: Development files for the GEGL "Generic Graphics Library"
Group: Development/Libraries/C and C++
Requires: babl-devel
Requires: glib2-devel
Requires: glibc-devel
Requires: libgegl-0_2-0 = %{version}
Requires: pcre-devel
Requires: libgegl-0_3-0 = %{version}
Requires: typelib-1_0-Gegl-0_3 = %{version}
%description devel
GEGL provides infrastructure to do demand-based cached non-destructive
GEGL provides infratructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
This subpackage contains the C headers for the GEGL API.
%package doc
Summary: Documentation for GEGL, the "Generic Graphics Library"
Summary: Documentation for the GEGL "Generic Graphics Library"
Group: Documentation/HTML
%description doc
GEGL provides infrastructure to do demand-based cached non-destructive
GEGL provides infrastructure to do demand based cached non destructive
image editing on larger than RAM buffers. Through babl, it provides
support for a wide range of color models and pixel storage formats for
input and output.
This subpackage contains the documentation for GEGL.
%lang_package -n %{name}-0_2
%lang_package -n %{name}-0_3
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%if 0%{?suse_version} > 1310
%patch2 -p1
%endif
%patch3 -p1
# docs-build-fix.diff
%patch4 -p1
%autosetup
%build
export RPM_OPT_FLAGS="%{optflags} -fno-strict-aliasing"
## do not use autogen.sh, it intentionally fails, if there is no ruby.
## so why use autogen, when you do not want portability?
# ./autogen.sh
%configure\
--enable-workshop=yes\
--disable-static --disable-silent-rules
%configure \
--disable-static \
%{nil}
make %{?_smp_mflags}
%install
%make_install
%if ! 0%{?BUILD_ORIG}
for MODULE in \
%{_libdir}/gegl-0.2/ff-load.so \
; do
rm -f %{buildroot}$MODULE
done
%endif
find %{buildroot} -type f -name "*.la" -delete -print
%find_lang %{name}-0.2 %{?no_lang_C}
%find_lang %{name}-0.3 %{?no_lang_C}
%post -n libgegl-0_2-0 -p /sbin/ldconfig
%postun -n libgegl-0_2-0 -p /sbin/ldconfig
%post -n gegl-0_3 -p /sbin/ldconfig
%postun -n gegl-0_3 -p /sbin/ldconfig
%post -n libgegl-0_3-0 -p /sbin/ldconfig
%postun -n libgegl-0_3-0 -p /sbin/ldconfig
%files
%{_bindir}/gegl
%{_bindir}/gegl-imgcmp
%{_bindir}/gcut
%files 0_2
%dir %{_libdir}/gegl-0.2/
%{_libdir}/gegl-0.2/*.so
%if 0%{?BUILD_ORIG}
%if 0%{?BUILD_ORIG_ADDON}
%exclude %{_libdir}/gegl-0.2/ff-load.so
%files -n %{name}-0_3
%dir %{_libdir}/gegl-0.3/
%{_libdir}/gegl-0.3/*.so
# libgegl-sc-0.3.so is a support library for the seamless-clone module
%{_libdir}/libgegl-sc-0.3.so
%{_libdir}/libgegl-npd-0.3.so
%{_libdir}/gegl-0.3/grey2.json
%files 0_2-orig-addon
%{_libdir}/gegl-0.2/ff-load.so
%endif
%endif
%files -n libgegl-0_3-0
%license COPYING COPYING.LESSER
%{_libdir}/libgegl-0.3.so.*
%files -n libgegl-0_2-0
%license COPYING
%doc AUTHORS ChangeLog NEWS README
%{_libdir}/libgegl-0.2.so.*
%files -n typelib-1_0-Gegl-0_3
%{_libdir}/girepository-1.0/Gegl-0.3.typelib
%files devel
%{_includedir}/gegl-0.2/
%{_libdir}/libgegl-0.2.so
%{_libdir}/pkgconfig/gegl-0.2.pc
%{_includedir}/gegl-0.3/
%{_libdir}/libgegl-0.3.so
%{_libdir}/pkgconfig/gegl-0.3.pc
%{_libdir}/pkgconfig/gegl-sc-0.3.pc
%{_datadir}/gir-1.0/Gegl-0.3.gir
%dir %{_datadir}/vala
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/gegl-0.3.deps
%{_datadir}/vala/vapi/gegl-0.3.vapi
%files doc
%doc AUTHORS ChangeLog NEWS
%doc %{_datadir}/gtk-doc/html/gegl/
%files -n %{name}-0_2-lang -f %{name}-0.2.lang
%files -n %{name}-0_3-lang -f %{name}-0.3.lang
%changelog