* [PR PATCH] glib,glibmm2.68: update to 2.78.0.
@ 2023-09-17 9:02 Johnnynator
2023-09-23 19:08 ` [PR PATCH] [Updated] " Johnnynator
2023-09-23 21:44 ` [PR PATCH] [Merged]: " Johnnynator
0 siblings, 2 replies; 3+ messages in thread
From: Johnnynator @ 2023-09-17 9:02 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1350 bytes --]
There is a new pull request by Johnnynator against master on the void-packages repository
https://github.com/Johnnynator/void-packages glib-2.78.0
https://github.com/void-linux/void-packages/pull/46097
glib,glibmm2.68: update to 2.78.0.
- libsigc++3: update to 3.4.0.
- glib: update to 2.78.0.
- glibmm2.68: update to 2.78.0.
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **briefly**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/46097.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-glib-2.78.0-46097.patch --]
[-- Type: text/x-diff, Size: 3528 bytes --]
From e0d4f2b472e6ded4d1a4808d5025a173b9593b14 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:52 +0200
Subject: [PATCH 1/3] libsigc++3: update to 3.4.0.
---
srcpkgs/libsigc++3/template | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/srcpkgs/libsigc++3/template b/srcpkgs/libsigc++3/template
index 664b42fe8e1a1..4c0f466746ba5 100644
--- a/srcpkgs/libsigc++3/template
+++ b/srcpkgs/libsigc++3/template
@@ -1,6 +1,6 @@
# Template file for 'libsigc++3'
pkgname=libsigc++3
-version=3.0.7
+version=3.4.0
revision=1
build_style=meson
configure_args="-Dmaintainer-mode=false -Dbuild-documentation=false
@@ -11,7 +11,7 @@ license="LGPL-3.0-only"
homepage="https://libsigcplusplus.github.io/libsigcplusplus/"
changelog="https://github.com/libsigcplusplus/libsigcplusplus/blob/master/NEWS"
distfiles="${GNOME_SITE}/libsigc++/${version%.*}/libsigc++-${version}.tar.xz"
-checksum=bfbe91c0d094ea6bbc6cbd3909b7d98c6561eea8b6d9c0c25add906a6e83d733
+checksum=02e2630ffb5ce93cd52c38423521dfe7063328863a6e96d41d765a6116b8707e
pre_configure() {
# build static library as well as shared
From 939ac2e2e5b91482dec12bc283c4d3976b708ea7 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:41 +0200
Subject: [PATCH 2/3] glib: update to 2.78.0.
---
srcpkgs/glib/template | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/srcpkgs/glib/template b/srcpkgs/glib/template
index 7362edaaceb0a..71c7c2100a072 100644
--- a/srcpkgs/glib/template
+++ b/srcpkgs/glib/template
@@ -1,6 +1,6 @@
# Template file for 'glib'
pkgname=glib
-version=2.76.1
+version=2.78.0
revision=1
build_style=meson
# static version is necessary for qemu-user-static;
@@ -14,10 +14,10 @@ short_desc="GNU library of C routines"
maintainer="Michal Vasilek <michal@vasilek.cz>"
license="LGPL-2.1-or-later"
homepage="https://wiki.gnome.org/Projects/GLib"
-#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-76/NEWS"
+#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-78/NEWS"
changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS"
distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz"
-checksum=43dc0f6a126958f5b454136c4398eab420249c16171a769784486e25f2fda19f
+checksum=44eaab8b720877ce303c5540b657b126f12dc94972d9880b52959f43fb537b30
make_check_pre="dbus-run-session"
build_options="gtk_doc"
From 0c4c4d72b4e66b689e4f13fa9d6ff756801e2be5 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:45 +0200
Subject: [PATCH 3/3] glibmm2.68: update to 2.78.0.
---
srcpkgs/glibmm2.68/template | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/srcpkgs/glibmm2.68/template b/srcpkgs/glibmm2.68/template
index d43e796e9954d..46935cd991732 100644
--- a/srcpkgs/glibmm2.68/template
+++ b/srcpkgs/glibmm2.68/template
@@ -1,6 +1,6 @@
# Template file for 'glibmm2.68'
pkgname=glibmm2.68
-version=2.76.0
+version=2.78.0
revision=1
build_style=meson
configure_args="-Dbuild-examples=false"
@@ -13,7 +13,7 @@ license="LGPL-2.1-or-later"
homepage="https://www.gtkmm.org"
changelog="https://gitlab.gnome.org/GNOME/glibmm/-/raw/master/NEWS"
distfiles="${GNOME_SITE}/glibmm/${version%.*}/glibmm-${version}.tar.xz"
-checksum=8637d80ceabd94fddd6e48970a082a264558d4ab82684e15ffc87e7ef3462ab2
+checksum=5d2e872564996f02a06d8bbac3677e7c394af8b00dd1526aebd47af842a3ef50
glibmm2.68-devel_package() {
depends="${makedepends} ${sourcepkg}>=${version}_${revision}"
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PR PATCH] [Updated] glib,glibmm2.68: update to 2.78.0.
2023-09-17 9:02 [PR PATCH] glib,glibmm2.68: update to 2.78.0 Johnnynator
@ 2023-09-23 19:08 ` Johnnynator
2023-09-23 21:44 ` [PR PATCH] [Merged]: " Johnnynator
1 sibling, 0 replies; 3+ messages in thread
From: Johnnynator @ 2023-09-23 19:08 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1079 bytes --]
There is an updated pull request by Johnnynator against master on the void-packages repository
https://github.com/Johnnynator/void-packages glib-2.78.0
https://github.com/void-linux/void-packages/pull/46097
glib,glibmm2.68: update to 2.78.0.
- libsigc++3: update to 3.4.0.
- glib: update to 2.78.0.
- glibmm2.68: update to 2.78.0.
#### Testing the changes
- I tested the changes in this PR: **briefly**
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/46097.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-glib-2.78.0-46097.patch --]
[-- Type: text/x-diff, Size: 9696 bytes --]
From 21893a949519d0d35c83acb96fa8af1840e07779 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:52 +0200
Subject: [PATCH 1/3] libsigc++3: update to 3.4.0.
---
srcpkgs/libsigc++3/template | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/srcpkgs/libsigc++3/template b/srcpkgs/libsigc++3/template
index 664b42fe8e1a1..4c0f466746ba5 100644
--- a/srcpkgs/libsigc++3/template
+++ b/srcpkgs/libsigc++3/template
@@ -1,6 +1,6 @@
# Template file for 'libsigc++3'
pkgname=libsigc++3
-version=3.0.7
+version=3.4.0
revision=1
build_style=meson
configure_args="-Dmaintainer-mode=false -Dbuild-documentation=false
@@ -11,7 +11,7 @@ license="LGPL-3.0-only"
homepage="https://libsigcplusplus.github.io/libsigcplusplus/"
changelog="https://github.com/libsigcplusplus/libsigcplusplus/blob/master/NEWS"
distfiles="${GNOME_SITE}/libsigc++/${version%.*}/libsigc++-${version}.tar.xz"
-checksum=bfbe91c0d094ea6bbc6cbd3909b7d98c6561eea8b6d9c0c25add906a6e83d733
+checksum=02e2630ffb5ce93cd52c38423521dfe7063328863a6e96d41d765a6116b8707e
pre_configure() {
# build static library as well as shared
From e46e0dbba5e20c0e1ccda66b7a79860d4d93dc0e Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:41 +0200
Subject: [PATCH 2/3] glib: update to 2.78.0.
---
...er-Fix-race-between-source-callbacks.patch | 158 ++++++++++++++++++
srcpkgs/glib/template | 6 +-
2 files changed, 161 insertions(+), 3 deletions(-)
create mode 100644 srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch
diff --git a/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch b/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch
new file mode 100644
index 0000000000000..17de85b15bdbb
--- /dev/null
+++ b/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch
@@ -0,0 +1,158 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <philip@tecnocode.co.uk>
+Date: Mon, 11 Sep 2023 16:02:15 +0100
+Subject: [PATCH] gthreadedresolver: Fix race between source callbacks and
+ finalize
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+I had thought that because `g_source_destroy()` was called for the two
+sources (cancel and timeout) in the `GTask` finalize function for a
+threaded resolver operation, that it would be fine to use a plain
+pointer in the source callbacks to point to the `GTask`.
+
+That turns out to not be true: because the source callbacks are executed
+in the GLib worker thread, and the `GTask` can be finalized in another
+thread, it’s possible for a source callback (e.g. `cancelled_cb()`) to
+be scheduled in the worker thread, then for the `GTask` to be finalized,
+and then the source callback to continue execution and find itself
+doing a use-after-free.
+
+Fix that by using a weak ref to the `GTask` in the source callbacks,
+rather than a plain pointer.
+
+Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
+
+Fixes: #3105
+---
+ gio/gthreadedresolver.c | 43 +++++++++++++++++++++++++++++++++++------
+ 1 file changed, 37 insertions(+), 6 deletions(-)
+
+diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c
+index 2d94531bfda3..c7a567549f28 100644
+--- a/gio/gthreadedresolver.c
++++ b/gio/gthreadedresolver.c
+@@ -1422,85 +1422,116 @@ lookup_records_finish (GResolver *resolver,
+ static gboolean
+ timeout_cb (gpointer user_data)
+ {
+- GTask *task = G_TASK (user_data);
+- LookupData *data = g_task_get_task_data (task);
++ GWeakRef *weak_task = user_data;
++ GTask *task = NULL; /* (owned) */
++ LookupData *data;
+ gboolean should_return;
+
++ task = g_weak_ref_get (weak_task);
++ if (task == NULL)
++ return G_SOURCE_REMOVE;
++
++ data = g_task_get_task_data (task);
++
+ g_mutex_lock (&data->lock);
+
+ should_return = g_atomic_int_compare_and_exchange (&data->will_return, NOT_YET, TIMED_OUT);
+ g_clear_pointer (&data->timeout_source, g_source_unref);
+
+ g_mutex_unlock (&data->lock);
+
+ if (should_return)
+ g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_TIMED_OUT,
+ _("Socket I/O timed out"));
+
+ /* Signal completion of the task. */
+ g_mutex_lock (&data->lock);
+ data->has_returned = TRUE;
+ g_cond_broadcast (&data->cond);
+ g_mutex_unlock (&data->lock);
+
++ g_object_unref (task);
++
+ return G_SOURCE_REMOVE;
+ }
+
+ /* Will be called in the GLib worker thread, so must lock all accesses to shared
+ * data. */
+ static gboolean
+ cancelled_cb (GCancellable *cancellable,
+ gpointer user_data)
+ {
+- GTask *task = G_TASK (user_data);
+- LookupData *data = g_task_get_task_data (task);
++ GWeakRef *weak_task = user_data;
++ GTask *task = NULL; /* (owned) */
++ LookupData *data;
+ gboolean should_return;
+
++ task = g_weak_ref_get (weak_task);
++ if (task == NULL)
++ return G_SOURCE_REMOVE;
++
++ data = g_task_get_task_data (task);
++
+ g_mutex_lock (&data->lock);
+
+ g_assert (g_cancellable_is_cancelled (cancellable));
+ should_return = g_atomic_int_compare_and_exchange (&data->will_return, NOT_YET, CANCELLED);
+ g_clear_pointer (&data->cancellable_source, g_source_unref);
+
+ g_mutex_unlock (&data->lock);
+
+ if (should_return)
+ g_task_return_error_if_cancelled (task);
+
+ /* Signal completion of the task. */
+ g_mutex_lock (&data->lock);
+ data->has_returned = TRUE;
+ g_cond_broadcast (&data->cond);
+ g_mutex_unlock (&data->lock);
+
++ g_object_unref (task);
++
+ return G_SOURCE_REMOVE;
+ }
+
++static void
++weak_ref_clear_and_free (GWeakRef *weak_ref)
++{
++ g_weak_ref_clear (weak_ref);
++ g_free (weak_ref);
++}
++
+ static void
+ run_task_in_thread_pool_async (GThreadedResolver *self,
+ GTask *task)
+ {
+ LookupData *data = g_task_get_task_data (task);
+ guint timeout_ms = g_resolver_get_timeout (G_RESOLVER (self));
+ GCancellable *cancellable = g_task_get_cancellable (task);
+
+ g_mutex_lock (&data->lock);
+
+ g_thread_pool_push (self->thread_pool, g_object_ref (task), NULL);
+
+ if (timeout_ms != 0)
+ {
++ GWeakRef *weak_task = g_new0 (GWeakRef, 1);
++ g_weak_ref_set (weak_task, task);
++
+ data->timeout_source = g_timeout_source_new (timeout_ms);
+ g_source_set_static_name (data->timeout_source, "[gio] threaded resolver timeout");
+- g_source_set_callback (data->timeout_source, G_SOURCE_FUNC (timeout_cb), task, NULL);
++ g_source_set_callback (data->timeout_source, G_SOURCE_FUNC (timeout_cb), g_steal_pointer (&weak_task), (GDestroyNotify) weak_ref_clear_and_free);
+ g_source_attach (data->timeout_source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
+ }
+
+ if (cancellable != NULL)
+ {
++ GWeakRef *weak_task = g_new0 (GWeakRef, 1);
++ g_weak_ref_set (weak_task, task);
++
+ data->cancellable_source = g_cancellable_source_new (cancellable);
+ g_source_set_static_name (data->cancellable_source, "[gio] threaded resolver cancellable");
+- g_source_set_callback (data->cancellable_source, G_SOURCE_FUNC (cancelled_cb), task, NULL);
++ g_source_set_callback (data->cancellable_source, G_SOURCE_FUNC (cancelled_cb), g_steal_pointer (&weak_task), (GDestroyNotify) weak_ref_clear_and_free);
+ g_source_attach (data->cancellable_source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
+ }
+
diff --git a/srcpkgs/glib/template b/srcpkgs/glib/template
index 7362edaaceb0a..71c7c2100a072 100644
--- a/srcpkgs/glib/template
+++ b/srcpkgs/glib/template
@@ -1,6 +1,6 @@
# Template file for 'glib'
pkgname=glib
-version=2.76.1
+version=2.78.0
revision=1
build_style=meson
# static version is necessary for qemu-user-static;
@@ -14,10 +14,10 @@ short_desc="GNU library of C routines"
maintainer="Michal Vasilek <michal@vasilek.cz>"
license="LGPL-2.1-or-later"
homepage="https://wiki.gnome.org/Projects/GLib"
-#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-76/NEWS"
+#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-78/NEWS"
changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS"
distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz"
-checksum=43dc0f6a126958f5b454136c4398eab420249c16171a769784486e25f2fda19f
+checksum=44eaab8b720877ce303c5540b657b126f12dc94972d9880b52959f43fb537b30
make_check_pre="dbus-run-session"
build_options="gtk_doc"
From aaba40c7d52950897a3af6030d1dfcb752824974 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sun, 17 Sep 2023 10:53:45 +0200
Subject: [PATCH 3/3] glibmm2.68: update to 2.78.0.
---
srcpkgs/glibmm2.68/template | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/srcpkgs/glibmm2.68/template b/srcpkgs/glibmm2.68/template
index d43e796e9954d..46935cd991732 100644
--- a/srcpkgs/glibmm2.68/template
+++ b/srcpkgs/glibmm2.68/template
@@ -1,6 +1,6 @@
# Template file for 'glibmm2.68'
pkgname=glibmm2.68
-version=2.76.0
+version=2.78.0
revision=1
build_style=meson
configure_args="-Dbuild-examples=false"
@@ -13,7 +13,7 @@ license="LGPL-2.1-or-later"
homepage="https://www.gtkmm.org"
changelog="https://gitlab.gnome.org/GNOME/glibmm/-/raw/master/NEWS"
distfiles="${GNOME_SITE}/glibmm/${version%.*}/glibmm-${version}.tar.xz"
-checksum=8637d80ceabd94fddd6e48970a082a264558d4ab82684e15ffc87e7ef3462ab2
+checksum=5d2e872564996f02a06d8bbac3677e7c394af8b00dd1526aebd47af842a3ef50
glibmm2.68-devel_package() {
depends="${makedepends} ${sourcepkg}>=${version}_${revision}"
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PR PATCH] [Merged]: glib,glibmm2.68: update to 2.78.0.
2023-09-17 9:02 [PR PATCH] glib,glibmm2.68: update to 2.78.0 Johnnynator
2023-09-23 19:08 ` [PR PATCH] [Updated] " Johnnynator
@ 2023-09-23 21:44 ` Johnnynator
1 sibling, 0 replies; 3+ messages in thread
From: Johnnynator @ 2023-09-23 21:44 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 911 bytes --]
There's a merged pull request on the void-packages repository
glib,glibmm2.68: update to 2.78.0.
https://github.com/void-linux/void-packages/pull/46097
Description:
- libsigc++3: update to 3.4.0.
- glib: update to 2.78.0.
- glibmm2.68: update to 2.78.0.
#### Testing the changes
- I tested the changes in this PR: **briefly**
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-09-23 21:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-17 9:02 [PR PATCH] glib,glibmm2.68: update to 2.78.0 Johnnynator
2023-09-23 19:08 ` [PR PATCH] [Updated] " Johnnynator
2023-09-23 21:44 ` [PR PATCH] [Merged]: " Johnnynator
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).