Source: gtk+2.0
Version: 2.24.5-2
Tags: patch
User: [email protected]
Usertags: ubuntu-patch oneiric origin-ubuntu

Hi folks,

Please find attached a patch to gtk+2.0 to transition it to use of the
multiarch library paths as described at
<http://wiki.debian.org/Multiarch/Implementation>.  This patch has been
applied and is being used successfully in Ubuntu oneiric, and should be safe
to apply in Debian now that multiarch has been bootstrapped there.

By way of explanation, here is the changelog entry from the Ubuntu upload:

  * Build for multiarch.
  * Bump gobject-introspection build-dependency for multiarch tuple support.
  * debian/patches/098_multiarch_module_path.patch: Fall back to the
    hard-coded pre-multiarch module directory.
  * Build-depend on debhelper 8.1.3 and add Pre-Depends: ${misc:Pre-Depends}
    for multiarch-support.
  * Make the -dev packages depend on a multiarch-capable version of
    pkg-config.

Cheers,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
[email protected]                                     [email protected]
diff -Nru gtk+2.0-2.24.5/debian/control gtk+2.0-2.24.5/debian/control
--- gtk+2.0-2.24.5/debian/control	2011-07-14 11:34:49.000000000 +0000
+++ gtk+2.0-2.24.5/debian/control	2011-06-30 14:05:41.000000000 +0000
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Sebastien Bacher <[email protected]>
 Uploaders: Debian GNOME Maintainers <[email protected]>, Emilio Pozuelo Monfort <[email protected]>, Josselin Mouette <[email protected]>, Michael Biebl <[email protected]>
-Build-Depends: debhelper (>= 7.0.50~),
+Build-Depends: debhelper (>= 8.1.3),
                gettext,
                gtk-doc-tools (>= 1.11),
                pkg-config,
@@ -28,10 +28,10 @@
                libxfixes-dev (>= 1:3.0.0-3),
                libcairo2-dev (>= 1.6.4-6.1),
                gnome-pkg-tools (>= 0.11),
-               dpkg-dev (>= 1.13.19),
+               dpkg-dev (>= 1.16.0),
                x11proto-xext-dev,
                libcups2-dev (>= 1.2),
-               gobject-introspection (>= 0.9.12-4~),
+               gobject-introspection (>= 0.10.8-2),
                libgirepository1.0-dev (>= 0.9.3),
                gir1.2-glib-2.0,
                gir1.2-freedesktop,
@@ -62,6 +62,8 @@
             libgtk2.0-bin
 Suggests: librsvg2-common,
           gvfs
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Description: GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -95,6 +97,7 @@
 Architecture: all
 Depends: ${misc:Depends}
 Recommends: libgtk2.0-0
+Multi-Arch: foreign
 Description: common files for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -109,6 +112,7 @@
 Depends: ${misc:Depends},
          libgtk2.0-0 (>= ${source:Version}),
          libgtk2.0-common
+Multi-Arch: foreign
 Description: programs for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -139,7 +143,7 @@
          libxfixes-dev (>= 1:3.0.0-3),
          libxcomposite-dev (>= 1:0.2.0-3),
          libxdamage-dev (>= 1:1.0.1-3),
-         pkg-config,
+         pkg-config (>= 0.26-1),
          libxml2-utils
 Recommends: python (>= 2.4),
             debhelper
@@ -161,6 +165,7 @@
 Depends: libgtk2.0-0 (= ${binary:Version}),
          libgtk2.0-common,
          ${misc:Depends}
+Multi-Arch: same
 Description: GTK+ libraries and debugging symbols
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -179,6 +184,7 @@
 Recommends: libglib2.0-doc,
             libatk1.0-doc,
             libpango1.0-doc
+Multi-Arch: foreign
 Description: documentation for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -242,6 +248,8 @@
          ${shlibs:Depends},
          libgtk2.0-0 (= ${binary:Version})
 Replaces: libgail17, libgtk2.0-0 (<< 2.14.5)
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Description: GNOME Accessibility Implementation Library -- shared libraries
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
@@ -255,6 +263,7 @@
 Depends: ${misc:Depends},
          ${shlibs:Depends},
          libgail18 (= ${binary:Version})
