diff --git a/gtk2.spec b/gtk2.spec index ba02357b551be40149a73324a17de3ab4ce75368..b085f2404f2e6a26e379f252961f221c9cdbfb15 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -3,15 +3,18 @@ %define gtk_bin_version 2.10.0 #Basic Information -Name: gtk2 -Version: 2.24.32 -Release: 5 -Summary: GTK+ graphical user interface library -License: LGPLv2+ -URL: http://www.gtk.org -Source: http://download.gnome.org/sources/gtk+/2.24/gtk+-%{version}.tar.xz -Source2: im-cedilla.conf - +Name: gtk2 +Version: 2.24.32 +Release: 6 +Summary: GTK+ graphical user interface library +License: LGPLv2+ +URL: http://www.gtk.org +Source: http://download.gnome.org/sources/gtk+/2.24/gtk+-%{version}.tar.xz +Source2: im-cedilla.conf + +# Use Python 3 in gtk-builder-convert +# Accepted upstream: https://gitlab.gnome.org/GNOME/gtk/merge_requests/1080 +Patch1: python3.patch # https://bugzilla.gnome.org/show_bug.cgi?id=583273 Patch2: icon-padding.patch # https://bugzilla.gnome.org/show_bug.cgi?id=599618 @@ -25,7 +28,7 @@ BuildRequires: pkgconfig(pango) >= 1.20 pkgconfig(gdk-pixbuf-2.0) >= 2.21.0 BuildRequires: pkgconfig(cairo) >= 1.6 pkgconfig(gobject-introspection-1.0) >= 0.9.3 BuildRequires: pkgconfig(xi) pkgconfig(xrandr) pkgconfig(xrender) pkgconfig(xcursor) BuildRequires: pkgconfig(xinerama) pkgconfig(xcomposite) pkgconfig(xdamage) -BuildRequires: gettext cups-devel libxslt +BuildRequires: gettext cups-devel libxslt python3-devel BuildRequires: gtk-doc automake autoconf libtool pkgconfig git Requires: hicolor-icon-theme gtk-update-icon-cache Requires: gdk-pixbuf2-modules glib2 >= 2.28.0 atk >= 1.29.2 pango >= 1.20 @@ -107,10 +110,10 @@ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool make %install -make install DESTDIR=$RPM_BUILD_ROOT \ +make install DESTDIR=%{buildroot} \ RUN_QUERY_IMMODULES_TEST=false -echo ".so man1/gtk-query-immodules-2.0.1" > $RPM_BUILD_ROOT%{_mandir}/man1/gtk-query-immodules-2.0-%{__isa_bits}.1 +echo ".so man1/gtk-query-immodules-2.0.1" > %{buildroot}%{_mandir}/man1/gtk-query-immodules-2.0-%{__isa_bits}.1 %find_lang gtk20 %find_lang gtk20-properties @@ -123,24 +126,27 @@ for dir in $(find examples/* -type d); do cp -aR $dir tmpdocs/examples done -mv $RPM_BUILD_ROOT%{_bindir}/gtk-query-immodules-2.0 $RPM_BUILD_ROOT%{_bindir}/gtk-query-immodules-2.0-64 +mv %{buildroot}%{_bindir}/gtk-query-immodules-2.0 %{buildroot}%{_bindir}/gtk-query-immodules-2.0-64 # Install input method frameworks conf -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d -cp %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d +mkdir -p %{buildroot}%{_sysconfdir}/X11/xinit/xinput.d +cp %{SOURCE2} %{buildroot}%{_sysconfdir}/X11/xinit/xinput.d + +# Use python3 shebang instead of ambiguous python +pathfix.py -pn -i %{__python3} %{buildroot}%{_bindir}/gtk-builder-convert # rm unpackaged files -rm $RPM_BUILD_ROOT%{_libdir}/*.la -rm $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/*/*.la -rm $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{gtk_bin_version}/*/*.la -rm $RPM_BUILD_ROOT%{_bindir}/gtk-update-icon-cache -rm $RPM_BUILD_ROOT%{_mandir}/man1/gtk-update-icon-cache.1* +rm %{buildroot}%{_libdir}/*.la +rm %{buildroot}%{_libdir}/gtk-2.0/*/*.la +rm %{buildroot}%{_libdir}/gtk-2.0/%{gtk_bin_version}/*/*.la +rm %{buildroot}%{_bindir}/gtk-update-icon-cache +rm %{buildroot}%{_mandir}/man1/gtk-update-icon-cache.1* -touch $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{gtk_bin_version}/immodules.cache +touch %{buildroot}%{_libdir}/gtk-2.0/%{gtk_bin_version}/immodules.cache -mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/modules -mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/immodules -mkdir -p $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{gtk_bin_version}/filesystems +mkdir -p %{buildroot}%{_libdir}/gtk-2.0/modules +mkdir -p %{buildroot}%{_libdir}/gtk-2.0/immodules +mkdir -p %{buildroot}%{_libdir}/gtk-2.0/%{gtk_bin_version}/filesystems %transfiletriggerin -- %{_libdir}/gtk-2.0/immodules/ %{_libdir}/gtk-2.0/%{gtk_bin_version}/immodules/ gtk-query-immodules-2.0-64 --update-cache @@ -153,9 +159,7 @@ gtk-query-immodules-2.0-64 --update-cache %preun -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig +%ldconfig_scriptlets #Files list %files -f gtk20.lang @@ -218,6 +222,12 @@ gtk-query-immodules-2.0-64 --update-cache %{_mandir}/man1/gtk-builder-convert.1.gz %changelog +* Mon Feb 24 2020 hexiujun - 2.24.32-6 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:Port gtk2-devel's gtk-builder-convert to Python 3 + * Thu Jan 9 2020 openEuler Buildteam - 2.24.32-5 - Type:enhancement - ID:NA diff --git a/python3.patch b/python3.patch new file mode 100644 index 0000000000000000000000000000000000000000..e4733d8448f41207b2de7558ff230480a6eecf01 --- /dev/null +++ b/python3.patch @@ -0,0 +1,169 @@ +Uupstream pull request: https://gitlab.gnome.org/GNOME/gtk/merge_requests/1080 + +From 3ff8f70b9686205f0618d7a479fd42a457b90165 Mon Sep 17 00:00:00 2001 +From: Petr Viktorin +Date: Tue, 3 Sep 2019 13:54:49 +0200 +Subject: [PATCH 1/3] Make gtk-builder-convert compatible with Python 3 + +- Convert tabs to spaces +- Use print as a function, even on Python 2 +- Output a binary file, or decode for stdout +--- + gtk/gtk-builder-convert | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +diff --git a/gtk/gtk-builder-convert b/gtk/gtk-builder-convert +index ea737de195..41f7a8c941 100755 +--- a/gtk/gtk-builder-convert ++++ b/gtk/gtk-builder-convert +@@ -36,6 +36,7 @@ Examples: + + Report bugs to http://bugzilla.gnome.org/.""" + ++from __future__ import print_function + import getopt + import os + import sys +@@ -259,7 +260,7 @@ class GtkBuilderConverter(object): + for node in objects: + self._convert(node.getAttribute("class"), node) + if self._get_object(node.getAttribute('id')) is not None: +- print "WARNING: duplicate id \"" + node.getAttribute('id') + "\"" ++ print("WARNING: duplicate id \"" + node.getAttribute('id') + "\"") + self.objects[node.getAttribute('id')] = node + + # Convert Gazpachos UI tag +@@ -277,8 +278,7 @@ class GtkBuilderConverter(object): + # reverse=True): + # when we can depend on python 2.4 or higher + root_objects = self.root_objects[:] +- root_objects.sort(lambda a, b: cmp(b.getAttribute('id'), +- a.getAttribute('id'))) ++ root_objects.sort(key=lambda a: a.getAttribute('id'), reverse=True) + for obj in root_objects: + self._interface.childNodes.insert(0, obj) + +@@ -461,8 +461,8 @@ class GtkBuilderConverter(object): + if signal_name in ['activate', 'toggled']: + action.appendChild(signal) + else: +- print 'Unhandled signal %s::%s' % (node.getAttribute('class'), +- signal_name) ++ print('Unhandled signal %s::%s' % (node.getAttribute('class'), ++ signal_name)) + + if not uimgr.childNodes: + child = self._dom.createElement('child') +@@ -481,8 +481,8 @@ class GtkBuilderConverter(object): + for accelerator in get_accelerator_nodes(node): + signal_name = accelerator.getAttribute('signal') + if signal_name != 'activate': +- print 'Unhandled accelerator signal for %s::%s' % ( +- node.getAttribute('class'), signal_name) ++ print('Unhandled accelerator signal for %s::%s' % ( ++ node.getAttribute('class'), signal_name)) + continue + accelerator.removeAttribute('signal') + child.appendChild(accelerator) +@@ -747,7 +747,7 @@ def _indent(output): + return s.stdout.read() + + def usage(): +- print __doc__ ++ print(__doc__) + + def main(args): + try: +@@ -788,10 +788,13 @@ def main(args): + + xml = _indent(conv.to_xml()) + if output_filename == "-": +- print xml ++ if isinstance(xml, str): ++ print(xml) ++ else: ++ print(xml.decode(sys.stdout.encoding)) + else: +- open(output_filename, 'w').write(xml) +- print "Wrote", output_filename ++ open(output_filename, 'wb').write(xml) ++ print("Wrote", output_filename) + + return 0 + +-- +2.22.0 + + +From 4f8efe3ae09ee69657b83399a118b5252f25d830 Mon Sep 17 00:00:00 2001 +From: Petr Viktorin +Date: Tue, 3 Sep 2019 14:53:05 +0200 +Subject: [PATCH 2/3] gtk-builder-convert: Remove compat code for Python 2.3 + and below + +--- + gtk/gtk-builder-convert | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/gtk/gtk-builder-convert b/gtk/gtk-builder-convert +index 41f7a8c941..a16f83b217 100755 +--- a/gtk/gtk-builder-convert ++++ b/gtk/gtk-builder-convert +@@ -48,12 +48,7 @@ DIALOGS = ['GtkDialog', + 'GtkMessageDialog'] + WINDOWS = ['GtkWindow'] + DIALOGS + +-# The subprocess is only available in Python 2.4+ +-try: +- import subprocess +- subprocess # pyflakes +-except ImportError: +- subprocess = None ++import subprocess + + def get_child_nodes(node): + assert node.tagName == 'object' +@@ -271,12 +266,6 @@ class GtkBuilderConverter(object): + for node in self._dom.getElementsByTagName("accessibility"): + self._convert_accessibility(node) + +- # Output the newly created root objects and sort them +- # by attribute id +- # FIXME: Use sorted(self.root_objects, +- # key=lambda n: n.getAttribute('id'), +- # reverse=True): +- # when we can depend on python 2.4 or higher + root_objects = self.root_objects[:] + root_objects.sort(key=lambda a: a.getAttribute('id'), reverse=True) + for obj in root_objects: +-- +2.22.0 + + +From b5ea5a0cf1f12be5072b9f06d1127a8977414916 Mon Sep 17 00:00:00 2001 +From: Petr Viktorin +Date: Tue, 3 Sep 2019 14:56:14 +0200 +Subject: [PATCH 3/3] gtk-builder-convert: Update bug report URL + +Also, use a newline instead of period at the end to make the +URL easy to copy +--- + gtk/gtk-builder-convert | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/gtk/gtk-builder-convert b/gtk/gtk-builder-convert +index a16f83b217..b1faba822e 100755 +--- a/gtk/gtk-builder-convert ++++ b/gtk/gtk-builder-convert +@@ -34,7 +34,8 @@ When OUTPUT is -, write to standard output. + Examples: + gtk-builder-convert preference.glade preferences.ui + +-Report bugs to http://bugzilla.gnome.org/.""" ++Report bugs to https://gitlab.gnome.org/GNOME/gtk/issues/new ++""" + + from __future__ import print_function + import getopt +-- +2.22.0