diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000000000000000000000000000000000000..fa9b19ded8d29f5cdf451e3321af7cf5241bc660 --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,10 @@ +Currently active maintainers +---------------------------- + +Michael Natterer +E-mail: mitch@gimp.org +Userid: mitch + +Jehan +E-mail: jehan@girinstud.io +Userid: Jehan diff --git a/autogen.sh b/autogen.sh new file mode 100644 index 0000000000000000000000000000000000000000..13b819f46d00c729b7a59ca8efdaa8765175baad --- /dev/null +++ b/autogen.sh @@ -0,0 +1,316 @@ +#!/bin/sh + +# This script does all the magic calls to automake/autoconf and +# friends that are needed to configure a git clone. As described in +# the file HACKING you need a couple of extra tools to run this script +# successfully. +# +# If you are compiling from a released tarball you don't need these +# tools and you shouldn't use this script. Just call ./configure +# directly. + +AUTOMAKE_RECOMMENDED_VERSION=1.16 + +AUTOCONF_REQUIRED_VERSION=2.54 +AUTOMAKE_REQUIRED_VERSION=1.13.0 +INTLTOOL_REQUIRED_VERSION=0.40.1 +LIBTOOL_REQUIRED_VERSION=1.5 +LIBTOOL_WIN32_REQUIRED_VERSION=2.2 + +ACLOCAL=${ACLOCAL-aclocal-${AUTOMAKE_RECOMMENDED_VERSION}} +AUTOCONF=${AUTOCONF-autoconf} +AUTOHEADER=${AUTOHEADER-autoheader} +AUTOMAKE=${AUTOMAKE-automake-${AUTOMAKE_RECOMMENDED_VERSION}} +LIBTOOLIZE=${LIBTOOLIZE-libtoolize} + +PROJECT="GNU Image Manipulation Program" +TEST_TYPE=-d +FILE=plug-ins + + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. +ORIGDIR=`pwd` +cd $srcdir + + +check_version () +{ + VERSION_A=$1 + VERSION_B=$2 + + save_ifs="$IFS" + IFS=. + set dummy $VERSION_A 0 0 0 + MAJOR_A=$2 + MINOR_A=$3 + MICRO_A=$4 + set dummy $VERSION_B 0 0 0 + MAJOR_B=$2 + MINOR_B=$3 + MICRO_B=$4 + IFS="$save_ifs" + + if expr "$MAJOR_A" = "$MAJOR_B" > /dev/null; then + if expr "$MINOR_A" \> "$MINOR_B" > /dev/null; then + echo "yes (version $VERSION_A)" + elif expr "$MINOR_A" = "$MINOR_B" > /dev/null; then + if expr "$MICRO_A" \>= "$MICRO_B" > /dev/null; then + echo "yes (version $VERSION_A)" + else + echo "Too old (version $VERSION_A)" + DIE=1 + fi + else + echo "Too old (version $VERSION_A)" + DIE=1 + fi + elif expr "$MAJOR_A" \> "$MAJOR_B" > /dev/null; then + echo "Major version might be too new ($VERSION_A)" + else + echo "Too old (version $VERSION_A)" + DIE=1 + fi +} + +echo +echo "I am testing that you have the tools required to build the" +echo "$PROJECT from git. This test is not foolproof," +echo "so if anything goes wrong, see the file HACKING for more information..." +echo + +DIE=0 + +OS=`uname -s` +case $OS in + *YGWIN* | *INGW*) + echo "Looks like Win32, you will need libtool $LIBTOOL_WIN32_REQUIRED_VERSION or newer." + echo + LIBTOOL_REQUIRED_VERSION=$LIBTOOL_WIN32_REQUIRED_VERSION + ;; +esac + +printf "checking for libtool >= $LIBTOOL_REQUIRED_VERSION ... " +if ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1; then + LIBTOOLIZE=$LIBTOOLIZE +elif (glibtoolize --version) < /dev/null > /dev/null 2>&1; then + LIBTOOLIZE=glibtoolize +else + echo + echo " You must have libtool installed to compile $PROJECT." + echo " Install the appropriate package for your distribution," + echo " or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + echo + DIE=1 +fi + +if test x$LIBTOOLIZE != x; then + VER=`$LIBTOOLIZE --version \ + | grep libtool | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"` + check_version $VER $LIBTOOL_REQUIRED_VERSION +fi + +# check if gtk-doc is explicitly disabled +for ag_option in $AUTOGEN_CONFIGURE_ARGS $@ +do + case $ag_option in + -disable-gtk-doc | --disable-gtk-doc) + enable_gtk_doc=no + ;; + esac +done + +if test x$enable_gtk_doc = xno; then + echo "skipping test for gtkdocize" +else + printf "checking for gtkdocize ... " + if (gtkdocize --version) < /dev/null > /dev/null 2>&1; then + echo "yes" + else + echo + echo " You must have gtk-doc installed to compile $PROJECT." + echo " Install the appropriate package for your distribution," + echo " or get the source tarball at" + echo " https://ftp.gnome.org/pub/GNOME/sources/gtk-doc/" + echo " You can also use the option --disable-gtk-doc to skip" + echo " this test but then you will not be able to generate a" + echo " configure script that can build the API documentation." + DIE=1 + fi +fi + +printf "checking for autoconf >= $AUTOCONF_REQUIRED_VERSION ... " +if ($AUTOCONF --version) < /dev/null > /dev/null 2>&1; then + VER=`$AUTOCONF --version | head -n 1 \ + | grep -iw autoconf | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"` + check_version $VER $AUTOCONF_REQUIRED_VERSION +else + echo + echo " You must have autoconf installed to compile $PROJECT." + echo " Download the appropriate package for your distribution," + echo " or get the source tarball at ftp://ftp.gnu.org/pub/gnu/autoconf/" + echo + DIE=1; +fi + + +printf "checking for automake >= $AUTOMAKE_REQUIRED_VERSION ... " +if ($AUTOMAKE --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=$AUTOMAKE + ACLOCAL=$ACLOCAL +elif (automake-1.16 --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake-1.16 + ACLOCAL=aclocal-1.16 +elif (automake-1.15 --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake-1.15 + ACLOCAL=aclocal-1.15 +elif (automake-1.14 --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake-1.14 + ACLOCAL=aclocal-1.14 +elif (automake-1.13 --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake-1.13 + ACLOCAL=aclocal-1.13 +elif (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + ACLOCAL=aclocal +else + echo + echo " You must have automake $AUTOMAKE_REQUIRED_VERSION or newer installed to compile $PROJECT." + echo " Download the appropriate package for your distribution," + echo " or get the source tarball at ftp://ftp.gnu.org/pub/gnu/automake/" + echo + DIE=1 +fi + +if test x$AUTOMAKE != x; then + VER=`$AUTOMAKE --version \ + | grep automake | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"` + check_version $VER $AUTOMAKE_REQUIRED_VERSION +fi + + +printf "checking for intltool >= $INTLTOOL_REQUIRED_VERSION ... " +if (intltoolize --version) < /dev/null > /dev/null 2>&1; then + VER=`intltoolize --version \ + | grep intltoolize | sed "s/.* \([0-9.]*\)/\1/"` + check_version $VER $INTLTOOL_REQUIRED_VERSION +else + echo + echo " You must have intltool installed to compile $PROJECT." + echo " Get the latest version from" + echo " ftp://ftp.gnome.org/pub/GNOME/sources/intltool/" + echo + DIE=1 +fi + + +printf "checking for xsltproc ... " +if (xsltproc --version) < /dev/null > /dev/null 2>&1; then + echo "yes" +else + echo + echo " You must have xsltproc installed to compile $PROJECT." + echo " Get the latest version from" + echo " ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/" + echo + DIE=1 +fi + +if test "$DIE" -eq 1; then + echo + echo "Please install/upgrade the missing tools and call me again." + echo + exit 1 +fi + + +test $TEST_TYPE $FILE || { + echo + echo "You must run this script in the top-level $PROJECT directory." + echo + exit 1 +} + + +if test -z "$NOCONFIGURE"; then + echo + echo "I am going to run ./configure with the following arguments:" + echo + echo " $AUTOGEN_CONFIGURE_ARGS $@" + echo + + if test -z "$*"; then + echo "If you wish to pass additional arguments, please specify them " + echo "on the $0 command line or set the AUTOGEN_CONFIGURE_ARGS " + echo "environment variable." + echo + fi +fi + + +if test -z "$ACLOCAL_FLAGS"; then + + acdir=`$ACLOCAL --print-ac-dir` + m4list="glib-2.0.m4 glib-gettext.m4 gtk-3.0.m4 intltool.m4 pkg.m4" + + for file in $m4list + do + if [ ! -f "$acdir/$file" ]; then + echo + echo "WARNING: aclocal's directory is $acdir, but..." + echo " no file $acdir/$file" + echo " You may see fatal macro warnings below." + echo " If these files are installed in /some/dir, set the " + echo " ACLOCAL_FLAGS environment variable to \"-I /some/dir\"" + echo " or install $acdir/$file." + echo + fi + done +fi + +rm -rf autom4te.cache + +$ACLOCAL $ACLOCAL_FLAGS +RC=$? +if test $RC -ne 0; then + echo "$ACLOCAL gave errors. Please fix the error conditions and try again." + exit $RC +fi + +$LIBTOOLIZE --force || exit $? + +if test x$enable_gtk_doc = xno; then + if test -f gtk-doc.make; then :; else + echo "EXTRA_DIST = missing-gtk-doc" > gtk-doc.make + fi + echo "WARNING: You have disabled gtk-doc." + echo " As a result, you will not be able to generate the API" + echo " documentation and 'make dist' will not work." + echo +else + gtkdocize || exit $? +fi + +# optionally feature autoheader +($AUTOHEADER --version) < /dev/null > /dev/null 2>&1 && $AUTOHEADER || exit 1 + +$AUTOMAKE --add-missing || exit $? +$AUTOCONF || exit $? + +intltoolize --automake || exit $? + + +cd $ORIGDIR + +if test -z "$NOCONFIGURE"; then + $srcdir/configure $AUTOGEN_CONFIGURE_ARGS "$@" + RC=$? + if test $RC -ne 0; then + echo + echo "Configure failed or did not finish!" + exit $RC + fi + + echo + echo "Now type 'make' to compile the $PROJECT." +fi diff --git a/backport-CVE-2018-12713.patch b/backport-CVE-2018-12713.patch deleted file mode 100644 index d8d61d6058629db0d683139665967b3bf80ef204..0000000000000000000000000000000000000000 --- a/backport-CVE-2018-12713.patch +++ /dev/null @@ -1,44 +0,0 @@ -From c21eff4b031acb04fb4dfce8bd5fdfecc2b6524f Mon Sep 17 00:00:00 2001 -From: Jehan -Date: Sun, 24 Jun 2018 04:48:48 +0200 -Subject: [PATCH] Issue #1689: create unique temporary file with - g_file_open_tmp(). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Not sure this is really solving the issue reported, which is that -`g_get_tmp_dir()` uses environment variables (yet as g_file_open_tmp() -uses g_get_tmp_dir()…). But at least g_file_open_tmp() should create -unique temporary files, which prevents overriding existing files (which -is most likely the only real attack possible here, or at least the only -one I can think of unless some weird vulnerabilities exist in glib). ---- - app/tests/test-xcf.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/app/tests/test-xcf.c b/app/tests/test-xcf.c -index 9fc2ec1f4b..98ca4f0bed 100644 ---- a/app/tests/test-xcf.c -+++ b/app/tests/test-xcf.c -@@ -295,7 +295,8 @@ gimp_write_and_read_file (Gimp *gimp, - GimpImage *image; - GimpImage *loaded_image; - GimpPlugInProcedure *proc; -- gchar *filename; -+ gchar *filename = NULL; -+ gint file_handle; - GFile *file; - - /* Create the image */ -@@ -311,7 +312,9 @@ gimp_write_and_read_file (Gimp *gimp, - use_gimp_2_8_features); - - /* Write to file */ -- filename = g_build_filename (g_get_tmp_dir (), "gimp-test.xcf", NULL); -+ file_handle = g_file_open_tmp ("gimp-test-XXXXXX.xcf", &filename, NULL); -+ g_assert (file_handle != -1); -+ close (file_handle); - file = g_file_new_for_path (filename); - g_free (filename); - diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000000000000000000000000000000000000..8e84f4bdf57ccb97abaffb77b146cab894e73f82 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,2 @@ +libgimp-2_0-0 +libgimpui-2_0-0 diff --git a/gimp-2.10.6.tar.bz2 b/gimp-2.99.6.tar.bz2 similarity index 73% rename from gimp-2.10.6.tar.bz2 rename to gimp-2.99.6.tar.bz2 index ab90623f8e0f32eb8f4864eb141f1ddb802b592d..31b14d69b81b05654e0877bb3c7ec59658a9f72d 100644 Binary files a/gimp-2.10.6.tar.bz2 and b/gimp-2.99.6.tar.bz2 differ diff --git a/gimp-rpmlintrc b/gimp-rpmlintrc new file mode 100644 index 0000000000000000000000000000000000000000..0a3e5fb15ef4d4e733a5957b2834f0b2b537b39d --- /dev/null +++ b/gimp-rpmlintrc @@ -0,0 +1 @@ +addFilter('shlib-fixed-dependency') diff --git a/gimp.spec b/gimp.spec index 1aed82e4d2948078244c228bdfc2bbc1f8363e08..a3657e535c3d01107ecdcab9d3f79ea5e090b969 100644 --- a/gimp.spec +++ b/gimp.spec @@ -1,259 +1,424 @@ +%define requires_file() %( readlink -f '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' -f | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") + +%bcond_without is_git_build +%bcond_without binreloc + +%define alsa_version 1.0.0 +%define appstream_glib_version 0.7.7 +%define atk_version 2.4.0 +%define babl_version 0.1.82 +%define cairo_version 1.14.0 +%define cairo_pdf_version 1.12.2 +%define dbus_glib_version 0.70 +%define gdk_pixbuf_version 2.30.8 +%define fontconfig_version 2.12.4 +%define freetype2_version 2.1.7 +%define gdk_pixbuf_version 2.30.8 +%define gegl04_version 0.4.26 +%define gexiv2_version 0.10.6 +%define glib_version 2.56.2 +%define gtk3_version 3.22.29 +%define gudev_version 167 +%define harfbuzz_version 1.0.5 +%define lcms2_version 2.8 +%define libexif_version 0.6.15 +%define libheif_version 1.5.2 +%define liblzma_version 5.0.0 +%define libmypaint_version 1.4.0 +%define libopenjp2_version 2.1.0 +%define libpng_version 1.6.25 +%define librsvg_version 2.40.6 +%define libunwind_version 1.1.0 +%define libwebp_version 0.6.0 +%define mypaint_brushes_version 1.3.0 +%define OpenEXR_version 1.6.1 +%define pango_version 1.44.0 +%define poppler_data_version 0.4.9 +%define poppler_glib_version 0.69.0 +%define vapigen_version 0.40.0 +%define libvala_version 0.40.0 +%define webkit2gtk_version 2.20.3 + +%global abiver 5 +%global apiver 3.0 + Name: gimp -Version: 2.10.6 -Release: 7 +Version: 2.99.6 +Release: 1 Epoch: 2 -Summary: A versatile graphics manipulation package -License: GPLv3+ and GPLv3 -URL: http://www.gimp.org/ - -Source0: http://download.gimp.org/pub/gimp/v2.10/gimp-2.10.6.tar.bz2 -Patch6000: backport-CVE-2018-12713.patch - -%global apiversion 2.0 -%global textversion 20 -%global allversion 2.10 - -BuildRequires: alsa-lib-devel >= 1.0.0 libgudev1-devel >= 167 libgexiv2-devel >= 0.10.6 librsvg2-devel >= 2.40.6 libpng-devel >= 1.6.25 libtiff-devel -BuildRequires: lcms2-devel >= 2.8 harfbuzz-devel >= 0.9.19 glib2-devel >= 2.54.2 gtk2-devel >= 2.24.10 gegl04-devel >= 0.4.6 gdk-pixbuf2-devel >= 2.30.8 -BuildRequires: atk-devel >= 2.2.0 babl-devel >= 0.1.56 cairo-devel >= 1.12.2 bzip2-devel fontconfig-devel >= 2.12.4 freetype-devel >= 2.1.7 libX11-devel -BuildRequires: libgs-devel iso-codes-devel libjpeg-devel libmng-devel libwebp-devel >= 0.6.0 pango-devel >= 1.29.4 poppler-glib-devel >= 0.44.0 -BuildRequires: libwmf-devel >= 0.2.8 libmypaint-devel >= 1.3.0 mypaint-brushes-devel >= 1.3.0 OpenEXR-devel >= 1.6.1 openjpeg2-devel >= 2.1.0 -BuildRequires: poppler-data-devel >= 0.4.7 pycairo-devel >= 1.0.2 pygtk2-devel >= 2.10.4 pygobject2-devel python2-devel >= 2.5.0 xz-devel >= 5.0.0 -BuildRequires: perl >= 5.10.0 libappstream-glib gtk-doc >= 1.0 gegl04-tools libXpm-devel pkgconfig zlib-devel -BuildRequires: libXmu-devel gettext >= 0.19 chrpath >= 0.13-5 intltool >= 0.40.1 gdb - -Requires: babl%{?_isa} >= 0.1.56 fontconfig >= 2.12.4 freetype >= 2.1.7 pango >= 1.29.4 xdg-utils %{name}-libs = %{epoch}:%{version}-%{release} -Requires: gegl04%{?_isa} >= 0.4.6 glib2 >= 2.54.0 gtk2 >= 2.24.10 pygtk2 >= 2.10.4 hicolor-icon-theme -Requires: %{name}-libs = %{epoch}:%{version}-%{release} - -Obsoletes: gimp-help-browser < %{epoch}:%{version}-%{release} -Conflicts: gimp-help-browser < %{epoch}:%{version}-%{release} -Obsoletes: gimp-unstable < 2:2.10 -Conflicts: gimp-unstable < 2:2.10 +Summary: The GNU Image Manipulation Program +License: GPL-3.0-or-later +Group: Productivity/Graphics/Bitmap Editors +URL: https://www.gimp.org/ +Source: https://download.gimp.org/mirror/pub/gimp/v2.99/%{name}-%{version}.tar.bz2 +Source1: macros.gimp +Source2: autogen.sh +Source3: MAINTAINERS +Source98: gimp-rpmlintrc +Source99: baselibs.conf +Patch0: git_info_from_dirname.patch +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: aalib-devel +BuildRequires: babl-vala >= %{babl_version} +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: gegl04 >= %{gegl04_version} +BuildRequires: ghostscript-devel +BuildRequires: glib-networking +BuildRequires: gtk-doc +BuildRequires: intltool >= 0.40.1 +BuildRequires: libwmf-devel >= 0.2.8 +BuildRequires: pkgconfig +BuildRequires: python3 >= 3.6.0 +BuildRequires: python3-gobject +BuildRequires: xdg-utils +BuildRequires: pkgconfig(OpenEXR) >= %{OpenEXR_version} +BuildRequires: pkgconfig(alsa) >= %{alsa_version} +BuildRequires: pkgconfig(appstream-glib) >= %{appstream_glib_version} +BuildRequires: pkgconfig(atk) >= %{atk_version} +BuildRequires: pkgconfig(babl) >= %{babl_version} +BuildRequires: pkgconfig(bzip2) +BuildRequires: pkgconfig(cairo) >= %{cairo_version} +BuildRequires: pkgconfig(cairo-pdf) >= %{cairo_pdf_version} +BuildRequires: pkgconfig(dbus-glib-1) >= %{dbus_glib_version} +BuildRequires: pkgconfig(fontconfig) >= %{fontconfig_version} +BuildRequires: pkgconfig(freetype2) >= %{freetype2_version} +BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= %{gdk_pixbuf_version} +BuildRequires: pkgconfig(gegl-0.4) >= %{gegl04_version} +BuildRequires: pkgconfig(gexiv2) >= %{gexiv2_version} +BuildRequires: pkgconfig(gjs-1.0) +BuildRequires: pkgconfig(glib-2.0) >= %{glib_version} +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} +BuildRequires: pkgconfig(gudev-1.0) >= %{gudev_version} +BuildRequires: pkgconfig(harfbuzz) >= %{harfbuzz_version} +BuildRequires: pkgconfig(iso-codes) +BuildRequires: pkgconfig(lcms2) >= %{lcms2_version} +BuildRequires: pkgconfig(libarchive) +BuildRequires: pkgconfig(libexif) >= %{libexif_version} +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(liblzma) >= %{liblzma_version} +BuildRequires: pkgconfig(libmng) +BuildRequires: pkgconfig(libmypaint) >= %{libmypaint_version} +BuildRequires: pkgconfig(libopenjp2) >= %{libopenjp2_version} +BuildRequires: pkgconfig(libpng) >= %{libpng_version} +BuildRequires: pkgconfig(librsvg-2.0) >= %{librsvg_version} +BuildRequires: pkgconfig(libtiff-4) +BuildRequires: pkgconfig(libunwind) >= %{libunwind_version} +BuildRequires: pkgconfig(libwebp) >= %{libwebp_version} +BuildRequires: pkgconfig(luajit) +BuildRequires: pkgconfig(mypaint-brushes-1.0) >= %{mypaint_brushes_version} +BuildRequires: pkgconfig(pango) >= %{pango_version} +BuildRequires: pkgconfig(poppler-data) >= %{poppler_data_version} +BuildRequires: pkgconfig(poppler-glib) >= %{poppler_glib_version} +BuildRequires: pkgconfig(shared-mime-info) +BuildRequires: pkgconfig(vapigen) >= %{vapigen_version} +BuildRequires: pkgconfig(webkit2gtk-4.0) >= %{webkit2gtk_version} +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xmu) +BuildRequires: pkgconfig(xpm) +BuildRequires: pkgconfig(zlib) +%requires_eq gegl-0_4 +Requires: gjs +Requires: libgimp-3_0-0 = %{epoch}:%{version} +Requires: libgimpui-3_0-0 = %{epoch}:%{version} +Requires: luajit +Requires: shared-mime-info +Requires: xdg-utils +Recommends: %{name}-plugins-python3 = %{epoch}:%{version} +Recommends: iso-codes +Suggests: AdobeICCProfiles +Provides: gimp-2.0 = %{epoch}:%{version} +Provides: gimp(abi) = %{abiver} +Provides: gimp(api) = %{apiver} %description -GIMP is a cross-platform image editor available for GNU/Linux, OS X, Windows and more operating systems. -It is free software, you can change its source code and distribute your changes. -Whether you are a graphic designer, photographer, illustrator, or scientist, -GIMP provides you with sophisticated tools to get your job done. You can further enhance -your productivity with GIMP thanks to many customization options and 3rd party plugins. - -%package libs -Summary: Libraries for %{name} -License: LGPLv3+ - -Obsoletes: gimp-unstable-libs < 2:2.10 -Conflicts: gimp-unstable-libs < 2:2.10 - -%description libs -Libraries for %{name}. - -%package devel -Summary: GIMP development kit -License: LGPLv3+ -Requires: gimp-libs = %{epoch}:%{version}-%{release} glib2-devel rpm >= 4.11.0 -Requires: gimp-devel-tools = %{epoch}:%{version}-%{release} gtk2-devel pkgconfig - -Provides: %{name}-devel-tools%{?_isa} %{name}-devel-tools -Obsoletes: %{name}-devel-tools -Obsoletes: gimp-unstable-devel < 2:2.10 -Conflicts: gimp-unstable-devel < 2:2.10 -Obsoletes: gimp-unstable-devel-tools < 2:2.10 -Conflicts: gimp-unstable-devel-tools < 2:2.10 +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-3_0-0 +Summary: The GNU Image Manipulation Program - Libraries +Group: System/Libraries + +%requires_file %{_libdir}/libbabl-0.1.so +%requires_file %{_libdir}/libgegl-0.4.so +%requires_file %{_libdir}/libgexiv2.so + +%description -n libgimp-3_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-3_0-0 +Summary: The GNU Image Manipulation Program - UI Libraries +Group: System/Libraries + +%description -n libgimpui-3_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 plugin-python3 +Summary: The GNU Image Manipulation Program - python3 goject introspection plugins +Group: Productivity/Graphics/Bitmap Editors +Requires: %{name} = %{epoch}:%{version} +Requires: python3 >= 3.6.0 +Requires: python3-gobject +Supplements: %{name} +Provides: gimp-plugins-python3 = %{epoch}:%{version}-%{release} +Obsoletes: gimp-plugins-python3 < %{epoch}:%{version}-%{release} +%description plugin-python3 +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 vala +Summary: The GNU Image Manipulation Program - Vala development files +Group: Productivity/Graphics/Bitmap Editors +Requires: %{name}-devel = %{epoch}:%{version} +%description vala +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} = %{epoch}:%{version} +Supplements: (%{name} and 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-3_0-0 = %{epoch}:%{version} +Requires: libgimpui-3_0-0 = %{epoch}:%{version} +Provides: gimp-devel = %{epoch}:%{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. + +%package extension-goat-excercises +Summary: The GNU Image Manipulation Program +Group: Development/Libraries/Other +Requires: libgimpui-3_0-0 = %{epoch}:%{version} +Requires: gimp-vala = %{epoch}:%{version} +Requires: gimp-devel = %{epoch}:%{version} +Requires: gimp-plugin-python3 = %{epoch}:%{version} + +%description extension-goat-excercises +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 example the goat extension examples +that extend gimp. -%description devel -GIMP development kit -%package help -Summary: Including man files for gimp -Requires: man - -%description help -This contains man files for the using of gimp. %prep -%autosetup -n %{name}-%{version} -p1 +%autosetup -p1 +chmod 744 %{SOURCE2} +cp %{SOURCE2} . +cp %{SOURCE3} . %build +%define _lto_cflags %{nil} +NOCONFIGURE=1 ./autogen.sh + +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 +test -x "$(type -p %{_bindir}/gcc-7)" && export CC="%{_bindir}/gcc-7" +test -x "$(type -p %{_bindir}/g++-7)" && export CXX="%{_bindir}/g++-7" +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 +export CFLAGS="%{optflags} -fno-strict-aliasing" %configure \ - --enable-mp \ - --enable-python \ - --disable-static \ - --with-print \ - --with-poppler \ - --with-gudev --without-hal \ - --without-webkit \ - --with-lcms=lcms2 \ - --enable-gimp-console \ - --enable-default-binary=yes \ - --without-aa \ - --with-linux-input \ - --with-webp \ - --with-gvfs \ - --with-alsa \ - --with-dbus \ - --with-script-fu \ - --with-cairo-pdf \ - --without-appdata-test \ - --with-libtiff \ - --with-libjpeg \ - --with-libpng \ - --with-libmng \ - --with-libexif \ - --with-librsvg \ - --with-libxpm + --disable-silent-rules \ + --disable-static\ + --libexecdir=%{_prefix}/lib\ + --enable-default-binary\ + --enable-binreloc \ + --enable-mp + +# 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 %make_build -gimp_pc_extract_normalize() { - PKG_CONFIG_PATH="$PWD" \ - pkg-config --variable="$1" gimp-2.0 | \ - sed \ - -e 's|^/usr/share/man|%{_mandir}|' \ - -e 's|^/usr/share/info|%{_infodir}|' \ - -e 's|^/usr/include|%{_includedir}|' \ - -e 's|^/usr/lib64|%{_libdir}|' \ - -e 's|^/usr/bin|%{_bindir}|' \ - -e 's|^/usr|%{_exec_prefix}|' \ - -e 's|^/var|%{_localstatedir}|' \ - -e 's|^/usr/share|%{_datadir}|' \ - -e 's|^/var/lib|%{_sharedstatedir}|' \ - -e 's|^/etc|%{_sysconfdir}|' \ - -e 's|^/usr/libexec|%{_libexecdir}|' \ - -e 's|^/usr/sbin|%{_sbindir}|' \ - -e 's|^/usr|%{_prefix}|' -} - -_gimp_sysconfdir="$(gimp_pc_extract_normalize gimpsysconfdir)" -_gimp_localedir="$(gimp_pc_extract_normalize gimplocaledir)" -_gimp_datadir="$(gimp_pc_extract_normalize gimpdatadir)" -_gimp_libdir="$(gimp_pc_extract_normalize gimplibdir)" -_gimp_scriptdir="${_gimp_datadir}/scripts" -_gimp_plugindir="${_gimp_libdir}/plug-ins" - -cat << EOF > macros.gimp -#RPM macros for GIMP - -%%_gimp_sysconfdir ${_gimp_sysconfdir} -%%_gimp_localedir ${_gimp_localedir} -%%_gimp_datadir ${_gimp_datadir} -%%_gimp_libdir ${_gimp_libdir} -%%_gimp_scriptdir ${_gimp_scriptdir} -%%_gimp_plugindir ${_gimp_plugindir} -EOF - %install %make_install -install -D -m0644 macros.gimp %{buildroot}%{_rpmconfigdir}/macros.d/macros.gimp -find %buildroot -type f -print0 | xargs -0 -L 20 chrpath --delete --keepgoing 2>/dev/null || : - -%delete_la - -find %{buildroot}%{_libdir}/gimp/%{apiversion}/* -type d | sed "s@^%{buildroot}@%%dir @g" >> gimp-plugin-files -find %{buildroot}%{_libdir}/gimp/%{apiversion} -type f | sed "s@^%{buildroot}@@g" | grep -v '\.a$' > gimp-plugin-files - -grep "\.py$" gimp-plugin-files > gimp-plugin-files-py -for file in $(cat gimp-plugin-files-py); do - for newfile in ${file}c ${file}o; do - grep -F -q -x "$newfile" gimp-plugin-files || echo "$newfile" - done -done >> gimp-plugin-files - -%py_byte_compile %{__python2} %{buildroot}%{_libdir}/gimp/%{apiversion} - -%find_lang gimp%{textversion} -%find_lang gimp%{textversion}-libgimp -%find_lang gimp%{textversion}-tips -%find_lang gimp%{textversion}-python -%find_lang gimp%{textversion}-std-plug-ins -%find_lang gimp%{textversion}-script-fu - -cat gimp%{textversion}.lang \ - gimp%{textversion}-std-plug-ins.lang \ - gimp%{textversion}-script-fu.lang \ - gimp%{textversion}-libgimp.lang \ - gimp%{textversion}-tips.lang \ - gimp%{textversion}-python.lang > gimp-all.lang - -cat gimp-plugin-files gimp-all.lang > gimp.files - -ln -snf gimp-%{allversion} %{buildroot}%{_bindir}/gimp -ln -snf gimp-%{allversion}.1 %{buildroot}%{_mandir}/man1/gimp.1 -ln -snf gimp-console-%{allversion} %{buildroot}/%{_bindir}/gimp-console -ln -snf gimptool-%{apiversion} %{buildroot}%{_bindir}/gimptool -ln -snf gimptool-%{apiversion}.1 %{buildroot}%{_mandir}/man1/gimptool.1 -ln -snf gimprc-%{allversion}.5 %{buildroot}/%{_mandir}/man5/gimprc.5 -ln -snf gimp-console-%{allversion}.1 %{buildroot}/%{_mandir}/man1/gimp-console.1 - -grep -E -rl '^#!\s*%{_bindir}/env\s+python' --include=\*.py "%{buildroot}" | - while read file; do - sed -r '1s,^#!\s*%{_bindir}/env\s+python,#!%{__python},' -i "$file" - done - -%check - -make check %{?_smp_mflags} - -%ldconfig_scriptlets libs - -%files -f gimp.files -%license COPYING -%doc AUTHORS README -%doc docs/*.xcf* +rm %{buildroot}%{_libdir}/gimp/2.99/*/*.*a +touch gimp_all_parts.lang +for lang_part in gimp30 gimp30-libgimp gimp30-python gimp30-script-fu gimp30-std-plug-ins ; do +%find_lang ${lang_part} %{?no_lang_C} ${lang_part}.lang +cat ${lang_part}.lang >> gimp_all_parts.lang +done +echo "%%defattr(-,root,root)" >plugins.list +echo "%%defattr(-,root,root)" >plugins-python.list +for PLUGIN in %{buildroot}%{_libdir}/gimp/2.99/plug-ins/* ; do + if grep -q '^#!.*python' ${PLUGIN}/* ; then + echo "${PLUGIN#%{buildroot}}" >>plugins-python.list + else + echo "${PLUGIN#%{buildroot}}" >>plugins.list + fi +done +cat gimp_all_parts.lang >> plugins.list +find %{buildroot} -type f -name "*.la" -delete -print +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.99/python/ +%fdupes %{buildroot}%{_datadir}/gimp/2.99/ + +%post -n libgimp-3_0-0 -p /sbin/ldconfig +%postun -n libgimp-3_0-0 -p /sbin/ldconfig +%post -n libgimpui-3_0-0 -p /sbin/ldconfig +%postun -n libgimpui-3_0-0 -p /sbin/ldconfig + +%files -f plugins.list +%license COPYING LICENSE +%doc AUTHORS NEWS* README MAINTAINERS HACKING +%{_bindir}/gimp +%{_bindir}/gimp-2.* +%{_bindir}/gimp-console +%{_bindir}/gimp-console-2.* +%{_bindir}/gimp-test-clipboard-2.99 +%{_prefix}/lib/gimp-debug-tool-2.99 +%dir %{_datadir}/metainfo +%{_datadir}/metainfo/gimp-data-extras.metainfo.xml +%{_datadir}/metainfo/org.gimp.GIMP.appdata.xml +%{_datadir}/applications/gimp.desktop +%{_datadir}/icons/hicolor/*/apps/*.png +%{_datadir}/gimp/ +%{_libdir}/gimp/2.99/environ/default.env +%{_libdir}/gimp/2.99/interpreters/default.interp +%{_libdir}/gimp/2.99/modules/libcolor-selector-cmyk.so +%{_libdir}/gimp/2.99/modules/libcolor-selector-water.so +%{_libdir}/gimp/2.99/modules/libcolor-selector-wheel.so +%{_libdir}/gimp/2.99/modules/libcontroller-linux-input.so +%{_libdir}/gimp/2.99/modules/libcontroller-midi.so +%{_libdir}/gimp/2.99/modules/libdisplay-filter-aces-rrt.so +%{_libdir}/gimp/2.99/modules/libdisplay-filter-clip-warning.so +%{_libdir}/gimp/2.99/modules/libdisplay-filter-color-blind.so +%{_libdir}/gimp/2.99/modules/libdisplay-filter-gamma.so +%{_libdir}/gimp/2.99/modules/libdisplay-filter-high-contrast.so +%{_mandir}/man?/gimp.* +%{_mandir}/man?/gimp-2* +%{_mandir}/man?/gimp-console.* +%{_mandir}/man?/gimp-console-2* +%{_mandir}/man?/gimprc.* +%{_mandir}/man?/gimprc-2* +%{_mandir}/man?/gimptool-2* +%dir %{_sysconfdir}/gimp +%dir %{_sysconfdir}/gimp/2.99 +%config %{_sysconfdir}/gimp/2.99/*rc +%config %{_sysconfdir}/gimp/2.99/*css +%exclude %{_libdir}/gimp/2.99/plug-ins/file-aa + +%files plugin-aa +%{_libdir}/gimp/2.99/plug-ins/file-aa + +%files -n libgimp-3_0-0 %dir %{_datadir}/gimp -%dir %{_datadir}/gimp/2.0 +%dir %{_datadir}/gimp/2.99 %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 -%dir %{_libdir}/gimp/2.0/python - -%{_datadir}/applications/*.desktop -%{_datadir}/metainfo/*.appdata.xml -%{_datadir}/metainfo/*.metainfo.xml -%{_datadir}/gimp/2.0/* - -%dir /etc/gimp -%dir /etc/gimp/2.0 -%config(noreplace) /etc/gimp/2.0/controllerrc -%config(noreplace) /etc/gimp/2.0/gimprc -%config(noreplace) /etc/gimp/2.0/gtkrc -%config(noreplace) /etc/gimp/2.0/unitrc -%config(noreplace) /etc/gimp/2.0/sessionrc -%config(noreplace) /etc/gimp/2.0/templaterc -%config(noreplace) /etc/gimp/2.0/menurc - -/usr/bin/gimp-2.10 -/usr/bin/gimp-console-2.10 -/usr/bin/gimp -/usr/bin/gimp-console -/usr/bin/gimp-test-clipboard-2.0 -/usr/libexec/gimp-debug-tool-2.0 -/usr/share/icons/hicolor/*/apps/gimp.png - -%files libs -%{_libdir}/libgimp*so.* +%dir %{_libdir}/gimp/2.99 +%dir %{_libdir}/gimp/2.99/environ +%dir %{_libdir}/gimp/2.99/interpreters +%dir %{_libdir}/gimp/2.99/modules +%dir %{_libdir}/gimp/2.99/plug-ins +%dir %{_libdir}/gimp/2.99/extensions +%{_libdir}/libgimp-3.0.so.* +%{_libdir}/libgimpbase-3.0.so.* +%{_libdir}/libgimpcolor-3.0.so.* +%{_libdir}/libgimpconfig-3.0.so.* +%{_libdir}/libgimpmath-3.0.so.* +%{_libdir}/libgimpmodule-3.0.so.* + +%files -n libgimpui-3_0-0 +%{_libdir}/libgimpthumb-3.0.so.* +%{_libdir}/libgimpui-3.0.so.* +%{_libdir}/libgimpwidgets-3.0.so.* + +%files plugin-python3 -f plugins-python.list +%{_libdir}/gimp/2.99/environ/python.env +%{_libdir}/gimp/2.99/interpreters/pygimp.interp +%{_libdir}/girepository-1.0/Gimp-3.0.typelib +%{_libdir}/girepository-1.0/GimpUi-3.0.typelib + +%files vala +%{_datadir}/vala/vapi/gimp-3.deps +%{_datadir}/vala/vapi/gimp-3.vapi +%{_datadir}/vala/vapi/gimp-ui-3.deps +%{_datadir}/vala/vapi/gimp-ui-3.vapi %files devel -%doc HACKING README.i18n -%doc /usr/share/gtk-doc -%dir %{_libdir}/gimp -%dir %{_libdir}/gimp/2.0 -%dir %{_libdir}/gimp/2.0/modules +%doc README.i18n +%{_bindir}/gimptool-2.99 +%{_includedir}/gimp-3.0/ %{_libdir}/*.so -%{_libdir}/pkgconfig/* -/usr/share/aclocal/*.m4 -/usr/include/gimp-2.0 -/usr/lib/rpm/macros.d/macros.gimp -/usr/bin/gimptool-2.0 -/usr/bin/gimptool - -%files help -%{_mandir}/man*/* +%{_datadir}/aclocal/gimp-3.0.m4 +%{_libdir}/pkgconfig/gimp-3.0.pc +%{_libdir}/pkgconfig/gimpthumb-3.0.pc +%{_libdir}/pkgconfig/gimpui-3.0.pc +%dir %{_datadir}/gtk-doc +%{_datadir}/gtk-doc/html/* +%dir %{_datadir}/locale +%{_datadir}/locale/*/LC_MESSAGES/* +%config %{_sysconfdir}/rpm/macros.gimp +%{_datadir}/gir-1.0/Gimp-3.0.gir +%{_datadir}/gir-1.0/GimpUi-3.0.gir + +%files extension-goat-excercises +%{_libdir}/gimp/2.99/extensions/org.gimp.extension.goat-exercises %changelog +* Wed Aug 25 2021 chenchen - 2:2.99.6-1 +- update to 2.99.6 + * Sat Mar 21 2020 hexiujun - 2:2.10.6-7 - Type:NA - ID:NA diff --git a/git_info_from_dirname.patch b/git_info_from_dirname.patch new file mode 100644 index 0000000000000000000000000000000000000000..3a96d5a960afbc8c8265aece26eb27679800bf20 --- /dev/null +++ b/git_info_from_dirname.patch @@ -0,0 +1,25 @@ +diff --git a/Makefile.am b/Makefile.am +index 5321a0c7d5..e6b16a66e6 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -142,16 +142,10 @@ CLEANFILES = $(generated_sources) + # already exists because then we are probably working with a tarball + # in which case the git-version.h we ship is correct. + git-version.h: update-git-version-header +- @if test -e "$(top_srcdir)/.git"; then \ +- git_version="`git --git-dir=$(top_srcdir)/.git describe --always`"; \ +- git_version_abbrev="`git --git-dir=$(top_srcdir)/.git rev-parse --short HEAD`"; \ +- git_last_commit_year="`git --git-dir=$(top_srcdir)/.git log -n1 --reverse --pretty=%ci | cut -b 1-4`"; \ +- elif test ! -f "$@"; then \ +- git_version="Unknown, shouldn't happen"; \ +- git_version_abbrev="$$git_version"; \ +- git_last_commit_timestamp=-1; \ +- git_last_commit_year="`date -u '+%Y'`"; \ +- fi; \ ++ git_version="`basename \`pwd\`` (OBS AppImage)"; \ ++ git_version_abbrev="`basename \`pwd\` | sed 's,gimp-\(.*\)+git\(.*\)\.\(.*\),\3,g'`"; \ ++ git_last_commit_year="`date -u '+%Y'`"; \ ++ git_last_commit_timestamp=-1; \ + if test -n "$$git_version"; then \ + echo "#ifndef __GIT_VERSION_H__" > "$@.tmp"; \ + echo "#define __GIT_VERSION_H__" >> "$@.tmp"; \ diff --git a/macros.gimp b/macros.gimp new file mode 100644 index 0000000000000000000000000000000000000000..75ebf09e56a76d496d53f904fdf561a677f573bd --- /dev/null +++ b/macros.gimp @@ -0,0 +1,5 @@ +# +# Interface versions exposed by GIMP: +# +%gimp_api_version @GIMP_APIVER@ +%gimp_abi_version @GIMP_ABIVER@ \ No newline at end of file