+Multi-Arch: foreign
 Description: GNOME Accessibility Implementation Library -- common modules
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
@@ -270,7 +279,7 @@
          libgail18 (= ${binary:Version}),
          libgail-common (= ${binary:Version}),
          libgtk2.0-dev (= ${binary:Version}),
-         pkg-config,
+         pkg-config (>= 0.26-1),
          libatk1.0-dev (>= 1.13.0)
 Suggests: libgail-doc
 Replaces: libgtk2.0-dev (<< 2.14.5)
@@ -289,6 +298,7 @@
 Depends: ${misc:Depends}, libgail18 (= ${binary:Version})
 Recommends: libgtk2.0-0-dbg
 Replaces: libgtk2.0-0-dbg (<< 2.14.5)
+Multi-Arch: same
 Description: Gail libraries and debugging symbols
  Gail is the "GNOME Accessibility Implementation Library".
  .
@@ -301,6 +311,7 @@
 Section: doc
 Depends: ${misc:Depends}, lynx | www-browser
 Replaces: libgtk2.0-doc (<< 2.14.5)
+Multi-Arch: foreign
 Description: documentation files of the Gail library
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
diff -Nru gtk+2.0-2.24.5/debian/control.in gtk+2.0-2.24.5/debian/control.in
--- gtk+2.0-2.24.5/debian/control.in	2011-07-14 11:34:48.000000000 +0000
+++ gtk+2.0-2.24.5/debian/control.in	2011-06-30 14:05:41.000000000 +0000
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Sebastien Bacher <[email protected]>
 Uploaders: @GNOME_TEAM@
-Build-Depends: debhelper (>= 7.0.50~),
+Build-Depends: debhelper (>= 8.1.3),
                gettext,
                gtk-doc-tools (>= 1.11),
                pkg-config,
@@ -28,10 +28,10 @@
                libxfixes-dev (>= 1:3.0.0-3),
                libcairo2-dev (>= 1.6.4-6.1),
                gnome-pkg-tools (>= 0.11),
-               dpkg-dev (>= 1.13.19),
+               dpkg-dev (>= 1.16.0),
                x11proto-xext-dev,
                libcups2-dev (>= 1.2),
-               gobject-introspection (>= 0.9.12-4~),
+               gobject-introspection (>= 0.10.8-2),
                libgirepository1.0-dev (>= 0.9.3),
                gir1.2-glib-2.0,
                gir1.2-freedesktop,
@@ -62,6 +62,8 @@
             @BIN_PKG@
 Suggests: librsvg2-common,
           gvfs
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Description: GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -95,6 +97,7 @@
 Architecture: all
 Depends: ${misc:Depends}
 Recommends: @SHARED_PKG@
+Multi-Arch: foreign
 Description: common files for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -109,6 +112,7 @@
 Depends: ${misc:Depends},
          @SHARED_PKG@ (>= ${source:Version}),
          @COMMON_PKG@
+Multi-Arch: foreign
 Description: programs for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -139,7 +143,7 @@
          libxfixes-dev (>= 1:3.0.0-3),
          libxcomposite-dev (>= 1:0.2.0-3),
          libxdamage-dev (>= 1:1.0.1-3),
-         pkg-config,
+         pkg-config (>= 0.26-1),
          libxml2-utils
 Recommends: python (>= 2.4),
             debhelper
@@ -161,6 +165,7 @@
 Depends: @SHARED_PKG@ (= ${binary:Version}),
          @COMMON_PKG@,
          ${misc:Depends}
+Multi-Arch: same
 Description: GTK+ libraries and debugging symbols
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -179,6 +184,7 @@
 Recommends: libglib2.0-doc,
             libatk1.0-doc,
             libpango1.0-doc
+Multi-Arch: foreign
 Description: documentation for the GTK+ graphical user interface library
  GTK+ is a multi-platform toolkit for creating graphical user
  interfaces. Offering a complete set of widgets, GTK+ is suitable
@@ -242,6 +248,8 @@
          ${shlibs:Depends},
          @SHARED_PKG@ (= ${binary:Version})
 Replaces: libgail17, libgtk2.0-0 (<< 2.14.5)
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Description: GNOME Accessibility Implementation Library -- shared libraries
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
@@ -255,6 +263,7 @@
 Depends: ${misc:Depends},
          ${shlibs:Depends},
          libgail18 (= ${binary:Version})
