diff --git a/SOURCES/0001-Revert-Correctly-decode-Adobe-CMYK-JPEGs-in-PDF-expo.patch b/SOURCES/0001-Revert-Correctly-decode-Adobe-CMYK-JPEGs-in-PDF-expo.patch new file mode 100644 index 0000000..fb35d7d --- /dev/null +++ b/SOURCES/0001-Revert-Correctly-decode-Adobe-CMYK-JPEGs-in-PDF-expo.patch @@ -0,0 +1,126 @@ +From bf597b89288b6271f56031d5a20bfaf59f146d4c Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Tue, 16 Oct 2018 09:13:23 -0700 +Subject: [PATCH] Revert "Correctly decode Adobe CMYK JPEGs in PDF export" + +From further testing and investigation it appears that many PDF viewers +already have a workaround to invert Adobe CMYK JPEGs, so our generated +PDFs display incorrectly with those viewers due to double-inversion. + +Further investigation will be needed to find a better solution that +doesn't cause regression for some PDF viewers; perhaps PDF viewers that +lack this inversion workaround should be changed to include it. For now +we'll drop the patch to avoid shipping the regression in 1.16.0. + +This reverts commit b207a932a2d3740984319dffd58a0791580597cd. + +Reference: https://bugs.freedesktop.org/show_bug.cgi?id=97612 +Fixes: https://gitlab.freedesktop.org/cairo/cairo/issues/156 +--- + src/cairo-image-info-private.h | 1 - + src/cairo-image-info.c | 21 --------------------- + src/cairo-pdf-surface.c | 2 -- + 3 files changed, 24 deletions(-) + +diff --git a/src/cairo-image-info-private.h b/src/cairo-image-info-private.h +index 99cbbcc02..e64928e40 100644 +--- a/src/cairo-image-info-private.h ++++ b/src/cairo-image-info-private.h +@@ -43,7 +43,6 @@ typedef struct _cairo_image_info { + int height; + int num_components; + int bits_per_component; +- int is_adobe_jpeg; + } cairo_image_info_t; + + cairo_private cairo_int_status_t +diff --git a/src/cairo-image-info.c b/src/cairo-image-info.c +index 3b4cf6edb..d147e3723 100644 +--- a/src/cairo-image-info.c ++++ b/src/cairo-image-info.c +@@ -67,9 +67,6 @@ + #define SOF14 0xce + #define SOF15 0xcf + +-/* Start of tag markers */ +-#define APP14 0xee /* Adobe */ +- + static const unsigned char * + _jpeg_skip_segment (const unsigned char *p) + { +@@ -97,8 +94,6 @@ _cairo_image_info_get_jpeg_info (cairo_image_info_t *info, + { + const unsigned char *p = data; + +- info->is_adobe_jpeg = FALSE; +- + while (p + 1 < data + length) { + if (*p != 0xff) + return CAIRO_INT_STATUS_UNSUPPORTED; +@@ -136,18 +131,6 @@ _cairo_image_info_get_jpeg_info (cairo_image_info_t *info, + _jpeg_extract_info (info, p); + return CAIRO_STATUS_SUCCESS; + +- case APP14: +- /* "Adobe" tags segment indicates inverted CMYK (in +- * CMYK images). */ +- if (p + 12 > data + length) +- return CAIRO_INT_STATUS_UNSUPPORTED; +- +- info->is_adobe_jpeg = +- (0 == strncmp((const char *)(p + 3), "Adobe", 5)); +- +- p = _jpeg_skip_segment(p); +- break; +- + default: + if (*p >= RST_begin && *p <= RST_end) { + p++; +@@ -223,7 +206,6 @@ _jpx_extract_info (const unsigned char *p, cairo_image_info_t *info) + info->width = get_unaligned_be32 (p + 4); + info->num_components = (p[8] << 8) + p[9]; + info->bits_per_component = p[10]; +- info->is_adobe_jpeg = FALSE; + } + + cairo_int_status_t +@@ -301,8 +283,6 @@ _cairo_image_info_get_png_info (cairo_image_info_t *info, + p += 4; + info->height = get_unaligned_be32 (p); + +- info->is_adobe_jpeg = FALSE; +- + return CAIRO_STATUS_SUCCESS; + } + +@@ -415,7 +395,6 @@ _jbig2_extract_info (cairo_image_info_t *info, const unsigned char *p) + info->height = get_unaligned_be32 (p + 4); + info->num_components = 1; + info->bits_per_component = 1; +- info->is_adobe_jpeg = FALSE; + } + + cairo_int_status_t +diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c +index ab6781340..7eb61aa1e 100644 +--- a/src/cairo-pdf-surface.c ++++ b/src/cairo-pdf-surface.c +@@ -3169,7 +3169,6 @@ _cairo_pdf_surface_emit_jpeg_image (cairo_pdf_surface_t *surface, + " /Height %d\n" + " /ColorSpace %s\n" + " /Interpolate %s\n" +- "%s" + " /BitsPerComponent %d\n" + "%s" + " /Filter /DCTDecode\n", +@@ -3177,7 +3176,6 @@ _cairo_pdf_surface_emit_jpeg_image (cairo_pdf_surface_t *surface, + info.height, + colorspace, + surface_entry->interpolate ? "true" : "false", +- info.is_adobe_jpeg && info.num_components == 4 ? " /Decode [ 1 0 1 0 1 0 1 0 ]\n" : "", + info.bits_per_component, + smask_buf); + } +-- +2.20.1 + diff --git a/SOURCES/pygobject-3.22.0-remove-Werror.patch b/SOURCES/pygobject-3.22.0-remove-Werror.patch new file mode 100644 index 0000000..4b77c68 --- /dev/null +++ b/SOURCES/pygobject-3.22.0-remove-Werror.patch @@ -0,0 +1,36 @@ +diff -up ./configure.upstream_werror ./configure +--- ./configure.upstream_werror 2016-09-19 09:23:28.000000000 -0400 ++++ ./configure 2019-03-08 20:35:22.017458006 -0500 +@@ -13672,7 +13672,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PySignal_SetWakeupFd in Python.h" >&5 + $as_echo_n "checking for PySignal_SetWakeupFd in Python.h... " >&6; } + old_CPPFLAGS=$CPPFLAGS +-CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES" ++CPPFLAGS="-Wall $PYTHON_INCLUDES" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +@@ -14856,14 +14856,6 @@ fi + " + + base_error_flags=" \ +- -Werror=missing-prototypes \ +- -Werror=implicit-function-declaration \ +- -Werror=pointer-arith \ +- -Werror=init-self \ +- -Werror=format-security \ +- -Werror=format=2 \ +- -Werror=missing-include-dirs \ +- -Werror=return-type \ + " + + additional_flags="" +@@ -14884,7 +14876,7 @@ fi + esac + + if test "$enable_compile_warnings" = "error" ; then +- warning_flags="$warning_flags -Werror" ++ warning_flags="$warning_flags " + fi + + for option in $warning_flags; do diff --git a/SPECS/pygobject3.spec b/SPECS/pygobject3.spec index 4c31725..77970b7 100644 --- a/SPECS/pygobject3.spec +++ b/SPECS/pygobject3.spec @@ -2,11 +2,11 @@ %define glib2_version 2.38.0 %define gobject_introspection_version 1.46.0 %define python2_version 2.7 - -%global with_python3 1 +%global with_python3 1 %define python3_version 3.6 +%global with_check 0 -%global with_check 0 +%global _smp_mflags -j1 Name: pygobject3 Version: 3.22.0 diff --git a/SPECS/python3-gobject3.spec b/SPECS/python3-gobject3.spec new file mode 100644 index 0000000..0ddb147 --- /dev/null +++ b/SPECS/python3-gobject3.spec @@ -0,0 +1,104 @@ +# Last updated for version 3.18.0 +%global glib2_version 2.38.0 +%global gobject_introspection_version 1.46.0 +%global confopts --disable-silent-rules --srcdir=.. + +Name: python3-gobject3 +Version: 3.22.0 +Release: 6%{?dist} +Summary: Python %{python3_version} bindings for GObject Introspection +License: LGPLv2+ and MIT +URL: https://wiki.gnome.org/Projects/PyGObject +Source0: https://download.gnome.org/sources/pygobject/3.22/pygobject-%{version}.tar.xz +# https://bugzilla.redhat.com/1247996 +# which reverts https://bugzilla.gnome.org/709183 +Patch1: pygobject-3.22.0-allow-static-module-import.patch +Patch2: pygobject-3.22.0-remove-Werror.patch +BuildRequires: glib2-devel >= %{glib2_version} +BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version} +BuildRequires: python3-devel +BuildRequires: python3-cairo-devel +BuildRequires: cairo-gobject-devel + + +%description +The %{name} package provides a convenient wrapper for the GObject +library and and other libraries that are compatible with GObject Introspection, +for use in Python %{python3_version} programs. + + +%package -n python3-gobject +Summary: Python 3 bindings for GObject Introspection +Requires: python3-gobject-base%{?_isa} = %{version}-%{release} +Requires: python3-cairo%{?_isa} +%description -n python3-gobject +The %{name} package provides a convenient wrapper for the GObject +library and and other libraries that are compatible with GObject Introspection, +for use in Python %{python3_version} programs. + + +%package -n python3-gobject-base +Summary: Python %{python3_version} bindings for GObject Introspection base package +Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} +%description -n python%{python3_pkgversion}-gobject-base +This package provides the non-cairo specific bits of the GObject Introspection +library. + + +%package -n python3-gobject-devel +Summary: Development files for embedding Python %{python3_version} GObject introspection support +Requires: python%{python3_pkgversion}-gobject%{?_isa} = %{version}-%{release} +Requires: gobject-introspection-devel%{?_isa} +%description -n python%{python3_pkgversion}-gobject-devel +This package contains files required to embed Python %{python3_version} PyGObject. + + +%prep +%autosetup -n pygobject-%{version} -p 1 +%{_bindir}/find . -name '*.py' | %{_bindir}/xargs %{__sed} -i '1s|^#!python|#!%{__python3}|' + + +%build +%{__mkdir} -p python3 +pushd python3 +export PYTHON=%{__python3} +%{__ln_s} ../configure configure +%configure %{confopts} +make %{?_smp_mflags} V=1 +popd + + +%install +export PYTHON=%{__python3} +%make_install -C python3 +%{_bindir}/find %{buildroot} -name '*.la' -delete +# Don't include makefiles in the installed docs, in order to avoid creating +# multilib conflicts +%{__rm} -fr _docs +%{__mkdir} _docs +%{__cp} -a examples _docs +%{__rm} _docs/examples/Makefile* + + +%files -n python3-gobject +%{python3_sitearch}/gi/_gi_cairo*.so + + +%files -n python3-gobject-base +%license COPYING +%doc AUTHORS NEWS README +%dir %{python3_sitearch}/gi +%{python3_sitearch}/gi/* +%exclude %{python3_sitearch}/gi/_gi_cairo*.so +%{python3_sitearch}/pygobject-*.egg-info +%{python3_sitearch}/pygtkcompat/ + + +%files -n python3-gobject-devel +%doc _docs/* +%dir %{_includedir}/pygobject-3.0/ +%{_includedir}/pygobject-3.0/pygobject.h +%{_libdir}/pkgconfig/pygobject-3.0.pc + + +%changelog