diff -Nru glib2.0-2.39.1/debian/changelog glib2.0-2.39.1/debian/changelog --- glib2.0-2.39.1/debian/changelog 2013-11-30 01:10:20.000000000 +1100 +++ glib2.0-2.39.1/debian/changelog 2013-12-04 17:36:26.000000000 +1100 @@ -1,3 +1,15 @@ +glib2.0 (2.39.1-0ubuntu3) UNREALEASED; urgency=low + + * debian/libglib2.0-dev.install.in: Install gdb auto-load scripts to the + correct location (LP: #1192372) + * debian/patches: + - disable-frame-filters.patch: Disable the python frame filters, as they + are not in gdb 7.6, but will be included upstread in gdb 7.7 (BGO: #613732) + - fix-long-for-python3.patch: gdb is using python3 where long() no longer + exists + + -- Tim Lunn Wed, 04 Dec 2013 09:03:26 +1100 + glib2.0 (2.39.1-0ubuntu2) trusty; urgency=low * debian/patches/revert_constructor_change.patch: diff -Nru glib2.0-2.39.1/debian/control glib2.0-2.39.1/debian/control --- glib2.0-2.39.1/debian/control 2013-11-30 01:11:35.000000000 +1100 +++ glib2.0-2.39.1/debian/control 2013-12-04 17:36:29.000000000 +1100 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian GNOME Maintainers -Uploaders: Debian GNOME Maintainers , Michael Biebl +Uploaders: Debian GNOME Maintainers Build-Depends: debhelper (>= 8.1.3), cdbs (>= 0.4.93), dh-autoreconf, diff -Nru glib2.0-2.39.1/debian/libglib2.0-dev.install.in glib2.0-2.39.1/debian/libglib2.0-dev.install.in --- glib2.0-2.39.1/debian/libglib2.0-dev.install.in 2013-05-08 14:24:00.000000000 +1000 +++ glib2.0-2.39.1/debian/libglib2.0-dev.install.in 2013-12-04 09:02:58.000000000 +1100 @@ -7,7 +7,8 @@ usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0 usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig usr/share/aclocal -usr/share/gdb +usr/share/gdb/auto-load/libglib*.py usr/share/gdb/auto-load/lib/${DEB_HOST_MULTIARCH} +usr/share/gdb/auto-load/libgobject*.py usr/share/gdb/auto-load/usr/lib/${DEB_HOST_MULTIARCH} usr/share/glib-2.0/codegen/*.py usr/share/glib-2.0/gdb usr/share/glib-2.0/gettext diff -Nru glib2.0-2.39.1/debian/patches/disable-frame-filters.patch glib2.0-2.39.1/debian/patches/disable-frame-filters.patch --- glib2.0-2.39.1/debian/patches/disable-frame-filters.patch 1970-01-01 10:00:00.000000000 +1000 +++ glib2.0-2.39.1/debian/patches/disable-frame-filters.patch 2013-12-04 15:38:55.000000000 +1100 @@ -0,0 +1,68 @@ +From 2e820aa0567b70b070cf224f3d1333f28cf548a5 Mon Sep 17 00:00:00 2001 +From: Damien Lespiau +Date: Tue, 23 Mar 2010 15:18:12 +0000 +Subject: [PATCH] gobject.py: Don't install frame filters when GDB does not support them + +Stock GDB (both versions 7.0 and 7.1) does not come with the new +backtrace code and python API. To prevent an ugly python backtrace when +auto-loading gobject.py, let's catch the exception and not register the +FrameWrapper and the FrameFilter. +--- + gobject/gobject.py | 30 ++++++++++++++++++++---------- + 1 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/gobject/gobject.py b/gobject/gobject.py +index b96d150..ce2a7f7 100644 +--- a/gobject/gobject.py ++++ b/gobject/gobject.py +@@ -1,7 +1,15 @@ ++import os.path + import gdb + import glib +-import gdb.backtrace +-import gdb.command.backtrace ++try: ++ import gdb.backtrace ++ import gdb.command.backtrace ++except ImportError: ++ print(os.path.basename(__file__) + ": gdb was not built with " ++ "custom backtrace support, disabling.") ++ HAVE_GDB_BACKTRACE = 0 ++else: ++ HAVE_GDB_BACKTRACE = 1 + + # This is not quite right, as local vars may override symname + def read_global_var (symname): +@@ -107,13 +115,14 @@ class GFrameWrapper: + return getattr (self.frame, name) + + # Monkey patch FrameWrapper to avoid IA__ in symbol names +-old__init__ = gdb.command.backtrace.FrameWrapper.__init__ +-def monkey_patched_init(self, frame): +- name = frame.name() +- if name and name.startswith("IA__"): +- frame = GFrameWrapper(frame) +- old__init__(self,frame) +-gdb.command.backtrace.FrameWrapper.__init__ = monkey_patched_init ++if HAVE_GDB_BACKTRACE: ++ old__init__ = gdb.command.backtrace.FrameWrapper.__init__ ++ def monkey_patched_init(self, frame): ++ name = frame.name() ++ if name and name.startswith("IA__"): ++ frame = GFrameWrapper(frame) ++ old__init__(self,frame) ++ gdb.command.backtrace.FrameWrapper.__init__ = monkey_patched_init + + class DummyFrame: + def __init__ (self, frame): +@@ -301,5 +310,6 @@ def register (obj): + if obj == None: + obj = gdb + +- gdb.backtrace.push_frame_filter (GFrameFilter) ++ if HAVE_GDB_BACKTRACE: ++ gdb.backtrace.push_frame_filter (GFrameFilter) + obj.pretty_printers.append(pretty_printer_lookup) +-- +1.7.0.2 + diff -Nru glib2.0-2.39.1/debian/patches/fix-long-for-python3.patch glib2.0-2.39.1/debian/patches/fix-long-for-python3.patch --- glib2.0-2.39.1/debian/patches/fix-long-for-python3.patch 1970-01-01 10:00:00.000000000 +1000 +++ glib2.0-2.39.1/debian/patches/fix-long-for-python3.patch 2013-12-04 17:35:34.000000000 +1100 @@ -0,0 +1,137 @@ +--- a/glib/glib.py ++++ b/glib/glib.py +@@ -7,16 +7,16 @@ + def g_quark_to_string (quark): + if quark == None: + return None +- quark = long(quark) ++ quark = int(quark) + if quark == 0: + return None + try: + val = read_global_var ("quarks") +- max_q = long(read_global_var ("quark_seq_id")) ++ max_q = int(read_global_var ("quark_seq_id")) + except: + try: + val = read_global_var ("g_quarks") +- max_q = long(read_global_var ("g_quark_seq_id")) ++ max_q = int(read_global_var ("g_quark_seq_id")) + except: + return None; + if quark < max_q: +@@ -31,7 +31,7 @@ + self.val = val + + def to_string (self): +- return "{data=%s, next=0x%x, prev=0x%x}" % (str(self.val["data"]), long(self.val["next"]), long(self.val["prev"])) ++ return "{data=%s, next=0x%x, prev=0x%x}" % (str(self.val["data"]), int(self.val["next"]), int(self.val["prev"])) + + class GSListNodePrinter: + "Prints a GSList node" +@@ -40,7 +40,7 @@ + self.val = val + + def to_string (self): +- return "{data=%s, next=0x%x}" % (str(self.val["data"]), long(self.val["next"])) ++ return "{data=%s, next=0x%x}" % (str(self.val["data"]), int(self.val["next"])) + + class GListPrinter: + "Prints a GList" +@@ -71,7 +71,7 @@ + return self._iterator(self.val, self.listtype) + + def to_string (self): +- return "0x%x" % (long(self.val)) ++ return "0x%x" % (int(self.val)) + + def display_hint (self): + return "array" +@@ -101,7 +101,7 @@ + v = self.value + self.value = None + return v +- while long(self.pos) < long(self.size): ++ while int(self.pos) < int(self.size): + self.pos = self.pos + 1 + if long (self.hashes[self.pos]) >= 2: + key = self.keys[self.pos] +@@ -131,7 +131,7 @@ + return self._iterator(self.val, self.keys_are_strings) + + def to_string (self): +- return "0x%x" % (long(self.val)) ++ return "0x%x" % (int(self.val)) + + def display_hint (self): + return "map" +@@ -216,20 +216,20 @@ + + def do_iter(self, arg, item, command): + item = item.cast (gdb.lookup_type("void").pointer()) +- item = long(item) ++ item = int(item) + to_eval = "set $%s = (void *)0x%x\n"%(arg, item) + gdb.execute(to_eval) + gdb.execute(command) + + def slist_iterator (self, arg, container, command): + l = container.cast (gdb.lookup_type("GSList").pointer()) +- while long(l) != 0: ++ while int(l) != 0: + self.do_iter (arg, l["data"], command) + l = l["next"] + + def list_iterator (self, arg, container, command): + l = container.cast (gdb.lookup_type("GList").pointer()) +- while long(l) != 0: ++ while int(l) != 0: + self.do_iter (arg, l["data"], command) + l = l["next"] + +--- a/gobject/gobject.py ++++ b/gobject/gobject.py +@@ -24,7 +24,7 @@ + return None + return val[typenode >> 2].address() + +- gtype = long(gtype) ++ gtype = int(gtype) + typenode = gtype - gtype % 4 + if typenode > (255 << 2): + typenode = gdb.Value(typenode).cast (gdb.lookup_type("TypeNode").pointer()) +@@ -59,7 +59,7 @@ + return is_g_type_instance_helper (type) + + def g_type_name_from_instance (instance): +- if long(instance) != 0: ++ if int(instance) != 0: + try: + inst = instance.cast (gdb.lookup_type("GTypeInstance").pointer()) + klass = inst["g_class"] +@@ -79,8 +79,8 @@ + def to_string (self): + name = g_type_name_from_instance (self.val) + if name: +- return ("0x%x [%s]")% (long(self.val), name) +- return ("0x%x") % (long(self.val)) ++ return ("0x%x [%s]")% (int(self.val), name) ++ return ("0x%x") % (int(self.val)) + + def pretty_printer_lookup (val): + if is_g_type_instance (val): +@@ -91,12 +91,12 @@ + def get_signal_name (id): + if id == None: + return None +- id = long(id) ++ id = int(id) + if id == 0: + return None + val = read_global_var ("g_signal_nodes") + max_s = read_global_var ("g_n_signal_nodes") +- max_s = long(max_s) ++ max_s = int(max_s) + if id < max_s: + return val[id]["name"].string() + return None diff -Nru glib2.0-2.39.1/debian/patches/series glib2.0-2.39.1/debian/patches/series --- glib2.0-2.39.1/debian/patches/series 2013-11-29 22:24:49.000000000 +1100 +++ glib2.0-2.39.1/debian/patches/series 2013-12-04 17:31:12.000000000 +1100 @@ -13,3 +13,5 @@ skip-brokwn-dbus-appinfo-test.patch 0001-valgrind.h-add-r0-to-the-clobber-list-on-PPC.patch revert_constructor_change.patch +disable-frame-filters.patch +fix-long-for-python3.patch