+Multi-Arch: foreign
 Description: GNOME Accessibility Implementation Library -- common modules
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
@@ -270,7 +279,7 @@
          libgail18 (= ${binary:Version}),
          libgail-common (= ${binary:Version}),
          @DEV_PKG@ (= ${binary:Version}),
-         pkg-config,
+         pkg-config (>= 0.26-1),
          libatk1.0-dev (>= 1.13.0)
 Suggests: libgail-doc
 Replaces: libgtk2.0-dev (<< 2.14.5)
@@ -289,6 +298,7 @@
 Depends: ${misc:Depends}, libgail18 (= ${binary:Version})
 Recommends: @DEBUG_PKG@
 Replaces: libgtk2.0-0-dbg (<< 2.14.5)
+Multi-Arch: same
 Description: Gail libraries and debugging symbols
  Gail is the "GNOME Accessibility Implementation Library".
  .
@@ -301,6 +311,7 @@
 Section: doc
 Depends: ${misc:Depends}, lynx | www-browser
 Replaces: libgtk2.0-doc (<< 2.14.5)
+Multi-Arch: foreign
 Description: documentation files of the Gail library
  Gail implements ATK interfaces for GTK+ widgets which are dynamically
  loadable at runtime by a GTK+ application. Once loaded, those parts of
diff -Nru gtk+2.0-2.24.5/debian/gir1.2-gtk-2.0.install.in gtk+2.0-2.24.5/debian/gir1.2-gtk-2.0.install.in
--- gtk+2.0-2.24.5/debian/gir1.2-gtk-2.0.install.in	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/gir1.2-gtk-2.0.install.in	2011-06-30 14:05:38.000000000 +0000
@@ -1 +1 @@
-debian/install/shared/usr/lib/girepository-1.0/ usr/lib/
+debian/install/shared/@LIBDIR@/girepository-1.0/ usr/lib/
diff -Nru gtk+2.0-2.24.5/debian/libgail-dev.install gtk+2.0-2.24.5/debian/libgail-dev.install
--- gtk+2.0-2.24.5/debian/libgail-dev.install	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgail-dev.install	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-debian/install/shared/usr/include/gail* /usr/include
-debian/install/shared/usr/lib/libgail*.so /usr/lib
-debian/install/shared/usr/lib/libgail*.la /usr/lib
-debian/install/static/usr/lib/libgail*.a /usr/lib
-debian/install/shared/usr/lib/pkgconfig/gail*.pc /usr/lib/pkgconfig
diff -Nru gtk+2.0-2.24.5/debian/libgail-dev.install.in gtk+2.0-2.24.5/debian/libgail-dev.install.in
--- gtk+2.0-2.24.5/debian/libgail-dev.install.in	1970-01-01 00:00:00.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgail-dev.install.in	2011-06-30 14:05:38.000000000 +0000
@@ -0,0 +1,4 @@
+debian/install/shared/usr/include/gail* /usr/include
+debian/install/shared/@LIBDIR@/libgail*.so @LIBDIR@
+debian/install/static/@LIBDIR@/libgail*.a @LIBDIR@
+debian/install/shared/@LIBDIR@/pkgconfig/gail*.pc @LIBDIR@/pkgconfig
diff -Nru gtk+2.0-2.24.5/debian/libgail18.install gtk+2.0-2.24.5/debian/libgail18.install
--- gtk+2.0-2.24.5/debian/libgail18.install	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgail18.install	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-debian/install/shared/usr/lib/libgail*.so.* /usr/lib
diff -Nru gtk+2.0-2.24.5/debian/libgail18.install.in gtk+2.0-2.24.5/debian/libgail18.install.in
--- gtk+2.0-2.24.5/debian/libgail18.install.in	1970-01-01 00:00:00.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgail18.install.in	2011-06-30 14:05:38.000000000 +0000
@@ -0,0 +1 @@
+debian/install/shared/@LIBDIR@/libgail*.so.* @LIBDIR@
diff -Nru gtk+2.0-2.24.5/debian/libgtk2.0-0.postinst.in gtk+2.0-2.24.5/debian/libgtk2.0-0.postinst.in
--- gtk+2.0-2.24.5/debian/libgtk2.0-0.postinst.in	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgtk2.0-0.postinst.in	2011-06-30 14:05:38.000000000 +0000
@@ -7,10 +7,13 @@
             continue
         fi
         case $trigger in
