Hello community,
here is the log from the commit of package python-gobject for openSUSE:Factory checked in at 2017-11-03 19:07:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gobject (Old)
and /work/SRC/openSUSE:Factory/.python-gobject.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gobject"
Fri Nov 3 19:07:01 2017 rev:69 rq:538375 version:3.26.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gobject/python-gobject.changes 2017-09-13 21:54:58.798147616 +0200
+++ /work/SRC/openSUSE:Factory/.python-gobject.new/python-gobject.changes 2017-11-03 19:07:03.625994273 +0100
@@ -1,0 +2,18 @@
+Sat Oct 28 00:38:57 UTC 2017 - luc14n0@linuxmail.org
+
+- Update to version 3.26.1:
+ + Pygobject-object: Fix Python GC collecting a ref cycle too
+ early (bgo#731501).
+ + Fix potential uninitialized memory access during GC (bgo#786872).
+ + Test: revert parts of the previous test as it's broken on
+ 32 bit builds (bgo#786948).
+ + Flags: Add testcase for bug 786948 (bgo#786948).
+ + Fix potential overflow when marshalling flags from py interface
+ (bgo#786948).
+ + to_py_array: Properly handle enum array items (bgo#788890).
+ + Closure: Fix unaligned and out-of-bounds access (bgo#788894).
+ + Build: Fix not installing .egg-info file (bgo#777719).
+- Run spec-cleaner -p to get respectives pkgconfig(*): gio-2.0,
+ glib-2.0 and gobject-introspection-1.0.
+
+-------------------------------------------------------------------
Old:
----
pygobject-3.26.0.tar.xz
New:
----
pygobject-3.26.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-gobject.spec ++++++
--- /var/tmp/diff_new_pack.mDlVpK/_old 2017-11-03 19:07:04.581959492 +0100
+++ /var/tmp/diff_new_pack.mDlVpK/_new 2017-11-03 19:07:04.585959346 +0100
@@ -27,10 +27,10 @@
Summary: Python bindings for GObject
License: LGPL-2.1+
Group: Development/Languages/Python
-Version: 3.26.0
+Version: 3.26.1
Release: 0
Url: https://wiki.gnome.org/Projects/PyGObject/
-Source: http://download.gnome.org/sources/pygobject/3.26/%{_name}-%{version}.tar.xz
+Source: https://download.gnome.org/sources/pygobject/3.26/%{_name}-%{version}.tar.xz
# PATCH-FIX-UPSTREAM pycompile-searchpath.patch jmatejek@suse.com -- Fix build with python 3.4
Patch1: pycompile-searchpath.patch
BuildRequires: %{python_module cairo >= 1.11.1}
@@ -38,13 +38,14 @@
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
-BuildRequires: glib2-devel >= 2.38.0
BuildRequires: gnome-common
-BuildRequires: gobject-introspection-devel >= 1.46.0
BuildRequires: libffi-devel >= 3.0.0
BuildRequires: python-rpm-macros
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(cairo-gobject)
+BuildRequires: pkgconfig(gio-2.0) >= 2.38.0
+BuildRequires: pkgconfig(glib-2.0) >= 2.38.0
+BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.46.0
# Trigger an automatic installation of python(3)?-gobject when python and libgirepository are installed.
Supplements: packageand(python:%{gdk_real_package})
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -160,6 +161,7 @@
%doc AUTHORS COPYING ChangeLog NEWS README
%doc examples/
%{python_sitearch}/gi/
+%{python_sitearch}/pygobject-3.26.1-py*.egg-info
# Lives in cairo subpackage
%exclude %{python_sitearch}/gi/_gi_cairo*.so
# Lives in Gdk subpackage
++++++ pygobject-3.26.0.tar.xz -> pygobject-3.26.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/ChangeLog new/pygobject-3.26.1/ChangeLog
--- old/pygobject-3.26.0/ChangeLog 2017-09-12 08:29:04.000000000 +0200
+++ new/pygobject-3.26.1/ChangeLog 2017-10-27 09:33:48.000000000 +0200
@@ -1,3 +1,184 @@
+commit 17b4ba8707a8c6c24cd52e59a1f107dccfa9fd55
+Author: Christoph Reiter
+Date: Thu Oct 26 17:24:02 2017 +0200
+
+ pygobject-object: Fix Python GC collecting a ref cycle too early
+
+ PyGObject traverses its closures in tp_traverse, but the lifetime
+ of the closures
+ is tied to the lifetime of the GObject and not the wrapper. This
+ confuses
+ the Python GC when it sees a ref cycle and tries to break it up
+ with tp_clear.
+ Since tp_clear will not invalidate the closure and only invalidate
+ the Python
+ wrapper the closure callback gets called with the now cleared/invalid
+ object.
+
+ Instead let the GC only check the Python objects referenced by the
+ closure when tp_clear
+ would actually free them and as a result break the cycle. This is
+ only the case when
+ the wrapped object would be freed by tp_clear which is when its
+ reference count is at 1.
+
+ Original patch by Gustavo Carneiro:
+ https://bugzilla.gnome.org/show_bug.cgi?id=546802#c5
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=731501
+
+ gi/pygobject-object.c | 6 ++++--
+ tests/test_signal.py | 29 ++++++++++++++++++++++++++++-
+ 2 files changed, 32 insertions(+), 3 deletions(-)
+
+commit b4bf1b9d936e021b1645c069c2e0a3062cfab62b
+Author: Daniel Colascione
+Date: Tue Oct 24 14:42:43 2017 +0200
+
+ Fix potential uninitialized memory access during GC
+
+ We use _PyGIDefaultArgPlaceholder as a sentinel value to represent
+ default
+ values during function argument list construction. Right now, it's
+ a Python
+ type object. We make it using PyObject_New, so most of its fields
+ end up
+ uninitialized. The object body being uninitialized wouldn't be a
+ problem if
+ the placeholder object were unreachable, but the object *can*
+ be reached
+ during GC by traversal through frame objects.
+
+ Depending on the exact contents of the uninitialized memory, the GC
+ can go on
+ to cause other kinds of memory corruption through the process.
+
+ IMHO, the easiest fix for this problem is to just make the
+ placeholder a
+ simpler data structure, like a list.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=786872
+
+ gi/gimodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1136f385d6080297bd57715b749c67f5e7208ba2
+Author: Christoph Reiter
+Date: Thu Oct 26 09:35:09 2017 +0200
+
+ test: revert parts of the previous test as it's broken on 32 bit
+ builds
+
+ The int based flag type can't represent the flag value on 32 bit,
+ some more work is needed there. Remove that check again for now.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=786948
+
+ tests/test_gi.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit a37687d3d8bdc42aea63e551401e6686c926c556
+Author: Christoph Reiter
+Date: Mon Oct 23 12:41:45 2017 +0200
+
+ flags: Add testcase for bug 786948
+
+ Add a flags type which has a value with the highes bit set
+ and fits in an int. While the C type is a signed int, the type
+ is registered as flags, which GI interprets as unsigned.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=786948
+
+ tests/gimarshallingtestsextra.c | 29 +++++++++++++++++++++++++++++
+ tests/gimarshallingtestsextra.h | 11 +++++++++++
+ tests/test_gi.py | 5 +++++
+ 3 files changed, 45 insertions(+)
+
+commit 44a852191a67bc7ef76202412a0102de46eb26f0
+Author: Philippe Renon
+Date: Thu Aug 31 16:39:08 2017 +0200
+
+ fix potential overflow when marshalling flags from py interface
+
+ the overflow happens on windows platforms when an unsigned
+ flags value overflows the capacity of a signed long
+ on windows long is a 32-bit signed integer.
+
+ fixes https://bugzilla.gnome.org/show_bug.cgi?id=786948
+
+ gi/pygi-enum-marshal.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit fa4330df4e26bb9f77a5cf081d3cc40c342709b9
+Author: Christoph Reiter
+Date: Sun Oct 22 17:59:17 2017 +0200
+
+ to_py_array: Properly handle enum array items
+
+ It used the fallback path and copied pointers.
+ Do the same thing we do for integer items instead.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=788890
+
+ gi/pygi-array.c | 3 +++
+ tests/gimarshallingtestsextra.c | 21 +++++++++++++++++++++
+ tests/gimarshallingtestsextra.h | 2 ++
+ tests/test_gi.py | 6 ++++++
+ 4 files changed, 32 insertions(+)
+
+commit 5f0f3b330cfa1eb11db4f376d141445847cb9d16
+Author: James Clarke
+Date: Fri Oct 13 18:04:45 2017 +0100
+
+ closure: Fix unaligned and out-of-bounds access
+
+ When the direction is FROM_PYTHON, a whole GIArgument was being loaded
+ from the address given by the argument, but like any other case, this
+ could point to different types, and so could run off the end of the
+ pointed-to value, and, more importantly, be performing an unaligned
+ access, causing it to crash with SIGBUS on sparc64 when running
+ test_callback_scope_call_array_inout. Instead, reuse the existing code
+ for the TO_PYTHON case to do the copying into arg_value based on the
+ type.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=788894
+
+ gi/pygi-closure.c | 40 +++++++++++++++++++++-------------------
+ 1 file changed, 21 insertions(+), 19 deletions(-)
+
+commit d831decad9e8fdb449518997dee1a5eaa21e0313
+Author: Christoph Reiter
+Date: Fri Oct 13 19:24:01 2017 +0200
+
+ build: Fix not installing .egg-info file
+
+ While removing the egg target in 49cc3643819dad0d065d I wrongfully
+ removed that part as well. While the file extension has "egg" in
+ it it has nothing to do with eggs..
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=777719
+
+ Makefile.am | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 5b61ac3f2a66d93110642f43bec4f2a4e656681a
+Author: Christoph Reiter
+Date: Thu Oct 12 18:58:04 2017 +0200
+
+ configure.ac: version bump to 3.26.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 47af078546b1e9e4396bdea877c1cf0f21708818
+Author: Christoph Reiter
+Date: Tue Sep 12 08:31:22 2017 +0200
+
+ release 3.26.0
+
+ NEWS | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
commit 9580b2f1e447cea2d50f8ab83a715b29e4e862e6
Author: Christoph Reiter
Date: Tue Sep 12 08:25:25 2017 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/Makefile.am new/pygobject-3.26.1/Makefile.am
--- old/pygobject-3.26.0/Makefile.am 2017-08-22 13:06:09.000000000 +0200
+++ new/pygobject-3.26.1/Makefile.am 2017-10-13 19:22:35.000000000 +0200
@@ -87,6 +87,13 @@
# python
pyexec_LTLIBRARIES =
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+ cp $(top_builddir)/PKG-INFO $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
+uninstall-local:
+ rm -f $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
+
release-news:
printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/Makefile.in new/pygobject-3.26.1/Makefile.in
--- old/pygobject-3.26.0/Makefile.in 2017-09-12 08:26:21.000000000 +0200
+++ new/pygobject-3.26.1/Makefile.in 2017-10-27 09:33:02.000000000 +0200
@@ -509,6 +509,7 @@
# python
pyexec_LTLIBRARIES =
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -1040,7 +1041,7 @@
info-am:
-install-data-am: install-pkgconfigDATA
+install-data-am: install-data-local install-pkgconfigDATA
install-dvi: install-dvi-recursive
@@ -1086,8 +1087,8 @@
ps-am:
-uninstall-am: uninstall-nobase_pyexecPYTHON uninstall-pkgconfigDATA \
- uninstall-pyexecLTLIBRARIES
+uninstall-am: uninstall-local uninstall-nobase_pyexecPYTHON \
+ uninstall-pkgconfigDATA uninstall-pyexecLTLIBRARIES
.MAKE: $(am__recursive_targets) all check-am install-am install-strip
@@ -1100,17 +1101,17 @@
distclean-libtool distclean-local distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-nobase_pyexecPYTHON \
- install-pdf install-pdf-am install-pkgconfigDATA install-ps \
- install-ps-am install-pyexecLTLIBRARIES install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am \
- uninstall-nobase_pyexecPYTHON uninstall-pkgconfigDATA \
- uninstall-pyexecLTLIBRARIES
+ install-data-am install-data-local install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man \
+ install-nobase_pyexecPYTHON install-pdf install-pdf-am \
+ install-pkgconfigDATA install-ps install-ps-am \
+ install-pyexecLTLIBRARIES install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-local uninstall-nobase_pyexecPYTHON \
+ uninstall-pkgconfigDATA uninstall-pyexecLTLIBRARIES
.PRECIOUS: Makefile
@@ -1127,6 +1128,11 @@
all-local: build_pylinks
check-local: build_pylinks
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+ cp $(top_builddir)/PKG-INFO $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
+uninstall-local:
+ rm -f $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
release-news:
printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/NEWS new/pygobject-3.26.1/NEWS
--- old/pygobject-3.26.0/NEWS 2017-09-12 08:28:49.000000000 +0200
+++ new/pygobject-3.26.1/NEWS 2017-10-27 09:33:13.000000000 +0200
@@ -1,3 +1,14 @@
+3.26.1 27-Oct-2017
+ - pygobject-object: Fix Python GC collecting a ref cycle too early (Christoph Reiter) (#731501)
+ - Fix potential uninitialized memory access during GC (Daniel Colascione) (#786872)
+ - test: revert parts of the previous test as it's broken on 32 bit builds (Christoph Reiter) (#786948)
+ - flags: Add testcase for bug 786948 (Christoph Reiter) (#786948)
+ - fix potential overflow when marshalling flags from py interface (Philippe Renon) (#786948)
+ - to_py_array: Properly handle enum array items (Christoph Reiter) (#788890)
+ - closure: Fix unaligned and out-of-bounds access (James Clarke) (#788894)
+ - build: Fix not installing .egg-info file (Christoph Reiter) (#777719)
+ - configure.ac: version bump to 3.26.1 (Christoph Reiter)
+
3.26.0 12-Sep-2017
- configure.ac: pre-release version bump to 3.26.0 (Christoph Reiter)
- closure: silence a new compiler warning (Christoph Reiter)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/PKG-INFO new/pygobject-3.26.1/PKG-INFO
--- old/pygobject-3.26.0/PKG-INFO 2017-09-12 08:26:26.000000000 +0200
+++ new/pygobject-3.26.1/PKG-INFO 2017-10-27 09:33:07.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: PyGObject
-Version: 3.26.0
+Version: 3.26.1
Summary: Python bindings for GObject
Home-page: http://www.pygtk.org/
Author: James Henstridge
@@ -8,7 +8,7 @@
Maintainer: Simon Feltman
Maintainer-email: sfeltman@src.gnome.org
License: GNU LGPL
-Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.26/pygobject-3.26.0.tar.gz
+Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.26/pygobject-3.26.1.tar.gz
Description: Python bindings for GLib and GObject
Platform: POSIX, Windows
Classifier: Development Status :: 5 - Production/Stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/configure new/pygobject-3.26.1/configure
--- old/pygobject-3.26.0/configure 2017-09-12 08:26:20.000000000 +0200
+++ new/pygobject-3.26.1/configure 2017-10-27 09:33:00.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pygobject 3.26.0.
+# Generated by GNU Autoconf 2.69 for pygobject 3.26.1.
#
# Report bugs to http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='pygobject'
PACKAGE_TARNAME='pygobject'
-PACKAGE_VERSION='3.26.0'
-PACKAGE_STRING='pygobject 3.26.0'
+PACKAGE_VERSION='3.26.1'
+PACKAGE_STRING='pygobject 3.26.1'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject'
PACKAGE_URL='https://wiki.gnome.org/Projects/PyGObject/'
@@ -1419,7 +1419,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pygobject 3.26.0 to adapt to many kinds of systems.
+\`configure' configures pygobject 3.26.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1490,7 +1490,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pygobject 3.26.0:";;
+ short | recursive ) echo "Configuration of pygobject 3.26.1:";;
esac
cat <<\_ACEOF
@@ -1635,7 +1635,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pygobject configure 3.26.0
+pygobject configure 3.26.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1913,7 +1913,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pygobject $as_me 3.26.0, which was
+It was created by pygobject $as_me 3.26.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2288,9 +2288,9 @@
PYGOBJECT_MINOR_VERSION=26
-$as_echo "#define PYGOBJECT_MICRO_VERSION 0" >>confdefs.h
+$as_echo "#define PYGOBJECT_MICRO_VERSION 1" >>confdefs.h
-PYGOBJECT_MICRO_VERSION=0
+PYGOBJECT_MICRO_VERSION=1
ac_config_headers="$ac_config_headers config.h"
@@ -2810,7 +2810,7 @@
# Define the identity of the package.
PACKAGE='pygobject'
- VERSION='3.26.0'
+ VERSION='3.26.1'
cat >>confdefs.h <<_ACEOF
@@ -13892,7 +13892,7 @@
#include
int
-main ()
+main (void)
{
unsigned int major, minor, micro;
@@ -15008,7 +15008,7 @@
-for flag in -Wall -Wextra -Wundef -Wnested-externs -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wformat=2 -Wold-style-definition -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wimplicit-function-declaration -Wreturn-type -Wswitch-enum -Wswitch-default ; do
+for flag in -Wall -Wextra -Wundef -Wnested-externs -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wformat=2 -Wold-style-definition -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wimplicit-function-declaration -Wreturn-type -Wswitch-enum -Wswitch-default -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion ; do
as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
@@ -16333,6 +16333,9 @@
CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
CODE_COVERAGE_IGNORE_PATTERN ?=
+GITIGNOREFILES ?=
+GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+
code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\
@@ -16362,9 +16365,6 @@
'"$CODE_COVERAGE_RULES_CLEAN"'
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-
A''M_DISTCHECK_CONFIGURE_FLAGS ?=
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
@@ -16931,7 +16931,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pygobject $as_me 3.26.0, which was
+This file was extended by pygobject $as_me 3.26.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16998,7 +16998,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pygobject config.status 3.26.0
+pygobject config.status 3.26.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/configure.ac new/pygobject-3.26.1/configure.ac
--- old/pygobject-3.26.0/configure.ac 2017-09-12 08:23:19.000000000 +0200
+++ new/pygobject-3.26.1/configure.ac 2017-10-26 20:09:57.000000000 +0200
@@ -18,7 +18,7 @@
dnl the pygobject version number
m4_define(pygobject_major_version, 3)
m4_define(pygobject_minor_version, 26)
-m4_define(pygobject_micro_version, 0)
+m4_define(pygobject_micro_version, 1)
m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
dnl versions of packages we require ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/gi/gimodule.c new/pygobject-3.26.1/gi/gimodule.c
--- old/pygobject-3.26.0/gi/gimodule.c 2017-04-20 09:43:09.000000000 +0200
+++ new/pygobject-3.26.1/gi/gimodule.c 2017-10-26 09:36:51.000000000 +0200
@@ -730,7 +730,7 @@
/* Place holder object used to fill in "from Python" argument lists
* for values not supplied by the caller but support a GI default.
*/
- _PyGIDefaultArgPlaceholder = PyObject_New(PyObject, &PyType_Type);
+ _PyGIDefaultArgPlaceholder = PyList_New(0);
Py_INCREF (PyGIWarning);
PyModule_AddObject (module, "PyGIWarning", PyGIWarning);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/gi/pygi-array.c new/pygobject-3.26.1/gi/pygi-array.c
--- old/pygobject-3.26.0/gi/pygi-array.c 2017-04-10 12:42:09.000000000 +0200
+++ new/pygobject-3.26.1/gi/pygi-array.c 2017-10-24 14:27:33.000000000 +0200
@@ -618,6 +618,9 @@
item_arg.v_pointer = array_->data + i * item_size;
}
break;
+ case GI_INFO_TYPE_ENUM:
+ memcpy (&item_arg, array_->data + i * item_size, item_size);
+ break;
default:
item_arg.v_pointer = g_array_index (array_, gpointer, i);
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/gi/pygi-closure.c new/pygobject-3.26.1/gi/pygi-closure.c
--- old/pygobject-3.26.0/gi/pygi-closure.c 2017-08-25 18:20:49.000000000 +0200
+++ new/pygobject-3.26.1/gi/pygi-closure.c 2017-10-14 16:57:23.000000000 +0200
@@ -208,6 +208,7 @@
for (i = 0; i < _pygi_callable_cache_args_len (cache); i++) {
PyGIArgCache *arg_cache = g_ptr_array_index (cache->args_cache, i);
+ gpointer arg_pointer;
if (arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
state[i].arg_value.v_pointer = * (gpointer *) args[i];
@@ -216,46 +217,47 @@
continue;
state[i].arg_pointer.v_pointer = state[i].arg_value.v_pointer;
- state[i].arg_value = *(GIArgument *) state[i].arg_value.v_pointer;
- continue;
+ arg_pointer = state[i].arg_value.v_pointer;
+ } else {
+ arg_pointer = args[i];
}
switch (arg_cache->type_tag) {
case GI_TYPE_TAG_BOOLEAN:
- state[i].arg_value.v_boolean = * (gboolean *) args[i];
+ state[i].arg_value.v_boolean = * (gboolean *) arg_pointer;
break;
case GI_TYPE_TAG_INT8:
- state[i].arg_value.v_int8 = * (gint8 *) args[i];
+ state[i].arg_value.v_int8 = * (gint8 *) arg_pointer;
break;
case GI_TYPE_TAG_UINT8:
- state[i].arg_value.v_uint8 = * (guint8 *) args[i];
+ state[i].arg_value.v_uint8 = * (guint8 *) arg_pointer;
break;
case GI_TYPE_TAG_INT16:
- state[i].arg_value.v_int16 = * (gint16 *) args[i];
+ state[i].arg_value.v_int16 = * (gint16 *) arg_pointer;
break;
case GI_TYPE_TAG_UINT16:
- state[i].arg_value.v_uint16 = * (guint16 *) args[i];
+ state[i].arg_value.v_uint16 = * (guint16 *) arg_pointer;
break;
case GI_TYPE_TAG_INT32:
- state[i].arg_value.v_int32 = * (gint32 *) args[i];
+ state[i].arg_value.v_int32 = * (gint32 *) arg_pointer;
break;
case GI_TYPE_TAG_UINT32:
- state[i].arg_value.v_uint32 = * (guint32 *) args[i];
+ state[i].arg_value.v_uint32 = * (guint32 *) arg_pointer;
break;
case GI_TYPE_TAG_INT64:
- state[i].arg_value.v_int64 = * (glong *) args[i];
+ state[i].arg_value.v_int64 = * (glong *) arg_pointer;
break;
case GI_TYPE_TAG_UINT64:
- state[i].arg_value.v_uint64 = * (glong *) args[i];
+ state[i].arg_value.v_uint64 = * (glong *) arg_pointer;
break;
case GI_TYPE_TAG_FLOAT:
- state[i].arg_value.v_float = * (gfloat *) args[i];
+ state[i].arg_value.v_float = * (gfloat *) arg_pointer;
break;
case GI_TYPE_TAG_DOUBLE:
- state[i].arg_value.v_double = * (gdouble *) args[i];
+ state[i].arg_value.v_double = * (gdouble *) arg_pointer;
break;
case GI_TYPE_TAG_UTF8:
- state[i].arg_value.v_string = * (gchar **) args[i];
+ state[i].arg_value.v_string = * (gchar **) arg_pointer;
break;
case GI_TYPE_TAG_INTERFACE:
{
@@ -266,16 +268,16 @@
interface_type = g_base_info_get_type (interface);
if (interface_type == GI_INFO_TYPE_ENUM) {
- state[i].arg_value.v_int = * (gint *) args[i];
+ state[i].arg_value.v_int = * (gint *) arg_pointer;
} else if (interface_type == GI_INFO_TYPE_FLAGS) {
- state[i].arg_value.v_uint = * (guint *) args[i];
+ state[i].arg_value.v_uint = * (guint *) arg_pointer;
} else {
- state[i].arg_value.v_pointer = * (gpointer *) args[i];
+ state[i].arg_value.v_pointer = * (gpointer *) arg_pointer;
}
break;
}
case GI_TYPE_TAG_UNICHAR:
- state[i].arg_value.v_uint32 = * (guint32 *) args[i];
+ state[i].arg_value.v_uint32 = * (guint32 *) arg_pointer;
break;
case GI_TYPE_TAG_ERROR:
case GI_TYPE_TAG_GHASH:
@@ -283,7 +285,7 @@
case GI_TYPE_TAG_GSLIST:
case GI_TYPE_TAG_ARRAY:
case GI_TYPE_TAG_VOID:
- state[i].arg_value.v_pointer = * (gpointer *) args[i];
+ state[i].arg_value.v_pointer = * (gpointer *) arg_pointer;
break;
default:
g_warning ("Unhandled type tag %s",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/gi/pygi-enum-marshal.c new/pygobject-3.26.1/gi/pygi-enum-marshal.c
--- old/pygobject-3.26.0/gi/pygi-enum-marshal.c 2016-06-01 21:21:42.000000000 +0200
+++ new/pygobject-3.26.1/gi/pygi-enum-marshal.c 2017-10-24 14:28:04.000000000 +0200
@@ -182,7 +182,7 @@
gpointer *cleanup_data)
{
PyObject *py_long;
- long c_long;
+ unsigned long c_ulong;
gint is_instance;
PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
GIBaseInfo *interface;
@@ -195,17 +195,17 @@
goto err;
}
- c_long = PYGLIB_PyLong_AsLong (py_long);
+ c_ulong = PYGLIB_PyLong_AsUnsignedLong (py_long);
Py_DECREF (py_long);
/* only 0 or argument of type Flag is allowed */
- if (!is_instance && c_long != 0)
+ if (!is_instance && c_ulong != 0)
goto err;
/* Write c_long into arg */
interface = g_type_info_get_interface (arg_cache->type_info);
g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
- if (!gi_argument_from_c_long(arg, c_long,
+ if (!gi_argument_from_c_long(arg, c_ulong,
g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
g_base_info_unref (interface);
return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/gi/pygobject-object.c new/pygobject-3.26.1/gi/pygobject-object.c
--- old/pygobject-3.26.0/gi/pygobject-object.c 2017-04-10 12:42:09.000000000 +0200
+++ new/pygobject-3.26.1/gi/pygobject-object.c 2017-10-26 17:31:06.000000000 +0200
@@ -1168,8 +1168,10 @@
if (self->inst_dict) ret = visit(self->inst_dict, arg);
if (ret != 0) return ret;
- if (data) {
-
+ /* Only let the GC track the closures when tp_clear() would free them.
+ * https://bugzilla.gnome.org/show_bug.cgi?id=731501
+ */
+ if (data && self->obj->ref_count == 1) {
for (tmp = data->closures; tmp != NULL; tmp = tmp->next) {
PyGClosure *closure = tmp->data;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/m4/ax_code_coverage.m4 new/pygobject-3.26.1/m4/ax_code_coverage.m4
--- old/pygobject-3.26.0/m4/ax_code_coverage.m4 2017-09-12 08:26:05.000000000 +0200
+++ new/pygobject-3.26.1/m4/ax_code_coverage.m4 2017-10-27 09:32:47.000000000 +0200
@@ -75,7 +75,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see https://www.gnu.org/licenses/.
-#serial 24
+#serial 25
AC_DEFUN([AX_CODE_COVERAGE],[
dnl Check for --enable-code-coverage
@@ -221,6 +221,9 @@
CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
CODE_COVERAGE_IGNORE_PATTERN ?=
+GITIGNOREFILES ?=
+GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+
code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\
@@ -250,9 +253,6 @@
'"$CODE_COVERAGE_RULES_CLEAN"'
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-
A''M_DISTCHECK_CONFIGURE_FLAGS ?=
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/m4/ax_compiler_flags_cflags.m4 new/pygobject-3.26.1/m4/ax_compiler_flags_cflags.m4
--- old/pygobject-3.26.0/m4/ax_compiler_flags_cflags.m4 2017-09-12 08:26:05.000000000 +0200
+++ new/pygobject-3.26.1/m4/ax_compiler_flags_cflags.m4 2017-10-27 09:32:47.000000000 +0200
@@ -19,13 +19,14 @@
# LICENSE
#
# Copyright (c) 2014, 2015 Philip Withnall
+# Copyright (c) 2017 Reini Urban
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 14
+#serial 15
AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
AC_REQUIRE([AC_PROG_SED])
@@ -100,6 +101,13 @@
-Wreturn-type dnl
-Wswitch-enum dnl
-Wswitch-default dnl
+ -Wduplicated-cond dnl
+ -Wduplicated-branches dnl
+ -Wlogical-op dnl
+ -Wrestrict dnl
+ -Wnull-dereference dnl
+ -Wjump-misses-init dnl
+ -Wdouble-promotion dnl
$4 dnl
$5 dnl
$6 dnl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/m4/glib-2.0.m4 new/pygobject-3.26.1/m4/glib-2.0.m4
--- old/pygobject-3.26.0/m4/glib-2.0.m4 2017-09-12 08:26:05.000000000 +0200
+++ new/pygobject-3.26.1/m4/glib-2.0.m4 2017-10-27 09:32:47.000000000 +0200
@@ -1,6 +1,9 @@
# Configure paths for GLIB
# Owen Taylor 1997-2001
+# Increment this whenever this file is changed.
+#serial 1
+
dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
dnl gthread, or gio is specified in MODULES, pass to pkg-config
@@ -90,7 +93,7 @@
#include
int
-main ()
+main (void)
{
unsigned int major, minor, micro;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/tests/gimarshallingtestsextra.c new/pygobject-3.26.1/tests/gimarshallingtestsextra.c
--- old/pygobject-3.26.0/tests/gimarshallingtestsextra.c 2017-04-10 12:42:09.000000000 +0200
+++ new/pygobject-3.26.1/tests/gimarshallingtestsextra.c 2017-10-24 14:28:34.000000000 +0200
@@ -104,3 +104,53 @@
{
return g_file_test (path, G_FILE_TEST_EXISTS);
}
+
+
+/**
+ * gi_marshalling_tests_enum_array_return_type:
+ * @n_members: (out): The number of members
+ *
+ * Returns: (array length=n_members) (transfer full): An array of enum values
+ */
+GIMarshallingTestsExtraEnum *
+gi_marshalling_tests_enum_array_return_type (gsize *n_members)
+{
+ GIMarshallingTestsExtraEnum *res = g_new0(GIMarshallingTestsExtraEnum, 3);
+
+ *n_members = 3;
+
+ res[0] = GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE1;
+ res[1] = GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE2;
+ res[2] = GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE3;
+
+ return res;
+}
+
+GType
+gi_marshalling_tests_extra_flags_get_type (void)
+{
+ static GType type = 0;
+ if (G_UNLIKELY (type == 0))
+ {
+ static const GFlagsValue values[] = {
+ {GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE1,
+ "GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE1", "value1"},
+ {GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE2,
+ "GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE2", "value2"},
+ {0, NULL, NULL}
+ };
+ type = g_flags_register_static (
+ g_intern_static_string ("GIMarshallingTestsExtraFlags"), values);
+ }
+
+ return type;
+}
+
+/**
+ * gi_marshalling_tests_extra_flags_large_in:
+ */
+void
+gi_marshalling_tests_extra_flags_large_in (GIMarshallingTestsExtraFlags value)
+{
+ g_assert_cmpint (value, ==, GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE2);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/tests/gimarshallingtestsextra.h new/pygobject-3.26.1/tests/gimarshallingtestsextra.h
--- old/pygobject-3.26.0/tests/gimarshallingtestsextra.h 2017-04-10 12:42:09.000000000 +0200
+++ new/pygobject-3.26.1/tests/gimarshallingtestsextra.h 2017-10-24 14:28:34.000000000 +0200
@@ -29,6 +29,15 @@
} GIMarshallingTestsExtraEnum;
+typedef enum
+{
+ GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE1 = 0,
+ GI_MARSHALLING_TESTS_EXTRA_FLAGS_VALUE2 = (gint)(1 << 31),
+} GIMarshallingTestsExtraFlags;
+
+GType gi_marshalling_tests_extra_flags_get_type (void) G_GNUC_CONST;
+#define GI_MARSHALLING_TESTS_TYPE_EXTRA_FLAGS (gi_marshalling_tests_extra_flags_get_type ())
+
void gi_marshalling_tests_compare_two_gerrors_in_gvalue (GValue *v, GValue *v1);
void gi_marshalling_tests_ghashtable_enum_none_in (GHashTable *hash_table);
GHashTable * gi_marshalling_tests_ghashtable_enum_none_return (void);
@@ -37,4 +46,8 @@
gboolean gi_marshalling_tests_filename_exists (gchar *path);
gchar * gi_marshalling_tests_filename_to_glib_repr (gchar *path_in, gsize *len);
+GIMarshallingTestsExtraEnum * gi_marshalling_tests_enum_array_return_type (gsize *n_members);
+
+void gi_marshalling_tests_extra_flags_large_in (GIMarshallingTestsExtraFlags value);
+
#endif /* EXTRA_TESTS */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/tests/test_gi.py new/pygobject-3.26.1/tests/test_gi.py
--- old/pygobject-3.26.0/tests/test_gi.py 2017-08-25 18:17:25.000000000 +0200
+++ new/pygobject-3.26.1/tests/test_gi.py 2017-10-26 20:09:57.000000000 +0200
@@ -1071,6 +1071,12 @@
self.assertEqual((True, ['hello']),
GIMarshallingTests.init_function(['hello', 'world']))
+ def test_enum_array_return_type(self):
+ self.assertEqual(GIMarshallingTests.enum_array_return_type(),
+ [GIMarshallingTests.ExtraEnum.VALUE1,
+ GIMarshallingTests.ExtraEnum.VALUE2,
+ GIMarshallingTests.ExtraEnum.VALUE3])
+
class TestGStrv(unittest.TestCase):
@@ -1858,6 +1864,10 @@
"")
+ def test_flags_large_in(self):
+ GIMarshallingTests.extra_flags_large_in(
+ GIMarshallingTests.ExtraFlags.VALUE2)
+
class TestNoTypeFlags(unittest.TestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.26.0/tests/test_signal.py new/pygobject-3.26.1/tests/test_signal.py
--- old/pygobject-3.26.0/tests/test_signal.py 2017-04-10 12:42:09.000000000 +0200
+++ new/pygobject-3.26.1/tests/test_signal.py 2017-10-26 17:22:35.000000000 +0200
@@ -5,7 +5,7 @@
import sys
import weakref
-from gi.repository import GObject, GLib, Regress
+from gi.repository import GObject, GLib, Regress, Gio
from gi import _signalhelper as signalhelper
import testhelper
from compathelper import _long
@@ -1466,5 +1466,32 @@
Object = Regress.TestObj
+class TestClosureRefCycle(unittest.TestCase):
+
+ def test_closure_ref_cycle_unreachable(self):
+ # https://bugzilla.gnome.org/show_bug.cgi?id=731501
+
+ called = []
+
+ def on_add(store, *args):
+ called.append(store)
+
+ store = Gio.ListStore()
+ store.connect_object('items-changed', on_add, store)
+
+ # Remove all Python references to the object and keep it alive
+ # on the C level.
+ x = Gio.FileInfo()
+ x.set_attribute_object('store', store)
+ del store
+ gc.collect()
+
+ # get it back and trigger the signal
+ x.get_attribute_object('store').append(Gio.FileInfo())
+
+ self.assertEqual(len(called), 1)
+ self.assertTrue(called[0].__grefcount__ > 0)
+
+
if __name__ == '__main__':
unittest.main()