-          /@MODULES_BASE_PATH@/immodules)
+          /@MODULES_BASE_PATH@/immodules|/@OLD_MODULES_BASE_PATH@/immodules)
             # This is triggered everytime an application installs a
             # GTK immodule loader
-            /@LIBDIR@/@SHARED_PKG@/gtk-query-immodules-2.0 /@MODULES_BASE_PATH@/immodules/*.so > /@MODULES_BASE_PATH@/gtk.immodules || true
+            /@LIBDIR@/@SHARED_PKG@/gtk-query-immodules-2.0 \
+                /@MODULES_BASE_PATH@/immodules/*.so \
+                /@OLD_MODULES_BASE_PATH@/immodules/*.so \
+            > /@MODULES_BASE_PATH@/gtk.immodules || true
             ;;
         esac
     done
@@ -20,7 +23,12 @@
 #DEBHELPER#
 
 # Also handle the initial installation
-if [ -d /@MODULES_BASE_PATH@/immodules ]; then
-     /@LIBDIR@/@SHARED_PKG@/gtk-query-immodules-2.0 /@MODULES_BASE_PATH@/immodules/*.so > /@MODULES_BASE_PATH@/gtk.immodules || true
+if [ -d /@MODULES_BASE_PATH@/immodules ] \
+   || [ -d /@OLD_MODULES_BASE_PATH@/immodules ]
+then
+     /@LIBDIR@/@SHARED_PKG@/gtk-query-immodules-2.0 \
+         /@MODULES_BASE_PATH@/immodules/*.so \
+         /@OLD_MODULES_BASE_PATH@/immodules/*.so \
+     > /@MODULES_BASE_PATH@/gtk.immodules || true
 fi
 
diff -Nru gtk+2.0-2.24.5/debian/libgtk2.0-0.postrm.in gtk+2.0-2.24.5/debian/libgtk2.0-0.postrm.in
--- gtk+2.0-2.24.5/debian/libgtk2.0-0.postrm.in	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgtk2.0-0.postrm.in	2011-06-30 14:05:38.000000000 +0000
@@ -10,7 +10,7 @@
 
 #DEBHELPER#
 
-if [ -d /@MODULES_BASE_PATH@ ]; then
+if [ -d /@MODULES_BASE_PATH@/immodules ]; then
     # Purge the cache
     rm -f /@MODULES_BASE_PATH@/gtk.immodules
     rmdir -p --ignore-fail-on-non-empty /@MODULES_BASE_PATH@
diff -Nru gtk+2.0-2.24.5/debian/libgtk2.0-0.triggers.in gtk+2.0-2.24.5/debian/libgtk2.0-0.triggers.in
--- gtk+2.0-2.24.5/debian/libgtk2.0-0.triggers.in	2011-06-06 16:34:39.000000000 +0000
+++ gtk+2.0-2.24.5/debian/libgtk2.0-0.triggers.in	2011-06-30 14:05:38.000000000 +0000
@@ -1 +1,2 @@
 interest /@MODULES_BASE_PATH@/immodules
+interest /@OLD_MODULES_BASE_PATH@/immodules
diff -Nru gtk+2.0-2.24.5/debian/patches/098_multiarch_module_path.patch gtk+2.0-2.24.5/debian/patches/098_multiarch_module_path.patch
--- gtk+2.0-2.24.5/debian/patches/098_multiarch_module_path.patch	1970-01-01 00:00:00.000000000 +0000
+++ gtk+2.0-2.24.5/debian/patches/098_multiarch_module_path.patch	2011-06-30 14:05:38.000000000 +0000
@@ -0,0 +1,48 @@
+Description: Fall back to the hard-coded pre-multiarch module directory
+ Include /usr/lib/gtk-2.0 in the path as a fallback when building for
+ multiarch, to maintain compatibility with packages installing modules to
+ the old directories.
+Author: Steve Langasek <[email protected]>
+Forwarded: not-needed
+
+Index: gtk+2.0-2.24.3/gtk/gtkmodules.c
+===================================================================
+--- gtk+2.0-2.24.3.orig/gtk/gtkmodules.c
++++ gtk+2.0-2.24.3/gtk/gtkmodules.c
+@@ -60,6 +60,7 @@
+   gchar *home_gtk_dir = NULL;
+   gchar *module_path;
+   gchar *default_dir;
++  gchar *pre_multiarch_dir = NULL;
+   static gchar **result = NULL;
+ 
+   if (result)
+@@ -74,21 +75,23 @@
+ 
+   if (exe_prefix)
+     default_dir = g_build_filename (exe_prefix, "lib", "gtk-2.0", NULL);
+-  else
++  else {
+     default_dir = g_build_filename (GTK_LIBDIR, "gtk-2.0", NULL);
++    pre_multiarch_dir = "/usr/lib/gtk-2.0";
++  }
+ 
+   if (module_path_env && home_gtk_dir)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+-				module_path_env, home_gtk_dir, default_dir, NULL);
++				module_path_env, home_gtk_dir, default_dir, pre_multiarch_dir, NULL);
+   else if (module_path_env)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+-				module_path_env, default_dir, NULL);
++				module_path_env, default_dir, pre_multiarch_dir, NULL);
+   else if (home_gtk_dir)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+-				home_gtk_dir, default_dir, NULL);
++				home_gtk_dir, default_dir, pre_multiarch_dir, NULL);
+   else
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+-				default_dir, NULL);
++				default_dir, pre_multiarch_dir, NULL);
+ 
+   g_free (home_gtk_dir);
+   g_free (default_dir);
diff -Nru gtk+2.0-2.24.5/debian/patches/series gtk+2.0-2.24.5/debian/patches/series
--- gtk+2.0-2.24.5/debian/patches/series	2011-07-04 00:33:23.000000000 +0000
+++ gtk+2.0-2.24.5/debian/patches/series	2011-06-30 14:05:38.000000000 +0000
@@ -13,3 +13,4 @@
 061_use_pdf_as_default_printing_standard.patch
 064_gir_build_workaround.patch
 065_tracker-0-10.patch
+098_multiarch_module_path.patch
diff -Nru gtk+2.0-2.24.5/debian/rules gtk+2.0-2.24.5/debian/rules
--- gtk+2.0-2.24.5/debian/rules	2011-07-04 00:44:22.000000000 +0000
+++ gtk+2.0-2.24.5/debian/rules	2011-06-30 14:05:38.000000000 +0000
@@ -27,10 +27,12 @@
 DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 DEB_BUILD_GNU_CPU  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 
+DEB_BUILD_OPTIONS += multiarch
 # relative libdir
 ifneq (,$(findstring multiarch,$(DEB_BUILD_OPTIONS)))
-LIBDIR := usr/lib/$(DEB_HOST_GNU_TYPE)
+LIBDIR := usr/lib/$(DEB_HOST_MULTIARCH)
 else
 LIBDIR := usr/lib
 endif
@@ -61,6 +63,7 @@
 
 # relative base directory for all types of modules
 MODULES_BASE_PATH := $(LIBDIR)/gtk-$(APIVER)/$(GTK_BINARY_VERSION)
+OLD_MODULES_BASE_PATH := usr/lib/gtk-$(APIVER)/$(GTK_BINARY_VERSION)
 
 # package names
 SHARED_PKG := libgtk$(APIVER)-$(SONAME)
@@ -234,6 +237,7 @@
 		-e "s#@LIBDIR@#$(LIBDIR)#g" \
 		-e 's#@OPTLIBDIR@#$(OPTLIBDIR)#g' \
 		-e "s#@MODULES_BASE_PATH@#$(MODULES_BASE_PATH)#g" \
+		-e "s#@OLD_MODULES_BASE_PATH@#$(OLD_MODULES_BASE_PATH)#g" \
 		[email protected] \
 		$(wildcard $(if $(filter opt,$(FLAVORS)),[email protected])) \
 		> $@

Attachment: signature.asc
Description: Digital signature

Reply via email to